Delphi 2009 OnKeyDown不像Delphi 2007那样陷阱

时间:2009-02-21 17:12:44

标签: delphi keyboard delphi-2009 keydown

我有这段代码

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并且我尝试按任何字母时它被接受并且Key:= 0没有捕获输入?

有人遇到过同样的行为吗?

3 个答案:

答案 0 :(得分:13)

你确定这在Delphi 2007中有效吗?我刚刚尝试了Delphi 2007和2009中的代码。两者的行为相同(没有关键行程)如果你只想接受数字,你应该使用OnKeyPress事件并将Key参数设置为#0。

答案 1 :(得分:3)

OnKeyDown 为您提供扫描码 OnKeyPress 为您提供字符。在每个版本的Delphi中我都记得这样。

答案 2 :(得分:0)

Key:=0;事件使用时发送KeyDown

Key:=HiWord(GetKeyState(0));

//do something