ウィキのコピーミラー

これは pascal.chat のウィキのミラーです。編集、履歴、ログインはそちらで行います。

TPopupMenu/ja

Deutsch · English · Français · Suomi · Русский · 日本語

TPopupMenu はマウスの右ボタンがクリックされるとポップアップするメニューパネルである。

これは目に見えないコンポーネントで、即ち、もしコンポーネントパレットのStandardタブから選ばれ、フォームの上に置かれたとき、ランタイムに現れない。その代わり、メニューエディタによって構造定義されたメニューバーが現れる。

Menu Editorを見るには、Main Menuアイコンをフォーム上で右クリックする。

ポップアップメニューを作る

以下の道筋で、Formコンポーネントにポップアップメニューの追加の仕方を示す:

これで実行中メニューが現れ、ユーザーがメニューをクリックすることが可能となる。これは実際何もしない。何かをするメニューアイテムを作るには、それぞれのメニューについてクリックに反応するeventsを加えなければならない。

以下にオブジェクトインスペクタを用いてメニュークリックイベントの編集の仕方を説明する。

実際に何かをするメニューを作る

pascal
procedure TForm1.popLoadClick(Sender: TObject);
begin

end;

この場合フォームの上にTOpenDialogコントロールを挿入し、この目的ンために標準ダイアログを使うことができるだろう:

pascal
procedure TForm1.popLoadClick(Sender: TObject);
begin
  if OpenDialog1.Execute then                            //ファイルが選択された場合のみ
    try                                                  //try
      Image1.Picture.LoadFromFile(OpenDialog1.Filename); //そのファイルを読み込む
    except
    end;
end;
pascal
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;

自己ポップアップ

特定のコンポーネント、異なるイベントでは右クリックでポップアップを表示させたくない場合があるかもしれない。その時はPopupMenu.PopUpを実行することができる。

簡単な例:

pascal
procedure TForm1.Button1Click(Sender: TObject);
begin
  PopupMenu1.PopUp;   //ポップアップメニューを表示
end;

ポップアップメニューの結果

同じポップアップメニューは、ポップアップの呼び出し元を取り戻すため、PopupComponentを用いて複合コントロールにより使うことができる。

pascal
...
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 it stood on 2024-03-20 after a change by Ariben, out of the wiki's dump of 2024-05-26. 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.

第2版、最終更新:WikiArchive 。