0

我有这个代码

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

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

4

3 回答 3

13

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

于 2009-02-21T17:38:53.887 回答
3

OnKeyDown给你一个扫描码OnKeyPress为您提供角色。在我记得的每个版本的 Delphi 中都是这样。

于 2009-02-22T00:08:01.893 回答
0

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

Key:=HiWord(GetKeyState(0));

//do something
于 2012-01-11T13:15:36.987 回答