递归的方法画树形结构
2005-11-16 08:13
253 查看
在做一个项目的时候,多次用到了递归的方法画树形结构,在网上search了一下,找到的大多都是使用record的方法做的,在csdn的一个帖子上发现了篇不用record方法的递归画树形结构的帖子,整理了一下,和大家共享。
//递归方法画树
procedure Addtree(theNode: TTreeNode; parentID:integer; mytree:TRzCheckTree; conn:TAdoconnection);var
I:integer; qry:TAdoquery; node: TTreeNode; StrSql: String;begin
//根据业务规则组织sql语句
StrSql := 'Select cUnitCode, cShortName, Id, nFatherID From Report_UnitTable Where IisTrans = 1'; StrSql := StrSql + ' And nFatherID = ' + IntToStr(parentID) + ' order by cOrderby, nFatherID ';
Qry:=Tadoquery.create(nil); qry.Connection:=conn; qry.sql.clear; qry.sql.add(StrSql); qry.active:=true;
qry.first; for i:=0 to qry.recordcount-1 do begin
node := mytree.Items.addchild(theNode, Trim(qry.FieldByName('cunitcode').AsString)+Trim(qry.FieldByName('cShortName').AsString)); Addtree(node, qry.fieldbyname('Id').asinteger, mytree, conn); //递归 qry.Next; end;
qry.free;end;
//调用的时候,要先给nFatherID赋值。
//调用递归方法画树
AddTree(nil, FatherID, RzCheckTree1, DM.ADOConnection1);
//递归方法画树
procedure Addtree(theNode: TTreeNode; parentID:integer; mytree:TRzCheckTree; conn:TAdoconnection);var
I:integer; qry:TAdoquery; node: TTreeNode; StrSql: String;begin
//根据业务规则组织sql语句
StrSql := 'Select cUnitCode, cShortName, Id, nFatherID From Report_UnitTable Where IisTrans = 1'; StrSql := StrSql + ' And nFatherID = ' + IntToStr(parentID) + ' order by cOrderby, nFatherID ';
Qry:=Tadoquery.create(nil); qry.Connection:=conn; qry.sql.clear; qry.sql.add(StrSql); qry.active:=true;
qry.first; for i:=0 to qry.recordcount-1 do begin
node := mytree.Items.addchild(theNode, Trim(qry.FieldByName('cunitcode').AsString)+Trim(qry.FieldByName('cShortName').AsString)); Addtree(node, qry.fieldbyname('Id').asinteger, mytree, conn); //递归 qry.Next; end;
qry.free;end;
//调用的时候,要先给nFatherID赋值。
//调用递归方法画树
AddTree(nil, FatherID, RzCheckTree1, DM.ADOConnection1);
相关文章推荐
- JavaScript递归方法 生成 json tree 树形结构数据
- thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
- JavaScript递归方法 生成 json tree 树形结构数据
- php实现数据树形结构 递归方法
- thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
- 数据结构学习笔记(三) 树形结构之二叉树的前、中、后序遍历递归方法
- php【递归循环出树形结构】的一个用户下面的所有人信息之【两种方法的对比】
- 用递归的方法查询树形结构下的所有子节点
- java、js中实现无限层级的树形结构方法(类似递归)
- 在论坛中出现的比较难的sql问题:8(递归问题 树形结构分组)
- 数据结构之用递归和非递归方法计算斐波那契数列的第n项
- Delphi中根据分类数据生成树形结构的最优方法
- 多叉树结合JavaScript树形控件实现无限级树形菜单(一种构建多级有序树形结构JSON(或XML)数据源的方法)
- javascript如何用递归写一个简单的树形结构示例
- 基于递归聚类的报文结构提取方法
- 数据结构——使用非递归方法后序遍历二叉树
- 内存递归生成树形结构
- 数据结构 分别用递归和非递归方法实现二叉树先序,中序,后序遍历
- 数据结构(C#)--递归和动态规划法实现斐波那契数列的方法
- Java递归遍历树形结构