同上

解决方案 »

  1.   

    代码我还没有看过,你看看有用吗?
    (转)
    在一张表里建一棵树。
    Table->Field->Index_ID,Parent_ID,Field_Name
    Index_ID:是指节点编号。
    Parent_ID:是指父节点编号。
    Field_Name:是指树的节点名。
    ____________________________________________
    |___Index_Id_|___Parent_ID|____Field_Name__|
    |_______1____|____0_______|____浙江省______|
    |_______2____|____1_______|____杭州市______|
    |_______3____|____1_______|____宁波市______|
    |_______4____|____2_______|____西湖区______|
    |_______5____|____0_______|____江苏省______|
    |_______6____|____5_______|____扬州市______|
    |_______7____|____5_______|____苏州市______|
    结果:
       +--浙江省
       |  |__杭州市
         |   |   |__西湖区
         |   |__宁波市
       |
         +----江苏省
             |__扬州市
         |__苏州市 procedure  TForm1.newtreeview(Node:TTreeNode;ParentID:integer);
    var
      tmpNode : TTreeNode;
      ADOquery1 : TADOQuery;
    begin
      ADOQuery1 := TADOQuery.Create(self);
      ADOQuery1.Connection := ADOConnection1;
      ADOQuery1.close;
      ADOQuery1.SQL.clear;
      ADOQuery1.SQL.Text := 'select * from table where Parent_ID ='+inttostr(ParentID);
      ADOQuery1.open;
      if ADOQuery1.recordcount > 0  then
      begin
        ADOQuery1.First;
        while not ADOQuery1.Eof do
        begin
          tmpNode := TreeView1.Items.AddChild(Node,ADOQuery1.FieldByName('Field_Name').AsString);
          Newtreeview(tmpNode,ADOQuery1.FieldByName('Index_ID').AsInteger);
          ADOQuery1.next;
        end;
      end;
      ADOQuery1.Free;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      newtreeview(nil,0);
    end;