Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit toAutoTristateTracking bei VirtualStringTree (https://www.delphipraxis.net/121379-problem-mit-toautotristatetracking-bei-virtualstringtree.html)

Oracle 26. Sep 2008 12:17


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

Oracle 29. Sep 2008 09:28

Re: Problem mit toAutoTristateTracking bei VirtualStringTree
 
Benutzt keiner die AutoTriStateTracking Option von euch? Oder habe ich mich etwas kompliziert ausgedrückt?

toms 29. Sep 2008 09:42

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.

Oracle 2. Okt 2008 09:19

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:
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;
Also nochmal die Frage: Wie kann ich den Tree dazu bewegen, bereits nach dem Neuaufbau des Trees den Checkstates automatisch an den Parentnode weiterzugeben.

generic 2. Okt 2008 11:58

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

Oracle 2. Okt 2008 14:33

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 20:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz