zoukankan      html  css  js  c++  java
  • 学习 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.
    
  • 相关阅读:
    为调试JavaScript添加输出窗口
    后悔自己没有学好数学
    IEnumeralbe<T>被误用一例
    开发软件真是一件有意思的事情
    在网页上实现WinForm控件:ComboBox
    WinForm异步编程中一个容易忽视的问题
    网页上的DataGridView
    用Excel生成代码
    游戏处女作 打方块
    用GDI+保存Image到流时的一个有趣现象
  • 原文地址:https://www.cnblogs.com/del/p/1106669.html
Copyright © 2011-2022 走看看