我有做过这样的。表结构三个字段
结点Id 父结点Id 结构的名称
Id ParentId Name
其中Id和ParentId都是整型字段,Id不要设为自动增长
{ 装入目录 }
procedure TMainForm.LoadFolder;
function GetParentNode(Id: integer): TTreeNode;
var
i, iCount:integer;
begin
result := nil;
with TreeView do
begin
iCount := Items.Count - 1;
for i := iCount downto 0 do
if integer(Items[i].Data) = Id then
begin
result := Items[i];
break;
end;
end;
end;var
i, iCount: integer;
iFolderId, iParentId: integer;
sFolderName: string;
begin
with Table1, TreeView do
begin
iCount := RecordCount;
Items.BeginUpdate;
Items.Clear;
for i := 1 to iCount do
begin
RecNo := i;
iFolderId := FieldByName('Id').AsInteger;
iParentId := FieldByName('ParentId').AsInteger;
sFolderName := FieldByName('Name').AsString;
Items.AddChild(GetParentNode(iParentId), sFolderName);
Items[i - 1].Data := Pointer(iFolderId);
end;
Items.EndUpdate;
end;
end; { 重新保存TreeView中的索引 }
procedure TMainForm.ReSaveFolderIndex;
var
i, iCount: integer;
begin
with Table1, TreeView do
begin
iCount := RecordCount;
for i := 0 to iCount - 1 do
begin
RecNo := i + 1;
Edit;
FieldByName('Id').AsInteger := integer(Items[i].Data);
FieldByName('Name').AsString := Items[i].Text;
if Items[i].Parent = nil then
FieldByName('ParentId').AsInteger := 0
else
FieldByName('ParentId').AsInteger := integer(Items[i].Parent.Data);
Post;
end;
end;
end;//当生成新结点时,该结点的id为最大值加1
结点Id 父结点Id 结构的名称
Id ParentId Name
其中Id和ParentId都是整型字段,Id不要设为自动增长
{ 装入目录 }
procedure TMainForm.LoadFolder;
function GetParentNode(Id: integer): TTreeNode;
var
i, iCount:integer;
begin
result := nil;
with TreeView do
begin
iCount := Items.Count - 1;
for i := iCount downto 0 do
if integer(Items[i].Data) = Id then
begin
result := Items[i];
break;
end;
end;
end;var
i, iCount: integer;
iFolderId, iParentId: integer;
sFolderName: string;
begin
with Table1, TreeView do
begin
iCount := RecordCount;
Items.BeginUpdate;
Items.Clear;
for i := 1 to iCount do
begin
RecNo := i;
iFolderId := FieldByName('Id').AsInteger;
iParentId := FieldByName('ParentId').AsInteger;
sFolderName := FieldByName('Name').AsString;
Items.AddChild(GetParentNode(iParentId), sFolderName);
Items[i - 1].Data := Pointer(iFolderId);
end;
Items.EndUpdate;
end;
end; { 重新保存TreeView中的索引 }
procedure TMainForm.ReSaveFolderIndex;
var
i, iCount: integer;
begin
with Table1, TreeView do
begin
iCount := RecordCount;
for i := 0 to iCount - 1 do
begin
RecNo := i + 1;
Edit;
FieldByName('Id').AsInteger := integer(Items[i].Data);
FieldByName('Name').AsString := Items[i].Text;
if Items[i].Parent = nil then
FieldByName('ParentId').AsInteger := 0
else
FieldByName('ParentId').AsInteger := integer(Items[i].Parent.Data);
Post;
end;
end;
end;//当生成新结点时,该结点的id为最大值加1
留下EMAIL,好吗?