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 Pointerspeichern bei Treeview (https://www.delphipraxis.net/61047-pointerspeichern-bei-treeview.html)

Prototypjack 16. Jan 2006 14:16


Pointerspeichern bei Treeview
 
Hallo,
Ich habe momentan ein Problem:
Ich will ein Treeview speichern. Das geht gut, jedoch wird nur die Struktur gespeichert.
Da aber an jedem knoten ein Pointer hängt, ergibt sich ein Problem.

Die Pointer enthalten nur Textdaten die ich auch selbst speichern könnte, jedoch muss ich dann die Struktur auch selbst speichern.

Mittlerweile bin ich soweit, dass ich die Struktur in einer XML Datei speichern will. Teilweise funktioniert es auch nur leider funktioniert es nur 1-Dimensional, das heisst, wenn ein Knoten mehrere Unterknoten hat, werden diese Übergangen.

Meine Frage ist: Wie kann ich am besten die Struktur eines Treeviews in einer XML Datei speichern?

Ich stehe irgendwie gerade ziemlich auf dem Schlauch

Gruß,
Max

marabu 16. Jan 2006 21:04

Re: Pointerspeichern bei Treeview
 
Hallo Max,

du solltest deine Baumknoten rekursiv abspeichern. Im Beispiel verwende ich das XMLDocument aus der Palette:

Delphi-Quellcode:
procedure TDemoForm.GatherNodes(doc: IXMLDocument; eParent: IXMLNode; tn: TTreeNodes; nParent: TTreeNode);
var
  i: Integer;
  eChild: IXMLNode;
  nChild: TTreeNode;
begin
  if Assigned(nParent)
    then nChild := nParent.getFirstChild
    else nChild := tn.GetFirstNode;
  while Assigned(nChild) do
  begin
    eChild := eParent.AddChild(nChild.Text);
    GatherNodes(xmlDocument, eChild, tn, nChild);
    nChild := nChild.getNextSibling;
  end;
end;

procedure TDemoForm.SaveButtonClick(Sender: TObject);
begin
  with xmlDocument do
  begin
    Active := true;
    DocumentElement := CreateElement('root', '');
    GatherNodes(xmlDocument, DocumentElement, TreeView.Items, nil);
    ShowMessage(xml.Text);
  end;
end;
Grüße vom marabu

Prototypjack 17. Jan 2006 13:24

Re: Pointerspeichern bei Treeview
 
Ahhh, genau!
Sowas hatte ich auch geplant, nur irgendwie stand ich voll auf dem Schlauch ;)

Riesen Dankeschön!
Max


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