На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Компоненты / Числовая маска компонента Edit Сделать домашней страницей Добавить в избранное Написать писмо

Числовая маска компонента Edit


Я здесь лежал, и здесь мои друзья
С таким похмельем долго жить нельзя
Средь глючных вИндов в пьяной тишине,
Какой-то юзер подпевает мне...

Я предлагаю обработать событие OnKeyPress следующим образом:


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if    NOT (Key in ('0'..'9', '.', #8, #13)) // разрешенные клавиши
    OR (    (Key = '.')                  // пользователь нажал '.'
    AND (POS ('.', Edit1.Text) > 0)) // десятичная точка уже имеется
    then
    begin
      Key := #0;
      MessageBeep (MB_OK);
  end;
end;

В коде проверяется, была ли нажатая клавиша цифрой, клавишей [Tab] или [Enter]. Все остальное запрещено (код клавиши не принимается, и устанавливается в ноль) и подается сигнал через компьютерную пищалку.

Если вы не хотите связываться с десятичной дробью, уберите строчку с ключевым словом OR и символ '.' из первого IF-условия. Если вы хотите проверять, что пользователь ввел между LowLimit и HighLimit, воспользуйтесь следующим кодом:


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if    NOT (Key in ('0'..'9', #8, #13))
    OR (StrToInt (Edit1.Text + Key) < LowLimit)
    OR (StrToInt (Edit1.Text + Key) > HighLimit)
    then
    begin
      Key := #0;
      MessageBeep (MB_OK);
  end;
end;


Copyright ©   "DELPHI WORLD"   E-mail:   delphiworld@mail.ru  http://www.delphiworld.narod.ru
Источник получения информации: http://www.delphiworld.narod.ru
Hosted by uCoz