递归加载树形列表的过程(函数)
来源:互联网 发布:结婚摄像制作软件 编辑:程序博客网 时间:2024/05/22 16:11
//采用递归方法,D7编译调试通过。
//数据采用ADOQuery读取,并将数据暂存在一个动态数组中,树形列表控件为TreeView。
procedure TForm1.LoadTreeInfo;
type
TInfo = record
ID, //代码
Name, //名称
SuperID //上级代码
: string;
//附加字段随需添加
end;
var
sql: string;
i, nCount: Integer;
arrInfo: array of TInfo;
NewNode: TTreeNode;
//加载一个节点
procedure InitOneNode(ANode: TTreeNode; AId: string);
var
k: Integer;
begin
for k := 0 to length(arrInfo) - 1 do
if arrInfo[k].SuperID = AId then
begin
NewNode := TreeView1.Items.AddChild(ANode, arrInfo[k].Name);
InitOneNode(NewNode, arrInfo[k].ID);
end;
end;
begin
TreeView1.Items.BeginUpdate;
TreeView1.Items.Clear;
sql := 'select ID, Name, SuperID from DictionaryTable order by ID';
ADOQuery1.Close;
ADOQuery1.SQL.Text := sql;
ADOQuery1.Open;
nCount := ADOQuery1.RecordCount;
if nCount > 0 then
begin
SetLength(arrInfo, nCount);
for i := 0 to nCount - 1 do
with arrInfo[i] do
begin
ID := Trim(ADOQuery1.FieldByName('ID').AsString);
Name := Trim(ADOQuery1.FieldByName('Name').AsString);
SuperID := Trim(ADOQuery1.FieldByName('SuperID').AsString); //无没有此字段,可根据上下级编码规则赋值
ADOQuery1.Next;
end;
end;
ADOQuery1.Close;
if nCount > 0 then
begin
InitOneNode(nil, ''); //假设顶级代码为空白
TreeView1.FullExpand;
TreeView1.Items.EndUpdate;
end;
end;
- 递归加载树形列表的过程(函数)
- 递归加载树形列表的过程(函数)
- 递归加载树形列表的过程(函数)
- 建立treeview树形列表的递归代码
- 【ITOO】树形列表的实现与递归算法的应用
- jqgrid 树形菜单递归加载
- java+mysql递归拼接树形JSON列表
- 两个不用递归的php树形数组构造函数(转)
- 递归函数实现无限级树形结构的一种方法
- 两个不用递归的树形数组构造函数
- 发布两个不用递归的树形数组构造函数【解释】
- 发布两个不用递归的树形数组构造函数
- SQL中利用递归函数取树形结构的数据
- easyui treegrid动态加载树形列表
- MySql的sql语句中添加存储过程或者存储函数来实现Oracle中的start with ……connect by prior……递归(树形结构数据)查询
- 深入理解递归函数的调用过程
- 递归函数的调用过程和方法
- 深入理解递归函数的调用过程
- 僵尸网络的检测
- 在VS2008里面配置DirectX开发环境
- 51c语言中null指针的问题
- oracle 导入导出命令
- dw(dreamweaver)正则表达式函数列表
- 递归加载树形列表的过程(函数)
- AJAX
- 如何在linux下创建oracle数据库,求高手解决,我要具体的详细步骤,谢谢!
- 输掉了篮球比赛
- 优秀程序员45种习惯
- 使用max生成高度灰度图-heightmap
- Delphi中根据分类数据生成树形结构的最优方法
- ResourceBundle Editor插件安装
- jquery相关易忘写法