文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 236
阅读 8
收藏 0
测试效果图:


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.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/03/15/1106669.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
govcl v1.0.4 释出,GO 语言 UI 组件库

1、增加了TListView、TTreeView、TPageControl几个事件; 2、增加了TListView、TTreeView排序过程; 3、修复了New控件时使用CheckPtr增加安全检测; 4、增加了TListView、TTreeView排序,图像...

不在乎y
2017/12/21
2.6K
14
依据数据集 进行 树 的构造(treeview & dataset) 方法一

type PDepData=^DepData; DepData = record ID: Integer; DepID: string; DepName: string; end; procedure FreeTV(tv: TTreeview); var i: Integer; begin for i := 0 to tv.Items.Count - ......

vga
2015/11/14
0
0
govcl 1.1.3 版本更新,GO 语言 UI 组件库

更新内容: TTreeView增加TTVAdvancedCustomDrawEvent、TTVAdvancedCustomDrawItemEvent事件 TListView增加TLVAdvancedCustomDrawEvent、TLVAdvancedCustomDrawItemEvent、TLVAdvancedCustom......

不在乎y
01/04
1K
8
GO 语言 UI 组件库 - govcl

由于现有第三方的Go UI库不是太大就是用的不习惯,或者组件太少。就萌生了自己写一个UI库的想法Delphi(Lazarus)有些许多优秀的VCL(LCL)组件,不拿来使用太可惜了。所以就索性做了一套。目前支...

不在乎y
2017/10/10
6.9K
17
Python 源码的考古(四) 1.0.1 版

1.0.1 版的 README 文件提到这是对正式发布的 Python 1.0 的补丁, 主要解决可移植性问题. 大致变化 我看和 0.9.1 版差别, 首先是目录结构整理了一下, 以前是所有源文件都混在一个 src 目录下...

刘军兴
2016/01/04
56
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 有一天考拉麻麻拉肚子了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享周汇洋的单曲《Man Srae(曼斯拉之舞)》:美滋滋。。。。 手机党少年们想听歌,请使劲儿戳(这里) 我听了一下 赶紧关了, ...

小小编辑
11分钟前
2
0
oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
5
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部