TPopupMenu/ja

From Free Pascal wiki
Jump to navigationJump to search

Deutsch (de) English (en) suomi (fi) français (fr) 日本語 (ja) русский (ru)

日本語版メニュー
メインページ - Lazarus Documentation日本語版 - 翻訳ノート - 日本語障害情報

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

これは目に見えないコンポーネントで、即ち、もしコンポーネントパレット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;
  • beginend間にメニューエントリ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を作り、そのフォームにTPopupMenu PopupMenu1TButton 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;

以下も参照のこと


LCL Components
Component Tab Components
Standard TMainMenu • TPopupMenu • TButton • TLabel • TEdit • TMemo • TToggleBox • TCheckBox • TRadioButton • TListBox • TComboBox • TScrollBar • TGroupBox • TRadioGroup • TCheckGroup • TPanel • TFrame • TActionList
Additional TBitBtn/ja • TSpeedButton/ja • TStaticText/ja • TImage/ja • TShape/ja • TBevel/ja • TPaintBox/ja • TNotebook/ja • TLabeledEdit/ja • TSplitter/ja • TTrayIcon/ja • TControlBar/ja • TFlowPanel/ja • TMaskEdit/ja • TCheckListBox/ja • TScrollBox/ja • TApplicationProperties/ja • TStringGrid/ja • TDrawGrid/ja • TPairSplitter/ja • TColorBox/ja • TColorListBox/ja • TValueListEditor/ja
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TTaskDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog
Data Controls TDBNavigator/ja • TDBText/ja • TDBEdit/ja • TDBMemo/ja • TDBImage/ja • TDBListBox/ja • TDBLookupListBox/ja • TDBComboBox/ja • TDBLookupComboBox/ja • TDBCheckBox/ja • TDBRadioGroup/ja • TDBCalendar/ja • TDBGroupBox/ja • TDBGrid/ja • TDBDateTimePicker/ja
Data Access TDataSource/ja • TCSVDataSet/ja • TSdfDataSet/ja • TBufDataset/ja • TFixedFormatDataSet/ja • TDbf/ja • TMemDataset/ja
System TTimer • TIdleTimer • TLazComponentQueue • THTMLHelpDatabase • THTMLBrowserHelpViewer • TAsyncProcess • TProcessUTF8 • TProcess • TSimpleIPCClient • TSimpleIPCServer • TXMLConfig • TEventLog • TServiceManager • TCHMHelpDatabase • TLHelpConnector
Misc TColorButton • TSpinEdit • TFloatSpinEdit • TArrow • TCalendar • TEditButton • TFileNameEdit • TDirectoryEdit • TDateEdit • TTimeEdit • TCalcEdit • TFileListBox • TFilterComboBox • TComboBoxEx • TCheckComboBox • TButtonPanel • TShellTreeView • TShellListView • TXMLPropStorage • TINIPropStorage • TJSONPropStorage • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TLvlGraphControl • TShortPathEdit • TSpinEditEx • TFloatSpinEditEx • TTreeFilterEdit • TExtendedTabControl •
RTTI TTIEdit • TTIComboBox • TTIButton • TTICheckBox • TTILabel • TTIGroupBox • TTIRadioGroup • TTICheckGroup • TTICheckListBox • TTIListBox • TTIMemo • TTICalendar • TTIImage • TTIFloatSpinEdit • TTISpinEdit • TTITrackBar • TTIProgressBar • TTIMaskEdit • TTIColorButton • TMultiPropertyLink • TTIPropertyGrid • TTIGrid
SQLdb TSQLQuery/ja • TSQLTransaction/ja • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TMySQL57Connection • TSQLite3Connection/ja • TIBConnection • TFBAdmin • TFBEventMonitor • TSQLDBLibraryLoader
Pascal Script TPSScript • TPSScriptDebugger • TPSDllPlugin • TPSImport_Classes • TPSImport_DateUtils • TPSImport_ComObj • TPSImport_DB • TPSImport_Forms • TPSImport_Controls • TPSImport_StdCtrls • TPSCustomPlugin
SynEdit TSynEdit • TSynCompletion • TSynAutoComplete • TSynMacroRecorder • TSynExporterHTML • TSynPluginSyncroEdit • TSynPasSyn • TSynFreePascalSyn • TSynCppSyn • TSynJavaSyn • TSynPerlSyn • TSynHTMLSyn • TSynXMLSyn • TSynLFMSyn • TSynDiffSyn • TSynUNIXShellScriptSyn • TSynCssSyn • TSynPHPSyn • TSynTeXSyn • TSynSQLSyn • TSynPythonSyn • TSynVBSyn • TSynAnySyn • TSynMultiSyn • TSynBatSyn • TSynIniSyn • TSynPoSyn
Chart TChart • TListChartSource • TRandomChartSource • TUserDefinedChartSource • TCalculatedChartSource • TDbChartSource • TChartToolset • TChartAxisTransformations • TChartStyles • TChartLegendPanel • TChartNavScrollBar • TChartNavPanel • TIntervalChartSource • TDateTimeIntervalChartSource • TChartListBox • TChartExtentLink • TChartImageList
IPro TIpFileDataProvider • TIpHtmlDataProvider • TIpHttpDataProvider • TIpHtmlPanel
Virtual Controls TVirtualDrawTree • TVirtualStringTree • TVTHeaderPopupMenu