是否有一个数字代码来捕获F1按键 - 112不起作用

时间:2014-08-21 14:28:53

标签: windows-7 lazarus

我在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是否可以通过这种方式捕获,这是正确的代码吗?

1 个答案:

答案 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();