procedure TForm9.FillTreeViews(TreeView: TTreeView);
  procedure CreateSubTree(FNodeName: string; Node: TTreeNode = nil);
  var
    mLocalName: string;
    TreeNode: TTreeNode;
    Ads_Tmp: TADODataSet;
  begin
    //ADS_Tmp := TADODataSet.Create(Self);
    ADS_Tmp := TADODataSet.Create(nil);
    ADS_Tmp.Connection:=ADOConnection1;    with ADS_Tmp do
    try
      Close;
      CommandText := 'Select * from Menu Where MenuID =' + FNodeName;
      Open;
      First;
      while not Eof do
      begin
        mLocalName := FieldbyName('ID').Asstring;
        TreeNode := TreeView.Items.AddChild(Node,FieldByName('Menuname').AsString);
        CreateSubTree(mLocalName, TreeNode); // 此处循环递归
        Next;
      end;
    finally
      ADS_Tmp.Free;
    end;
  end;
begin
  TreeView.Items.BeginUpdate;
  TreeView.Items.Clear;
  with TreeView.Items.Add(nil,'项目' ) do
  begin
    ImageIndex := 0;
    SelectedIndex := 0;
  end;
  CreateSubTree('0', TreeView.Items[0]);
  TreeView.Items.EndUpdate;
  TreeView.Items[0].Selected := True;
end;
这是代码,但是我想在最上层也是使用数据库里面的应该怎么做?这里是自己设置的。  with TreeView.Items.Add(nil,'项目' ) do

解决方案 »

  1.   

    procedure   Tfrmmain.AddClass(AId:integer;FatherNode:TTreeNode); 
    var 
            QryTmp:TADOQuery; 
            myNode:TTreeNode; 
            myLabel:TLabel; 
    begin 
            QryTmp   :=   TADOQuery.Create(self); 
            QryTmp.Connection   :=   ADOConnection1;//.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data   Source= '+extractfilepath(application.ExeName)+ 'test.mdb;Persist   Security   Info=False '; 
            QryTmp.SQL.Add( 'select   *   from   tb1 '); 
            QryTmp.SQL.Add( 'where   FatherId= '+inttostr(AId)); 
            QryTmp.Open; 
            while   not   QryTmp.Eof   do 
            begin 
                    myNode:=Treeview1.Items.AddChild(FatherNode,QryTmp.fieldbyname( 'CName ').AsString);                 //创建标签,caption存放各分支的AutoId表识 
                    myLabel:=TLabel.Create(self); 
                    myLabel.Visible:=false; 
                    myLabel.Caption:=QryTmp.fieldbyname( 'AutoId ').AsString; 
                    myNode.Data:=myLabel; 
                    myNode.ImageIndex   :=   QryTmp.FieldByName( 'IconIndex ').AsInteger;                 AddClass(QryTmp.fieldbyname( 'AutoId ').AsInteger,myNode);   //递归调用过程 
                    QryTmp.Next; 
            end; 
            QryTmp.Free; 
    end;
      

  2.   

    你首先需要查出数据最顶层节点,然后用TreeView.Items.Add(nil,'’)添加,之后再逐层增加子节点。