問題タブ [tactionmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - Action Manager が Data Module にある場合、キーボード ショートカットがキャッチされませんか?
Delphi XE2 では、アプリケーションにデータ モジュールがあり、そのデータ モジュール内にアクション マネージャーがあります。各アクションにキーボード ショートカットを割り当てましたが、アプリでこれらのショートカットを使用しようとすると、キャッチされません。
アプリケーションの初期化内でデータ モジュールを作成しています (IDE がプロジェクトのメイン ファイルのコードを歪めているため、別のユニットに移動されます)...
このように Data Module を作成する理由は、さまざまな形式のアプリケーションがその中のコンポーネント、特に Action Manager を使用できるようにするためです。メインフォームを作成する前に作成する必要があります。
アクション マネージャーがデータ モジュールにある場合、アクション アイテムのキーボード ショートカットを機能させるにはどうすればよいですか?
delphi - アイテムの選択が解除されない TActionMainMenuBar ペイント バグの回避策
TActionMainMenuBar には、子項目のないルート要素の描画に関するバグがあります。
Delphi XE2 / w7-32bit** の使用
再現方法:
TActionMainMenuBar でメニューを作成し、いくつかのアクションを追加します。
すべてのアクションに 1 つの空のメソッドを割り当てる
アプリケーションを実行し、オプションまたはヘルプ要素をクリックしてみてください。
フォームをクリックしますが、メニュー要素はまだ押されたままです!
回避策はありますか?
upd: スクリーンショットを見てください。メニュー要素がダウンしていますが、マウス カーソルがメニューになく、autocheck が false で、checked も false です。
ここにはフォーム上のカラーマップはなく、マネージャー スタイルはプラットフォームのデフォルトです
delphi - 一部のメニュー項目が水平方向に収まらない場合に TActionMainMenuBar にシェブロン (二重矢印) を追加する方法
TActionMainMenuBar にはこの機能がありません。
TActionToolBar は Chevron を自動的に追加しますが、このメニューにはいくつかのカスタマイズ コマンドがあります。
この機能を TActionMainMenuBar に追加して、シェブロン メニューからカスタマイズ コマンドを非表示にする方法は?
それとも、この機能をエミュレートしますか?
delphi - Delphi の actionmanager のアクションでショートカット キーが表示されない
delphi7 で actionmanager を使用しようとしましたが、ショートカット キーに含まれる action1 のキャプションを作成する必要がない限り、ほとんど問題ありません。たとえば、次のようになります。
アクション アイテムにショートカットを割り当てるときに正確に必要なものは、ツールバーのボタン内に自動的に表示されるようにすることです。
delphi - ActionMainMenuBar のメニュー、サブメニューを無効にするには?
使用: Delphi XE3、VCL フォーム アプリケーション
ActionMainMenuBar にサブメニューを含むメニューがあります。コードを介してどのようにすればよいですか:
- メニューを無効にする
- サブメニューを無効にする
delphi - ActionMainMenuBar のメイン メニュー (=Category、TAction サブメニュー経由) に OnClick イベントを追加するにはどうすればよいですか?
古き良きものを交換TMainMenu
しTActionMainMenuBar
ていますが、いくつか問題があります。
現在、メイン メニュー項目に「OnClick」ハンドラを使用していますが、同じ動作を で再現する方法が見つかりませんTActionMainMenuBar
。
たとえば、TAction
「サンプル」カテゴリの「テスト」を作成し、これを にドラッグ アンド ドロップしTActionMainMenuBar
ます。サブメニュー「Test」の実行ハンドラには がTAction
割り当てられているため、コードを追加できますが、メイン メニュー項目「Sample」には、単に Category / TActionClientItem であるため、イベント コードを追加できません」イベントなしでテストします。
これにアクションを割り当てようとしましたTActionClientItem
が、Delphi XE3 は「プロパティを設定できません...」と言っています。
別の方法としてはTActions
、"(カテゴリなし)" を使用して "Sample" と "Test" の 2 つを使用する方法ですが、先ほどドロップした "Sample" のサブメニューとして "Test" をドラッグ アンド ドロップできませんTActionMenuBar
。空のメイン メニュー項目のサブメニュー項目ではなく、メイン メニュー項目のみをドラッグ アンド ドロップできるようです。
delphi - 実行時に ActionBars を再帰的に作成するにはどうすればよいですか?
大規模なレガシー アプリケーションのTMainMenu
階層をTActionMainMenuBar
アイテムにマップするクラスを作成しています。
最も重要な方法は、Steve Trevethen による EDN CodeCentralC の記事を大いに参考にしたもので、次のようになります。長々と申し訳ありませんが、これはおそらく、この場合に意味のあるコードを表示できる最短の長さです。
上記の最も重要な行は次の行であり、間違っている行でもあります。
コードがそのように記述されている場合、すべてのメニュー項目がフラットな形式で表示されます。したがってAC.GetMeSubItems.ActionClients
、上記の行のようなものが必要ですが、それが何であるかわかりません。AC
タイプTActionClientItem
であり、実行時に作成されるツールバー ボタン自体です。
私の人生で理解できないのは、アクションリストとメニュー項目を一度に再帰的に入力する必要がある場合、どうすればよいですか? おそらく、私の考えは、ここで始めたサンプル コードによって制限されているのでしょう。これを行う方法を知るには、1行のコードしかないようです。
ここでいじっているさまざまなクラスの複雑な階層関係をよく理解していないように感じます。
更新: 次のように動作するようですが、私は自分自身を信頼していません。
delphi - ActionMainMenuBar - アクション項目を手動で追加した後、メニュー項目が無効ステータスを更新しない
使用: Delphi XE2、32 ビット Windows VCL フォーム アプリケーション
ActionManager で、アクションを追加し、カテゴリ名を割り当てました。次に、カテゴリを ActionManager からフォームの ActionMainMenuBar にドラッグ アンド ドロップします。これは、ActionMainMenuBar にメニュー項目を作成するために行いました。コードを介して手動でアクションを作成および追加する予定であり、「最初の」アクションを実際に使用しないため、 を設定して非表示にしますVisbile := False
。
ただし、実行時に、プログラムでアクションを作成してメニューに追加した後でも、メニューは無効のままになります。追加されたアクションが有効になり、有効な OnExecute イベント ハンドラーがあるため、これは予期されていません。
私の質問は、1 つ以上のアクション アイテム (サブ メニュー アイテム) を追加した後に有効になるように、メニュー アイテムを更新するにはどうすればよいですか?
コードでは、私はこれを持っています:
以下は、デザイン モードでの ActionMainMenuBar、ActionManager、および初期アクション (Visible が False に設定されている) のスクリーン キャプチャです。
ティア。