Sign in Join
Wiki copytemporary

TButton/fr: what changed

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

Title: TButton/fr

OldNewLine
1+Un **TButton** ![](/wiki-images/b/b2/Tbutton.png) est un composant qui fournit un bouton à pousser de base. Il est disponible dans l'[[Standard tab/fr|onglet Standard]] de la [[Component Palette/fr|palette de composants]].
2+
3+Un TButton est une des contrôles les plus basiques sur une [[TForm/fr|fiche]]. En cliquant dessus avec la souris ou en se plaçant dessus à l'aide de la touche \[tab\] et en actionnant ensuite \[Entrée\], une action est déclenchée. Ce clic est appelé un événement. Pour réaliser l'action, vous avez besoin d'un [[Event order/fr|gestionnaire d'événement]] qui est appelé après le clic.
4+
5+Vous pouvez ajouter un bouton sur votre fiche, en cliquant sur le bouton ![](/wiki-images/b/b2/Tbutton.png) de la palette de composant Standard et le placer sur la fiche en cliquant dessus.
6+
7+Le gestionnaire d'événement pour le clic souris peut être atteint facilement en double-cliquant sur le botoun posé (ou en passant par l'inspecteur d'objet, onglet Evénements). Le gestionnaire d'événement pour le Button1 de la Form1 ressemblera à cela :
8+
9+``` pascal
10+procedure TForm1.Button1Click(Sender: TObject);
11+begin
12+
13+end;
14+```
15+
16+Entre les instructions **begin** et **end**, vous pourrez écrire du code qui est appelé quand *Button1* est cliqué.
17+
18+Presque tous les tutoriels pour débutants utilisent les TButton comme un façon simple d'entrer dans la [[Glossary/fr|Programmation Orientée Objet]] avec Lazarus. Les tutoriels suivants sont bien adaptés aux débutants pour comprendre l'utilisation des boutons :
19+
20+- [[Form Tutorial/fr|La première application IHM]] pour les débutants qui débutent vraiment.
21+- [[Lazarus Tutorial/fr|Votre premier programme Lazarus]], tutoriel pour Lazarus.
22+- [[Object Oriented Programming with Free Pascal and Lazarus/fr|Exemple de programmation]] Programmation Orientée Objet avec Free Pascal et Lazarus.
23+
24+# Un simple exemple
25+
26+- Créez une nouvelle application et posez un bouton sur la fiche.
27+- Double-cliquez sur ce *Button1* (le gestionnaire par défaut : *OnClick* est créé pour le *Button1* et l'éditeur de source s'ouvre).
28+- Ajoutez le code suivant dans le gestionnaire d'événement :
29+
30+``` pascal
31+procedure TForm1.Button1Click(Sender: TObject);
32+begin
33+ ShowMessage('Lazarus makes my day'); //A message will be displayed with the content...
34+end;
35+```
36+
37+- Démarrez votre programme (avec la touche <span class="kbd">F9</span>).
38+
39+# Clic-droit
40+
41+Chaque TButton a une propriété PopupMenu (optionnelle) qui activera un [[TPopupMenu/fr|TPopupMenu]] qui lui est connecté à chaque fois que le bouton est cliqué-droit.
42+
43+# Boutons générés dynamiquement
44+
45+Parfois, au lieu de créer les boutons (ou d'autres composants) avec l'éditeur de fiche de Lazarus, il est plus facile de créer les composants dynamiquement à l'exécution, cette approche est utile en particulier si vous avez des boutons continuellement répétés sur une fiche.
46+
47+Cela peut être réalisé comme dans l'exemples qui suit (une calculatrice vite fait) :
48+
49+- Créez une nouvelle [[Form Tutorial|application IHM]] **blanche** avec la fiche *Form1* et ajoutez **StdCtrls** à la [[Uses/fr|uses clause]] (où le TButton se trouve).
50+- Modifiez l'intitulé (*Caption*) *Form1* en *QuickAdd*.
51+- Créez le gestionnaire d'événement OnCreate de la fiche Form1 (cliquez sur le bouton \[...\] de l'événement OnCreate de l'inspecteur d'objet).
52+- Ajoutez le code suivant :
53+
54+``` pascal
55+procedure TForm1.FormCreate(Sender: TObject);
56+var
57+ i: Integer;
58+ aButton: TButton;
59+begin
60+ for i:=0 to 9 do begin //create 10 Buttons
61+ aButton:=TButton.Create(Self); //create Button, Owner is Form1, where the button is released later
62+ aButton.Parent:=Self; //determine where it is to be displayed
63+ aButton.Width:=aButton.Height; //Width should correspond to the height of the buttons
64+ aButton.Left:=i*aButton.Width; //Distance from left
65+ aButton.Caption:=IntToStr(i); //Captions of the buttons (0.9)
66+ aButton.OnClick:=@aButtonClick; //the event handler for the button -> will be created yet
67+ end;
68+ Self.Height:=aButton.Height; //Height of the form should correspond to the height of the buttons
69+ Self.Width:=aButton.Width*10; //Width of the form to match the width of all buttons
70+end;
71+```
72+
73+- Maintenant vous devez créer le gestionniaire d'événement pour les clics de bouton.
74+- Dans l'éditeur de source, allez dans la section **`private`** de votre classe *TForm1*.
75+- Ajoutez **`procedure aButtonClick(Sender: TObject);`** et ensuite pressez sur les touches <span class="kbd">Ctrl</span> + <span class="kbd">Shift</span> + <span class="kbd">c</span> (la complétion de code devient active et crée le corps de la procédure `TForm1.aButtonClick(Sender: TObject);`.
76+- Coller le code suivant :
77+
78+``` pascal
79+procedure TForm1.aButtonClick(Sender: TObject);
80+const
81+ Cnt: Integer = 0;
82+var
83+ i: Integer;
84+begin
85+ if (Sender is TButton) and //called the event handler of a button out?
86+ TryStrToInt(TButton(Sender).Caption, i) //then try to convert the label in a integer
87+ then begin
88+ Cnt:=Cnt + i; //the adding counter is incremented by the number of entrechende
89+ Caption:='QuickAdd: '+IntToStr(Cnt); //write the result to the caption of the form
90+ end;
91+end;
92+```
93+
94+- Démarrez votre application (<span class="kbd">F9</span>).
95+
96+> **Note:** Vous pouvez affecter tous les gestionnaires d'événement imaginables à vos bouton, pourvu qu'ils soient de la forme **`procedure <class>.<name of procedure>(Sender: TObject);`**. Vous pouvez aussi en utiliser un qui vient d'une autre classe !
97+
98+# Voir aussi
99+
100+- [[doc:lcl/stdctrls/tbutton.html|Doc. TButton]]
101+- [[TBitBtn/fr|TBitBtn]]
102+- [[TSpeedButton/fr|TSpeedButton]]
103+- [[TColorButton/fr|TColorButton]]
104+- [[15-puzzle/fr|15-puzzle (taquin)]] (Jeu)
105+
106+---
107+*From the Free Pascal wiki, page "TButton/fr", as it stood on 2020-02-29 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