Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi FullCollapse VirtualTree (https://www.delphipraxis.net/93608-fullcollapse-virtualtree.html)

newgro 8. Jun 2007 09:14


FullCollapse VirtualTree
 
Hallo *,

ich habe 2 verschiedene Bäume (A+B). A zeigt das Feld ID von B an. Wenn in A keine id zugeordnet ist, soll
B vollständig "zusammenfallen". Bisher suche ich den Knoten in B nachdem A selektiert wurde und wenn ich den
nicht finde, rufe ich

Delphi-Quellcode:
B.FullCollapse
auf. Aber leider wird nichts zusammengeklappt. In der Doku (FullCollapse) steht was von
Zitat:

// This routine collapses all expanded nodes in the subtree given by Node or the whole tree if Node is FRoot or nil.
// Only nodes which are expanded will be collapsed. This excludes uninitialized nodes but nodes marked as visible
// will still be collapsed if they are expanded.
Aber ich habe doch aufgeklappte Knoten - ich bin verwirrt.

Vielleicht weiss ja jemand wie ich den Baum einfach zuklappen kann.

Cheers
Per

pertzschc 8. Jun 2007 09:41

Re: FullCollapse VirtualTree
 
probier es mal mit Übergabe des Root-Knoten:
Delphi-Quellcode:
a_tree.FullCollapse(a_tree.RootNode);
Gruß,
Christoph

newgro 8. Jun 2007 10:01

Re: FullCollapse VirtualTree
 
Hallo Christoph,

habe ich versuch. Gleiches Ergebnis. Muss ich vielleicht im Baum noch eine Eigenschaft verbiegen?

Danke
Per

Gremlin 8. Jun 2007 11:41

Re: FullCollapse VirtualTree
 
Hmmm geht eigentlich ohne Probleme. Vielleicht wird in deinem Code der übergebene Eintrag im anderen Baum nicht gefunden oder verwendest du bei Suche/Collapse den falschen Baum? Vielleicht wäre ein Teil deines Codes nicht schlecht, um dies gegeb .überprüfen zu können.

Ich habs mal so verstanden, das du einen selektierten Wert aus Baum A in einem Baum B suchst. Ist dieser dort nicht vorhanden, dann wird Baum B vollständig kollabiert dargestellt. Sonst soll nichts passieren (Der Wert ist jeweils in Text enthalten)

Delphi-Quellcode:

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
  n : integer;
begin
  if Assigned(Node) then begin
    for n := 0 to TreeView2.Items.Count-1 do begin
      if (TreeView2.Items[n].Text=Node.Text) then
        Exit;
    end;
    TreeView2.FullCollapse;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:22 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