TPopupMenu/fr: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: TPopupMenu/fr
| Old | New | Line | |
|---|---|---|---|
| 1 | + | Un **TPopupMenu**  est un menu qui apparaît à l'aide du bouton droit de la souris à son emplacement courant. | |
| 2 | + | ||
| 3 | + | 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'[[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. | |
| 4 | + | ||
| 5 | + | Pour voir l'éditeur de menu, faites un clic-droit sur l'icône du menu sur votre fiche. | |
| 6 | + | ||
| 7 | + | # Création d'un PopupMenu | |
| 8 | + | ||
| 9 | + | Dans le passage suivant, je vous montrerai, comment affecter un menu popup à un composant sur votre [[TForm/fr|fiche]] : | |
| 10 | + | ||
| 11 | + | - 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*. | |
| 12 | + | - 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). | |
| 13 | + | - 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). | |
| 14 | + | - Cliquez droit maintenant sur "PopupMenu1", un menu popup apparaît. Cliquez sur la première entrée **Editeur de menu**. | |
| 15 | + | - 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. | |
| 16 | + | - 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. | |
| 17 | + | - Nous voulons un meilleur intitulé que New Item1, vous allez donc sur la propriété Caption, vous tapez *Charger* et pressez Entrée. | |
| 18 | + | - 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. | |
| 19 | + | - 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)** | |
| 20 | + | - Modifiez l'intitulé en **Centered** et nommez-le en **popCenter**. | |
| 21 | + | - Procurez-vous l'éditeur de menu pour chaque élément de menu dont vous avez besoin et fermez à la fin. | |
| 22 | + | - 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. | |
| 23 | + | - 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. | |
| 24 | + | - A l'exécution, le menu popup apparaîtra toujours si vous cliquez sur l'image. | |
| 25 | + | ||
| 26 | + | 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. | |
| 27 | + | ||
| 28 | + | Ce qui suit explique comment éditer les événements de clic sur les menus en utilisant l'inspecteur d'objet. | |
| 29 | + | ||
| 30 | + | # Rendre le menu fonctionnel | |
| 31 | + | ||
| 32 | + | - 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 : | |
| 33 | + | ||
| 34 | + | ``` pascal | |
| 35 | + | procedure TForm1.popLoadClick(Sender: TObject); | |
| 36 | + | begin | |
| 37 | + | ||
| 38 | + | end; | |
| 39 | + | ``` | |
| 40 | + | ||
| 41 | + | - entre les instructions **begin** et **end** vous pouvez maintenant insérer le code pour le clic sur l'entrée de menu *Load*. | |
| 42 | + | ||
| 43 | + | Dans votre cas, nous pouvons insérer un contrôle TOpenDialog sur la fiche et utiliser le dialogue standard pour notre usage : | |
| 44 | + | ||
| 45 | + | - 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 : | |
| 46 | + | ||
| 47 | + | ``` pascal | |
| 48 | + | procedure TForm1.popLoadClick(Sender: TObject); | |
| 49 | + | begin | |
| 50 | + | if OpenDialog1.Execute then //only if a file is selected | |
| 51 | + | try //try | |
| 52 | + | Image1.Picture.LoadFromFile(OpenDialog1.Filename); //to load that file | |
| 53 | + | except | |
| 54 | + | end; | |
| 55 | + | end; | |
| 56 | + | ``` | |
| 57 | + | ||
| 58 | + | - 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 : | |
| 59 | + | ||
| 60 | + | ``` pascal | |
| 61 | + | procedure TForm1.popStretchClick(Sender: TObject); | |
| 62 | + | begin | |
| 63 | + | popStretch.Checked := not popStretch.Checked; //mark/checked on/off | |
| 64 | + | Image1.Stretch := popStretch.Checked; //Image1 streched yes/no | |
| 65 | + | end; | |
| 66 | + | ||
| 67 | + | procedure TForm1.popCenterClick(Sender: TObject); | |
| 68 | + | begin | |
| 69 | + | popCenter.Checked := not popCenter.Checked; //mark/checked on/off | |
| 70 | + | Image1.Center := popCenter.Checked; //Image1 center yes/no | |
| 71 | + | end; | |
| 72 | + | ``` | |
| 73 | + | ||
| 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. | |
| 75 | + | ||
| 76 | + | # Popup spécifique | |
| 77 | + | ||
| 78 | + | 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`**. | |
| 79 | + | ||
| 80 | + | Un exemple simple : | |
| 81 | + | ||
| 82 | + | - Créez une nouvelle [[Form Tutorial/fr|application IHM]] et ajoutez un TPopupMenu *PopupMenu1* et un bouton [[TButton/fr|TButton]] *Button1* à votre fiche TForm1. | |
| 83 | + | - Insérer quelques entrées de menu dans *PopupMenu1* (voir Création d'un PopupMenu). | |
| 84 | + | - Générer le gestionnaire pour l'événement *OnClick* de *Button1* et écrivez le code suivant : | |
| 85 | + | ||
| 86 | + | ``` pascal | |
| 87 | + | procedure TForm1.Button1Click(Sender: TObject); | |
| 88 | + | begin | |
| 89 | + | PopupMenu1.PopUp; //shop PopupMenu | |
| 90 | + | end; | |
| 91 | + | ``` | |
| 92 | + | ||
| 93 | + | - Démarrez votre programme, le menu popup est appelé en cliquant sur le bouton. | |
| 94 | + | ||
| 95 | + | # Voir aussi | |
| 96 | + | ||
| 97 | + | - [[doc:lcl/menus/tpopupmenu.html|Doc. TPopupMenu]] | |
| 98 | + | - [[TMainMenu/fr|TMainMenu]] | |
| 99 | + | ||
| 100 | + | --- | |
| 101 | + | *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).* |
