![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
edit.keypress [D7, WinXP]
enZinger © (2007-01-07 12:35:00)Подскажите как в событии keypress TEdit сделать обработку, что бы можно было вводить только
!%*+-./=:[]^_{}@0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧС
МИТЬБЮЁйцукенгшщзхъфывапролджэячсмитьбюё
а в остальных случаях ничего не вводило
Я нашел как сделать наоборот, но это немного не подходит.
if ((UpCase(Key) = ';')) then
Key := #0;
PZ (2007-01-07 19:42:00) [21]> [2] Юрий Зотов © (07.01.07 17:40)
Возможно в смысле скорости будет лучше, но мне показалось, так (как у меня) проще.
Юрий Зотов (2007-01-07 17:40:00) [22]> PZ (07.01.07 12:49) [1]
Если сделать не строку, а множество и проверять через in, то будет работать раз в 100 быстрее. А код практически тот же.
PZ (2007-01-07 12:49:00) [23]
Const
S = '!%*+-./=:[]^_{}@0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'+
'abcdefghijklmnopqrstuvwxyzЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧС'+
'МИТЬБЮЁйцукенгшщзхъфывапролджэячсмитьбюё';
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If not (Pos(Key, S) > 0) then Key := #0;
end;