其实你根本没必要把自己的数据结构做成这样,给你介绍一种更为合理的方法,
数据库格式为:(表名:Type)
ID ParentID Name
1 0 根目录
2 1 子项1
3 1 子项2
4 2 测试1
5 3 测试2
.....
树形显示为:
所有目录
根目录
子项1
测试1
子项2
测试2
....
程序实现如下:
procedure FillFolderTreeView(TreeView: TTreeView);
procedure CreateSubTree(FNodeName: string; Node: TTreeNode = nil);
var
mLocalName: string;
TreeNode: TTreeNode;
Ads_Tmp: TADODataSet;
begin
ADS_Tmp := TADODataSet.Create(Self);
ADS_Tmp.Connection := ADOConn;
with ADS_Tmp do
begin
Close;
CommandText := 'Select * from Type Where ParentID =' + FNodeName;
Open;
First;
while not Eof do
begin
mLocalName := FieldbyName('ID').Asstring;
TreeNode := TreeView.Items.AddChild(Node, FieldByName('Name').AsString);
CreateSubTree(mLocalName, TreeNode); //递归调用
Next;
end;
end;
end;
begin
TreeView.Items.BeginUpdate;
TreeView.Items.Clear;
with TreeView.Items.Add(nil, '所有目录') do
begin
ImageIndex := 1;
SelectedIndex := 1;
end;
CreateSubTree('0', TreeView.Items[0]);
TreeView.Items.EndUpdate;
TreeView.Items[1].Selected := True;
end;
我一直在用的,没问题,
哥们加分吧