Sign in Join
Wiki copytemporary

TPopupMenu/fr: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Un **TPopupMenu** ![](/wiki-images/e/e4/Tpopupmenu.png) est un menu qui apparaît à l'aide du bouton droit de la souris à son emplacement courant.
22
33Il 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'[[Standard tab/fr|onglet Standard]] de la [[Component Palette/fr|palette de composants]]. A la place, une barre de menu avec la structure définie par l'éditeur de menu apparaîtra.
44
55Pour voir l'éditeur de menu, faites un clic-droit sur l'icône du menu sur votre fiche.
66
77# Création d'un PopupMenu
88
99Dans le passage suivant, je vous montrerai, comment affecter un menu popup à un composant sur votre [[TForm/fr|fiche]] :
1010
1111- Créez une nouvelle [[Form Tutorial|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*.
1212- 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).
1313- 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).
1414- Cliquez droit maintenant sur "PopupMenu1", un menu popup apparaît. Cliquez sur la première entrée **Editeur de menu**.
1515- 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.
1616- 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.
1717- Nous voulons un meilleur intitulé que New Item1, vous allez donc sur la propriété Caption, vous tapez *Charger* et pressez Entrée.
1818- 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.
1919- 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)**
2020- Modifiez l'intitulé en **Centered** et nommez-le en **popCenter**.
2121- Procurez-vous l'éditeur de menu pour chaque élément de menu dont vous avez besoin et fermez à la fin.
2222- 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.
2323- 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.
2424- A l'exécution, le menu popup apparaîtra toujours si vous cliquez sur l'image.
2525
2626Maintenant, 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.
2727
2828Ce qui suit explique comment éditer les événements de clic sur les menus en utilisant l'inspecteur d'objet.
2929
3030# Rendre le menu fonctionnel
3131
3232- 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 [[Event order/fr|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 :
3333
3434``` pascal
3535procedure TForm1.popLoadClick(Sender: TObject);
3636begin
3737
3838end;
3939```
4040
4141- entre les instructions **begin** et **end** vous pouvez maintenant insérer le code pour le clic sur l'entrée de menu *Load*.
4242
4343Dans votre cas, nous pouvons insérer un contrôle TOpenDialog sur la fiche et utiliser le dialogue standard pour notre usage :
4444
4545- Pour cela, posez un contrôle [[TOpenDialog/fr|TOpenDialog]] (palette de composants Dialog) sur votre fiche avec le nom *OpenDialog1*. Maintenant changez votre procédure en :
4646
4747``` pascal
4848procedure TForm1.popLoadClick(Sender: TObject);
4949begin
5050 if OpenDialog1.Execute then //only if a file is selected
5151 try //try
5252 Image1.Picture.LoadFromFile(OpenDialog1.Filename); //to load that file
5353 except
5454 end;
5555end;
5656```
5757
5858- 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 :
5959
6060``` pascal
6161procedure TForm1.popStretchClick(Sender: TObject);
6262begin
6363 popStretch.Checked := not popStretch.Checked; //mark/checked on/off
6464 Image1.Stretch := popStretch.Checked; //Image1 streched yes/no
6565end;
6666
6767procedure TForm1.popCenterClick(Sender: TObject);
6868begin
6969 popCenter.Checked := not popCenter.Checked; //mark/checked on/off
7070 Image1.Center := popCenter.Checked; //Image1 center yes/no
7171end;
7272```
7373
74-- Maintenant, vous pouvez démarrez l'échantillon avec <span class="kbd">F9</span>, 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.
74+- 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.
7575
7676# Popup spécifique
7777
7878Vous 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`**.
7979
8080Un exemple simple :
8181
8282- Créez une nouvelle [[Form Tutorial/fr|application IHM]] et ajoutez un TPopupMenu *PopupMenu1* et un bouton [[TButton/fr|TButton]] *Button1* à votre fiche TForm1.
8383- Insérer quelques entrées de menu dans *PopupMenu1* (voir Création d'un PopupMenu).
8484- Générer le gestionnaire pour l'événement *OnClick* de *Button1* et écrivez le code suivant :
8585
8686``` pascal
8787procedure TForm1.Button1Click(Sender: TObject);
8888begin
8989 PopupMenu1.PopUp; //shop PopupMenu
9090end;
9191```
9292
9393- Démarrez votre programme, le menu popup est appelé en cliquant sur le bouton.
9494
9595# Voir aussi
9696
9797- [[doc:lcl/menus/tpopupmenu.html|Doc. TPopupMenu]]
9898- [[TMainMenu/fr|TMainMenu]]
9999
100100---
101101*From the Free Pascal wiki, page "TPopupMenu/fr", as it stood on 2020-03-01 after a change by Trev, 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](/wiki-contact).*

Back to history