TTreeView组件遍历磁盘目录

实例说明

TTreeView组件是一个以分枝结构或者说树状结构显示数据的组件,以该组件显示数据具有较好的等级关系和逻辑层次,并且易于操作。在组件中显示的数据结构与系统中目录的结构非常相似,所以本例使用该组件设计一个磁盘目录查看工具。运行本例,在窗口右边选择目录或路径就可以在TTreeView组件中列出所有选择目录中的子目录和文件。实例运行效果如图1所示。

图1  TTreeView组件遍历磁盘目录

思路与技术

磁盘中的目录结构就像TTreeView组件中显示的一样,具有较为明显的层次结构,首先将一个目录中的所有子目录及文件名添加到TTreeView组件中,然后再进入该目录中的子目录进行同上一步一样的操作,持续进行多次直到进入最后一层停止,接着回到上一层对下一个目录进行同样的操作。这个过程可以用递归的方法完成。使用FindFirst函数可以列出目录中所有的文件及子目录,该函数原型如下:

function FindFirst(const Path: string; Attr:
Integer; var  F: TSearchRec):
Integer;

参数说明:

l         
Path:查找的文件,如果设置为*.*表示所有的文件及目录。

l         
Attr:
文件属性。

l         
F:搜索信息。

注意:TTreeView组件的等级关系。

开发步骤

(1)新建一个标准工程,创建一个新窗体,默认主窗体的Name属性为Form1。

(2)在主窗体中添加一个TLabel、TtreeView、TDriveComboBox、TdirectoryListBox 、TSaveDialog和TButton组件。

(3)设置TDirectoryListBox组件的Name属性为DLB1,设置TDriveComboBox组件的Dirlist属性为DLB1。

(4)程序完整代码如下:

感觉有问题
 
//遍历目录下的所有文件
var
    Directotynote, FileNode: TTreeNode;
procedure TForm1.myfind(bNode: TTreeNode;TreeView1:TTreeView);
var
  sr: TsearchRec;
  Err: Integer;
begin
  try
    Err := FindFirst('*.*', $37, sr);
    while (ERR = 0) do
    begin

      if sr.Name[1] <> '.' then

      begin

        if (sr.Attr and faDirectory) = 0 then

        begin

          TreeView1.Items.AddChildFirst(bNode, sr.Name);

        end;

        if (sr.Attr and fadirectory) = faDirectory then

        begin

          FileNode := TreeView1.Items.AddChildFirst(bnode, sr.Name);

          chdir(sr.Name);

          Application.ProcessMessages;

          myFind(FileNode,TreeView1);

         // chdir('..');

        end;

      end;

      err := FindNext(sr);

    end;
  except

  end;
end;

procedure TForm1.DLB1Change(Sender: TObject);
begin
  label2.Caption := dlb1.Directory;
  treeview1.Items.Clear;
   myFind(directotynote,TreeView1);
end;
 

附件列表

delphi TTreeView组件遍历磁盘目录的更多相关文章

  1. 用TreeView控件遍历磁盘目录

    实现效果: 知识运用: ListView控件中Items集合的Add方法  TteeView控件中Nodes集合的Add方法 实现代码: private void Form1_Load(object ...

  2. delphi遍历指定目录下指定类型文件的函数

    遍历指定目录下指定类型文件的函数// ================================================================// 遍历某个文件夹下某种文件,/ ...

  3. Delphi的组件读写机制

    Delphi的组件读写机制(一) 一.流式对象(Stream)和读写对象(Filer)的介绍在面向对象程序设计中,对象式数据管理占有很重要的地位.在Delphi中,对对象式数据管理的支持方式是其一大特 ...

  4. C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)

    //遍历一个目录下所有的文件列表,代码实例 DirectoryInfo dir = new DirectoryInfo(folderName);var list = GetAll(dir); /// ...

  5. Java遍历一个目录下的所有文件

    Java遍历一个目录下的所有文件   Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其他流类不同的是,流类关心的是文件的内容,而File类关心的是磁盘上文件的存 ...

  6. 【目录】Newlife XCode组件相关文章目录

    本博客所有文章分类的总目录链接:本博客博文总目录-实时更新  1.Newlife XCode组件相关文章目录  1.Newlife XCode组件资源目录汇总[2013年版]    2.Newlife ...

  7. [WinAPI] API 13 [遍历指定目录 打印文件和其他属性]

    Windows API中,有一组专门的函数和结构,用于遍历目录,它们是FindFirstFile函数.FindNextFile函数和WIN32_FIND_DATA结构.使用FindFirstFile和 ...

  8. python遍历一个目录,输出所有文件名

    python遍历一个目录,输出所有文件名 python os模块 os import os  def GetFileList(dir, fileList):  newDir = dir  if os. ...

  9. Python:遍历一个目录下所有的文件及文件夹,然后计算每个文件的字符和line的小程序

    编写了一个遍历一个目录下所有的文件及文件夹,然后计算每个文件的字符和line的小程序,先把程序贴出来. #coding=utf-8 ''' Created on 2014年7月14日 @author: ...

随机推荐

  1. [Everyday Mathematics]20150108

    设 $f$ 在 $(a,b)$ 上 $n+1$ 次可导, 且 $$\bex \ln\frac{f(b)+f'(b)+\cdots+f^{(n)}(b)}{f(a)+f'(a)+\cdots+f^{(n ...

  2. Android中GridView滚动到底部加载数据终极版

    之前在项目中有一个需求是需要GridView控件,滚动到底部自动加载.但是呢GridView控件并不提供诸如ListView监听滚动到底部的onScrollListener方法,为了实现这样一个效果, ...

  3. asp调用.net xml web services

    来源:http://www.cnblogs.com/notus/archive/2006/08/10/473000.html#2662503 (是不是实际上可以用这个办法调用任何xml web ser ...

  4. CSS框模型(框模型概述、内边距、边框、外边距、外边距合并)

    CSS 框模型概述 CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边距.边框 和 外边距 的方式. 元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景. ...

  5. ArcMap10.1无法保存编辑的内容

    问题描述:在arcMap10.1中编辑SDE库中要素,保存编辑内容时报错: 无法保存编辑内容.基础DBMS错误[ORA-29877:failed in the execution of the ODC ...

  6. 为Hadoop配置Win8.1授时服务器

    启动Windows服务,顺序如下: SSTPS(secure socket tunneling protocol service)服务 Telephony服务 Remote Access Connec ...

  7. H264编码参数的一些小细节

    一次写播放器,基于ijkplayer.在播放一些网络视频的时候,发现无论怎么转码,视频比例始终不对.即便获取了分辨率,但是播放的时候,view不是分辨率比例的那个长宽比.使用ffmpeg查看了一下属性 ...

  8. TreeMap实现原理

    摘要 研究项目底层代码时,发现项目中的数据的缓存用的是TreeMap来实现对数据的缓存管理.本片博文就TreeMap的源码.原理以及用法做一个探究 在用TreeMap之前我们要对TreeMap有个整体 ...

  9. eclipse svn切换账号登陆问题

    1.当一个人有权限访问文件代码,而另一个账号无法访问该文件代码,要在eclipse上切换账号登陆有权限的账号时,eclipse会用缓存的账号,不会弹出从新输入新账号的窗口. 这样该怎么解决呢? 关闭e ...

  10. 【JDBC】事务的使用

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5868750.html 关于事务的理论知识.ACID特性等等,网上太多了,在此不一一重复.本文主要着重  事务 ...