繁体   English   中英

Delphi 2009 OnKeyDown不会像Delphi 2007那样陷阱

[英]Delphi 2009 OnKeyDown does not trap as Delphi 2007 does

我有这个代码

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

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

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

OnKeyDown给您一个scancode OnKeyPress给您角色 我记得每个版本的Delphi都采用这种方式。

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

Key:=HiWord(GetKeyState(0));

//do something

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM