![]() |
TcxTreeList - Travesieren und Parent setzen
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Wissende,
ich bin jetzt langsam am verzweifeln, mit dem TcxTreeList. Entweder es vergisst Knoten oder alles haut nicht hin. Vielleicht liegts ja auch auch mir ... :roteyes: Also, ich will einen Baum im TcxTreelist darstellen, dann speichern und wieder anzeigen. Wo der gespeichert wird, sollte erst einmal egal sein. Auf alle fälle sollte der User die Möglichkeit haben, den Knoten umzuhängen... und da fängt das Problem an. Wenn der das Tut, kommt meine Routine (speichern oder laden) durcheinander und zeigt mir anschliessend nur noch Datenchaos an. Wießt Ihr wo der Fehler liegt? Hier meine LadeRoutine:
Delphi-Quellcode:
Und So, wollte ich eigentlich speichern:
function TForm2.TreeAddNode(const aParent: TcxTreeListNode;
const Values: array of Variant; const ImageIdx: Integer; const Data: Pointer; const aTree: TcxTreeList): TcxTreeListNode; begin if aTree = NIL then Raise Exception.Create('Internal Error'); if aParent = NIL then result := aTree.Add else Result := aParent.AddChild; result.AssignValues(values); result.ImageIndex := ImageIdx; result.Data := data; end; procedure TForm2.TreeBuild; var i: integer; w: TWus; begin with tl do begin BeginUpdate; Clear; for I := 0 to WusList.Count - 1 do begin w := WusList.Items[i]; TreeAddNode(TreeFindParent(w.pid), [w.pid, w.id, w.s], -1, w, TL); end; EndUpdate; end; end; function TForm2.TreeFindParent(const aParentId: Integer): TcxTreeListNode; begin if aParentId < 0 then Result := NIL else begin result := tl.TopNode; while result <> NIL do begin if result.Data = NIL then Raise Exception.Create('Internal Error'); if TWus(result.Data).id = aParentId then break; result := result.GetNext; end; end; end;
Delphi-Quellcode:
Ich kämpf jetzt hier schon seit Stunden und sehe langsam gar nichts mehr. Sieht jemand das Problem?
procedure TForm2.TreeStore;
procedure Traverse(N: TcxTreeListNode; apid: integer); var i: integer; begin for i := 0 to n.Count - 1 do begin tWus(n.Data).pid := apid; if n.HasChildren then Traverse(n.Items[i], tWus(n.Data).id); end; end; var i: integer; begin for I := 0 to tl.Count - 1 do traverse(tl.Items[i], -1); end; Ich hänge noch mein Testprojekt hinten dran. Euer GreenHorn |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:26 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