メインメニューのメニューアイテムを表示するには?

解決


青空  2006-09-08 00:15:38  No: 23130

お世話になっています。
TMainMenuのTMenuItemをマウスイベントやキーボードイベントから呼び出し指定した位置に表示したいのです。
過去ログにもそれらしき質問がありましたが?
理解できません。
サンプルなどありましたら、助かります。


Fusa  2006-09-08 09:30:31  No: 23131

勘違いしていたらすいません。

そのTMenuItemのプロパティの内容をコピーして
TPopupMenuのMenuItemを作成して
それを指定した位置に表示してみる方法はいかがでしょうか?


zebra  2006-09-09 05:59:45  No: 23132

よく分からないのですが、メインメニューを丸ごとポップアップさせたいって事なんでしょうか?

それでしたら、メインメニューを貼り付けた別フォームを作って、そのフォームをOnContextPopupとかで表示するようにすればできるような気はします。


青空  2006-09-09 09:35:30  No: 23133

Fusaさま、zebrasさま、ありがとうございます。
解かりにくい質問をしてしまいましてすみません。
>メインメニューを丸ごとポップアップさせたいって事なんでしょうか? 
まるごとではなくて、たとえばメインメニューの「ファイル」をクリックすると下にぶら下って表示されるItemです。
これを、キーボードのダウンイベントなどから、指定した位置に表示させたいのです。
Fusaさまのご指摘のようにポップアップコンポーネントを1つ貼り付けてこれに同じ処理をコーティングすればすむのですが、、、


deldel  2006-09-09 17:52:41  No: 23134

メインメニューは「ファイル」だけの項目を1つ作成し、
別にポップアップメニューを作成しておきます。
で、「ファイル」のクリックイベントでポップアップメニューを表示するようにし、
同様に「マウスイベントやキーボードイベント」でも同じポップアップメニューを表示するっていうのはどうですか?


青空  2006-09-09 19:20:42  No: 23135

deldelさま。ありがとうございます。
その方法でやってみます。


F.N.  2006-09-10 06:50:10  No: 23136

こんな風にもできますよ

procedure TForm1.FormDblClick(Sender: TObject);
var
  uItem: integer;
begin
  uItem := integer(TrackPopupMenu(
    MainMenu1.Items[0].Handle, //ポップアップする項目のハンドル
    TPM_LEFTALIGN or TPM_LEFTBUTTON or TPM_RETURNCMD,
    Mouse.CursorPos.X,
    Mouse.CursorPos.Y,
    0,
    Form1.Handle,
    nil
  ));

  PostMessage(Form1.Handle, WM_COMMAND, uItem, 0); //選択されたコマンドをポスト
end;


青空  2006-09-11 17:45:38  No: 23137

F.Nさま。ありがとうございます。
解決にチェックを入れたので、しばらくQ&Aを見ていませんでした。
たった今、見たところです。すみません。
外出中のため、帰宅後やってみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加