使用 Ctrl + + , Ctrl + - 和 Ctrl似乎很自然 + 0 作为应用程序放大,缩小和恢复默认缩放(通常为100%)操作的快捷方式。现在,在Delphi中,我可以将 Ctrl + + 和 Ctrl + 0 指定为快捷方式。但前者要求使用键盘主要部分的加号;无法使用数字键盘的加号。
但是,当我想将 Ctrl + - 指定为快捷方式时,会出现问题。它根本不起作用。如果我在IDE中指定“Ctrl + - ”,则存储在ShortCut
属性中的值为16495
。如果我们从中减去ssCtrl
,我们就会得到111.人们会相信,解决方法是分配ShortCut := 45 + ssCtrl
,或者等同于ShortCut := Menus.ShortCut(45, [ssCtrl])
,因为ord('-') = 45
。但这不起作用。
但是,我找到了一个有效的解决方案:ShortCut := 189 + ssCtrl
。我选择189,因为这是我按下“ - ”键并收听KeyDown
事件时收到的数字。
那么,为什么我对此不满意?好吧,我担心常量189仅在瑞典键盘上有效。我试图阅读这个,并且,像往常一样,the MSDN documentation相当清楚,但是,谁知道Delphi如何处理事情。
答案 0 :(得分:6)
Windows.pas 中的密钥代码189为VK_OEM_MINUS
,因此您的解决方案不仅适用于瑞典人。
答案 1 :(得分:1)
数字键盘上正确使用的菜单快捷键是
[kbd> Ctrl Num + 表示[+]
Num +和Num之间有一个空格 -
答案 2 :(得分:0)
我不确定你为什么得到16495 Ctrl + - 。当我将该快捷方式添加到一个动作时,它给了我16573,它确实在菜单上显示为 Ctrl + - ,并且该快捷方式确实有效。
但是,Menus.ShortCut(ord('-', [ssCtrl])
不起作用是正确的。它给出值16429并在菜单上显示为 Ctrl + Ins , Ctrl + Ins 作为捷径。
可能这是Delphi 2009及其后的问题,因为他们添加了Unicode。