procedure Listzd_Item(code,sortcode:string;CurNode:TTreeNode);
var
SNode1:TTreeNode;
begin
try
with cdszd_item1 do
begin
Close;
CommandText:='select * from rs_zd_item where code<>parentid and parentid=:A and sortcode=:B order by code';
Params.ParamByName('A').AsString:=Trim(code);
Params.ParamByName('B').AsString:=Trim(sortcode);
Open;
if not IsEmpty then
begin
while not Eof do
begin
New(SZdNode);
SZdNode.code:=Trim(FieldByName('code').AsString);
SZdNode.name:=Trim(FieldByName('name').AsString);
SNode1:=tvzd.Items.AddChildObject(CurNode,FieldByName('name').AsString,SZdNode);
Listzd_Item(FieldByName('code').AsString,FieldByName('sortcode').AsString,SNode1);
Next;
end;
end
else
Exit;
end;
finally
//cdszd_item1.Close;
end;
end;大家帮我看一下,这个递归树有什么问题??怎么树显示不正确??
var
SNode1:TTreeNode;
begin
try
with cdszd_item1 do
begin
Close;
CommandText:='select * from rs_zd_item where code<>parentid and parentid=:A and sortcode=:B order by code';
Params.ParamByName('A').AsString:=Trim(code);
Params.ParamByName('B').AsString:=Trim(sortcode);
Open;
if not IsEmpty then
begin
while not Eof do
begin
New(SZdNode);
SZdNode.code:=Trim(FieldByName('code').AsString);
SZdNode.name:=Trim(FieldByName('name').AsString);
SNode1:=tvzd.Items.AddChildObject(CurNode,FieldByName('name').AsString,SZdNode);
Listzd_Item(FieldByName('code').AsString,FieldByName('sortcode').AsString,SNode1);
Next;
end;
end
else
Exit;
end;
finally
//cdszd_item1.Close;
end;
end;大家帮我看一下,这个递归树有什么问题??怎么树显示不正确??
procedure Listzd_Item(code,sortcode:string;CurNode:TTreeNode);
var
SNode1:TTreeNode;
cdszd_item1:Tadodataset;//动态创建数据集
begin
try
cdszd_item1:=Tadoquery.create(nil);
with cdszd_item1 do
begin
Close;
CommandText:='select * from rs_zd_item where code<>parentid and parentid=:A and sortcode=:B order by code';
Params.ParamByName('A').AsString:=Trim(code);
Params.ParamByName('B').AsString:=Trim(sortcode);
Open;
if not IsEmpty then
begin
while not Eof do
begin
New(SZdNode);
SZdNode.code:=Trim(FieldByName('code').AsString);
SZdNode.name:=Trim(FieldByName('name').AsString);
SNode1:=tvzd.Items.AddChildObject(CurNode,FieldByName('name').AsString,SZdNode);
Listzd_Item(FieldByName('code').AsString,FieldByName('sortcode').AsString,SNode1);
Next;
end;
end
else
Exit;
end;
finally
cdszd_item1.free; //释放数据集
//cdszd_item1.Close;
end;
end;里面代码没错的话应该可以了