Hallo Luke,
erstmal danke für den Tip. Leider komme ich nicht weiter. Rekursion ist mir jetzt nicht ganz fremd :-)
Ich zeige kurz, wie weit ich bin:
Delphi-Quellcode:
procedure tdlnode.exportdltreetofile;
var
i:integer;
DL:textfile;
zeile,zeile2,dlfile,myenv:
string;
Result:Boolean;
startp:ttreenode;
dldata:dlrecord;
begin
dlfile:=toemnode(selectednode.data).daten.CATTEMP + '
\'+toemnode(selectednode.Data).daten.
name+'
.dls';
startp := form1.dlview.TopItem.getFirstChild;
while startp <>
nil do
begin
showmessage(startp.Text);
grab(startp);
startp:=startp.getNextSibling;
end;
end;
procedure tdlnode.Grab(tns: TTreeNode);
var node: TTreeNode;
begin
if tns <>
nil then
begin
node := tns.getFirstChild;
while Assigned(node)
do
begin
showmessage(node.Text);
Grab(s.GetNextChild(node));
//hier wird rekursiert!
node:= tns.GetNextSibling;
end;
end;
end;
exportdltreetofile ist ok, ohne den aufruf von Grab(xy). Das mache ich extra so, da ich in einem zweiten Tree eine gleiche node gleichen Namens habe, die Informationen enthält, die ich für die Unterknoten von level 1 brauche (den Dateinamen).
Ich verstehe die funktion GETNEXTCHILD(parameter) nicht ganz. Ich würde sie als "nächste Node:= tns.getnextchild(tns)" verstehen. Aber das kommt mir schon etwas seltsam vor.
Leider habe ich (wie wohl in vielen "Nicht Entwicklerfirmen" üblich) keinerlei Doku, aber ne riesen Erwartungshaltung anderer. Schlage mich mit 2005 Personal rum.