Du machst da eine großes "nicht machen".
Verändere nie die Nodedata direkt, sondern geht IMMER über die VST Methode.
In deinem Fall dann vst.IsVisible[node]:= <true | false>;
[edit]Ich schreib nochmal schnell dazu warum:
Viele Methoden erzeugen das sich der Tree neu zeichnet bzw. die Methoden nehmen Rücksicht auf den aktuellen Zustand des Trees und dessen Knoten. Auch für Kompatibilität zu anderen Versionen ist es besser wenn du die Methoden nimmst und NICHT auf interne Strukturen zugreifst.
[/edit]
Ansonsten wie immer an dieser Stelle den Hinweis auf das Stammtisch Video #2.
http://www.delphipraxis.net/videos#Stammtisch_2
Beispielcode hier:
http://www.delphipraxis.net/internal...=817819#817819
Und:
Ja, du musst auf die Struktur Rücksicht nehmen.
Vielleicht durch eine Rekursive Programmierung?