学习 TTreeView [13] - 在 TTreeView 中显示目录结构(的函数)

测试效果图:

学习 TTreeView [13] - 在 TTreeView 中显示目录结构(的函数)

unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ComCtrls, ExtCtrls;



type

  TForm1 = class(TForm)

    TreeView1: TTreeView;

    Panel1: TPanel;

    Edit1: TEdit;

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



{函数的默认参数是指定显示在第几个元素下面}

function DirToTree(Tree: TTreeView; Path: string; num: Integer = -1): Boolean;

var

  sr: TSearchRec;

  node: TTreeNode;

begin

  path := ExcludeTrailingPathDelimiter(path); {去掉最后一个 '\'}

  if not DirectoryExists(path) then Exit;     {路径不存在则退出}

  if num = -1 then node := nil else node := Tree.Items[num]; {确认节点}



  if FindFirst(Path + '\*.*', faAnyFile, sr) = 0 then

  begin

    repeat

      if sr.Name[1] = '.' then Continue;      {如果是'.' 或 '..' (当前目录或上层目录)则忽略}



      Tree.Items.AddChild(node, sr.Name);     {都是通过这句添加的}



      Application.ProcessMessages;            {加上可以让程序兼顾其他消息}



      {如果是文件夹则执行递归}

      if (sr.Attr and faDirectory) = faDirectory then

        DirToTree(Tree, Path + '\' + sr.Name, Tree.Items.Count-1);

    until (FindNext(sr) <> 0);

  end;

  Result := True;

end;



{测试}

procedure TForm1.Button1Click(Sender: TObject);

begin

  TreeView1.Items.Clear;

  DirToTree(TreeView1, Edit1.Text);

end;



end.


 
   

你可能感兴趣的:(treeview)