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