TPopupMenu/fr

From Free Pascal wiki
Jump to: navigation, search

Deutsch (de) English (en) suomi (fi) français (fr) русский (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

  • Revenez à l'inspecteur d'objet et sélectionnez l'article de menu Charger avec un clic. Maintenant, passez dans l'onglet Evénements. Le seul événement à changer est OnClick qui est actuellement vide. Si vous avez déjà un gestionnaire d'événement existant, vous pouvez le reprendre sinon vous le créez avec Lazarus. Il y a un bouton avec trois points sur la partie droite. Cliquez dessus et une nouvelle procédure (votre gestionnaire d'événement) est créé dans le code et on passe dans l'éditeur de code source. Votre procédure doit ressembler à quelque chose comme ceci :
procedure TForm1.popLoadClick(Sender: TObject);
begin
 
end;
  • entre les instructions begin et end vous pouvez maintenant insérer le code pour le clic sur l'entrée de menu Load.

Dans votre cas, nous pouvons insérer un contrôle TOpenDialog sur la fiche et utiliser le dialogue standard pour notre usage :

  • Pour cela, posez un contrôle TOpenDialog (palette de composants Dialog) sur votre fiche avec le nom OpenDialog1. Maintenant changez votre procédure en :
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;
  • Créez de la même manière les gestionnaires pour les événements OnClick des autres articles de menu en insérant les codes suivants :
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;
  • Maintenant, vous pouvez démarrez l'échantillon avec F9, ouvrez le menu popup avec le clic droit et cliquez sur Charger. Maintenant, chargez une image de votre choix. Dès que vous avez une image, essayez avec les autres entrées de menu.

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