delphi TTreeView组件遍历磁盘目录

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)在主窗体中添加一个TLabelTtreeViewTDriveComboBoxTdirectoryListBox TSaveDialogTButton组件。

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 ;

 

 

 





附件列表

     

    你可能感兴趣的:(treeview)