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

解決


青空  2006-09-07 15:15:38  No: 23130  IP: 192.*.*.*

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

編集 削除
Fusa  2006-09-08 00:30:31  No: 23131  IP: 192.*.*.*

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

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

編集 削除
zebra  2006-09-08 20:59:45  No: 23132  IP: 192.*.*.*

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

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

編集 削除
青空  2006-09-09 00:35:30  No: 23133  IP: 192.*.*.*

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

編集 削除
deldel  2006-09-09 08:52:41  No: 23134  IP: 192.*.*.*

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

編集 削除
青空  2006-09-09 10:20:42  No: 23135  IP: 192.*.*.*

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

編集 削除
F.N.  2006-09-09 21:50:10  No: 23136  IP: 192.*.*.*

こんな風にもできますよ

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 08:45:38  No: 23137  IP: 192.*.*.*

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

編集 削除