AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Checkboxen machen mich wahnsinnig!

Ein Thema von sonicfire · begonnen am 17. Aug 2006 · letzter Beitrag vom 17. Aug 2006
Antwort Antwort
Seite 2 von 2     12   
raiguen
(Gast)

n/a Beiträge
 
#11

Re: Checkboxen machen mich wahnsinnig!

  Alt 17. Aug 2006, 20:37
Moin
Auch wenn das Problem gelöst scheint, so darf ich dennoch eine kleine Anmerkung machen !?
Wie bereits gesagt, löst das Setzen von Checked immer das Ereignis OnClick aus...soweit, so dumm *gg*
Es gibt aber eine einfache Lösung (sogar mit Delphi-Boardmitteln ). Hierzu ein kleines Beispielmit 3 Checkboxen:
Delphi-Quellcode:
procedure TForm.CheckBox1MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   CheckBoxStatus(Sender as TCheckBox);
end;

{zum 'Abfangen' der Leertaste, welche auch den Status setzen kann }
procedure TForm1.CheckBox1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = ORD(#32) then CheckBoxStatus(Sender as TCheckBox);
end;
{ allg. Proc für die Checkboxen}
procedure TForm1.CheckBoxStatus(Sender: TcheckBox);
begin
   if Sender.Name = 'CheckBox1then
   begin
     Checkbox2.State := cbUnchecked; //--setzen des Status auf unchecked
     Checkbox3.State := cbUnchecked;
  end;
  if Sender.Name = 'CheckBox2then
   begin
     Checkbox1.State := cbUnchecked;
     Checkbox3.State := cbUnchecked;
  end;
  if Sender.Name = 'CheckBox3then
   begin
     Checkbox1.State := cbUnchecked;
     Checkbox2.State := cbUnchecked;
  end;
end;
Interessant ist hier Checkboxe.State, dessen Eigenschaft man durchaus zur Laufzeit setzen kann...entweder im MouseUp- oder wie hier 'weitergeleitet' an die Prozedure CheckBoxStatus. Somit umgeht man das Auslösen des OnClick-Ereignisses..
Eine Checkbos erhält automatisch den Status cbChecked, sobald sie angeklickt oder (sofern per Tab focusiert wurde) die Leertaste gedrückt wurde.
Sollen andere Checkboxen in Abhängigkeit einer bestimmten Checkbox den Status cbChecked erhalten, so löst man das elegant wiederum über
Code:
Checkbox.State := cbChecked


Ob eine Checkbox markiert ist, lässt sich zum einen ja über
Code:
if CheckBox.Checked then..
oder über
Code:
if Checkbox.State=cbChecked
ermitteln; für den häkchenfreien Zustand dann entsprechend so:
Code:
if not CheckBox.Checked then..
bzw
Code:
if Checkbox.State=cbUnChecked
..

Zu diesem Problem gibt es hier Abhängigkeiten mehrerer Checkboxen noch etwas mehr Codebeispiel.
...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 22:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz