Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

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