DBCheckBox-Klick simulieren



  • Hi,

    ich habe eine DBCheckBox über ein DataSource mit meiner Datenbank verbunden. Wenn ich mit der Maus in die Checkbox klicke, wird das entsprechende Feld in meiner Datenbank automatisch geändert. Wenn ich allerdings die Eigenschaft checked ber Code ändere, passiert das nicht. Was muss ich tun, damit das doch passiert?



  • Hallo,

    per Code setzt man den Boolschen Wert des Feldes; da die DBCheckBox mit der DatenMenge verbunden ist,
    wird das Häkcken automatisch gesetzt:

    zB:

    Table1->Edit();
       Table1->FieldByName("Shipped")->AsBoolean = true;  // Checked
       //Table1->FieldByName("Shipped")->AsBoolean = false;  // Unchecked
       Table1->Post();
    

    edit:

    Hier noch den simulierten Mausklick:

    Table1->Edit();
       SendMessage( DBCheckBox->Handle, WM_LBUTTONDOWN, (WPARAM)MK_LBUTTON, MAKELPARAM(5,5));
       SendMessage( DBCheckBox->Handle, WM_LBUTTONUP, (WPARAM)MK_LBUTTON, MAKELPARAM(5,5));
       Table1->Post();
    

    mfg
    kpeter



  • Hm, schade, ich dachte ich könnte das direkt über die DBCheckBox machen.



  • Dann müsstest du das nochmal genauer erklären oder poste einfach den betreffenden Code.



  • MyDBCheckBox->checked = true;
    

    So hätt ich gedacht. Ist zwar nicht viel kürzer, als in der Tabelle zu ändern, aber anders 🙂



  • Hm, ich dachte eher an den betreffenden Codeabschnitt...

    Naja, ein einfaches Setzen von Checked = true reicht nicht aus.



  • Und genau das war die Frage. Kann man die DataSource oder ADOTable irgendwie so einstellen, dass es ausreicht oder oder oder...


Anmelden zum Antworten