CheckBox und SendMessage
-
Das hat den Nachteil, dass ein echter Klick, der zum falschen Moment kommt verloren geht.
Es geht aber auch einfacher und sicherer:
Du nimmst einfach das OnMouseUp Event und togglest darin die Checked Eigenschaft. Das OnClick Event läßt du leer.
-
Wenn ich ratfury richtig verstanden habe soll unter gewissen Umständen durchaus das OnClick-Event ausgelöst werden.
Ansonsten siehe auch den FAQ-Thread, Stichwort 'Leertaste'.
-
Wenn ich ratfury richtig verstanden habe soll unter gewissen Umständen durchaus das OnClick-Event ausgelöst werden.
Na klar, dann setzt er seinen Code dafür eben in das OnMouseUp Event.
-
Die Leertaste nicht vergessen.
Statt dieses Geeiers ist es doch aber viel sinnvoller, die von dasd erwähnte zusätzliche Variable abzufragen. Die Tag-Property schreit ja geradezu danach, hier verwendet zu werden.
void __fastcall TForm1::Button1Click(TObject *Sender) { CheckBox1->Tag = 1; CheckBox1->Checked ^= 1; // das programmatische Umschalten } //--------------------------------------------------------------------------- void __fastcall TForm1::CheckBox1Click(TObject *Sender) { if (CheckBox1->Tag) // nicht vom User direkt gesetzt, CheckBox1->Tag = 0; // also nichts tun else { Beep(); // der normale OnClick-Code } }
-
Hallo,
Das führt aber dazu, das der erste Klick nach einem manuellen setzen immer ins Leere geht. Lieber gleich den Tag zurücksetzen.
-
Braunstein schrieb:
Das führt aber dazu, das der erste Klick nach einem manuellen setzen immer ins Leere geht.
Mit "manuell" meinst du per Code, im Beispiel also per Button?
Kann ich nicht nachvollziehen. Nach dem "manuellen" Setzen wird Tag doch zurückgesetzt!?
-
ok hast ja recht