treeview中动态加载树!如何写!最好有例子!

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2489/2489919.xml?temp=.2451898
      

  2.   

    http://expert.csdn.net/Expert/topic/2281/2281015.xml?temp=.5998346
      

  3.   

    type
      PMyRecord = ^MyRecord;
      MyRecord = record
               ID : integer;
               name:string;
               ParentID : integer;
               end;//end of recordprocedure  TForm1.newtreeview(Node:TTreeNode;ParentID:integer);
    var
      tmpNode : TTreeNode;
      ADOquery1 : TADOQuery;
      p : PMyRecord;
    begin
      ADOQuery1 := TADOQuery.Create(self);
      ADOQuery1.Connection := ADOConnection1;
      ADOQuery1.close;
      ADOQuery1.SQL.clear;
      ADOQuery1.SQL.Text := 'select * from 部门表 where 上级部门ID='+inttostr(ParentID);
      ADOQuery1.open;
      if ADOQuery1.recordcount > 0  then
      begin
        ADOQuery1.First;
        while not ADOQuery1.Eof do
        begin
          new(p);
          p.ID := ADOQuery1.FieldByName('ID').AsInteger;
          p.name := ADOQuery1.FieldByName('部门名称').AsString;
          p.ParentID := ADOQuery1.FieldByName('上级部门ID').AsInteger;
          tmpNode := TreeView1.Items.AddChildObject(Node,p.name,p);
          Newtreeview(tmpNode,ADOQuery1.FieldByName('ID').AsInteger);
          ADOQuery1.next;
          //dispose(p);//一定要去掉这条语句,不然的话,Treeview中的Data也被dispose掉了。
        end;
      end;
      ADOQuery1.Free;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      if Treeview1.Items<>nil then
        Treeview1.Items.Clear;
      newtreeview(nil,ADOTable1.FieldByName('上级部门ID').AsInteger);
    end;