Einzelnen Beitrag anzeigen

Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#1

TreeView nach Namen und Vorkommen ordnen

  Alt 18. Mai 2017, 14:25
Hallo DP!

Ich habe auf destructor.de den XML parser benutzt um eine kleine xml Datei (siehe Anhang) in einem TreeView anzuzeigen:
http://jaimy.net/tmp/tree.PNG

Meine Absicht ist es, die Knoten eines Levels zu zählen und diese dann in einen "Sammelknoten" zu verschieben. Beim Aufklappen des Sammelknotens werden die Kind-Knoten nummeriert. So sieht das ganze gelöst aus:
http://jaimy.net/tmp/sho.PNG

Das wäre ein deutliches Übersichts-Plus im Gegensatz zu endlos vielen Knoten, die sich einfach nur wiederholen. Lösen wollte ich das mit einer Stringliste, welche sich alle Knoten mit entsprechende Level merkt. Am Ende wird die Liste dann sortiert und das Treeview neu geschrieben. Allerdings scheint mir das ein recht komplizierter Lösungsansatz zu sein.

Delphi-Quellcode:
procedure TFrmMain.Button1Click(Sender: TObject);
var
  node: TTreeNode;
  merker_text:String;
  merker_level:integer;
  sl:TStringList;
begin
  node := TreeView.Items[0];
 TRY

  while Assigned( node ) do
  begin
   //Name und Level merken
    sl := TStringList.Create;
    merker_text := node.Text;
    merker_level := node.Level;
    //Stringlist schreiben
    sl.Add(merker_text+','+IntToStr(merker_level));
    node := node.getNextSibling;
  end;

  showmessage(sl.Text);

  FINALLY
     sl.Free;
  END;
End;
Gibt es keine einfacheren Zähl-Funktionen bei einem TreeView? So etwas wie count childnodes einer Ausgangsnode?

Gruß,

Ajin
Angehängte Dateien
Dateityp: xml books.xml (4,7 KB, 1x aufgerufen)
Jaimy
DAoC 2.0 -> Camelot Unchained !
  Mit Zitat antworten Zitat