1
我一直坚持这个问题。 我有一个档案文件名列表(这里是文件和文件夹)。 这份名单看起来是这样的:如何在delphi中通过文件名列表构建层次结构,virtualstringtree
folder
folder/index.html
otherfolder
的问题是使层次进入virtualstringtree。 属于的文件和文件夹将是根文件夹中的子节点。 任何想法?
谢谢,丹
我一直坚持这个问题。 我有一个档案文件名列表(这里是文件和文件夹)。 这份名单看起来是这样的:如何在delphi中通过文件名列表构建层次结构,virtualstringtree
folder
folder/index.html
otherfolder
的问题是使层次进入virtualstringtree。 属于的文件和文件夹将是根文件夹中的子节点。 任何想法?
谢谢,丹
这是一个完整的代码。 您读取一行,您将此行分割以获取每个子文件夹。 您可以搜索每个子文件夹(如果它已经在树中),如果没有,则创建新的子文件夹。 用经典树形图测试:)
procedure TForm1.Analyze(ListOfFiles : TStringList);
var
root: TTreeNode;
nI: Integer;
files : TStringList;
nJ: Integer;
begin
for nI := 0 to ListOfFiles.Count - 1 do
begin
files := TStringList.Create;
files.Delimiter := '/';
files.DelimitedText := ListOfFiles[nI];
root := nil;
for nJ := 0 to files.Count - 1 do
root := GetFolder(root, files[nJ])
FreeAndNil(Files);
end;
end;
function TForm1.GetFolder(TreeNode : TTreeNode; SubFolder : String) : TTreeNode;
var
nI: Integer;
begin
result := nil;
if Assigned(TreeNode) then
begin
for nI := 0 to TreeNode.Count - 1 do
begin
if SameText(TreeNode.Item[nI].Text, SubFolder) then
begin
result := TreeNode.item[nI];
Exit;
end;
end;
end
else
begin
for nI := 0 to TreeView1.Items.Count - 1 do
begin
if SameText(TreeView1.Items[nI].Text, SubFolder) then
begin
result := TreeView1.Items[nI];
Exit;
end;
end;
end;
if not Assigned(result) then
begin
result := TreeView1.Items.AddChild(TreeNode, SubFolder);
Exit;
end;
end;
Hy。这段代码在树视图上完美工作。我如何将它集成到virtualstringtree? –
TTreeNode应该改为PVirtualNod,用你的VirtualTreeview替换Treeview1。我没有安装VirtualTreeview的delphi。但是,我认为这很容易。搜索一下;) –