Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.287 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wie wird verhindert das bei SetFocus der RadioButton gecheckt wird

  Alt 11. Jun 2010, 11:44
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.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (11. Jun 2010 um 11:55 Uhr)
  Mit Zitat antworten Zitat