Ctrl + - (Ctrl + Hyphen-Minus)作为ShortCut键?

时间:2010-08-28 22:46:06

标签: delphi winapi keyboard-shortcuts zoom keycode

使用 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如何处理事情。

3 个答案:

答案 0 :(得分:6)

Windows.pas 中的密钥代码189为VK_OEM_MINUS,因此您的解决方案不仅适用于瑞典人。

答案 1 :(得分:1)

数字键盘上正确使用的菜单快捷键是
[kbd> Ctrl Num + 表示[+]
Ctrl Num - 为[ - ]

Num +和Num之间有一个空格 -

答案 2 :(得分:0)

我不确定你为什么得到16495 Ctrl + - 。当我将该快捷方式添加到一个动作时,它给了我16573,它确实在菜单上显示为 Ctrl + - ,并且该快捷方式确实有效。

但是,Menus.ShortCut(ord('-', [ssCtrl])不起作用是正确的。它给出值16429并在菜单上显示为 Ctrl + Ins Ctrl + Ins 作为捷径。

可能这是Delphi 2009及其后的问题,因为他们添加了Unicode。