代码之家  ›  专栏  ›  技术社区  ›  Andreas Rejbrand

暂停/中断作为键盘快捷键(Win32,*可能是*特定于Delphi)

  •  4
  • Andreas Rejbrand  · 技术社区  · 15 年前

    暂停/中断

    我知道我能回应 暂停/中断 键,例如。

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key = VK_PAUSE then
        ShowMessage('VK_PAUSE pressed');
    end;
    

    暂停/中断 TShortCut 属性,例如在菜单项和操作列表中。对象检查器允许我进入 暂停 班次 + , Ctrl键 + 暂停 + 暂停 , + 班次 + 所以它清楚地认识到 钥匙。但是当我运行应用程序时,菜单项/操作不会在指定的快捷方式上触发。是否有已知的解决方法?

    1 回复  |  直到 14 年前
        1
  •  12
  •   Sertac Akyuz    15 年前

    对于D2007,一个快速的解决方法似乎是在运行时分配它;
    Action1.ShortCut := VK_PAUSE;
    由于某些原因,如果在设计时指定,VKïu PAUSE(19)似乎会变异为VKïu NUMLOCK(144)。


    在设计时指定快捷方式时,IDE必须将字符串转换为快捷方式。问题是 TextToShortCut('Pause'); 返回144而不是19。虽然我不确定我是否相信德尔福的错误;使用“Pause”,检索快捷方式可以 menus.GetSpecialName


    另一方面,虽然上面提到的解决方法可以使用'Alt'和'Shift'修饰符,但是不能使用'Ctrl'修饰符。原因是,操作系统assings'Ctrl+Break'处理一个特殊代码: VK_CANCEL

    Action1.ShortCut := menus.Shortcut(VK_CANCEL, [ssCtrl]);