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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值