我有一个单位有很多的动作,一些动作有快捷方式,有些甚至有相同的快捷方式。这是因为它们属于应用程序中的不同模块,并且它们不同时处于上下文中。有没有办法用快捷方式覆盖先前注册的操作?
现在我有一个全局非模态对话框(称为objectinspector),可以随时随地启动。它有一些快捷方式与模块中其他地方相同的动作。
所以我想暂时覆盖当objectinspector处于活动状态时共享相同快捷方式的操作,并在停用时释放它。
我有这样的代码在objectinspectors OnActivate事件:
ClientActions.RegisterAction(ClientActions.actObjectInspectorNewWindow, ShowNewObject);
- ClientActions是包含行动单元。
- RegisterAction是一种将事件与操作关联的方法。
- actObjectInspectorNewWindow是实际的操作。
- ShowNewObject是执行操作时应该调用的事件。
因此,对于每个模块和无模式对话框,都有上述方法注册的一些操作。当两个操作共享相同的快捷方式时,问题就来了。当用户按下快捷键时,首先注册的动作似乎取胜并执行。 我首选执行了使用该快捷方式注册动作的最后一个动作。
这怎么办?
问候
可以TAction.OnUpdate事件中使用快捷键使这种冲突可以得到解决? – 2009-10-23 17:50:27