Фильтрация клавиш в TEdit (вводим только цифры)

Очень часто возникает необходимость ограничить ввод в поле TEdit, разрешив, например, только цифры. Сделать это можно с помощью несложного обработчика, назначаемого на событие OnKeyPress нужного компонента TEdit:

[code lang=»delphi»]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
// проверяем нажатую клавишу
case Key of
// цифры разрешаем
‘0’..’9′: key:=key;
// разрешаем десятичный разделитель (только точку)
‘.’, ‘,’: key:=’.’;
// разрешаем BackSpace
#8: key:=key;
// все прочие клавиши "гасим"
else key:=#0;
end;
end;
[/code]

По аналогии можно осуществить другие виды фильтрации. Например, запретить ввод русских букв, или добавив в список разрешённых не только цифры, но и математические символы. Главное здесь — понять принцип: нужные клавиши пропускаются, лишние — «обнуляются». Также можно «на лету» заменять некоторые символы (в приведённом примере осуществляется замена десятичного разделителя, что может быть удобно при работе с SQL-базами данных, поскольку отпадает необходимость в дополнительное проверке содержимого поля.

Альтернативное решение данной задачи предложил наш читатель dunin:

[code lang=»delphi»]
procedure TMainForm.Edit1KeyPress(Sender: TObject; var Key: char);
begin
Edit1.ReadOnly:= not (Key in [‘0′..’9′,’.’,’,’,#8]);
end;
[/code]

Теги:,

7 комментариев

  1. От Wallaby

    Ответить

  2. От ArchAL

    Ответить

  3. От Сергей

    Ответить

  4. От Paul

    Ответить

  5. От muratov

    Ответить

  6. От Петр

    Ответить

  7. От SnowLeo

    Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *