谢谢

解决方案 »

  1.   

    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;
      
    end;