• TreeView学习总结


    1.选取增加的节点

    var
        Nodeo:   TTreeNode;
    begin
        Nodeo   :=   TreeView1.Selected;
        TreeView1.Items.AddChild(Nodeo,   '子节点 ');
        ADOQuery1.Edit;
        DBGrid.Fields[1].AsString   :=   '子节点 ';
        ADOQuery1.Post;
        ...
    end;

    2.

    给你整个递归的 (一)

    procedure TFrmMain.Button1Click(Sender: TObject);
    var
      GNode:TTreeNode;
    begin
     
    with dm.adoQuery do
     
    begin
        close;
        sql.clear;
        Sql.Add(
    'Select * from _Test where DepP='''+'0'+'''');
        open;
       
    while not eof do
       
    begin
          Gnode :
    = treeview1.Items.Add(nil,Fieldbyname('DepN').AsString);

    CreateTree(Fieldbyname('DepId').AsString,Gnode);
          next;
       
    end;
     
    end;
    end;


    //parentcode:父节点编码
    procedure TFrmMain.CreateTree(parentcode:string;cntNode:TTreeNode);
    var
      Node:TTreeNode;
      qry:TADOQuery;
    begin
      qry :
    = TADOQuery.Create(nil);
      qry.Connection :
    = dm.AdoCon;
     
    with qry do
     
    begin
        close;
        sql.clear;
        Sql.Add(
    'Select * from _Test where DepP='''+parentcode+'''');
        open;
       
    while not eof do
       
    begin
          Node:
    =treeview1.Items.AddChild(cntNode,Fieldbyname('DepN').AsString);
          CreateTree(Fieldbyname(
    'DepId').AsString, Node);
          next;
       
    end;
     
    end;
      qry.Free;
    end;

    递归(二)

    ///////////////////////////////////////////////////////////
    //
    //     增加Treeview.
    //
    ///////////////////////////////////////////////////////////
    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;

  • 相关阅读:
    3
    正确的消费理念和方式
    2
    1
    善待精力,保持体力,保持热情
    为什么不从今天开始呢?
    c++中的新成员
    函数重载分析下
    函数重载分析上
    函数参数的扩展
  • 原文地址:https://www.cnblogs.com/mingdep/p/2217735.html
Copyright © 2020-2023  润新知