TTreeNode gezielt neuzeichnen.



  • Einen schönen guten Morgen zusammen,

    ich weise in einem TTreeView den TTreeNodes individuell Strings und Icons zur Laufzeit zu.
    Normalerweise funktioniert es auch, da der Knoten automatisch neugezeichnet wird, wenn der Text oder ein Icon oder sonstwas gesetzt wird.

    Leider habe ich das Problem dass es manchmal eben nicht geht. Es macht einfach keinen Sinn. Ich habe schon Stunden in dieses Problem gesteckt und keine Lösung gefunden. Ich kann hier jetzt auch keinen Quelltext posten, weil es einfach zu viel ist.
    Ich ändere das Icon ... es wird nicht neugezeichnet. Ich klicke mit der Maus drauf oder minimiere das Fenster und maximiere es wieder. Das Icon ist da! Also der Wert ist definitiv richtig zugewiesen. Nur das Neuzeichnen des Knotens wird in diesem Fall einfach nach Änderung der Werte nicht durchgeführt.
    Gibt es die Möglichkeit einem TTreeNode Element zu sagen, dass es sich neuzeichnen soll? Sowas wie "Repaint" o.ä.?Das Einzige, was ich gefunden habe ist, TreeView->Items->Begin und EndUpdate(). Hierbei ist leider das Problem, dass der gesamte Baum neugezeichnet wird und das somit Geschwindigskeitsverluste einbringt.
    Also... kann man ein TTreeNode Element eines TTreeViews dazu bringen, dass es neugezeichnet wird (ohne den gesamten Baum neu zu zeichnen)?

    Schöne Grüße,
    Olli



  • Vielleicht hilft was in der Art (ungetestet):

    InvalidateRect(TreeView1->Handle, &(TreeView1->ClientRect), true);
    

Log in to reply