RadioBoxen werden nunmal durch Fokus aktiviert.
Es gab vor kurzem auch schonmal eine Diskusion zu soeinem Thema "verändern von gewohntem Verhalten".
Ergo: verwende CheckBoxen, denn diese besitzen das von dir gewünschte Verhalten.
Wenn nur eine CheckBox gleichzeitig aktiviert sein soll, dann deaktiviere beim Aktivieren einer CheckBox alle anderen CheckBoxen und fertig.
[add]
Für 3 CheckBoxen einfach diesen Code allen CheckBoxen beim OnClick zuweisen.
Delphi-Quellcode:
// immer genau eine Box aktiviert
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Tag <> 0 then Exit;
CheckBox1.Tag := 1;
CheckBox1.Checked := Sender = CheckBox1;
CheckBox2.Checked := Sender = CheckBox2;
CheckBox3.Checked := Sender = CheckBox3;
{...}
CheckBox1.Tag := 0;
end;
// maximal eine Box aktiviert
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Tag <> 0 then Exit;
CheckBox1.Tag := 1;
CheckBox1.Checked := CheckBox1.Checked and (Sender = CheckBox1);
CheckBox2.Checked := CheckBox2.Checked and (Sender = CheckBox2);
CheckBox3.Checked := CheckBox3.Checked and (Sender = CheckBox3);
{...}
CheckBox1.Tag := 0;
end;
Für jede andere Anzahl sollte ein Muster erkennbar sein.
PS: CheckBox1.Tag kann man auch durch eine beliebige globale booleanische Variable ersetzen.
Diese Variable stellt nur sicher, daß Veränderungen innerhalb dieses Ereignisses keine Endlosschleife auslösen.