是否无法使用键盘快捷键中的暂停/中断键?
我知道我可以响应暂停/中断键,例如
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_PAUSE then
ShowMessage('VK_PAUSE pressed');
end;
但是,我无法使用 TShortCut
属性响应 Pause/Break 键,例如在菜单项和操作列表中。对象检查器允许我输入 Pause、Shift + Pause、Ctrl + Pause , Alt + Pause,Ctrl + Shift + Pause 等,所以很清楚识别暂停键。但是当我运行应用程序时,指定的快捷方式不会触发菜单项/操作。有已知的解决方法吗?
最佳答案
对于 D2007,一个快速的解决方法似乎是在运行时分配它;
Action1.ShortCut := VK_PAUSE;
出于某种原因,如果在设计时分配,VK_PAUSE (19) 似乎会转变为 VK_NUMLOCK (144)。
TextToShortCut('Pause');
返回 144 而不是 19。虽然我不确定我是否相信错误出在 Delphi;通过“暂停”,检索快捷方式会找到 menus.GetSpecialName
的路径,我认为不应该。
另一方面,虽然上述解决方法适用于“Alt”和“Shift”修饰符,但不适用于“Ctrl”修饰符。原因是,操作系统分配“Ctrl+Break”处理特殊代码:VK_CANCEL
。要使用“Ctrl+Pause”作为快捷键,必须编写代码;
Action1.ShortCut := menus.Shortcut(VK_CANCEL, [ssCtrl]);
关于delphi - 暂停/中断作为键盘快捷键(Win32,*可能*特定于 Delphi),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3258210/