AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Wie wird verhindert das bei SetFocus der RadioButton gecheckt wird
Thema durchsuchen
Ansicht
Themen-Optionen

Wie wird verhindert das bei SetFocus der RadioButton gecheckt wird

Ein Thema von yörsch · begonnen am 11. Jun 2010 · letzter Beitrag vom 14. Jun 2010
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.586 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.
Ein Therapeut entspricht 1024 Gigapeut.

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


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz