我得库结构如下
ID,NAME,ParentID,
ID是编号,parentID是父亲得ID;
把name构造成树,怎么一层层构造下去?

解决方案 »

  1.   

    由根节点开始构造,构造过程中第归构造到没个子孙节点
    //构造根
    procedure TMain.RootTree(treeview1:ttreeview);
    var
      NodeTemp : TTreeNode;
      pstr : ^string;
      Query:TADOQuery;
    begin
      Query:=TADOQuery.Create(self);
      query.Connection:=BgConnection;
      try
        Treeview1.Items.BeginUpdate;
        with query do
        begin
          SQL.Text :='select top 1 * from xzdm order by xcode';
          open;
          sort:='xcode';
          if isempty then exit;
          NodeTemp := nil;
          while not eof do
          begin
            new(pstr);
            pstr^ := FieldByName('key').AsString;
            NodeTemp :=treeview1.Items.AddObject(nil,
              trim(FieldByName('xname').AsString)+'('+fieldbyname('xcode').AsString+')', pstr);
            Next;
          end;
        end;
        while NodeTemp <> nil do
        begin
          CreateTree(Query, NodeTemp,treeview1);
          NodeTemp:=NodeTemp.getPrevSibling;
        end;
        treeview1.Items.EndUpdate;
      finally
        Query.Free;
      end;
    end;//构造树
    procedure TMain.CreateTree(QuerySource:TADOQuery;NodeParent:TTreeNode);
    var
      pstr1, pstr2 : ^string;
      NodeTemp : TTreeNode;
    begin
      pstr1 := NodeParent.Data;
      with QuerySource do
      begin
        close;
        sql.Clear;
        sql.Text:='SELECT key,xcode,xname FROM xzdm WHERE parent = ' + '''' + pstr1^ + '''';
        open;
        if isempty then exit;
        NodeTemp := nil;
        while not eof do
        begin
          new(pstr2);
          pstr2^ := FieldByName('key').AsString;
          NodeTemp := TreeView1.Items.AddChildObject(NodeParent,
            trim(FieldByName('xname').AsString)+'('+fieldbyname('xcode').AsString+')', pstr2);
          Next;
        end;
      end;
      while NodeTemp <> nil do
      begin
        CreateTree(QuerySource,NodeTemp,treeview1);
        NodeTemp := Nodetemp.getPrevSibling;
      end;
    end;
      

  2.   

    有一个DBTREE,很好用,是我自己作的,你可放心使用,
    www.myjinsui.com/down