Items in TreeView löschen



  • Hallo,
    ich benutze in meinem Programm eine TreeView.
    Durch das Setzen von Radiobuttons in einem Dialog, sollen die Items in der TreeView zuerst gelöscht werden und anschließend wieder neue Items eingefügt werden.
    Neue Items einfügen ist dabei kein Problem, Probleme gibts beim löschen der alten Items.
    Zum löschen benutzte ich m_pTreeCtrl->delete(Item) oder
    m_pTreeCtrl->deleteAllItems().
    Das führt jedoch nur dazu das der Text des Items gelöscht wird und es immer noch anwählbar ist.
    Ausserdem lassen sich danach keine neue Items mehr einfügen, die TreeView bleibt leer.
    Woran liegt das?
    Verwende ich die falsche function?
    Wer kann mir helfen?



  • *grübelt* eigentlich heißt die Methode ja DeleteItem() bzw. DeleteAllItems() - und normalerweise sollte sie auch genau das erledigen, was du benötigst.


  • Mod

    Wie CStoll schon schrieb, die Funktionen sind OK.
    Könnte es sein Das Du SetRedraw(FALSE) arbeitest und vergessen hast das Fenster zu invalidieren?



  • Das könnte möglich sein, muss ich mal ausprobieren.



  • Habe jetzt SetRedraw(true) ergänzt und siehe da es funktioniert ^^
    Und wieder was gelernt!
    DANKE!!!!


  • Mod

    maRKus23 schrieb:

    Habe jetzt SetRedraw(true) ergänzt und siehe da es funktioniert ^^
    Und wieder was gelernt!
    DANKE!!!!

    Aber Du hst aich sicherlich SetRedraw(FALSE) vorher selbst gesetzt? Wenn nicht ist was anderes faul. :xmas2:



  • Ähm ich habe kein SetRedraw(false) vorher gesetzt.
    Wieso sollte denn was anderes faul sein?


  • Mod

    Weil das ein Flag ist, dass das System/OS selber nicht setzt.
    Also ist irgendwas bei Deiner Software auf die Idee gekommen SetRedraw(FALSE) zu setzen. D.h. es gab keine korrekten Updates mehr.
    Versuch mal nur ein Invalidate, statt dem SetRedraw(TRUE)!

    Andere Frage: Führst Du das Delete innerhalb eines Tree Notification Handlers durch?



  • Führe das Delete nicht im Tree Notification Handler aus.


  • Mod

    Hmmmm... sehr sehr sehr eigentümlich. :xmas2:



  • Ich habe jetzt m_pTreeCtrl->SetRedraw(true) durch
    m_pTreeCtrl->Invalidate(true) ersetzt, und das Fenster wird dadurch nicht neugezeichnet.
    :xmas1:


  • Mod

    Hmmm. Eigentümlichst. Dann musst Du es wohl mit dem SetRedraw(TRUE) lassen. Schaden kann es nicht
    nur wundert tut es mich
    (es reimt sich :xmas1:)



  • Naja mir ist es auch nicht so klar, aber so funktionierts ja auch!!


Log in to reply