English 中文(简体)
Delphi 2009 的 OnKeyDown 无法像 Delphi 2007 的那样捕捉。
原标题:
  • 时间:2009-02-21 17:12:44
  •  标签:

我有这个代码。

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 不能捕获输入?

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

最佳回答

您确定这在Delphi 2007上起作用吗?我刚刚在Delphi 2007和2009上尝试了这段代码。它们的行为都一样(没有按键被吃掉)。如果您只想接受数字,您应该使用OnKeyPress事件,并将Key参数设置为#0。

问题回答

OnKeyDown会提供给你一个扫描码。OnKeyPress会提供给你字符。在我记忆中,Delphi的每个版本都是这样的。

要在KeyDown事件中发送Key:=0;,请使用:

Key:=HiWord(GetKeyState(0));

//do something




相关问题
热门标签