我在Windows7上的Lazarus中的文本输入字段上使用KeyPress事件来检测和解释某些键序列,但我想检测F1以弹出“帮助”对话框。
我可以捕获#13作为返回键没问题,但使用#112似乎没有捕获F1。
我的代码如下:
procedure TForm1.keyCatcherKeyPress(Sender: TObject; var Key: char);
begin
if ( AnsiContainsStr('0123456789',Key) ) then
begin
{my processing code}
end
else
if ( Key = #13 ) then
begin
{my processing code}
... some other key checks that all work fine...
else
if ( Key = #112) then
showHelp();
F1是否可以通过这种方式捕获,这是正确的代码吗?
答案 0 :(得分:1)
感谢上面的TLama指导,我在Lazarus论坛上发现了以下帖子,它为我提供了解决方案:
http://forum.lazarus.freepascal.org/index.php?topic=14814.0
我的按键检测代码现在分为使用KeyPress
事件检测到的普通字符和特殊字符'使用OnKeyDown
事件检测到按键。
procedure TForm1.keyCatcherKeyPress(Sender: TObject; var Key: char);
begin
if ( AnsiContainsStr('0123456789',Key) ) then
begin
{my processing code}
end
else
... some other key checks that all work fine...;
和
if ( Key = VK_Return ) then
begin
{my processing code}
else
if ( Key = VK_F1 ) then
showHelp();