要求基于数据库,只要能把初始化详细讲明白就行,
顺便也给说一下TtreeNode的属性和使用,谢谢各位大虾

解决方案 »

  1.   

    var
      NodeV : TTreeNode;
    begin
      NodeV := TreeView.AddC..(Nil,'aaa');
      NodeV.AddC.....
    end;
      

  2.   

    procedure TfrmDemoTree.BuildTree(mP_TreeNode: TTreeNode; mPid: integer);
    //用递归一次性生成所有树节点
    var
      idTemp:integer;
      strSQL:string;
      qryTemp:TQuery;
      TrNodeTemp:TTreeNode;
    begin
      TrNodeTemp := mP_TreeNode;
      qryTemp := TQuery.Create(self);
      try
        strSQL := ' select id,name '
                + ' from Tcity '
                + ' where Parentid='+inttostr(mpid);
        ExecQry(strSQL,qryTemp,true);
        while not qryTemp.Eof do
        begin
          idTemp := qryTemp.fieldbyname('id').AsInteger;
          tvDemoTree.Selected := tvDemoTree.Items.AddChild(TrNodeTemp,qryTemp.fieldbyname('name').AsString);
          BuildTree(tvDemoTree.Selected,idTemp);
          qryTemp.Next;
        end;
      finally
        qryTemp.Free;         //释放资源
      end;
    end;
      

  3.   

    //初始化
    treeview1.addobject();
    //ttreenode对象添加节点
    treeview1.items[i].addchild;
    一般在构造树的时候需要知道各个节点的父子关系,
    先给ttreeview对象添加根节点;
    根节点完之后为每个节点ttreenode对象添加子节点
    添加子节点可用递归画到最低一级;
    procedure TMain.CreateTree(QuerySource:TADOQuery;NodeParent:TTreeNode;treeview1:ttreeview);
    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;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 ';
          open;
          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;
      

  4.   

    to:DainelLee(Iinexperience) 有的函数太高深我不懂功能