Revision 3 of 3, by WikiArchive on 11-10-2026. The page as it is now.
TPopupMenu/ja
日本語版メニュー
メインページ - Lazarus Documentation日本語版 - 翻訳ノート - 日本語障害情報
TPopupMenu
はマウスの右ボタンがクリックされるとポップアップするメニューパネルである。
これは目に見えないコンポーネントで、即ち、もしコンポーネントパレットのStandardタブから選ばれ、フォームの上に置かれたとき、ランタイムに現れない。その代わり、メニューエディタによって構造定義されたメニューバーが現れる。
Menu Editorを見るには、Main Menuアイコンをフォーム上で右クリックする。
ポップアップメニューを作る
以下の道筋で、Formコンポーネントにポップアップメニューの追加の仕方を示す:
- 新しいGUIアプリケーションを作り、TImageをそのフォームに挿入する。このため、コンポーネントパレット Additional でTImageを選択し、フォームの上でクリックする。これで Image1 の名前でTImageがフォーム上に配置される。
- オブジェクトインスペクタに移動(Image1 であるはずだ)し、 Align プロパティを選択する。隣のコンボボックスで alClient を1列に調節する(Image1はフォームのサイズに調節される)。
- フォームの上にTPopupMenu(stanndardタブ)を配置する(もし可能なら「Image1」上に、そうすればこれが画像に1つとわかる)。コンポーネント PopupMenu1 は(ドロップダウンメニューとコンポーネントの名前の表示と直角に)フォーム上に表示される。
- 「PopupMenu1」を右クリックすると、ポップアップメニューが現れる。最初の項目 Menu Editor をクリック
- New Item1 のキャプションでメニューアイテムがすでに作られており、メニューエディタウィンドウで開く。おそらくこれを変更したいだろう、そのためにはクリックし、オブジェクトインスペクタに移動する。
- オブジェクトインスペクタでMenuItem1から何かふさわしい名前にするためNameプロパティを変更する。これをLoadメニューと呼ぶことにする。そこでNameをpopLoad とタイプし、エンターを押す。
- New Item1より、ましなものとしたい、そこでCaptionプロパティに行きLoad とタイプし、エンターを押す。
- さらにもう1つの入力項目がある。メニューエディタウインドウに戻り、 Load を右クリックする。ポップアップメニューが現れる。
- Insert New Item After をクリックすると、 New Item2 という名前の新たなメニューが現れる。前の2つのアイテムで説明した通り、この名前をpopStretch 、キャプションをStretched へとオブジェクトインスペクタで変更する。
- メニューへの入り口を忘れていることに気づくが、悪いことではない、メニューエディタに戻る。Load を右クリックするか、Insert New Item (after) をクリック、またはStretched で右クリックし、Insert New Item (before) をクリックする。
- キャプションをCentered 名前をpopCenter 変更する。
- 必要なそれぞれのメニューアイテムが終端で閉じるようにメニューエディタで調節する。
- すべてのメニューを加えたとき、どのコンポーネントが結び付くべきかまだ設定しなければならない。この場合、これはフォームに最初に配置したTImage、 Image1 であるべきである。
- フォーム上の Image1 を選択し、オブジェクトインスペクタのプロパティPopupMenu へ移動する。そこで、隣のコンボボックスの PopupMenu1 を選択する。
- 実行中は画像を右クリックするといつもポップアップメニューが現れるだろう。
これで実行中メニューが現れ、ユーザーがメニューをクリックすることが可能となる。これは実際何もしない。何かをするメニューアイテムを作るには、それぞれのメニューについてクリックに反応するeventsを加えなければならない。
以下にオブジェクトインスペクタを用いてメニュークリックイベントの編集の仕方を説明する。
実際に何かをするメニューを作る
- メニューエディタにもどり、クリックしてLoad メニューアイテムをクリックして選択する。そしてオブジェクトインスペクタウインドウへ移動し、events タブを選択する。変えたいイベントだけを変える、それは今、空の OnClick である。もし用いるべきEventHandlerをすでに持っているなら、それらを使うことができるし、それに応じて選択することもできる、さもなくば、Lazarusで作ることもできる。右側に3つの点があるボタンがある。クリックする。そうすると新しいプロシージャ(新しく生成したイベントハンドラ)がコードの中に生成され、ソーステキストエディタに対する変化が見て取れる。このプロシージャはこのように見えるだろう:
procedure TForm1.popLoadClick(Sender: TObject);
begin
end;- begin とend 間にメニューエントリ Load に対するコードを挿入することができる。
この場合フォームの上にTOpenDialogコントロールを挿入し、この目的ンために標準ダイアログを使うことができるだろう:
- そのため、TOpenDialogコントロールをフォームに入れ(コンポーネントパレット ダイアログ)、その名前は OpenDialog1 である。プロシージャを以下に変更する:
procedure TForm1.popLoadClick(Sender: TObject);
begin
if OpenDialog1.Execute then //ファイルが選択された場合のみ
try //try
Image1.Picture.LoadFromFile(OpenDialog1.Filename); //そのファイルを読み込む
except
end;
end;- 他のメニューアイテムも同様のプロシージャで、それぞれのイベントハンドラを作り、以下のコードを挿入する:
procedure TForm1.popStretchClick(Sender: TObject);
begin
popStretch.Checked := not popStretch.Checked; //マーク/チェック on/off
Image1.Stretch := popStretch.Checked; //Image1 引き伸ばし yes/no
end;
procedure TForm1.popCenterClick(Sender: TObject);
begin
popCenter.Checked := not popCenter.Checked; //マーク/チェック on/off
Image1.Center := popCenter.Checked; //Image1 中央配置 yes/no
end;- これで、このサンプルを
F9で実行し、右クリックでポップアップメニューが開き、 Load をクリックする。すると選んだ画像が読み込まれる。画像を取り込んだら、他のメニューエントリを試してみよう。
自己ポップアップ
特定のコンポーネント、異なるイベントでは右クリックでポップアップを表示させたくない場合があるかもしれない。その時はPopupMenu.PopUp を実行することができる。
簡単な例:
- 新しいGUI application/jaを作り、そのフォームにTPopupMenu PopupMenu1 とTButton Button1 を加える。
- 新しいメニューエントリ PopupMenu1 (Creating a PopupMenuを見ること)。
- Button1 のOnClickイベントを作成し、以下のコードを書く:
procedure TForm1.Button1Click(Sender: TObject);
begin
PopupMenu1.PopUp; //ポップアップメニューを表示
end;- プログラムを実行すると、ボタンをクリックすることにより、ポップアップメニューが呼ばれる。
ポップアップメニューの結果
同じポップアップメニューは、ポップアップの呼び出し元を取り戻すため、 PopupComponent を用いて複合コントロールにより使うことができる。
...
Uses
... Clipbrd...
procedure TfrmIniPrevMain.pmnuMenuItem1Click(Sender: TObject);
begin
if pmnuMenuItem1.PopupComponent.ClassType = TMemo then
begin
Clipboard.AsText := TMemo(pmnuClipBoard.PopupComponent).Text;
end;
if pmnuClipBoard.PopupComponent.ClassType = TEdit then
begin
Clipboard.AsText := TEdit (pmnuClipBoard.PopupComponent).Text;
end;
end;以下も参照のこと
From the Free Pascal wiki, page "TPopupMenu/ja", as the Internet Archive kept it on 2025-05-16, last changed on 2024-10-03. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
