nutze zum ersten mal VTV als VirtualStringTree mit Checkboxen (checkType=TriState)
User ruft Form auf, und aus der Datenbank wird das VST befüllt - 3 Level tief.
User kann jetzt wie er will Knoten aus- oder abwählen.
Nur Checks/Unchecks im Level 3 werden aber in Echtzeit in die Datenbank zurückgeschrieben (im VSTOnChecked-Ereignis - hier prüfe ich für den gewählten Node das CheckState)
Das funktioniert auch alles.
Jetzt aber meine Frage: Solange der User im Baum herumclickt, und Knoten im 3. Level an/abwählt, ändert sich ja auch der Zustand der 2 übergeordneten Knoten (komplett abgewählt, dieser "halb" gewählte Zustand, alle Knoten im Level 3 angewählt) - Screenshot 1 Beim nächsten Start des Programms, will der User weitermachen. Hierzu hole ich aus einer DB-Tabelle seine bereits gewählten Knoten des dritten Levels.
Ich iteriere über alle Knoten, bis ich die passenden Knote(n) zum DB-Eintrag gefunden habe, und setze im Code
Code: Alles auswählen
Node^.CheckState:=csCheckedNormal; Screenshot 2 Was muss ich noch machen (ein anderes Ereignis feuern?), damit es "durchvererbt" als ob der User den Eintrag manuell gewählt hätte?
Hintergrund: das VST wird im eingeklappten Zustand geladen/gezeigt (man sieht nur die Knoten des obersten/ersten Levels), und der User soll eben erkennen
"Unterhalb dieses Knotens hast du schon Auswahlen getroffen"
ein
Code: Alles auswählen
vst.Refresh;Hoffe ich war verständlich