Sign in Join
Wiki copytemporary

TButton/fr: what changed

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

OldNewLine
11Un **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]].
22
33Un 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.
44
55Vous 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.
66
77Le 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 :
88
99``` pascal
1010procedure TForm1.Button1Click(Sender: TObject);
1111begin
1212
1313end;
1414```
1515
1616Entre les instructions **begin** et **end**, vous pourrez écrire du code qui est appelé quand *Button1* est cliqué.
1717
1818Presque 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 :
1919
2020- [[Form Tutorial/fr|La première application IHM]] pour les débutants qui débutent vraiment.
2121- [[Lazarus Tutorial/fr|Votre premier programme Lazarus]], tutoriel pour Lazarus.
2222- [[Object Oriented Programming with Free Pascal and Lazarus/fr|Exemple de programmation]] Programmation Orientée Objet avec Free Pascal et Lazarus.
2323
2424# Un simple exemple
2525
2626- Créez une nouvelle application et posez un bouton sur la fiche.
2727- Double-cliquez sur ce *Button1* (le gestionnaire par défaut : *OnClick* est créé pour le *Button1* et l'éditeur de source s'ouvre).
2828- Ajoutez le code suivant dans le gestionnaire d'événement :
2929
3030``` pascal
3131procedure TForm1.Button1Click(Sender: TObject);
3232begin
3333 ShowMessage('Lazarus makes my day'); //A message will be displayed with the content...
3434end;
3535```
3636
37-- Démarrez votre programme (avec la touche <span class="kbd">F9</span>).
37+- Démarrez votre programme (avec la touche `F9`).
3838
3939# Clic-droit
4040
4141Chaque 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.
4242
4343# Boutons générés dynamiquement
4444
4545Parfois, 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.
4646
4747Cela peut être réalisé comme dans l'exemples qui suit (une calculatrice vite fait) :
4848
4949- 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).
5050- Modifiez l'intitulé (*Caption*) *Form1* en *QuickAdd*.
5151- 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).
5252- Ajoutez le code suivant :
5353
5454``` pascal
5555procedure TForm1.FormCreate(Sender: TObject);
5656var
5757 i: Integer;
5858 aButton: TButton;
5959begin
6060 for i:=0 to 9 do begin //create 10 Buttons
6161 aButton:=TButton.Create(Self); //create Button, Owner is Form1, where the button is released later
6262 aButton.Parent:=Self; //determine where it is to be displayed
6363 aButton.Width:=aButton.Height; //Width should correspond to the height of the buttons
6464 aButton.Left:=i*aButton.Width; //Distance from left
6565 aButton.Caption:=IntToStr(i); //Captions of the buttons (0.9)
6666 aButton.OnClick:=@aButtonClick; //the event handler for the button -> will be created yet
6767 end;
6868 Self.Height:=aButton.Height; //Height of the form should correspond to the height of the buttons
6969 Self.Width:=aButton.Width*10; //Width of the form to match the width of all buttons
7070end;
7171```
7272
7373- Maintenant vous devez créer le gestionniaire d'événement pour les clics de bouton.
7474- 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);`.
75+- Ajoutez **`procedure aButtonClick(Sender: TObject);`** et ensuite pressez sur les touches `Ctrl` + `Shift` + `c` (la complétion de code devient active et crée le corps de la procédure `TForm1.aButtonClick(Sender: TObject);`.
7676- Coller le code suivant :
7777
7878``` pascal
7979procedure TForm1.aButtonClick(Sender: TObject);
8080const
8181 Cnt: Integer = 0;
8282var
8383 i: Integer;
8484begin
8585 if (Sender is TButton) and //called the event handler of a button out?
8686 TryStrToInt(TButton(Sender).Caption, i) //then try to convert the label in a integer
8787 then begin
8888 Cnt:=Cnt + i; //the adding counter is incremented by the number of entrechende
8989 Caption:='QuickAdd: '+IntToStr(Cnt); //write the result to the caption of the form
9090 end;
9191end;
9292```
9393
94-- Démarrez votre application (<span class="kbd">F9</span>).
94+- Démarrez votre application (`F9`).
9595
9696> **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 !
9797
9898# Voir aussi
9999
100100- [[doc:lcl/stdctrls/tbutton.html|Doc. TButton]]
101101- [[TBitBtn/fr|TBitBtn]]
102102- [[TSpeedButton/fr|TSpeedButton]]
103103- [[TColorButton/fr|TColorButton]]
104104- [[15-puzzle/fr|15-puzzle (taquin)]] (Jeu)
105105
106106---
107107*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