Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что за глюк??? [D6, 2000]


Iehbr ©   (2006-06-06 19:47:00) 

Ламерский вопрос. Ограничиваю в Edit'e ввод только цифровыми значениями. В обработчике Edit1.OnKeyDownпишу следующее
if not Key in [48..57,8] then key:=0;- не работает, печатаю что хочу, как и раньше То бишь и буквы и цифры, хоть кракозябры китайские, все пропускает.

Попробовал так:
if key<48 then if key <> 8 then key :=0 else
if key > 57 then key :=0;


И даже так:
if key <48 then if Key <> 8 then key:=0;
if key > 57 then key :=0;

Хотя разницы никакой...

Никакого эффекта. Сморел пошагово, к примеру приходит символ с кодом 72, проходит мимо проверки if key>57...как ни в чем не бывало и двигает дальше. У меня чё, клавиатура в "god mode" работает? :-)
Где я стормозил? HELP.


Loginov Dmitry   (2006-06-06 20:23:00) [1]

Iehbr ©   (06.06.06 20:00) [4]
Хотелось бы обрабатывать именно в OnKeyDown, т.к. он дает больше возможностей, к примеру обрабатывать те-же  Ctrl+Ins / Ctrl+V


Выполняй проверку в OnChange()


Iehbr   (2006-06-06 20:00:00) [2]

Хотелось бы обрабатывать именно в OnKeyDown, т.к. он дает больше возможностей, к примеру обрабатывать те-же  Ctrl+Ins / Ctrl+V


Iehbr   (2006-06-06 19:57:00) [3]

Это понятно. А почему в OnKeyDown ни один из выше приведенных вариантов не работает? Не знаете?


Ega23   (2006-06-06 19:51:00) [4]

Но это не полностью спасёт. Например, текст можно из буффера обмена вставить...


Ega23   (2006-06-06 19:50:00) [5]

procedure TForm1.Edit1 KeyPress(Sender: TObject;
 var Key: Char);
begin
 if not (Key in ['0'..'9', #8]) then Key:=#0;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо