Difference between revisions of "TPopupMenu/fr"

From Free Pascal wiki
Jump to navigationJump to search
Line 8: Line 8:
  
 
= Création d'un PopupMenu =
 
= Création d'un PopupMenu =
In the next passage, I will show you, how to assign a popup menu to a component an your [[TForm|Form]]:
+
Dans le passage suivant, je vous montrerai, comment affecter un menu popup à un composant sur votre [[TForm/fr|fiche]] :
  
* Create a new [[Form_Tutorial#The_first_GUI_application|GUI application]] and insert a [[TImage]] to the form. To do this, choose the TImage from component palette ''Additional'' and click on your form. It will put a TImage on your form, with the name ''Image1''.
+
* Créez une nouvelle [[Form_Tutorial#The_first_GUI_application|application IHM]] et insérer une [[TImage/fr|TImage]] sur la fiche. Pour faire ceci, choisissez le TImage de la palette de composant ''Additional'' et cliquez sur votre fiche. Cela posera un YTImage sur votre fiche nommée ''Image1''.
* Go to the Object Inspector (which must be on ''Image1'') and under the tab properties, select the ''Align'' property. Adjust the ''alClient'' align in the adjacent combobox (the Image1 is adjusted in the size of the form).
+
* Allez dans l'inspecteur d'objet (qui doit être sur ''Image1'') et sous l'onglet Propriétés, sélectionnez la propriété ''Align''. Ajustez à l'alignement ''alClient'' dnas la ComboBox adjacente (l'image est ajustée à la taille de la fiche).
* Now you put a TPopupMenu (component tab standard) on your form (if possible on the "Image1", so you know that this is one of the image). The component ''PopupMenu1''is displayed on the form (a square with a representation of a drop down menus and the name of the component).
+
* Maintenant vous pouvez poser un TPopupMenu (depuis l'onglet Standard) sur votre  fiche (si possible sur "Image1", ainsi vos savez que c'est celui de l'image). Le composant ''PopupMenu1''est affiché sur la fiche (une icône représentant un menu surgissant avec le nom du composant).
* Right click now on "PopupMenu1", a pop-up menu appears. Click the first entry '''Menu Editor'''.
+
* Cliquez droit maintenant sur "PopupMenu1", un menu popup apparaît. Cliquez sur la première entrée '''Editeur de menu'''.
* The Menu Editor window will open with a menu item already created with a caption of ''New Item1''. Probably you want to change it, so click on it and go to the Object Inspector.
+
* La fenêtre de l'éditeur de menu s'ouvrira avec un article de menu déjà créé intitulé ''New Item1''. Vous voudrez certainement le changer, donc vous cliquez dessus et allez sur 'l'inspecteur d'objet.
* In Object Inspector, change the Name property from MenuItem1 to something more appropriate. Let's say this is the Load menu, so let's change Name by typing in '''popLoad''' and press enter.  
+
* Dans l'inspecteur d'objet, modifiez la propriété Name de MenuItem1en quelque chose de plus adapté. Disons qu'il s'agit du menu Charger, changez donc le nom en '''poLoad''' et pressez Entrée.
* We want a better caption than New Item1, so go to the Caption property and type in '''Load''' and press enter.
+
* Nous voulons un meilleur intitulé que New Item1, vous allez donc sur la propriété Caption, vous tapez ''Charger'' et pressez Entrée.
* Now we want to create yet another menu entry. Go back to the Menu Editor window. Rightclick on ''Load''. A pop-up menu will appear. Click on Insert ''New Item After'', and a new menu, called ''New Item2'' will appear. As explained in the last two items, let's change its name to '''popStretch''' and the caption to '''Stretched''' in the Object Inspector.  
+
* Maintenant nous voulons créer encore une entrée de menu. Revenez à la fenêtre de l'éditeur de menu. Cliquez droit sur ''Load''. Un menu popup apparaîtra. Cliquez sur Insérer ''Nouvel article après'', et un nouveau menu appelé ''New Item2'' apparaîtra. Comme expliqué précédemment, changez son nom en '''popStretch''' et l'intitulé en '''Etiré''' dans l'inspecteur d'objet.
* We noticed that we forgot a menu entry. That's not bad, you go back in the menu editor. You can either right-click on '''Load''' and click on '''Insert New Item (after)''' or right-click on '''Stretched''' and click on '''Insert New Item (before)'''.
+
* Nous avons remarqué que nous avons oublié une entrée de menu. Pas grave, revenez sur l'éditeur de menu. vous pouvez soit cliquer droit sur le ''Charger'' et cliquer sur '''Insérer un nouvel item (après)''' soit cliquer droit sur le '''Etiré''' et cliquer sur '''Insérer un nouvel item (avant)'''  
* Change caption to '''Centered''' and name to '''popCenter'''.
+
* Modifiez l'intitulé en '''Centered''' et nommez-le en '''popCenter'''.
* Procedure the menu editor so each menu item which you need and close at the end.
+
* Procurez-vous l'éditeur de menu pour chaque élément de menu dont vous avez besoin et fermez à la fin.
* When you have added all the menus, you must still set what component it should be associated with. In our case, this should be the TImage ''Image1'', what we have placed at the beginning at the form.
+
* Lorsque vous avez ajouté tous les menus, vous devez toujours définir le composant auquel il devrait être associé. Dans notre cas, ce devrait être le TImage ''Image1'', ce que nous avons placé au début sous la forme.
* Select on the form ''Image1'' and go in the object Inspector on the property '''PopupMenu'''. There, select ''PopupMenu1'' in the adjacent combobox.
+
* Sélectionnez sur la fiche  '' Image1 '' et allez dans l'inspecteur d'objet sur la propriété '' 'PopupMenu' ''. , sélectionnez '' PopupMenu1 '' dans la ComboBox adjacente.
* In run-time, the popup menu will always appear if you right click the image.
+
* A l'exécution, le menu popup apparaîtra toujours si vous cliquez sur l'image.
  
Now, all this will get you is a menu that displays at run time and will allow the user to click on the menus. It won't actually do anything. To have the menu items do something, you have to add [[Event_order|events]] for each menu that is to react to being clicked upon.
+
Maintenant, de tout cela vous obtiendrez un menu qui s'affiche au moment de l'exécution et permettra à l'utilisateur de cliquer sur les menus. Il ne fera réellement rien. Pour que les éléments du menu fassent quelque chose, vous devez ajouter des [[Event_order/fr|événéments]] pour chaque menu qui doit réagir au clic dessus.
  
The following explains how to edit the events of menu clicks using the Object Inspector.
+
Ce qui suit explique comment éditer les événements de clic sur les menus en utilisant l'inspecteur d'objet.
  
 
= Rendre le menu fonctionnel =
 
= Rendre le menu fonctionnel =

Revision as of 07:47, 6 September 2017

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

Un TPopupMenu tpopupmenu.png est un menu qui apparaît à l'aide du bouton droit de la souris à son emplacement courant.

Il s'agit d'un composant non visible : son icône est placés sur la fiche en conception mais n'apparaît pas à l'"exécution. Le composant est disponible dans l'onglet Standard de la palette de composants. A la place, une barre de menu avec la structure définie par l'éditeur de menu apparaîtra.

Pour voir l'éditeur de menu, faites un clic-droit sur l'icône du menu sur votre fiche.

Création d'un PopupMenu

Dans le passage suivant, je vous montrerai, comment affecter un menu popup à un composant sur votre fiche :

  • Créez une nouvelle application IHM et insérer une TImage sur la fiche. Pour faire ceci, choisissez le TImage de la palette de composant Additional et cliquez sur votre fiche. Cela posera un YTImage sur votre fiche nommée Image1.
  • Allez dans l'inspecteur d'objet (qui doit être sur Image1) et sous l'onglet Propriétés, sélectionnez la propriété Align. Ajustez à l'alignement alClient dnas la ComboBox adjacente (l'image est ajustée à la taille de la fiche).
  • Maintenant vous pouvez poser un TPopupMenu (depuis l'onglet Standard) sur votre fiche (si possible sur "Image1", ainsi vos savez que c'est celui de l'image). Le composant PopupMenu1est affiché sur la fiche (une icône représentant un menu surgissant avec le nom du composant).
  • Cliquez droit maintenant sur "PopupMenu1", un menu popup apparaît. Cliquez sur la première entrée Editeur de menu.
  • La fenêtre de l'éditeur de menu s'ouvrira avec un article de menu déjà créé intitulé New Item1. Vous voudrez certainement le changer, donc vous cliquez dessus et allez sur 'l'inspecteur d'objet.
  • Dans l'inspecteur d'objet, modifiez la propriété Name de MenuItem1en quelque chose de plus adapté. Disons qu'il s'agit du menu Charger, changez donc le nom en poLoad et pressez Entrée.
  • Nous voulons un meilleur intitulé que New Item1, vous allez donc sur la propriété Caption, vous tapez Charger et pressez Entrée.
  • Maintenant nous voulons créer encore une entrée de menu. Revenez à la fenêtre de l'éditeur de menu. Cliquez droit sur Load. Un menu popup apparaîtra. Cliquez sur Insérer Nouvel article après, et un nouveau menu appelé New Item2 apparaîtra. Comme expliqué précédemment, changez son nom en popStretch et l'intitulé en Etiré dans l'inspecteur d'objet.
  • Nous avons remarqué que nous avons oublié une entrée de menu. Pas grave, revenez sur l'éditeur de menu. vous pouvez soit cliquer droit sur le Charger et cliquer sur Insérer un nouvel item (après) soit cliquer droit sur le Etiré et cliquer sur Insérer un nouvel item (avant)
  • Modifiez l'intitulé en Centered et nommez-le en popCenter.
  • Procurez-vous l'éditeur de menu pour chaque élément de menu dont vous avez besoin et fermez à la fin.
  • Lorsque vous avez ajouté tous les menus, vous devez toujours définir le composant auquel il devrait être associé. Dans notre cas, ce devrait être le TImage Image1, ce que nous avons placé au début sous la forme.
  • Sélectionnez sur la fiche Image1 et allez dans l'inspecteur d'objet sur la propriété 'PopupMenu' . Là, sélectionnez PopupMenu1 dans la ComboBox adjacente.
  • A l'exécution, le menu popup apparaîtra toujours si vous cliquez sur l'image.

Maintenant, de tout cela vous obtiendrez un menu qui s'affiche au moment de l'exécution et permettra à l'utilisateur de cliquer sur les menus. Il ne fera réellement rien. Pour que les éléments du menu fassent quelque chose, vous devez ajouter des événéments pour chaque menu qui doit réagir au clic dessus.

Ce qui suit explique comment éditer les événements de clic sur les menus en utilisant l'inspecteur d'objet.

Rendre le menu fonctionnel

  • 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 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:
procedure TForm1.popLoadClick(Sender: TObject);
begin

end;
  • Between the statements begin and end you can now insert the code for the menu entry click 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:
procedure TForm1.popLoadClick(Sender: TObject);
begin
  if OpenDialog1.Execute then                            //only if a file is selected
    try                                                  //try
      Image1.Picture.LoadFromFile(OpenDialog1.Filename); //to load that file
    except
    end;
end;
  • Analogous procedures with other menu items and create their event handlers and insert following code:
procedure TForm1.popStretchClick(Sender: TObject);
begin
  popStretch.Checked := not popStretch.Checked;  //mark/checked on/off
  Image1.Stretch := popStretch.Checked;          //Image1 streched yes/no
end;

procedure TForm1.popCenterClick(Sender: TObject);
begin
  popCenter.Checked := not popCenter.Checked;  //mark/checked on/off
  Image1.Center := popCenter.Checked;          //Image1 center yes/no
end;
  • Now you can start the sample with 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.

Popup spécifique

Vous pouvez forcer l'affichage d'un menu popup sans passer par le clic-droit sur un composant spécifique, mais par un autre événement. Ce que vous pouvez réaliser avec PopupMenu.PopUp.

Un exemple simple :

  • Créez une nouvelle application IHM et ajoutez un TPopupMenu PopupMenu1 et un bouton TButton Button1 à votre fiche TForm1.
  • Insérer quelques entrées de menu dans PopupMenu1 (voir Création d'un PopupMenu).
  • Générer le gestionnaire pour l'événement OnClick de Button1 et écrivez le code suivant :
procedure TForm1.Button1Click(Sender: TObject);
begin
  PopupMenu1.PopUp;   //shop PopupMenu
end;
  • Démarrez votre programme, le menu popup est appelé en cliquant sur le bouton.

Voir aussi


Composant LCL
Onglet de palette Composants
Standard TMainMenu • TPopupMenu • TButton • TLabel • TEdit • TMemo • TToggleBox • TCheckBox • TRadioButton • TListBox • TComboBox • TScrollBar • TGroupBox • TRadioGroup • TCheckGroup • TPanel • TFrame • TActionList
Additional TBitBtn • TSpeedButton • TStaticText • TImage • TShape • TBevel • TPaintBox • TNotebook • TLabeledEdit • TSplitter • TTrayIcon • TControlBar • TFlowPanel • TMaskEdit • TCheckListBox • TScrollBox • TApplicationProperties • TStringGrid • TDrawGrid • TPairSplitter • TColorBox • TColorListBox • TValueListEditor
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog • TTaskDialog
Data Controls TDBNavigator • TDBText • TDBEdit • TDBMemo • TDBImage • TDBListBox • TDBLookupListBox • TDBComboBox • TDBLookupComboBox • TDBCheckBox • TDBRadioGroup • TDBCalendar • TDBGroupBox • TDBGrid • TDBDateTimePicker
Data Access TDataSource • TBufDataset • TMemDataset • TSdfDataSet • TFixedFormatDataSet • TDbf
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 • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TTreeFilterEdit • TShortPathEdit • TLvlGraphControl
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 • TSQLTransaction • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TSQLite3Connection • 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 • TIpHttpDataProvider • TIpHtmlPanel