- //采用递归方法,D7编译调试通过。
- //数据采用ADOQuery读取,并将数据暂存在一个动态数组中,树形列表控件为TreeView。
-
- procedureTForm1.LoadTreeInfo;
- type
- TInfo=record
- ID,//代码
- Name,//名称
- SuperID//上级代码
- :string;
- //附加字段随需添加
- end;
- var
- sql:string;
- i,nCount:Integer;
- arrInfo:arrayofTInfo;
- NewNode:TTreeNode;
-
- //加载一个节点
- procedureInitOneNode(ANode:TTreeNode;AId:string);
- var
- k:Integer;
- begin
- fork:=0tolength(arrInfo)-1do
- ifarrInfo[k].SuperID=AIdthen
- begin
- NewNode:=TreeView1.Items.AddChild(ANode,arrInfo[k].Name);
- InitOneNode(NewNode,arrInfo[k].ID);
- end;
- end;
-
- begin
- TreeView1.Items.BeginUpdate;
- TreeView1.Items.Clear;
-
- sql:='selectID,Name,SuperIDfromDictionaryTableorderbyID';
- ADOQuery1.Close;
- ADOQuery1.SQL.Text:=sql;
- ADOQuery1.Open;
- nCount:=ADOQuery1.RecordCount;
- ifnCount>0then
- begin
- SetLength(arrInfo,nCount);
- fori:=0tonCount-1do
- witharrInfo[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;
-
- ifnCount>0then
- begin
- InitOneNode(nil,'');//假设顶级代码为空白
- TreeView1.FullExpand;
- TreeView1.Items.EndUpdate;
- end;
- end;
-
递归加载树形列表的过程(函数)
最新推荐文章于 2020-06-09 15:02:37 发布
本文介绍了一种使用Delphi编程语言通过递归方法加载树形列表的方法。具体实现包括从数据库读取数据到动态数组中,然后使用这些数据填充TreeView控件。此方法适用于需要展示层级结构的应用程序。
1万+

被折叠的 条评论
为什么被折叠?



