6

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 仅在瑞典语键盘上有效。我试图阅读这方面的内容,并且像往常一样,MSDN 文档相当清楚,但是,谁知道 Delphi 是如何处理事情的。

4

3 回答 3

6

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

于 2010-08-28T23:28:14.880 回答
1

正确使用数字键盘上的菜单快捷方式是
CtrlNum +[+]
CtrlNum -用于 [-]

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

于 2011-07-25T12:30:44.737 回答
0

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

但是,你是对的,那Menus.ShortCut(ord('-', [ssCtrl])是行不通的。它给出值 16429 并在菜单上显示为Ctrl+ Ins,并且Ctrl+Ins用作快捷方式。

也许这是 Delphi 2009 及更高版本的问题,因为他们添加了 Unicode。

于 2010-08-28T23:20:06.457 回答