多くのアクションを持つユニットがあり、一部のアクションにはショートカットがあり、一部のアクションには同じショートカットさえあります。これは、それらがアプリケーション内の異なるモジュールに属しており、同時にコンテキストにないためです。
これで、いつでもどこでも開始できるグローバルな非モーダル ダイアログ (objectinspector と呼ばれる) ができました。モジュール内の他の場所と同じショートカットを持ついくつかのアクションがあります。
そのため、objectinspector がアクティブなときに同等のショートカットを共有するアクションを一時的にオーバーライドし、非アクティブ化されたときに解放したいと考えています。
objectinspectors の OnActivate イベントに次のコードがあります。
ClientActions.RegisterAction(ClientActions.actObjectInspectorNewWindow, ShowNewObject);
- ClientActions は、アクションを含むユニットです。
- RegisterAction は、イベントをアクションに接続するメソッドです。
- actObjectInspectorNewWindow が実際のアクションです。
- ShowNewObject は、アクションが実行されたときに呼び出されるイベントです。
したがって、すべてのモジュールとモーダルレス ダイアログには、上記の方法で登録されるいくつかのアクションがあります。問題は、2 つのアクションが同じショートカットを共有している場合に発生します。ユーザーがショートカットを押すと、最初に登録されたアクションが勝ち、実行されるようです。そのショートカットにアクションを登録する最後のアクションが実行されることを好みました。
これはどのように行うことができますか?
よろしく