zoukankan      html  css  js  c++  java
  • Delphi 中递归生成TreeView节点的方法

    在数据库中建一张表,包含:NodeName,NodeId,ParentId 3个字段,具体什么含义,一看就知了。

    过程如下:

    procedure TFRM_channel.formtreenode(parentid:string;TreeView1: TTreeView;parentnode:TTreeNode;ADOQuery1:TADOQuery);
    var
        i:integer;
        treenode:TTreeNode;
    begin
        i:=0;
        ADOQuery1.First;
        while not ADOQuery1.Eof do
          begin
             if ADOQuery1.FieldByName('ParentId').AsString=parentid then
               begin
                  treenode:=TreeView1.Items.AddChild(parentnode,ADOQuery1.fieldbyname('NodeName').AsString);
                  formtreenode(ADOQuery1.fieldbyname('NodeId').AsString ,TreeView1,treenode,ADOQuery1);
               end;
              inc(i);
              ADOQuery1.First;
              ADOQuery1.MoveBy(i);
          end;


    end;

    在调用如下,如在窗体的create事件中:

    procedure TFRM_channel.FormCreate(Sender: TObject);
    var
      TreeNode1:TTreeNode;
      i:integer;
      nodename:string;
      nodeid:string;
      parentid:string;
      cmdstr:string;

    begin
    //初始化树形节点
       ADOQuery1.ConnectionString:=mypublic.datastr;

       cmdstr:='select * from ChanTreeNode order by ParentId ,NodeId asc';
       ADOQuery1.Close;
       ADOQuery1.SQL.Clear;
       ADOQuery1.SQL.Add(cmdstr);
       ADOQuery1.Open;

           TreeNode1:=nil;
         formtreenode('000',TreeView1,TreeNode1,ADOQuery1);
    end;

    每天早上敲醒自己的不是闹钟,是夢想!
  • 相关阅读:
    ssh-keygen的使用方法(无密码访问)
    ubuntu solute two different terminals cmd
    ubuntu 查看系统是32位还是64位
    pyplot 绘图与可视化
    python 正则表达式的处理
    python&pandas 与mysql 连接
    Ubuntu 11.10 H3C iNode 客户端安装
    Vijos1055(极大子矩阵)
    Vijos1055(极大子矩阵)
    luoguP2701 [USACO5.3]巨大的牛棚Big Barn(极大子矩阵)
  • 原文地址:https://www.cnblogs.com/yplong/p/2361316.html
Copyright © 2011-2022 走看看