type
PNodeInfo=^TNodeInfo; //指针类型,存储对应节点信息
TNodeInfo=Packed Record
NodeId:String; //节点
NodeName:string; //节点名称
ParentId:string; //父节点
end;
procedure TForm1.CreateTree(Id: integer; ParentNode: TTreeNode ;DTree:TTreeView);
var
QryTmp:TadoQuery;
MyNode:TTreeNode;
TmpNodeInfo:PNodeInfo;
begin
QryTmp:=TadoQuery.Create(self);
QryTmp.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=VOD.MDB;Persist Security Info=False';
QryTmp.SQL.Add('Select id,code,name From directory');
qrytmp.sql.add(' where code='+IntToStr(Id)+' Order by Id');
QryTmp.Open;
MyNode:=nil;
while not QryTmp.Eof do
begin
New(TmpNodeInfo);
TmpNodeInfo.Nodeid:=Trim(QryTmp.Fields[0].AsString);
TmpNodeInfo.Parentid:=Trim(QryTmp.Fields[1].AsString);
TmpNodeInfo.Nodename:=Trim(QryTmp.Fields[2].AsString);
MyNode:=DTree.Items.AddChildObject(ParentNode,QryTmp.Fields[2].AsString,TmpNodeInfo); //把所有节点当作子节点遍历
CreateTree(QryTmp.Fields[0].AsInteger,MyNode,dtree); //递归调用
QryTmp.Next;
end;
QryTmp.Free;