RadioButton auswerten ohne RadioGroup

Rund um die LCL und andere Komponenten
Antworten
Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

RadioButton auswerten ohne RadioGroup

Beitrag von Mathias »

Wen ich einen RadioButton aktiviere, werte ich folgendermassen den aktiven RadioButton aus.

Code: Alles auswählen

procedure TForm1.RadioButtonChange(Sender: TObject);
begin
  if RadioButton1.Checked then begin
    Caption := '1';
  end;
  if RadioButton2.Checked then begin
    Caption := '2';
  end;
  if RadioButton3.Checked then begin
    Caption := '3';
  end;
end;     
Wen man aber viele RadioButtons hat, wird dies recht mühsam.
Gibt es da eine Art ItemIndex, das man auswerten kann ?

Gut, man könnte eine RadioGroup anstelle der GroupBox verwenden, aber auf die will ich nach Möglichkeit verzichten.
Ausser einer kennt eine Möglichkeit die automatische Ausrichtung der RadioButtons zu unterbinden, da noch andere Komponenten die der Box sind.
Dateianhänge
radiobutton_test.zip
(2.3 KiB) 59-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

siro
Beiträge: 732
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: RadioButton auswerten ohne RadioGroup

Beitrag von siro »

auf den ersten Blick könnte man es so machen:
Man gibt im Objektinspektor jedem Button eine Nummer im "Tag"
und dann folgt die Auswertung so:

Code: Alles auswählen

procedure TForm1.RadioButtonChange(Sender: TObject);
begin
  with Sender as TRadioButton do
    if Checked then Form1.caption:=IntToStr(Tag);     
end;
meintest Du das so ?
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: RadioButton auswerten ohne RadioGroup

Beitrag von wp_xyz »

Mathias hat geschrieben:
Mo 4. Apr 2022, 16:56
Wen ich einen RadioButton aktiviere, werte ich folgendermassen den aktiven RadioButton aus.

Code: Alles auswählen

procedure TForm1.RadioButtonChange(Sender: TObject);
begin
  if RadioButton1.Checked then begin
    Caption := '1';
  end;
  if RadioButton2.Checked then begin
    Caption := '2';
  end;
  if RadioButton3.Checked then begin
    Caption := '3';
  end;
end;     
Wen man aber viele RadioButtons hat, wird dies recht mühsam.
Gibt es da eine Art ItemIndex, das man auswerten kann ?
Du kannst die Controls, die zur GroupBox gehören, in einer for-Schleife durchlaufen, auf den Typ TRadioButton prüfen und das Control dann entsprechend benennen. Aber: du musst natürlich darauf achten, dass die Controls von links nach rechts und von oben nach unten eingefügt werden - notfalls mit den Befehlen im Z-Order-Kontextmenü umsortieren.

Code: Alles auswählen

procedure TForm1.RadioButtonChange(Sender: TObject);
var
  i, n: Integer;
begin
  n := 0;
  for i := 0 to Groupbox1.ControlCount-1 do begin
    if (Groupbox1.Controls[i] is TRadioButton) then
    begin
      inc(n);
      if  TRadioButton(Groupbox1.Controls[i]).Checked then
        TRadioButton(Groupbox1.Controls[i]).Caption := IntToStr(i);
    end;
  end;
end;
Mathias hat geschrieben:
Mo 4. Apr 2022, 16:56
Gut, man könnte eine RadioGroup anstelle der GroupBox verwenden, aber auf die will ich nach Möglichkeit verzichten.
Ausser einer kennt eine Möglichkeit die automatische Ausrichtung der RadioButtons zu unterbinden, da noch andere Komponenten die der Box sind.
Das AutoFill der RadioGroup deaktivieren. Dann ist zwar immer noch das ChildSizing aktiv, d.h. ein neu hinzugefügtes Control wird immer hinten angefügt, aber zumindest wird die Control-Höhe nicht mehr verändert.

Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: RadioButton auswerten ohne RadioGroup

Beitrag von Mathias »

Ich habe die Lösung mit dem TabControls durchlaufen gewählt.

Danke für die Hilfe
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: RadioButton auswerten ohne RadioGroup

Beitrag von wp_xyz »

Verstehe ich nicht. In dem ganzen Beitrag war nirgendwo die Rede von TabControl...

Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: RadioButton auswerten ohne RadioGroup

Beitrag von Mathias »

Ups, ich meinte Controls. :oops:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten