2013-06-30 45 views

回答

2

这是一个完整的代码。 您读取一行,您将此行分割以获取每个子文件夹。 您可以搜索每个子文件夹(如果它已经在树中),如果没有,则创建新的子文件夹。 用经典树形图测试:)

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; 
+0

Hy。这段代码在树视图上完美工作。我如何将它集成到virtualstringtree? –

+0

TTreeNode应该改为PVirtualNod,用你的VirtualTreeview替换Treeview1。我没有安装VirtualTreeview的delphi。但是,我认为这很容易。搜索一下;) –