Gruppierung von RadioButtons mittels Code

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
400kmh
Beiträge: 100
Registriert: Do 25. Mär 2010, 04:03

Gruppierung von RadioButtons mittels Code

Beitrag von 400kmh »

Hallo,

ich habe vor einigen Tagen Lazarus im Internet gefunden und runtergeladen. Free Pascal beherrsche ich für meine Zwecke ganz gut, bei Lazarus komme ich jedoch jetzt an einem Punkt nicht weiter.

In meinem Programm sollen einige Fragen beantwortet werden, dazu habe ich RadioButtons in GroupBoxen vorgesehen. Da ich jedoch jetzt noch nicht weiß, wie viele Fragen es letztendlich werden, in welcher Reihenfolge sie sein sollen, und wie sie ausgerichtet werden sollen, habe ich mich entschlossen die GroupBoxen und RadioButtons anstatt manuell durch Ziehen auf die Form, mit einer Prozedur im Code zu erstellen. Die Anordnung, die Positionen, die Großen und die Benennungen, können so schneller von mir verändert werden.

Jedoch taucht dabei folgendes Problem auf: Die RadioButtons gehören alle zur selben Gruppe. Wenn ich das Programm ausführe, lässt sich maximal nur ein RadioButton insgesamt aktivieren, anstatt je einer für eine Frage.

Mittels folgender Befehle habe ich die GroupBoxen und RadioButtons erstellt:

GroupBox:=TGroupBox.Create(Self);
GroupBox.parent:=self;

RadioButton[i,i2]:=TRadioButton.Create(self);
RadioButton[i,i2].parent:=self;

Desweiteren habe ich mit weiteren Befehlen die RadioButtons so positioniert, dass sie sich innerhalb der jeweils für sie vorgesehenen GroupBoxen befinden, aber das reicht, anders als bei der manuellen Erstellung, nicht aus, um sie tatsächlich zu gruppieren.

Frage: Mit welchen Befehlen kann man im Code RadioButtons gruppieren, sodass sich jeweils von jeder Gruppe einer aktivieren lässt?

Ich hoffe, Ihr könnt mir weiter helfen.

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Gruppierung von RadioButtons mittels Code

Beitrag von Scotty »

TRadioGroup nimmt dir das Positionieren ab (und einige andere Probleme). Ansonsten gibt es die Eigenschaften Align (alTop) und Left/Top.

Dets
Beiträge: 61
Registriert: Di 11. Sep 2007, 16:59
OS, Lazarus, FPC: Ubuntu Maverick (L 0.9.28.2-10, FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Lage
Kontaktdaten:

Re: Gruppierung von RadioButtons mittels Code

Beitrag von Dets »

Frage: Mit welchen Befehlen kann man im Code RadioButtons gruppieren, sodass sich jeweils von jeder Gruppe einer aktivieren lässt?
Setz den Parent des Radiobuttons nicht auf das Formular (self) sondern auf die Groupbox, also

RadioButton[i,i2].parent:=GroupBox;

dann sollte es funktionieren.

greetz, Dets ...

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Gruppierung von RadioButtons mittels Code

Beitrag von pluto »

Eine Radiogrub wäre aber einfacher. Dort erzeugst du so Einträge:

Code: Alles auswählen

Radiogrub1.Items.Add('Eintrag1');
Radiogrub1.Items.Add('Eintrag2');
und mit Radiogrub1.ItemIndex kannst du dann den Markierten Index rauß bekommen.

Hinweis: Viele Komponenten die Mehrere Einträge anzeigen nutzen meistens dazu eine TStringList. Z.B. die ListBox, die RadioGrub, die CheckListBox, die ComboBox, das Memo, das SynEdit/SynMemo fallen mir als Beispiele an. Es gibt bestimmt noch mehr. Jedenfalls ist die Handhabug bei diesen Komponenten immer die gleiche. Es wird auch meistens ein ItemIndex geben oder ein PageIndex, beim NoteBook ist das z.b. der Fall.
MFG
Michael Springwald

400kmh
Beiträge: 100
Registriert: Do 25. Mär 2010, 04:03

Re: Gruppierung von RadioButtons mittels Code

Beitrag von 400kmh »

Dets hat geschrieben:
Frage: Mit welchen Befehlen kann man im Code RadioButtons gruppieren, sodass sich jeweils von jeder Gruppe einer aktivieren lässt?
Setz den Parent des Radiobuttons nicht auf das Formular (self) sondern auf die Groupbox, also

RadioButton[i,i2].parent:=GroupBox;

dann sollte es funktionieren.

greetz, Dets ...

Danke. Hat funktioniert.

Antworten