递归加载树形列表的过程(函数)

本文介绍了一种使用Delphi编程语言通过递归方法加载树形列表的方法。具体实现包括从数据库读取数据到动态数组中,然后使用这些数据填充TreeView控件。此方法适用于需要展示层级结构的应用程序。
  1. //采用递归方法,D7编译调试通过。
  2. //数据采用ADOQuery读取,并将数据暂存在一个动态数组中,树形列表控件为TreeView。

  3. procedureTForm1.LoadTreeInfo;
  4. type
  5. TInfo=record
  6. ID,//代码
  7. Name,//名称
  8. SuperID//上级代码
  9. :string;
  10. //附加字段随需添加
  11. end;
  12. var
  13. sql:string;
  14. i,nCount:Integer;
  15. arrInfo:arrayofTInfo;
  16. NewNode:TTreeNode;

  17. //加载一个节点
  18. procedureInitOneNode(ANode:TTreeNode;AId:string);
  19. var
  20. k:Integer;
  21. begin
  22. fork:=0tolength(arrInfo)-1do
  23. ifarrInfo[k].SuperID=AIdthen
  24. begin
  25. NewNode:=TreeView1.Items.AddChild(ANode,arrInfo[k].Name);
  26. InitOneNode(NewNode,arrInfo[k].ID);
  27. end;
  28. end;

  29. begin
  30. TreeView1.Items.BeginUpdate;
  31. TreeView1.Items.Clear;

  32. sql:='selectID,Name,SuperIDfromDictionaryTableorderbyID';
  33. ADOQuery1.Close;
  34. ADOQuery1.SQL.Text:=sql;
  35. ADOQuery1.Open;
  36. nCount:=ADOQuery1.RecordCount;
  37. ifnCount>0then
  38. begin
  39. SetLength(arrInfo,nCount);
  40. fori:=0tonCount-1do
  41. witharrInfo[i]do
  42. begin
  43. ID:=Trim(ADOQuery1.FieldByName('ID').AsString);
  44. Name:=Trim(ADOQuery1.FieldByName('Name').AsString);
  45. SuperID:=Trim(ADOQuery1.FieldByName('SuperID').AsString);//无没有此字段,可根据上下级编码规则赋值
  46. ADOQuery1.Next;
  47. end;
  48. end;
  49. ADOQuery1.Close;

  50. ifnCount>0then
  51. begin
  52. InitOneNode(nil,'');//假设顶级代码为空白
  53. TreeView1.FullExpand;
  54. TreeView1.Items.EndUpdate;
  55. end;
  56. end;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值