如何在单个表单中获取多个TActionMainMenuBar对象的快捷方式?

5 delphi c++builder

我有一个主表单的应用程序.在这种形式中,我放置了三个TActionMainMenuBars,因为应用程序基本上以三种不同的模式运行.

菜单栏全部由在主窗体上的TActionManager中存储(代理)的动作构成.ActionManager实际上引用了各种其他形式的动作列表.

然后显示菜单栏+启用并隐藏+禁用,以便一次只能看到一个菜单栏.这样做效果很好,如果点击操作或者使用ALT导航操作,然后使用箭头键或标题中带下划线的字符.

但问题是,操作似乎没有响应任何快捷键按下.

有谁知道什么可能导致行动不发射?

如果需要,我将很乐意提供更多信息,我正在使用WinXP SP3中的C++ Builder 2007 RAD Studio进行编程.

感谢任何阅读此内容的人,或者甚至阅读本文并提出解决方案!

PeterMJ

更新:我没有说明不同菜单中的快捷方式重叠,因为不同菜单中的相同快捷方式用于不同的操作,但所有快捷方式在自己的菜单中都是唯一的.

我还简化了测试应用程序中的问题,使用了两个TActionMainMenuBars,并且所有操作共享了一个操作管理器.在这种情况下,我有两个具有相同快捷方式的操作.它们放在不同的菜单上.然后一次启用一个菜单.在这种情况下,快捷方式可以正常工作,但是当使用公共快捷方式时,即使禁用了保留菜单,只触发第一个菜单中的操作.

这稍微好于我的实际问题,因为某些操作会触发,但突出显示操作未被正确触发.有没有人没有解决方案?

Fra*_*ois 0

确保您要使用的操作实际上已启用。
如果在禁用 ActionMainMenuBar 时禁用该栏内的每个操作,则会出现问题。
还要确保使用可用的快捷方式,不要与 Windows 全局快捷方式冲突。
除此之外,我不明白为什么它不起作用。我尝试在 Delphi 中使用 2 个 ActionMainMenuBars,并且快捷方式有效。