![]() |
Problem mit toAutoTristateTracking bei VirtualStringTree
Ich baue einen VirtualStringTree auf, in dem dem Nodes auf Level 0 eine Tristate CheckBox, und deren ChildNodes jeweils normale Checkboxes haben. Nachdem ich in den TreeOptions toAutoTristateTracking aktiviert habe funktionert auch, dass er automatische die Level 0 Nodes anpasst. Sprich er trägt automatisch bei den TriState Checkboxes den richtigen Zustand ein. Soweit so gut.
Aber wenn ich den Baum das erste Mal aufbauen lasse, setzt er noch nicht automatisch die TriState Checkboxes. Erst wenn ich bei einem Child einen Haken mache wird automatisch die entsprechende TriState CheckBox angepasst. Wie kann ich veranlassen, dass er nach beim ersten Aufbau des Trees die Zustände der Tristate Boxen setzt. Vielen Dank schonmal im Vorraus :-D |
Re: Problem mit toAutoTristateTracking bei VirtualStringTree
Benutzt keiner die AutoTriStateTracking Option von euch? Oder habe ich mich etwas kompliziert ausgedrückt?
|
Re: Problem mit toAutoTristateTracking bei VirtualStringTree
Hallo
Ich verstehe das Problem. Jedoch kann ich mir aus dem Gedächtnis nicht so genau vorstellen, woran es liegen könnte. Ein kleines Demo-Projekt würde auf jeden Fall helfen damit zu experimentieren. |
Re: Problem mit toAutoTristateTracking bei VirtualStringTree
Hier ist beispielhaft der Code mit dem ich den Baum aufbaue. Es wird ein Hauptnode mit 4 Child Nodes erzeugt. Die Childnodes sind alle gechecked. Trotzdem bleibt der Hauptnode ungecheckt, obwohl ich die Option toAutoTristateTracking auf true gesetzt habe. Ändere ich jetzt per Mausclick den Checkstate eines der Children, dann funktioniert das AutoTriStateTracking.
Delphi-Quellcode:
Also nochmal die Frage: Wie kann ich den Tree dazu bewegen, bereits nach dem Neuaufbau des Trees den Checkstates automatisch an den Parentnode weiterzugeben.
procedure BuildTree;
var ixChild : integer; Node, Node2: PVirtualNode; begin Tree.BeginUpdate; Tree.Clear; Node := Tree.AddChild(nil); Tree.ValidateNode(Node, False); Data := Tree.GetNodeData(Node); Node .CheckType := ctTriStateCheckBox for ixChild := 0 to 3 do begin // Füge Element der Liste hinzu Node2 := Tree.AddChild(Node); Node2.CheckState := csCheckedNormal Node2.CheckType := ctCheckBox; Tree.ValidateNode(Node2, False); end; SamplesVST.FullExpand; SamplesVST.EndUpdate; end; |
Re: Problem mit toAutoTristateTracking bei VirtualStringTree
in deinem Code veränderst du interne Strukturen vom VST.
versuche direkte zugriffe auf die nodedaten zu vermeiden! geh besser über die VST Methoden: vst.checkstate[node] := vst.checktype[node] := dann sollte es klappen |
Re: Problem mit toAutoTristateTracking bei VirtualStringTree
Tatsache. Genau da lag das Problem. Ab jetzt weiss ich bescheid.
Vielen Dank :bounce2: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz