Delphi Ctrl+;-(Ctrl+;连字符减号)作为快捷键?

Delphi Ctrl+;-(Ctrl+;连字符减号)作为快捷键?,delphi,winapi,keyboard-shortcuts,zooming,keycode,Delphi,Winapi,Keyboard Shortcuts,Zooming,Keycode,使用Ctrl++、Ctrl+-和Ctrl+0作为应用程序放大、缩小和恢复默认缩放(通常为100%)操作的快捷方式似乎很自然。现在,在Delphi中,我可以指定Ctrl++和Ctrl+0作为快捷键。但前者要求使用键盘主要部分的加号;数字键盘的加号不能使用 然而,当我想将Ctrl+-指定为快捷键时,问题就出现了。它根本不起作用。如果在IDE中指定“Ctrl+-”,则存储在快捷方式属性中的值为16495。如果我们从中减去ssCtrl,我们得到111。有人会认为,一种解决办法是分配快捷方式:=45+ss

使用Ctrl++、Ctrl+-和Ctrl+0作为应用程序放大、缩小和恢复默认缩放(通常为100%)操作的快捷方式似乎很自然。现在,在Delphi中,我可以指定Ctrl++和Ctrl+0作为快捷键。但前者要求使用键盘主要部分的加号;数字键盘的加号不能使用

然而,当我想将Ctrl+-指定为快捷键时,问题就出现了。它根本不起作用。如果在IDE中指定“Ctrl+-”,则存储在
快捷方式
属性中的值为
16495
。如果我们从中减去ssCtrl,我们得到111。有人会认为,一种解决办法是分配
快捷方式:=45+ssCtrl
,或者相当于
快捷方式:=menu.ShortCut(45[ssCtrl])
,因为
ord('-')=45
。但这不起作用

但是,我找到了一个有效的解决方案:
快捷方式:=189+ssCtrl
。我选择189是因为当我按下“-”键并收听
KeyDown
事件时,我收到的数字就是189


那么,为什么我对此不满意呢?嗯,恐怕常数189只在瑞典键盘上有效。我已经试着读过这方面的内容,像往常一样,这是相当清楚的,但是,谁知道Delphi是如何处理事情的呢。

我不知道为什么Ctrl+-会得到16495。当我把这个快捷键添加到一个动作中时,我得到了16573,它在菜单上显示为Ctrl+-,这个快捷键确实有效

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


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

在Windows.pas中,键代码189是
VK\u OEM\u减去
,因此您的解决方案不仅仅适用于瑞典人。

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


Num+和Num-

之间有一个空格,
Word
类型转换相当于他已经尝试过的
Ord
函数。是的,但他不想硬编码“45”。然而这允许他想要的字符。我不确定他为什么说它在他的机器上不起作用。“45”或单词(“-”)这两种方法似乎对我都有效。哦,现在我明白了他的问题。快捷键不起作用。我必须更改我的答案。提示:为Ctrl+=添加别名以便放大,否则你必须在没有数字键盘的键盘上使用Ctrl+Shift+。@道格拉斯:在我的键盘上,我通过按+键(无Shift或Ctrl+Shift)在“P”的正上方插入加号还有“Å”(是的,瑞典键盘看起来确实像-)。这也是我的问题:不同键盘上的键不一样。非常感谢。这正是我想听到的!