Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

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

  Alt 11. Jun 2010, 10: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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