お世話になっています。
TMainMenuのTMenuItemをマウスイベントやキーボードイベントから呼び出し指定した位置に表示したいのです。
過去ログにもそれらしき質問がありましたが?
理解できません。
サンプルなどありましたら、助かります。
勘違いしていたらすいません。
そのTMenuItemのプロパティの内容をコピーして
TPopupMenuのMenuItemを作成して
それを指定した位置に表示してみる方法はいかがでしょうか?
よく分からないのですが、メインメニューを丸ごとポップアップさせたいって事なんでしょうか?
それでしたら、メインメニューを貼り付けた別フォームを作って、そのフォームをOnContextPopupとかで表示するようにすればできるような気はします。
Fusaさま、zebrasさま、ありがとうございます。
解かりにくい質問をしてしまいましてすみません。
>メインメニューを丸ごとポップアップさせたいって事なんでしょうか?
まるごとではなくて、たとえばメインメニューの「ファイル」をクリックすると下にぶら下って表示されるItemです。
これを、キーボードのダウンイベントなどから、指定した位置に表示させたいのです。
Fusaさまのご指摘のようにポップアップコンポーネントを1つ貼り付けてこれに同じ処理をコーティングすればすむのですが、、、
メインメニューは「ファイル」だけの項目を1つ作成し、
別にポップアップメニューを作成しておきます。
で、「ファイル」のクリックイベントでポップアップメニューを表示するようにし、
同様に「マウスイベントやキーボードイベント」でも同じポップアップメニューを表示するっていうのはどうですか?
deldelさま。ありがとうございます。
その方法でやってみます。
こんな風にもできますよ
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;
F.Nさま。ありがとうございます。
解決にチェックを入れたので、しばらくQ&Aを見ていませんでした。
たった今、見たところです。すみません。
外出中のため、帰宅後やってみます。
ツイート | ![]() |