键盘快捷键中是否无法使用 Pause / Break 键?
我知道我可以回复 Pause / Break 键,例如
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_PAUSE then
ShowMessage('VK_PAUSE pressed');
end;
但是,我无法使用TShortCut
属性回复 Pause / Break 键,例如在菜单项和动作列表中。对象检查器允许我输入暂停, Shift + 暂停, Ctrl + 暂停 , Alt + 暂停, Ctrl + Shift + 暂停等清楚识别 Pause 键。但是当我运行应用程序时,不会在指定的快捷方式上触发菜单项/操作。有没有已知的解决方法?
答案 0 :(得分:11)
使用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]);