CheckBox->checked Status ändern ohne Checkbox->click auszuführen
-
Hallo,
der Titel sagt schon fast alles. Aber nun nochmal ausführlich

Ist es möglich die Eigenschaft "checked" einer Checkbox von
false auf true zu ändern, ohne das die Routine checkbox->click()
ausgeführt wird?Ich habe ein Array aus mehreren Bits. Wenn eine Checkbox aktiviert ist,
so soll das entsprechende Bit auf 1 gesetzt werden, sonst auf 0.
Da das Array auch von anderen Fenstern aus geändert werden kann, möchte ich
das Fenster mit den checkboxen beim öffnen initialisieren.
Dazu nutze ich:ManuellForm->bitBox1->Checked=true; ManuellForm->bitBox2->Checked=true; //es folgen noch mehr boxen ManuellForm->ShowModal();in dem ManuellForm Fenster ist die Funktion:
void __fastcall TManuellForm::bitBox1Click(TObject *Sender){ schaltBit1(); // schaltet den Status zwischen 0 und 1 }Das Problem ist, wenn zb. mein Array {0,1} ist, dann werden beide
bits umgeschaltet, so dass das Array {1,0} wird.
Das Array soll aber erhalten bleiben.
Problem verstanden?
-
wie wärs wenn du mal in die FAQ guckts?
CheckBox->Haken setzen, ohne OnClick auszulösen
-
Dein Problem habe ich nicht verstanden, aber hast du dir mal den entsprechenden FAQ-Beitrag durchgelesen?
-
Mensch... Die Suche war erfolglos, an die FAQ's hab ich nicht
gedacht... Danke trotzdem.Dann werd ich jetzt mal schaun
-
So, die eine Möglichkeit funktioniert nur halb.
Ich möchte die Checkbox auch mit der Tastatur schalten können.
Mit der Möglichkeit funktioniert das aber nicht.Und hiermit kann ich garnix anfangen:
SendMessage(DasHandleDerCheckbox, BM_SETCHECK, BST_CHECKED, 0);
-
Dann schau dir am besten mal in der Hilfe ALLE Eigenschaften von TCheckBox an...
-
Und dann??? Werde ich auch nicht schlauer...
Auf so hilfreiche Tipps wieDann schau dir am besten mal in der Hilfe ALLE Eigenschaften von TCheckBox an...
kann ich auch verzichten. Sorry, aber so patzige Kommentare lese
ich hier häufiger. Entweder man gibt nen konkreten Hinweis, oder man
lässt das Posten direkt bleiben!PS: Wenn es nicht patzig gemeint war: sorry

-
Raptor2000 schrieb:
Und hiermit kann ich garnix anfangen:
SendMessage(DasHandleDerCheckbox, BM_SETCHECK, BST_CHECKED, 0);Womit genau hast Du denn Probleme?
- SendMessage solltest Du in der Hilfe zur Windows-API finden
- DasHandleDerCheckbox: Das hat "Dasd" wohl als Dein Problem auf-
gefasst. Mit seinem Hinweis hätte er dann natürlich nicht so ganz
unrecht. Die Eigenschaft, auf die er Dich dabei stoßen will, steckt
ja in dem "Variablennamen" schon drin.Ich bin mir nicht so ganz sicher, ob die Antwort von "Dasd" patzig gemeint war,
aber völlig unrecht hat er nicht, wenn Du einfach mal schreibst, dass Du damit
garnix anfangen kannst. Ich bin mir ziemlich sicher, dass man zu SendMessage
pfundweise Informationen in der Hilfe, hier im Forum und überall im Internet
finden kann.
(Ich hoffe, das war jetzt nicht "patzig")Gruß,
Alexander
-
War nicht patzig gemeint, was ich sagen wollte (wie Alexander Kempf bereits erwähnte) ist, dass alles in der Hilfe erklärt wird und man das Handle der Checkbox eben mit Hilfe der VCL-Referenz finden kann.
-
Hallo
Raptor2000 schrieb:
Und dann??? Werde ich auch nicht schlauer...
Auf so hilfreiche Tipps wieDann schau dir am besten mal in der Hilfe ALLE Eigenschaften von TCheckBox an...
kann ich auch verzichten. Sorry, aber so patzige Kommentare lese
ich hier häufiger. Entweder man gibt nen konkreten Hinweis, oder man
lässt das Posten direkt bleiben!Du vergisst nur eines DU kommst an und willst von einem anderen eine Hilfe
wenn dir dann jemand einen Tip gibt und dir nicht sehr ausfuehrlich alles
erklaert maulst du ihn an und das ist kein sehr guter StilWir sind hier keine Hotline die du bezahlst !!!
Falls dir mein Kommentare zu deinem Posting nicht schmecht -> ueberleg erstmal
Du kannst gerne in einem anderen Unterforum hier mit mir und anderen weiterdiskutieren.Aber bitte nicht hier
MfG
Klaus
-
So, ok, ihr habt mich überzeugt.
Sein wir alle wieder Freunde
Mittlerweile hab ich das Problem einfach anders gelöst, indem ich es
umgangen habe.Und wenn ich richtig gelesen hätte, und brav die Suche-Funktion
genutzt hätte, wäre ich auf diesen Code gekommen, der genau das
beinhaltet, was ich haben will: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 } }