Sign in Join
Wiki copytemporary

TRadioButton/de: what changed

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

OldNewLine
11Diese Seite erklärt, wie man die [[doc:lcl/stdctrls/tradiobutton.html|TRadioButton]] Komponente verwendet. Auf etwas klicken bedeutet immer ein Linksklick, ein Rechtsklick wird explizit erwähnt.
22
33## Beschreibung
44
55Ein Auswahlbutton, der mit den anderen Radiobuttons zusammenarbeitet. Wenn ein Radiobutton aus einer Gruppe ausgewählt ist, kann kein Anderer ausgewählt sein.
66
7-<figure>
8-<img src="Comp_Standard_TRadioButton.png" title="Comp_Standard_TRadioButton.png" />
9-<figcaption>Comp_Standard_TRadioButton.png</figcaption>
10-</figure>
7+![](/wiki-images/4/49/Comp_Standard_TRadioButton.png)
118
129## Verwendung
1310
1411Um [[doc:lcl/stdctrls/tradiobutton.html|TRadioButtons]] auf einem [[TForm/de|Formular]] zu nutzen, kann man sie einfach auf der Komponentenpalette *Standard* auswählen und, mit einem Klick auf das Formular, platzieren.\
1512Es macht zumeist keinen Sinn einen einzelnen RadioButton zu nutzen, da RadioButtons als Auswahlelemente dienen sollen. Daher kann man statt einzelner Radiobuttons auch eine [[TRadioGroup/de|TRadioGroup]] verwenden.\
1613Sie können überall in Ihrem Quellcode den Status der Radiobuttons, ob aktiv oder inaktiv, mit **`Status := <RadioButton>.Checked;`** abfragen. Dabei können Sie *Checked* wie ein normalen [[Boolean/de|Boolean]] benutzen. Somit ist auch die Zuweisung **`<RadioButton>.Checked := True;`** möglich.
1714
1815### Ein einfaches Beispiel
1916
2017- Erstellen Sie eine neue Anwendung und legen Sie auf dem Formular drei TRadioButtons ab.
2118- Ändern Sie im Objektinspektor im Reiter Eigenschaften die Namen der RadioButton1..3 zu *rbRed*, *rbGreen* und *rbBlue*.
2219- Entsprechend ändern Sie dort die Captions der Radiobuttons zu *Rot*, *Grün* und *Blau*.
2320- Fügen Sie Ihrem Formular noch ein [[TButton/de|TButton]] hinzu und ändern seine Beschriftung (Caption) zu *Neu Zeichnen* und seinen Namen zu *btnPaint*.
2421- Erstellen Sie den *OnClick* Eventhandler für den TButton, indem Sie im Objektinspektor auf den Reiter Ereignisse klicken, das Ereignis *OnClick* auswählen und den Button \[...\] klicken oder den Button im Formular doppelklicken.
2522- Fügen Sie folgenden Code hinzu:
2623
2724``` pascal
2825procedure TForm1.btnPaintClick(Sender: TObject);
2926begin
3027 if rbRed.Checked then Color:=clRed;
3128 if rbGreen.Checked then Color:=clLime;
3229 if rbBlue.Checked then Color:=clBlue;
3330end;
3431```
3532
3633- Starten Sie Ihr Programm, es sollte ungefähr so aussehen:
3734
3835![](/wiki-images/9/92/RadioButtonExample1.png) -\> ![](/wiki-images/1/12/RadioButtonExample2.png)
3936
4037### Verwendung eines Ereignisses
4138
4239Der Unterschied zu dem vorherigen Beispiel besteht darin, dass wir das Formular nicht über einen Buttonklick neu zeichnen lassen, sondern schon durch das Anklicken eines der Radiobuttons selber.\
4340Sie können das vorhergehende Beispiel modifizieren, indem Sie den Button und dessen *OnClick*-Eventhandler im Quelltext löschen. Sie können aber auch einfach ein neues Beispiel erstellen:
4441
4542- Erstellen Sie eine neue Anwendung und legen Sie auf dem Formular drei TRadioButtons ab.
4643- Ändern Sie im Objektinspektor im Reiter Eigenschaften die Namen der RadioButton1..3 zu *rbRed*, *rbGreen* und *rbBlue*.
4744- Entsprechend ändern Sie dort die Captions der Radiobuttons zu *Rot*, *Grün* und *Blau*.
4845- Erstellen Sie für jeden Radiobutton einen *Onchange*-Eventhandler, indem Sie im Objektinspektor auf den Reiter Ereignisse klicken, das Ereignis *Onchange* auswählen und den Button \[...\] klicken. Sie können aber auch den jeweiligen Radiobutton doppelklicken.
4946- Lassen Sie im Eventhandler *OnChange* der Radiobuttons die Farben des Formulars, gemäß geklickten Radiobutton, ändern:
5047
5148``` pascal
5249procedure TForm1.rbRedChange(Sender: TObject);
5350begin
5451 Self.Color:=clRed; //mit "Self" wählt man das Objekt, in der sich die Methode befindet (Methode: rbRedChange / Objekt: Form1)
5552end;
5653
5754procedure TForm1.rbGreenChange(Sender: TObject);
5855begin
5956 Form1.Color:=clLime; //man kann auch das Objekt "Form1" direkt wählen, ist aber ungünstig,
6057 //da dann kein weiteres Objekt der Klasse "TForm1" erstellt werden kann
6158end;
6259
6360procedure TForm1.rbBlueChange(Sender: TObject);
6461begin
6562 Color:=clBlue; //oder man lässt "Self" weg und der Compiler erkennt automatisch das eigene Objekt
6663end;
6764```
6865
6966- Starten Sie Ihr Programm, es wird ungefähr so aussehen:
7067
7168![](/wiki-images/b/bd/RadioButtonExample3.png) -\> ![](/wiki-images/7/7c/RadioButtonExample4.png)
7269
7370### Gruppierung
7471
7572Fügen Sie Radiobuttons Ihrem Formular hinzu, ist der [[Parent/de|Parent]] (Steuerelement, welches den Radiobutton beinhaltet) Ihr Formular. Bei jedem Setzen (egal, ob per Code oder Nutzer per Buttonklick) eines **`<RadioButton>.Checked:=True;`** wird geprüft, ob noch ein anderer Radiobutton, mit diesem Parent, ausgewählt ist und falls ja, dieser auf nicht ausgewählt gesetzt.\
7673Wollen Sie trotzdem mehrere Radiobuttons auf Ihrem Formular nutzen, die verschiedene, unabhängige Auswahlmöglichkeiten bieten sollen, müssen Sie die Radiobuttons gruppieren. Dazu gibt es eine fertige Komponente [[TRadioGroup/de|TRadioGroup]] oder sie gruppieren Sie selber auf einem Control (z.B. [[TPanel/de|TPanel]], [[TGroupBox/de|TGroupBox]], [[TNotebook/de|TNoteBook]], [[TPageControl/de|TPageControl]] etc.).
7774
7875Folgendes kleines Beispiel zeigt Ihnen, wie sie Radiobuttons selber gruppieren können:
7976
8077Sie können dazu das Beispiel [[TRadioButton/de|Ein einfaches Beispiel]] umfunktionieren oder ein neues erstellen:
8178
8279- Als erstes müssten Sie eine [[TGroupBox/de|TGroupBox]] von der Standard Komponentenpalette auf Ihr Formular platzieren.
8380- Dieser GroupBox geben Sie den Namen *gbColor* und Caption *Farbe*.
8481- Nun ordnen Sie dieser Groupbox die Radiobuttons *rbRed*, *rbGreen* und *rbBlue* unter:
8582 - Im veränderten Projekt können Sie nacheinander die Radiobuttons **im Objektinspektor** per Drag and Drop auf *gbColor* verschieben.
8683 - In einem neuen Projekt können Sie nacheinander die drei Radiobuttons einfügen, indem Sie zum Einfügen in die Groupbox klicken, die Namen *rbRed*, *rbGreen* und *rbBlue* vergeben und die Captions zu *Rot*, *Grün* und *Blau* ändern.
8784- Nun platzieren Sie eine zweite TGroupBox auf Ihrem Formular mit dem Namen *gbBrightness* und der Caption *Helligkeit*.
8885- Fügen Sie dieser Groupbox ebenfalls drei Radiobuttons hinzu und geben diesen die Namen *rbBrightDark*, *rbBrightMedDark* und *rbBrightBright* und die Captions *Dunkel*, *Halbdunkel* und *Hell*.
8986- Falls Sie eine neue Anwendung erstellt haben, müssen Sie dem Formular noch einen Button mit dem Namen *btnPaint* und Caption *Neu Zeichnen* hinzufügen.
9087- Im *OnClick*-Eventhandler von *btnPaint* ändern Sie den Code zu:
9188
9289``` pascal
9390procedure TForm1.btnPaintClick(Sender: TObject);
9491begin
9592 if rbRed.Checked then Color:=Brightness or clRed;
9693 if rbGreen.Checked then Color:=Brightness or clLime;
9794 if rbBlue.Checked then Color:=Brightness or clBlue;
9895end;
9996```
10097
10198- Nun erstellen Sie noch die Function *Brightness*, indem Sie **`function Brightness: TColor;`** im *private*-Abschnitt von TForm1 eingeben und \[Ctrl\]+\[Shift\]+\[c\] drücken (Codevervollständigung). Es wird die Function erstellt. Geben Sie dort folgenden Code ein:
10299
103100``` pascal
104101function TForm1.Brightness: TColor;
105102begin
106103 Result:=0;
107104 if rbBrightMedDark.Checked then Result:=$888888;
108105 if rbBrightBright.Checked then Result:=$DDDDDD;
109106end;
110107```
111108
112109- Starten Sie Ihr Programm, sie können die gruppierten Radiobuttons voneinander unabhängig einsetzen, so könnte es aussehen:
113110
114111![](/wiki-images/b/bf/RadioButtonExample5.png) -\> ![](/wiki-images/8/87/RadioButtonExample6.png)
115112
116113## Siehe auch
117114
118115[[TRadioGroup/de|TRadioGroup]] - Verwendung von RadioGroups\
119116[[TToggleBox/de|TToggleBox]] - Verwendung von Toggleboxen\
120117[[TCheckBox/de|TCheckBox]] - Verwendung von CheckBoxen\
121118
122119---
123120*From the Free Pascal wiki, page "TRadioButton/de", 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