Einzelnen Beitrag anzeigen

Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Suche geeignete XML-Struktur für TreeView

  Alt 23. Aug 2008, 15:01
Hallo Yheeky,

ich habe mal ein Beispiel für dich erstellt.
Du braucht ein Formular mit einer TTreeView-Komponente drauf und halt
die XML-Lib deiner Wahl. Ich benutze NativeXml (von simdesign.nl),
aber vom Prinzip her funktioniert das mit jeder anderen auch.



Delphi-Quellcode:


procedure TfrmMain.Xml2Tree(const aFilename: string; aTreeView: TTreeView);

  procedure InterateTree(aXmlNode: TXmlNode; aParent: TTreeNode);
  var
    i: integer;
    NewTreeNode: TTreeNode;
  begin
    for i:= 0 to aXmlNode.NodeCount-1 do
    begin
      NewTreeNode:= aTreeView.Items.AddChild(aParent, aXmlNode.Nodes[i].AttributeByName['Name']);
     { hier beginnt die Rekursion, sie übergibt den gerade erstellten Knoten
      zusammen mit dem aktuellen Knoten der XML-Datei und führt die Prozedur
       nochmals aus. }

      InterateTree(aXmlNode.Nodes[i], NewTreeNode);
    end;
  end;

var
  fXmlDoc: TNativeXml;
begin
  aTreeView.Items.Clear;
  aTreeView.Items.BeginUpdate;
  fXmlDoc:= TNativeXml.Create;
  try
    fXmlDoc.LoadFromFile(aFilename);
    { Startpunkt der eigentlichen Einlese-Prozedur }
    InterateTree(fXmlDoc.Root, nil);
  finally
    fXmlDoc.Free;
  end;
  aTreeView.Items.EndUpdate
end;


procedure TfrmMain.FormCreate(Sender: TObject);
begin
  fPath:= ExtractFilePath(Application.ExeName);
end;

procedure TfrmMain.btnLoadFromXmlClick(Sender: TObject);
begin
  If FileExists(fPath + FileDemoTree) then
    Xml2Tree(fPath + FileDemoTree, TreeView1);
end;
Hoffe, du kommst damit weiter.


Gruß

Jürgen
Jürgen Höfs
  Mit Zitat antworten Zitat