Перейти к содержанию
Fire Monkey от А до Я

Yarik

Пользователи
  • Постов

    4
  • Зарегистрирован

  • Посещение

Достижения Yarik

  1. Код закоментирован просто чтоб показать какие варианты испробовал. Как уже писал в комментариях if not (KeyChar in ['1'..'9']) then keychar:=#0; , как и просто проверка символа с помощью if работает для цифр. В вашем коде таже проверка символов. Попробовал сейчас Ch := TFormatSettings.Create.DecimalSeparator; if keychar=ch then keychar:=#0; все равно не отлавливает ни точку ни запятую Еще так сделал procedure TForm1.Edit1ChangeTracking(Sender: TObject); var s: string; begin s:=Edit1.Text; Edit2.Text:=Edit1.Text; if (pos('.',s)<>0) or (pos(',',s)<>0) or (pos(',',s)<>0) or (pos('.',s)<>0) or (pos(',',s)<>0) or (pos('.',s)<>0) or (pos('-',s)<>0) or (pos('-',s)<>0) or (pos('-',s)<>0) or (pos('-',s)<>0)or (pos('0',s)<>0) or (pos('0',s)<>0) or (pos('0',s)<>0) or (pos('0',s)<>0)then begin delete(s,pos('.',s),1); Edit1.Text:=s; end; end; повторяющиеся точки и запятые это просто вводил из интереса при русской и английской раскладке клавиатуры откоплилировал для виндовс чтоб побыстрее так вот из всего выражения проверяются только точки , хоть в анг. хоть в русской раскладке. И не какой реакции на остальные символы и даже на ноль . Просто хочется разобраться покоя не дает когда что то не понятно. К сожалению недавно перешел на XE7 с Delphi7 очень много изменений. И спасибо за участие буду дальше копать.
  2. 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;
  3. Не отслеживаются символы точки,запятой и минуса в onkeydown ни через if ни через case в этом и проблема.Попрабовал выводить параллельно текст первого edit в другой с проверкой и удалением этих символов они все равно печатаются и во втором причём удаляется только точка и то если только после ввода этих символов нажимать на клавишу какой нибудь цифры.
  4. Нужна помощь. Есть компонент Edit для него выбрана цифровая клавиатура нужно чтобы вводились только цифры и больше ничего.При нажатии на точку, запятую и ' - ' они отображаются пробовал через case of и с помощью FilterChar , а так же OnChange ничего не помогло . По событию OnKeyDown хотел узнать значение Key кнопок . На цифровых кнопках это значение равно 0 на всех цифрах. На точке, запятой и ' - ' вообще значение Key не выводится. Цифры же легко фильтруются FilterChar. Подскажите пожалуйста что можно сделать очень надо.
×
×
  • Создать...