5

TMenuItemにショートカット(たとえば、Ctrl + F2 )を設定すると、指定したショートカットを押すとメニュー項目が自動的に実行され、メニューが表示されるときにショートカットの説明も表示されることがわかっています。

しかし、メニュー項目にショートカットの説明を表示して、メニューがショートカットに自動的に応答しないようにする方法はありますか?

なぜこれが欲しいのかと聞かれるかもしれませんが、状況は次のとおりです。

複数のドキュメント(Firefoxの複数のタブなど)プログラムには、TPopupMenuの複数のインスタンスがあるため、複数のTMenuItemオブジェクトに同じショートカットがありますが、アクティブなドキュメントウィンドウのmenuitemのみがショートカットに応答するようにします。


編集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 に答える