尽管Visual Basic标准控件DriveListBox、DirListBox和FileListBox在一些环境中能很好使用,但若想显示类似Windows Explorer的文件夹结构就显得力不从心了。这时就必须使用TreeView控件,因为它为文件、文件夹和驱动器显示提供了完善的解决方案,并且系统的FileSystemObject对象能有效地获得主机的目录信息。
本文将介绍如何使用FileSystemObject将指定的目录或全部的驱动器与TreeView控件相结合,以及如何消除当驱动器全部文件列表填充TreeView时所遇到的缺陷。作为技巧,文中还讨论如何用SendMessage()的API函数来对TreeView内容的快速清除。事实上,这是一种最快捷的方法,它也可用于其他控件中。
关于FileSystemObject对象库 众所周知,FileSystemObject对象库是在Visual Basic Scripting Edition 2. 中发布的,它包括一系列用于驱动器、文件夹和文件的操作。为了能在Visual Basic中使用FileSystemObject,必须引用SCRRUN.DLL文件以便能使用它的属性、方法和事件。在VB工程中添加SCRRUN.DLL的引用,是通过选择"Project"(工程)->"References"(引用)命令,然后选定"Microsoft Scripting Runtime"项来进行的。一旦引用后,就可用FileSystemObject方法获得文件夹名称以及每个文件夹下的文件名。 FileSystemObject允许用户在当前磁盘中进行文件操作,如复制、删除以及其他文件夹、文件操作等。本文着重讨论与文件夹结构相关的方法,即如何获得文件夹和文件名称。
创建示例 示例创建的过程是这样的,首先在默认的表单中添加必要的控件;然后添加代码,用来将目录内容添加在TreeView中;最后,利用SendMessageLong() API函数添加一个过程,用来清除TreeView中的内容。
创建用于文件和文件夹的表单 首先,创建一个新的Visual Basic工程;然后,将默认的表单标题设置为"Exploring the Windows' directory",再在表单上添置一个TreeView控件和一个命令按钮控件,保留默认名称。最后,将命令按钮的标题设置为"Fill TreeView"。
声明两个重要的变量 在这一步中,我们需要为表单添加一些代码。首先,需要安装SCRRUN.DLL的引用,从菜单栏上选择"Project"(工程)->"References"(引用)命令,在弹出的对话框中,选中"Microsoft Scripting Runtime"项。单击[OK]按钮关闭对话框。然后,在表单中右击鼠标,从弹出的快捷菜单中选择"View Code"命令,在声明部分添加下列语句: Const DEFAULT_DRIVE = "C:\" Dim FSO As New Scripting.FileSystemObject 这里为简单起见,我们用一个常量来指定建立的目录树的默认驱动器。当然,最好能让用户对这个值作出选择。 用户或许想知道为什么在表单层中声明一个FSO变量,而不是在实际读取文件信息的过程中声明。这完全是一次偶然机会的心得,因为在许多好的程序中,通常允许用户用多种方式处理选择的文件。在表单层范围内定义一个FSO变量,其目的是可以处理所有其他FileSystemObject成员,而不必每次都有定义一个对象变量。 基于这种考虑,在表单被调用时应对FSO变量进行初始化,而当表单关闭后,该变量应被清除。这项工作的最终完成是通过下面的代码: Private Sub Form_Load() Set FSO = New FileSystemObject End Sub Private Sub Form_Unload(Cancel As Integer) Set FSO = Nothing End Sub
|