我有这段代码
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没有捕获输入?
有人遇到过同样的行为吗?
答案 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