设置菜单项的'view-only'快捷方式?



我们知道,如果我们为TMenuItem设置快捷方式(例如Ctrl + F2),一旦按下指定的快捷方式,菜单项就会自动执行,并且显示菜单时也会显示快捷方式描述

但是有没有办法让快捷方式描述在菜单项上可见,但使菜单不自动响应快捷方式?

你可能会问我为什么想要这个,情况是这样的:

在多文档(如Firefox的多个选项卡)程序中,有多个TPopupMenu实例,因此多个TMenuItem对象具有相同的快捷方式,但我只希望活动文档窗口中的菜单项响应快捷方式。


编辑1:对不起,我想简化我的问题,但我描述错误 - 实际上,我使用TActionList并将操作链接到菜单项。


编辑2:刚刚找到:我想我可以使用TApplicationEvents.OnShortCut事件在快捷方式被调度到菜单/操作之前拦截快捷方式...我会尝试并在得到结果时更新我的问题。

使用制表符 字符指示标准菜单中文本的 shorcut 部分。您可以通过编辑"dfm"或在运行时设置菜单项或菜单项绑定到的操作组件的 Caption 属性以包含制表符:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Action1.Caption :=
      Action1.Caption + #9 + ShortCutToText(ShortCut(VK_F2, [ssCtrl]));

除非还分配给菜单项或操作的 ShortCut 属性本身,否则不会触发单击/执行事件。

最新更新