5

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

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

你可能会问我为什么要这个,情况如下:

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


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


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

4

1 回答 1

6

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

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

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

于 2012-04-12T21:32:49.187 回答