Difference between revisions of "TPopupMenu/ja"

From Free Pascal wiki
Jump to navigationJump to search
 
(4 intermediate revisions by the same user not shown)
Line 12: Line 12:
  
 
以下の道筋で、[[TForm|Form]]コンポーネントにポップアップメニューの追加の仕方を示す:
 
以下の道筋で、[[TForm|Form]]コンポーネントにポップアップメニューの追加の仕方を示す:
* 新しい[[Form_Tutorial#The_first_GUI_application|GUI application]]を作り、[[TImage/ja|TImage]]をそのフォームに挿入する。このため、コンポーネントパレット''Additional''でTImageを選択し、フォームの上でクリックする。これで''Image1''の名前でTImageがフォーム上に配置される。
+
* 新しい[[Form_Tutorial/ja#初めてのGUIアプリケーション |GUIアプリケーション]]を作り、[[TImage/ja|TImage]]をそのフォームに挿入する。このため、コンポーネントパレット''Additional''でTImageを選択し、フォームの上でクリックする。これで''Image1''の名前でTImageがフォーム上に配置される。
 
* オブジェクトインスペクタに移動(''Image1''であるはずだ)し、''Align''プロパティを選択する。隣のコンボボックスで''alClient''を1列に調節する(Image1はフォームのサイズに調節される)。
 
* オブジェクトインスペクタに移動(''Image1''であるはずだ)し、''Align''プロパティを選択する。隣のコンボボックスで''alClient''を1列に調節する(Image1はフォームのサイズに調節される)。
 
* フォームの上にTPopupMenu(stanndardタブ)を配置する(もし可能なら「Image1」上に、そうすればこれが画像に1つとわかる)。コンポーネント''PopupMenu1''は(ドロップダウンメニューとコンポーネントの名前の表示と直角に)フォーム上に表示される。
 
* フォームの上にTPopupMenu(stanndardタブ)を配置する(もし可能なら「Image1」上に、そうすればこれが画像に1つとわかる)。コンポーネント''PopupMenu1''は(ドロップダウンメニューとコンポーネントの名前の表示と直角に)フォーム上に表示される。
Line 33: Line 33:
  
 
==実際に何かをするメニューを作る==
 
==実際に何かをするメニューを作る==
* Go back to the menu editor and select the '''Load''' menu item with a click. Now go to the Object Inspector window, and select the tab '''events'''. The only event that you really want to change, is ''OnClick'', which is currently empty. If you already have an existing [[Event_order|EventHandler]] to use, can use these and choose accordingly, otherwise you can create one by Lazarus. There is a button with 3 dots on the right side. Click on it, and a new procedure (your newly created eventhandler) is created in the code and the view changes to the source text editor. Your Procdure will look something like this:
+
* メニューエディタにもどり、クリックして'''Load'''メニューアイテムをクリックして選択する。そしてオブジェクトインスペクタウインドウへ移動し、'''events'''タブを選択する。変えたいイベントだけを変える、それは今、空の''OnClick''である。もし用いるべき[[Event_order|EventHandler]]をすでに持っているなら、それらを使うことができるし、それに応じて選択することもできる、さもなくば、Lazarusで作ることもできる。右側に3つの点があるボタンがある。クリックする。そうすると新しいプロシージャ(新しく生成したイベントハンドラ)がコードの中に生成され、ソーステキストエディタに対する変化が見て取れる。このプロシージャはこのように見えるだろう:
*:
 
 
 
 
<syntaxhighlight lang=pascal>
 
<syntaxhighlight lang=pascal>
 
procedure TForm1.popLoadClick(Sender: TObject);
 
procedure TForm1.popLoadClick(Sender: TObject);
Line 43: Line 41:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
* Between the statements '''begin''' and '''end''' you can now insert the code for the menu entry click ''Load''.
+
* '''begin''''''end'''間にメニューエントリ''Load''に対するコードを挿入することができる。
In our case we could insert a TOpenDialog control on the form and use the standard dialog for our purposes:
+
 
* For that, put a [[TOpenDialog]] control (component palette dialog) on your form, with the name ''OpenDialog1''. Now change your procedure to:
+
この場合フォームの上にTOpenDialogコントロールを挿入し、この目的ンために標準ダイアログを使うことができるだろう:
 +
 
 +
* そのため、[[TOpenDialog]]コントロールをフォームに入れ(コンポーネントパレット ダイアログ)、その名前は''OpenDialog1''である。プロシージャを以下に変更する:
  
 
<syntaxhighlight lang=pascal>
 
<syntaxhighlight lang=pascal>
 
procedure TForm1.popLoadClick(Sender: TObject);
 
procedure TForm1.popLoadClick(Sender: TObject);
 
begin
 
begin
   if OpenDialog1.Execute then                            //only if a file is selected
+
   if OpenDialog1.Execute then                            //ファイルが選択された場合のみ
 
     try                                                  //try
 
     try                                                  //try
       Image1.Picture.LoadFromFile(OpenDialog1.Filename); //to load that file
+
       Image1.Picture.LoadFromFile(OpenDialog1.Filename); //そのファイルを読み込む
 
     except
 
     except
 
     end;
 
     end;
Line 58: Line 58:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
* Analogous procedures with other menu items and create their event handlers and insert following code:
+
* 他のメニューアイテムも同様のプロシージャで、それぞれのイベントハンドラを作り、以下のコードを挿入する:
  
 
<syntaxhighlight lang=pascal>
 
<syntaxhighlight lang=pascal>
 
procedure TForm1.popStretchClick(Sender: TObject);
 
procedure TForm1.popStretchClick(Sender: TObject);
 
begin
 
begin
   popStretch.Checked := not popStretch.Checked;  //mark/checked on/off
+
   popStretch.Checked := not popStretch.Checked;  //マーク/チェック on/off
   Image1.Stretch := popStretch.Checked;          //Image1 streched yes/no
+
   Image1.Stretch := popStretch.Checked;          //Image1 引き伸ばし yes/no
 
end;
 
end;
  
 
procedure TForm1.popCenterClick(Sender: TObject);
 
procedure TForm1.popCenterClick(Sender: TObject);
 
begin
 
begin
   popCenter.Checked := not popCenter.Checked;  //mark/checked on/off
+
   popCenter.Checked := not popCenter.Checked;  //マーク/チェック on/off
   Image1.Center := popCenter.Checked;          //Image1 center yes/no
+
   Image1.Center := popCenter.Checked;          //Image1 中央配置 yes/no
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
* Now you can start the sample with {{keypress|F9}}, open the popup menu with a right click and click on ''Load''. Now, load a picture of your choice. If you have loaded an image, try the other menu entries.
+
 
 +
* これで、このサンプルを{{keypress|F9}}で実行し、右クリックでポップアップメニューが開き、''Load''をクリックする。すると選んだ画像が読み込まれる。画像を取り込んだら、他のメニューエントリを試してみよう。
  
 
==自己ポップアップ==
 
==自己ポップアップ==
Maybe you do not want to have displayed a popup menu with a right click on a specific component, but at a different event. That you can realize with '''<code>PopupMenu.PopUp</code>'''.
 
  
A simple example:
+
特定のコンポーネント、異なるイベントでは右クリックでポップアップを表示させたくない場合があるかもしれない。その時は'''<code>PopupMenu.PopUp</code>'''を実行することができる。
 +
 
 +
簡単な例:
  
* Create a new [[Form_Tutorial#The_first_GUI_application|GUI application]] and add a TPopupMenu ''PopupMenu1'' and a [[TButton]] ''Button1'' to your form.
+
* 新しい[[Form_Tutorial#The_first_GUI_application|GUI application]]を作り、そのフォームにTPopupMenu ''PopupMenu1''[[TButton]] ''Button1''を加える。
* Insert a few menu entries in ''PopupMenu1'' (see [[TPopupMenu#Creating_a_PopupMenu|Creating a PopupMenu]]).
+
* 新しいメニューエントリ''PopupMenu1'' ([[TPopupMenu#Creating_a_PopupMenu|Creating a PopupMenu]]を見ること)
* Generate the event handler for the OnClick event of ''Button1'' and write the following code:
+
* ''Button1''のOnClickイベントを作成し、以下のコードを書く:
  
 
<syntaxhighlight lang=pascal>
 
<syntaxhighlight lang=pascal>
 
procedure TForm1.Button1Click(Sender: TObject);
 
procedure TForm1.Button1Click(Sender: TObject);
 
begin
 
begin
   PopupMenu1.PopUp;  //shop PopupMenu
+
   PopupMenu1.PopUp;  //ポップアップメニューを表示
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
* Start your program, the popup menu is called by clicking the button.
+
* プログラムを実行すると、ボタンをクリックすることにより、ポップアップメニューが呼ばれる。
  
 
== ポップアップメニューの結果 ==
 
== ポップアップメニューの結果 ==
The same popup menu can be used by multiple controls using ''PopupComponent'' to retrieve the caller of the popup.
+
同じポップアップメニューは、ポップアップの呼び出し元を取り戻すため、''PopupComponent''を用いて複合コントロールにより使うことができる。
  
 
<syntaxhighlight lang=pascal>
 
<syntaxhighlight lang=pascal>
Line 118: Line 120:
 
* [[TMainMenu]]  
 
* [[TMainMenu]]  
  
{{LCL Components}}
+
{{LCL Components/ja}}

Latest revision as of 06:46, 20 March 2024

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