我有一个有很多动作的单元,有些动作有快捷方式,有些甚至有相同的快捷方式。这是因为它们在应用程序中属于不同的模块,并且它们不在同一时间上下文中。
现在我有了一个可以随时随地启动的全局非模态对话框(称为 objectinspector)。它具有与模块中其他位置相同的快捷方式的一些操作。
因此,我想在 objectinspector 处于活动状态时临时覆盖那些共享相同快捷方式的操作,并在停用时释放它。
我在 objectinspectors OnActivate 事件中有这段代码:
ClientActions.RegisterAction(ClientActions.actObjectInspectorNewWindow, ShowNewObject);
- ClientActions 是包含操作的单元。
- RegisterAction 是一种将事件与动作连接起来的方法。
- actObjectInspectorNewWindow 是实际操作。
- ShowNewObject 是执行操作时应调用的事件。
因此,对于每个模块和无模式对话框,上述方法都会注册一些操作。当 2 个操作共享相同的快捷方式时,问题就出现了。似乎首先注册的操作获胜并在用户按下快捷方式时执行。我更喜欢执行使用该快捷方式注册操作的最后一个操作。
如何才能做到这一点 ?
问候