Zitat von
omata:
Hier mal ein Beispiel...
Delphi-Quellcode:
procedure fillTreeview(Tree:TTreeview; SQLConnection:TSQLConnection);
procedure fill(Depth:integer; ANode:TTreeNode; SDS:TSimpleDataSet);
var abbruch:boolean;
Node:TTreeNode;
begin
abbruch:=false;
while not SDS.Eof and not abbruch do begin
Node:=Tree.Items.AddChild(
ANode,
SDS.FieldByName('nodename').AsString
);
SDS.Next;
if SDS.FieldByName('depth').AsInteger > Depth then
fill(Depth+1, Node, SDS);
if SDS.FieldByName('depth').AsInteger < Depth then
abbruch:=true;
end;
end;
var SDS:TSimpleDataSet;
begin
SDS:=TSimpleDataSet.Create(nil);
try
Tree.Items.BeginUpdate;
Tree.Items.Clear;
SDS.Connection:=SQLConnection;
SDS.DataSet.CommandType:=ctStoredProc;
SDS.DataSet.CommandText:=
'GetSortedSubTree';
SDS.DataSet.ParamByName('nodeid').AsInteger:=1;
SDS.Open;
fill(SDS.FieldByName('depth').AsInteger, nil, SDS);
SDS.Close;
finally
SDS.free;
Tree.Items.EndUpdate;
end;
end;
Aufruf...
fillTreeview(TreeView, SQLConnection);
Gruss
Thorsten
Vielen Dank Thorsten. Ich sehe zwar auf Anhieb keinen wirklichen Unterschied zum Code den du bei der SP verwendet hast, die den gesamten Tree liefert, aber vielleicht komme ich morgen darauf.
Ach ja etwas musste ich andes machen und zwar konnte ich nicht die DBExpress Komponenten verwenden..das SimpleDataSet meldet einen Fehler wegen des Cursors.
Habe stattdessen die
Ado Komponenten benutzt und diese direkt im
GUI erstellt und nicht im Code. Denke aber nicht dass das etwas ausmacht.