Yarik
-
Постов
4 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Yarik
-
-
Приведите код из OnKeyDown. Буквально вчера реализовывал TEdit для беззнаковых/знаковых целых/дробных чисел - никаких проблем не было.
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); var s:string; begin { if not (KeyChar in ['1'..'9']) then keychar:=#0; // c цифрой 0 работает она не печатается // с '.' , ',' , '-' не работает case KeyChar of // с '.' , ',' , '-' не работает '0'..'9': ; else KeyChar:=#0; end; s:=Edit1.Text; Edit2.Text:=Edit1.Text; if pos('.',s)<>0 then begin delete(s,pos('.',s),1); Edit1.Text:=s; Edit2.Text:=s; end; } end; procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); var s:string; begin { if not (KeyChar in ['1'..'9']) then // c цифрой 0 работает она не печатается keychar:=#0; // с '.' , ',' , '-' не работает case KeyChar of // с '.' , ',' , '-' не работает '0'..'9': ; else KeyChar:=#0; end; } s:=Edit1.Text; // цифры сразу выводятся и в Edit1.Text и в Edit2.Text // точки сразу выводятся в Edit1.Text, а удаляться и в Edit2.Text только после нажатия цифровой клавиши Edit2.Text:=Edit1.Text; // не пойму как KeyDown и KeyUp реагирует на нажатие не цифровых кнопок if pos('.',s)<>0 then begin delete(s,pos('.',s),1); Edit1.Text:=s; Edit2.Text:=s; end; end;
-
Не отслеживаются символы точки,запятой и минуса в onkeydown ни через if ни через case в этом и проблема.Попрабовал выводить параллельно текст первого edit в другой с проверкой и удалением этих символов они все равно печатаются и во втором причём удаляется только точка и то если только после ввода этих символов нажимать на клавишу какой нибудь цифры.В OnKeyDown проверять и менять KeyChar
Key используется только для непечатаемых символов.
-
Нужна помощь. Есть компонент Edit для него выбрана цифровая клавиатура нужно чтобы вводились только цифры и больше ничего.При нажатии на точку, запятую и ' - ' они отображаются пробовал через case of и с помощью FilterChar , а так же OnChange ничего не помогло . По событию OnKeyDown хотел узнать значение Key кнопок . На цифровых кнопках это значение равно 0 на всех цифрах. На точке, запятой и ' - ' вообще значение Key не выводится. Цифры же легко фильтруются FilterChar. Подскажите пожалуйста что можно сделать очень надо.
Как запретить некоторые символов виртуальной клавиатурой.
в Виртуальная клавиатура
Опубликовано
Код закоментирован просто чтоб показать какие варианты испробовал.
Как уже писал в комментариях if not (KeyChar in ['1'..'9']) then keychar:=#0; , как и просто проверка символа с помощью if работает для цифр. В вашем коде таже проверка символов. Попробовал сейчас
Ch := TFormatSettings.Create.DecimalSeparator;
if keychar=ch
then
keychar:=#0; все равно не отлавливает ни точку ни запятую
Еще так сделал
повторяющиеся точки и запятые это просто вводил из интереса при русской и английской раскладке клавиатуры откоплилировал для виндовс чтоб побыстрее так вот из всего выражения проверяются только точки , хоть в анг. хоть в русской раскладке. И не какой реакции на остальные символы и даже на ноль . Просто хочется разобраться покоя не дает когда что то не понятно. К сожалению недавно перешел на XE7 с Delphi7 очень много изменений. И спасибо за участие буду дальше копать.