Delphi 2009 OnKeyDown не перехватывает, как Delphi 2007 - PullRequest
0 голосов
/ 21 февраля 2009

У меня есть этот код

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
begin
  if not (Key in [Ord('0')..Ord('9')]) then
    Key := 0;
end;

и он работал нормально с Delphi 2007. Когда я обновился до Delphi 2009, и я пытаюсь нажать любую принятую букву, а ключ: = 0 не перехватывает ввод?

Кто-нибудь сталкивался с таким же поведением?

Ответы [ 3 ]

13 голосов
/ 21 февраля 2009

Вы уверены, что это сработало в Delphi 2007? Я только что попробовал код в Delphi 2007 и 2009. И оба ведут себя одинаково (без нажатия клавиш). Если вы хотите принимать только цифры, вы должны использовать событие OnKeyPress и установить для параметра Key значение # 0.

3 голосов
/ 22 февраля 2009

OnKeyDown дает вам скан-код . OnKeyPress дает вам символ . Так было в каждой версии Delphi, которую я помню.

0 голосов
/ 11 января 2012

для отправки Key:=0; на KeyDown Использование события:

Key:=HiWord(GetKeyState(0));

//do something
...