Autor Beitrag
Ah-El-Eh-Iks
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 28

Win 3.11, Win ME, Win XP
Delphi 3 Prof., Delphi 2005 Pers.
BeitragVerfasst: So 13.05.07 22:26 
Hallo,

ich hab mal ne Frage... Und zwar: Wie ist es sinnvoll, eine Veränderung von einer TCheckbox zu registrieren? Ich möchte so eine Datenbankmaske machen, in der es u.a. eine Checkbox mit "Aktiv" geben soll. Falls sie deaktiviert wurde, soll eine Reihe von Edit-Felder auch ausgeschaltet werden. Nun könnte ich ja einfach machen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 Edit1.Enabled := CheckBox1.Checked;
 Edit2.Enabled := CheckBox1.Checked;
 // usw.
end;


Das habe ich ja auch schon an anderer Stelle hier gelesen ... allerdings ist das ja nicht gerade eine elegante Methode, und irgendwie sträubt sich da auch was in mir. Was ist zum Beispiel, wenn der Benutzer die Checkbox mit der Tastatur aktiviert/deaktiviert? Vielleicht gibt es aber auch eine Möglichkeit, dass der Benutzer klickt, ohne die Checkbox zu verändern (CheckBox1.Enabled := false)

Was ich damit sagen will, ist, dass es doch bestimmt eine "richtigere" Methode gibt, die Veränderung auszulesen, oder? Schließlich frage ich sie ja auch nicht mit einer Timer-Komponente ab...

Viele Grüße

Alex
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: So 13.05.07 22:45 
So richtig kann Ich dem Sinn deiner Fragestellung nicht folgen aber Ich werf mal FindComponent in den Raum.

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
John Sanson
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72

WinXP,WinVista
Delphi(BDS2006, 5), C#(VS2005, BDS2006), VB6
BeitragVerfasst: Mo 14.05.07 12:13 
Kannst das ruhig so machen. Es wird sowohl auf Klicks als auch auf Eingabe mit der Tastatur geagiert.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
IF CheckBox1.Checked then
    Edit1.Enabled := false
else
    Edit1.Enabled := true ;
end;

end.
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mo 14.05.07 12:13 
Hallo,

CheckBox.OnClick wird ausgelöst wenn sich die Eigenschaft Checked ändert.

Diese Event wird ausgelöst wenn Checked
- per Code gesetzt
- per Mausklick umgeschaltet
- per Tastatur durch z.B. Leertaste verändert
wird.

Du brauchst Dir keine Sorgen machen, das Event ist schon das Richtige.
Kann man auch leicht testen. oder? :wink:

//Edit: etwas zu spät, aber
@user profile iconJohn Sanson
ausblenden Delphi-Quelltext
1:
Edit1.Enabled := CheckBox1.Checked;					

der Code ist in den Auswirkungen identisch mit Deinem.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Ah-El-Eh-Iks Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 28

Win 3.11, Win ME, Win XP
Delphi 3 Prof., Delphi 2005 Pers.
BeitragVerfasst: Mo 14.05.07 19:20 
:oops: Oh...

Ich dachte eigentlich, dass ich das gestestet hätte (hab ich ja auch). Und dass es vor allem auf die Änderung per Tastatur nicht reagiert hätte... Na ja, keine Ahnung. Vielleicht hab ich mich durch den Namen "OnClick" beeinflussen lassen, aber wenn es auch auf Code-Änderungen (ja, ich habs gerade ausprobiert :D ) reagiert, dann ist es ja auf jeden Fall richtig. Müsste es dann aber nicht eher "OnChange" wie beim Edit-Feld heißen?

Aber, OK, OnClick beim Button wird ja auch ausgelöst, wenn dieser mit der Leer- oder Entertaste ausgelöst wird...