Meldung wenn kein RadioButton aktiv

Servus zusammen!

Kann mir jemand erklären wie ich es hinkriege, dass eine Meldung erscheint, wenn kein RadioButton aktiviert wurde? Also ich habe mehrere RadioButtons zur Auswahl und wenn keiner aktiviert wurde, soll eine Aufforderung dazu erscheinen.
Bin im Gebiet Delphi bzw. Programmierung allgemein absoluter Neuling. Habe hier im Forum nur das hier gefunden, aber damit kann ich absolut nichts anfangen:

function TForm1.IsRadioButtonActive: Boolean;
var
i: Integer;
begin
Result := false;
for i := 0 to ControlCount -1 do begin
if Controls[i] is TRadioButton and
TRadioButton(Controls[i]).Checked = true then begin
Result := true;
Exit;
end{if};
if Controls[i] is TRadioGroup and
TRadioGroup(Controls[i]).ItemIndex > -1 then begin
Result := true;
Exit;
end{if};
end{for};
end;

Kann mir das jemand genauer erklären? Ich nutze einzelne RadioButtons, arbeite also ohne RadioGroup.
Bei den Edits hab ich das ganz einfach so hinbekommen:

if Edit1.Text = ‚‘ then
begin
showmessage (‚Geben Sie einen Wert ein‘);
exit;
end;

Geht das nicht ähnlich einfach mit RadioButtons?
Ich habe schon folgendes versucht, was aber leider nicht funktioniert:

if RadioButton1.Checked := false then
[…]

Wäre über Hilfe sehr dankbar!

Hallo,

der Sinn von Radiobuttons ist das gegenseitige „Auslösen“, d.h. es ist nur einer aktiv aus einer Gruppe. Ein Radiobutton ohne entsprechende Gruppe ist keiner. Das Grundkonzept ist falsch.

Gruss Reinhard

Hallo!
Erst mal formatiert:

 function TForm1.IsRadioButtonActive: Boolean;
 var
 i: Integer;
 begin
 Result := false;

Bis hier sollte alles klar sein.

 for i := 0 to ControlCount -1 do begin

Hier fängt eine Schleife an, in der durch alle Controls auf dem Form gegangen wird.

 if Controls[i] is TRadioButton and
 TRadioButton(Controls[i]).Checked = true then begin
 Result := true;
 Exit;
 end{if};

Wenn das Control ein RadioButton ist UND der RadioButton ausgewählt (checked) ist, Wird Result auf True gesetzt und die Funktion verlassen.

 if Controls[i] is TRadioGroup and
 TRadioGroup(Controls[i]).ItemIndex \> -1 then begin
 Result := true;
 Exit;
 end{if};

Wenn das Control eine RadioButton Group ist UND der ItemIndex der Group > -1 ist (d.h. ein Radiobutton ist „Checked“, der ItemIndex gibt den entsprechenden Radiobutton zurück, beginnend bei 0, -1 heißt: Kein RadioButton geklickt) wird Result auf True gesetzt und die Funktion wird verlassen.

 end{for};

Ende der Schleife. Wenn hier Result noch immer False ist, war kein Radiobutton ausgewählt (checked).

 end;

Ende der Funktion.

Ich habe schon folgendes versucht, was aber leider nicht
funktioniert:
if RadioButton1.Checked := false then
[…]

Richtig wäre: (kein Doppelpunkt vor =, sonst wäre es eine Zuweisung)

if RadioButton1.Checked = false then ...

oder

if Not RadioButton1.Checked Then ...

Alles klar?
Manfred

Hallo,

function TForm1.IsRadioButtonActive: Boolean;
var
i: Integer;
begin
Result := false;
for i := 0 to ControlCount -1 do begin
if Controls[i] is TRadioButton and
TRadioButton(Controls[i]).Checked = true then begin
Result := true;
Exit;
end{if};
if Controls[i] is TRadioGroup and
TRadioGroup(Controls[i]).ItemIndex > -1 then begin
Result := true;
Exit;
end{if};
end{for};
end;

Kann mir das jemand genauer erklären? Ich nutze einzelne
RadioButtons, arbeite also ohne RadioGroup.
Bei den Edits hab ich das ganz einfach so hinbekommen:

if RadioButton1.Checked := false then
[…]

das geht so natürlich auch. Der zuerst genannte Beispielcode hat den entscheidenden Vorteil, dass du weitere RadioButtons hinzufügen kannst, ohne den Code zu ändern.
Bei deinem Code musst du für jeden neu hinzukommenden RB eine neue Abfrage einfügen bzw für gelöschte RBs den entsprechenden Code entfernen.

Gruß, Niels

Hallo,

der Sinn von Radiobuttons ist das gegenseitige „Auslösen“,
d.h. es ist nur einer aktiv aus einer Gruppe. Ein Radiobutton
ohne entsprechende Gruppe ist keiner. Das Grundkonzept ist
falsch.

kann man so nicht sagen. Delphi macht aus allen RBs des gleichen Containers automatisch eine Gruppe, in der nur ein RB Checked=true sein kann. Die Radiogroup erleichtert manche Programmieraufgaben, legt aber das Design relativ einseitig fest.

Gruß, Niels

Richtig wäre: (kein Doppelpunkt vor =, sonst wäre es eine
Zuweisung)

if RadioButton1.Checked = false then …

oder

if Not RadioButton1.Checked Then …

So einfach kann es sein :smile: Vielen Dank!

Jo genau das meinte ich. Hatte mich vielleicht auch falsch ausgedrückt. Hatte eben keine RadioGroup genutzt, sondern mehrere RadioButtons auf ein Panel gesteckt, die natürlich trotzdem nur erlauben, dass lediglich einer aktiv ist.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]