TRadioButton/fr: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: TRadioButton/fr
| Old | New | Line | |
|---|---|---|---|
| 1 | + | Un **TRadioButton**  est un composant qui affiche un bouton de sélection qui fonctionne avec d'autres RadioButtons d'une manière mutuellement exclusive - Si un button est sélectionné, aucun des autres dans le groupe ne peut être sélectionné. Le composant TRadioButton se trouve dans l'[[Standard tab/fr|onglet Standard]] de la [[Component Palette/fr|palette de composants]]. | |
| 2 | + | ||
| 3 | + | Pour utiliser un RadioButton sur une [[TForm/fr|fiche]], vous pouvez simplement le sélectionner sur la palette de composants *Standard* et le placer, avec un clic sur la fiche.\ | |
| 4 | + | Il ne sert à rien en général de poser un seul RadioButton, car les RadioButtons sont prévus pour choisir entre plusieurs alternatives. Ainsi, vous pouvez utiliser aussi un [[TRadioGroup/fr|TRadioGroup]] à la place de RadioButtons individuels. | |
| 5 | + | ||
| 6 | + | Partout dans votre code source, vous pouvez obtenir l'état des RadioButtons, actif ou inactif, en interrogeant **`Status := <RadioButton>.Checked;`**. Vous pouvez utiliser *Checked* comme un [[Boolean/fr|booléen]] normal. Ainsi, l'affectation **`<RadioButton>.Checked := True;`** est possible. | |
| 7 | + | ||
| 8 | + | # Un simple exemple | |
| 9 | + | ||
| 10 | + | - Créez une nouvelle application et placez trois RadioButtons sur la fiche. | |
| 11 | + | - Dans l'onglet Propriétés de l'inspecteur d'objets, changez les noms des RadioButtons en *rbRed*, *rbGreen* et *rbBlue*. | |
| 12 | + | - De la même façon, vous pouvez changer les intitulés des RadioButtons en *Red*, *Green* et *Blue*. | |
| 13 | + | - Ajoutez à votre fiche, un bouton et changez son intitulé en *Draw new* et son nom en *btnPaint*. | |
| 14 | + | - Créez le gestionnaire d'événement *OnClick* pour le bouton, en utilisant l'onglet Evénements de l'inspecteur d'objet, sélectionnez l'événement OnClick et cliquez sur le bouton \[...\] ou double-cliquez le bouton sur la fiche. | |
| 15 | + | - Ajoutez le code suivant : | |
| 16 | + | ||
| 17 | + | ``` pascal | |
| 18 | + | procedure TForm1.btnPaintClick(Sender: TObject); | |
| 19 | + | begin | |
| 20 | + | if rbRed.Checked then Color:=clRed; | |
| 21 | + | if rbGreen.Checked then Color:=clLime; | |
| 22 | + | if rbBlue.Checked then Color:=clBlue; | |
| 23 | + | end; | |
| 24 | + | ``` | |
| 25 | + | ||
| 26 | + | - Ouvrez votre application, elle devrait ressembler à quelque chose comme cela : | |
| 27 | + | ||
| 28 | + |  -\>  | |
| 29 | + | ||
| 30 | + | # Usage d'un événement | |
| 31 | + | ||
| 32 | + | A la différence avec l'exemple précédent, nous ne repeignons pas la fiche en cliquant sur le bouton mais en cliquant sur les RadioButtons eux-mêmes.\ | |
| 33 | + | Vous pouvez modifier l'exemple précédent, en supprimant le bouton et son gestionnaire d'événement *OnClick* dans le code source, vous pouvez créer un nouvel exemple mais aussi simple : | |
| 34 | + | ||
| 35 | + | - Créez une nouvelle application et placez trois RadioButtons sur la fiche. | |
| 36 | + | - Dans l'onglet Propriétés de l'inspecteur d'objets, changez les noms des RadioButtons en *rbRed*, *rbGreen* et *rbBlue*. | |
| 37 | + | - De la même façon, vous pouvez changer les intitulés des RadioButtons en *Red*, *Green* et*Blue*. | |
| 38 | + | - Maintenant vous pouvez créer les gestionnaires d'événement pour les RadioButtons. Pour chacun d'eux, vous pouvez utiliser l'onglet événements de l'inspecteur d'objet, sélectionner l'événement *OnChange* et cliquez sur le bouton \[...\], vous pouvez aussi double-cliquer dessus. | |
| 39 | + | - Faites changer la couleur de la fiche par le gestionnaire d'événement *OnChange* selon le RadioButton sélectionné : | |
| 40 | + | ||
| 41 | + | ``` pascal | |
| 42 | + | procedure TForm1.rbRedChange(Sender: TObject); | |
| 43 | + | begin | |
| 44 | + | Self.Color:=clRed; //with "Self", you select the object in which the method exists (method: rbRedChange / object: Form1) | |
| 45 | + | end; | |
| 46 | + | ||
| 47 | + | procedure TForm1.rbGreenChange(Sender: TObject); | |
| 48 | + | begin | |
| 49 | + | Form1.Color:=clLime; //You can directly select the object ''Form1'', but poor, | |
| 50 | + | //because then no other object of class 'TForm1' can be created | |
| 51 | + | end; | |
| 52 | + | ||
| 53 | + | procedure TForm1.rbBlueChange(Sender: TObject); | |
| 54 | + | begin | |
| 55 | + | Color:=clBlue; //or you leave out "Self" and the compiler will automatically detect its own object | |
| 56 | + | end; | |
| 57 | + | ``` | |
| 58 | + | ||
| 59 | + | - Ouvrez votre application, elle devrait ressembler à ceci : | |
| 60 | + | ||
| 61 | + |  -\>  | |
| 62 | + | ||
| 63 | + | # Groupement | |
| 64 | + | ||
| 65 | + | Si vous ajoutez un RadioButton sur votre fiche, celle-ci est le [[Parent/fr|parent]] (le contrôle qui inclut votre RadioButton). A chaque fois que vous sélectionnez un RadioButon (par clic ou par code), l'autre RadioButton de même parent précédemment sélectionné voit sa propriété *Checked* changée en False.\ | |
| 66 | + | Si vous voulez utiliser différents RadioButtons conçus pour des choix différents et indépendants, vous devez regrouper les RadioButtons dans un même conteneur (celui qui a le rôle de parent). Vous pouvez utiliser un composant [[TRadioGroup/fr|TRadioGroup]] ou grouper vos RadioButtons sur un contrôle (p.ex. [[TPanel/fr|TPanel]], [[TGroupBox/fr|TGroupBox]], [[TNotebook/fr|TNotebook]], [[TPageControl/fr|TPageControl]] etc.).\ | |
| 67 | + | L'exemple suivant montre comment vous pouvez regrouper les RadioButtons : Vous pouvez modifier l'exemple Un simple exemple ou créer une nouvelle application : | |
| 68 | + | ||
| 69 | + | - En premier, vous placez un [[TGroupBox/fr|TGroupBox]] de la palette de composants Standard sur votre fiche. | |
| 70 | + | - Vous changez son nom en *gbColor* et son intitulé en *Color*. | |
| 71 | + | - Maintenant, vous sous-classez cette GroupBox les RadioButtons *rbRed*, *rbGreen* et *rblue* : | |
| 72 | + | - Dans le projet modifié, vous pouvez séquentiellement daéplacer les RadioButtons **dans l'inspecteur d'objet** en glissant et déposant vers *gbColor*. | |
| 73 | + | - Dans le nouveau projet, vous pouvez insérer les trois RadioButtons l'un après l'autre en cliquant pour insérer dans le GroupBox, puis changer les noms en *rbRed*, *rbGreen* et *rbBlue* et les intitulés en *Red*, *Green* et *Blue*. | |
| 74 | + | - Maintenant placez un second GroupBox sur votre fiche nommée *gbBrightness* avec l'intitulé *Brightness*. | |
| 75 | + | - Ajoutez aussi dans ce GroupBox trois RadioButtons et donnez-leur les noms *rbBrightDark*, *rbBrightMedDark* et *rbBrightBright* et les intitulés *Dark*, *MediumDark* et *Bright*. | |
| 76 | + | - Si vous avez créé une nouvelle application, vous devez ajouter un bouton avec le nom *btnPaint* et l'intitulé *Draw new* à la fiche. | |
| 77 | + | - Dans le gestionnaire d'événement *OnClick* de *btnPaint*, modifiez le code en : | |
| 78 | + | ||
| 79 | + | ``` pascal | |
| 80 | + | procedure TForm1.btnPaintClick(Sender: TObject); | |
| 81 | + | begin | |
| 82 | + | if rbRed.Checked then Color:=Brightness or clRed; | |
| 83 | + | if rbGreen.Checked then Color:=Brightness or clLime; | |
| 84 | + | if rbBlue.Checked then Color:=Brightness or clBlue; | |
| 85 | + | end; | |
| 86 | + | ``` | |
| 87 | + | ||
| 88 | + | - Maintenant créez la fonction Brightness, dans la section *private* de TForm1, écrivez **`function Brightness: TColor;`** et pressez sur les touches <span class="kbd">Ctrl</span> + <span class="kbd">Shift</span> + <span class="kbd">c</span> (complétion de code). Le corps de la fonction est créé. Entrez le code suivant : | |
| 89 | + | ||
| 90 | + | ``` pascal | |
| 91 | + | function TForm1.Brightness: TColor; | |
| 92 | + | begin | |
| 93 | + | Result:=0; | |
| 94 | + | if rbBrightMedDark.Checked then Result:=$888888; | |
| 95 | + | if rbBrightBright.Checked then Result:=$DDDDDD; | |
| 96 | + | end; | |
| 97 | + | ``` | |
| 98 | + | ||
| 99 | + | - D&marrez votre application, vous pouvez utilisez les boutons radio groupés séparément, cela doit donc ressembler à : | |
| 100 | + | ||
| 101 | + |  -\>  | |
| 102 | + | ||
| 103 | + | # Voir aussi | |
| 104 | + | ||
| 105 | + | - [[doc:lcl/stdctrls/tradiobutton.html|Doc. TRadioButton]] | |
| 106 | + | - [[TRadioGroup/fr|TRadioGroup]] - Usage de RadioGroups\ | |
| 107 | + | - [[TToggleBox/fr|TToggleBox]] - Usage de Toggleboxes\ | |
| 108 | + | - [[TCheckBox/fr|TCheckBox]] - Usage de CheckBoxes\ | |
| 109 | + | ||
| 110 | + | --- | |
| 111 | + | *From the Free Pascal wiki, page "TRadioButton/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).* |
