


 
 
 
 
 
 
 |
DelphiXE3 [FMX]ポップアップメニュー(PopupMenu) 2013/09/20 |
前頁で[Standard]内の「MainMenu」(メインメニュー)について書きましたので次に、同じく[Standard]内の「PopupMenu」(ポップアップメニュー)です。
【Delphi2010の記事はこちら】
【DelphiXE3[VCLアプリケーション]の記事はこちら】

 |
メインメニューと同じく、ポップアップメニュー自体のプロパティは VCLと比較して非常に少ない感じです。
フォーム上に作成されるPopupMenu1のアイコンをダブルクリックするとメインメニューと同じ「項目デザイナ」が表示され、オブジェクトインスペクタと併せて使用することにより、メニューの作成・編集を行う事が出来ます。 |
[項目の追加]ボタンをクリックすると、メニューの項目を追加する事が出来ます。最初は「MenuItem1」と表示されます。
 |
この「MenuItem1」をクリックして、オブジェクトインスペクタの内容を変更します。
取りあえず「Text」プロパティの内容を「MenuItem1」から「テストです」に変えてみます。
すると「項目デザイナ」の表示内容も変化するのが分かります。 |
オブジェクトインスペクタにて、メニュー項目 MenuItem1 のイベント欄の「OnClick」でダブルクリックを行い、クリックイベントを下記のように記述します。
procedure TForm1.MenuItem1Click(Sender: TObject);
begin
ShowMessage('これはテストです。');
end; |
VCLアプリケーションの場合は、フォーム等に Popupプロパティがあり、そこに PopupMenu1 等と指定をする事によって、そのコントロール上で右クリックを行う事により自動的にポップアップメニューが表示されていました。
しかし、FireMonkeyアプリケーションの場合、フォームには、Popupプロパティはありません。ですので例えば、マウスボタンを押したイベントで右クリックを行なった場合にはポップアップメニューを表示させろ、というプログラミングを行うとか、Popupプロパティを持つコントロールを配置して、指定するとか、ボタンを押したらポップアップメニューを表示させるとか、等のような事になりそうな感じです。
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
var
p : TPointF ;
begin
if (ssRight in Shift) then begin
p := Form1.ClientToScreen(PointF(X,Y));
PopupMenu1.Popup(p.X,p.Y);
end;
end; |
procedure TForm1.Button1Click(Sender: TObject);
begin
PopupMenu1.Popup(Screen.MousePos.X,Screen.MousePos.Y);
end; |
保存・コンパイル(ビルド)・実行を行います。

フォーム上で右クリック
又は

ボタンをクリック
メニュー項目「テストです」をクリック
↓

のようになって、思惑通りに動作していることが確認出来ます。
それでは、メニュー項目のプロパティ内容を確認します。
メインメニューと同じく TMenuItemオブジェクトが生成されますので、メインメニューの場合と同じだと思われます。
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/09/19
2013/09/20
▼2013/09/21
シェアウェア
Script!World
データベース
|