我们知道如果我们将一个快捷方式(例如, Ctrl + F2 )设置为TMenuItem,一旦按下指定的快捷方式,菜单项将自动执行 ,当显示菜单时,也会显示快捷方式描述。
但是有没有办法在菜单项上显示快捷方式说明但是菜单不会自动响应快捷方式?
你可能会问我为什么要这样,情况如下:
在多文档(如firefox的多个标签)程序中,有多个TPopupMenu实例,因此多个TMenuItem对象具有相同的快捷方式,但我只希望活动文档窗口中的菜单项响应快捷方式。
编辑1 :抱歉,我想简化我的问题并且我错误地描述了 - 实际上,我使用TActionList并将操作链接到菜单项。
编辑2 :刚刚发现:我想我可以使用TApplicationEvents.OnShortCut Event拦截快捷方式,然后再将它们发送到菜单/操作...我会尝试并会更新我得到结果时的问题。
答案 0 :(得分:6)
使用选项卡(#9)字符表示标准菜单中文本的缩写部分。您可以通过编辑“dfm”或在运行时设置菜单项的Caption
属性或菜单项绑定的操作组件,以包含制表符:
procedure TForm1.FormCreate(Sender: TObject);
begin
Action1.Caption :=
Action1.Caption + #9 + ShortCutToText(ShortCut(VK_F2, [ssCtrl]));
除非您还分配了菜单项或操作的ShortCut
属性本身,否则不会触发click / execute事件。