Draggo
-
Постов
4 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Draggo
-
-
А что именно не понятно?
Событие срабатывает каждый раз, когда вы вводите новый символ в поле Edit1 (Edit1.Text).
Пишем цикл, в котором пробегаем по всем введённым символам и проверяем их на соответствие списку запрещённых символов. Если находим запрещённый символ, то сразу удаляем его из строки или можно ещё предупреждение Спасибо уже разобрался.
Спасибо, уже разобрался. Может мое решение и не лучшее или даже плохое, но может кому-то (с такой же проблемой) поможет:
procedure TForm1.Edit1ChangeTracking(Sender: TObject); var c1:string; lc1,lc11:integer; begin c1:=Edit1.Text; lc1:=length(c1)-1; lc11:=length(c1); if c1<>'' then begin if Edit1.Text[lc1]='.' then begin delete(c1, lc11, 1); c1:=c1+','; Edit1.Text:=c1; end; if not(CharInSet(Edit1.Text[lc1], ['0'..'9', ',', '-'])) then begin delete(c1, lc11, 1); Edit1.Text:=c1; end; end; end;
-
Честно говоря, я тоже не знаю, почему так происходит…
Но могу подсказать временное решение: используем событие OnChangeTracking, проверяем последний введённый символ (или даже лучше сразу все символы проверять) и решаем, что с ним делать.
Не могли бы вы поподробней рассказать про OnChangeTracking. Никогда с этим не сталкивался.
-
Проблема заключается в следующем: мне нужно запретить ввод в TEdit всех символов, кроме цифр и запятой, а если вводится точка, то подменить ее на запятую.
Запретить пробовал так:
procedure TForm.EditKeyDown(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', 'А'..'Я', 'а'..'я', 'A'..'Z', 'a'..'z', #8 ]) then Key:=#0; end;
Символы продолжают вводиться. Запрет должен происходить при нажатиях на экранную клавиатуру Android'а.
События KeyPressed я в XE6 не нашел.
Запрет ввода определенных символов в TEdit
в Фильтрация ввода
Опубликовано
У меня все нормально работает. Точку заменяет запятой, а при блокировке оставляет только цифры, запятую и минус.