您现在的位置:首页 >> 网络教学 >> 文件处理技术 >> 内容

文件系统控件

时间:2009-6-19 10:15:34 点击:1795

文件系统控件

由于应用程序必须将文件从内存存入磁盘,或从磁盘读入文件,所以要显示关于磁盘驱动器、目录和文件的信息。为了方便地利用文件系统,VB提供了两种方法:使用CommonDialog控件提供的标准对话框;使用VB提供的文件系统控件创建自定义对话框。

VB提供了3个文件系统控件,分别是:

(1)  目录列表框(DirListBox

(2)  驱动器列表框(DirveListBox

(3)  文件列表框(FileListBox

利用这些控件能够自动地从操作系统获取所需要的信息,用户可以访问这些信息或通过其属性判断每个控件的信息。如果用户只是需要标准的【打开】、【保存】对话框,可以使用CommonDialog控件,这些对话框具有标准化的外观。

一、驱动器列表框

驱动器列表框是下拉式列表框,在缺省时在用户系统上显示当前驱动器。当该控件获得焦点时,用户可输入任何有效的驱动器标识符,或者单击驱动器列表框右侧的箭头。用户单击箭头时将列表框下拉以列举所有的有效驱动器,如图10-2


若用户从中选定新驱动器,则这个驱动器将出现在列表框的顶端。可用代码检查 Drive 属性来判断当前选择的驱动器。除列表框的一般属性外,驱动器列表框还有其自身的特殊属性,即Drive属性。它可以看作一个特殊的字符串型变量,在设计状态下不可访问,在运行状态下可以用两种方法给Drive属性赋值,其中一种方法是使用赋值语句。格式如下:

[<对象>.]Drive=<新驱动器>

其中,格式中对象是驱动器列表框的名字。格式中新驱动器是一个合法驱动器的名字。

另一种方法是单击列表框中某一个驱动器图标,把该驱动器名赋值给Drive属性。

驱动器列表框显示可用的有效驱动器。从列表框中选择驱动器并不能自动地变更当前的工作驱动器;然而在用户选择新的驱动器后,将触发一个Change事件,在这个事件中可用 Drive 属性在操作系统级变更驱动器,这只需将它作为 ChDrive 语句的参数:

ChDrive Drive1.Drive

二、目录列表框

目录列表框从最高层目录开始显示用户系统上的当前驱动器目录结构。起初,当前目录名被突出显示,而且当前目录和在目录层次结构中比它更高层的目录一起向根目录方向缩进。在目录列表框中当前目录下的子目录也缩进显示。在列表中上下移动时将依次突出显示每个目录项。

列表框中的每个目录关联一个整型标识符,可用它来标识单个目录。CommonDialog 控件没有提供这个功能。Path 属性 (Dir1.Path) 指定的目录总是有 ListIndex -1。紧邻其上的目录具有 ListIndex - 2,再上一个为ListIndex- 3,依次类推。Dir1.Path 的第一个子目录具有 ListIndex 0。如图 10-3 所示,若第一级子目录有多个目录,则每个目录的 ListIndex 值按 123……的顺序依次排列。

可用目录列表框的 Path 属性设置或返回列表框中的当前目录 (ListIndex = -1)。同样,可把驱动器列表框的 Drive 属性赋予目录列表框的 Path 属性:Dir1.Path = Drive1.Drive执行赋值语句时,目录列表框将显示此驱动器上所有有效的目录和子目录。缺省时,目录列表框将显示驱动器的当前目录的所有上级目录以及下一级子目录,而驱动器是被指定给 Dir1.Path 属性的。目录列表框并不在操作系统级设置当前目录;它只是突出显示目录并将其 ListIndex 值设置为 -1。为设置当前工作目录应使用 ChDir 语句。例如,下列语句将当前目录变成目录列表框中显示的一个目录:ChDir Dir1.Path在使用文件控件的应用程序中,可用 Application 对象将当前目录设置成应用程序的可执行 (.exe) 文件所在目录:

ChDrive App.Path     '设置驱动器。

ChDir App.Path       '设置目录。

单击目录列表框中的某个项目时将突出显示该项目。而双击项目时则把它赋予 Path 属性并把其 ListIndex 属性设置为-1,然后重绘目录列表框以显示直接相邻的下级子目录。

ListCount 属性返回当前扩展目录下的目录数目,而不是目录列表框中的目录总数。因为当前扩展目录的 ListIndex 值总为 - 1,所以可以编程来判断在目录层次结构中,当前扩展目录与根目录有多大距离。

三、文件列表框

文件列表框在运行时显示由 Path 属性指定的包含在目录中的文件,如图10-4所示。该控件常用属性有3个:Path属性、filename属性和Pattern属性。


可用下列语句在当前驱动器上显示当前目录中的所有文件:

File1.Path = Dir1.Path

然后,可设置 Pattern 属性来显示这些文件的子集—─例如,设置为 *.frm后将只显示这种扩展名的文件。Pattern 属性也接受由分号分隔的列表。例如,下列代码行将显示所有扩展名为 .frm .bas 的文件:

File1.Pattern = "*.frm; *.bas"

Visual Basic 支持 ? 通配符。例如,???.txt 将显示所有文件名包含三个字符且扩展名为 .txt 的文件。

文件列表框的属性也提供当前选定文件的属性(ArchiveNormalSystemHidden ReadOnly)。可在文件列表框中用这些属性指定要显示的文件类型。System Hidden 属性的缺省值为 FalseNormalArchive ReadOnly属性的缺省值为 True。例如,为了在列表框中只显示只读文件,直接将 ReadOnly 属性设置为 True并把其它属性设置为 False

File1.ReadOnly = TrueFile1.Archive = False

File1.Normal = FalseFile1.System = False

File1.Hidden = False

Normal = True 时将显示无 System Hidden 属性的文件。当 Normal =False 时也仍然可显示具有 ReadOnly / Archive 属性的文件,只需将注意这些属性设置为 True

注意:不使用 attribute 属性设置文件属性。应使用 SetAttr 语句设置文件属性。缺省时,在文件列表框中只突出显示单个选定文件项。要选定多个文件,应使用 MultiSelect 属性。

四、文件系统控件的同步操作 

如果使用文件系统控件的组合,则可同步显示信息。例10-5,有缺省名为Drive1Dir1 File1 的驱动器列表框、目录列表框和文件列表框,设置文件列表框的Patten属性为.txt。事件可能按如下顺序发生:

(1)  在窗体载入时,设置文件列表框的Patten属性,使得列表框中只显示文本文件:

Private Sub Form_Load()

File1.Pattern = "*.txt"     '设置文件列表框显示文件的类型

End Sub

(2)  用户选定 Drive1 列表框中的驱动器。

(3)  生成 Drive1_Change 事件,更新 Drive1 的显示以反映新驱动器。

(4)  Drive1_Change 事件过程的代码使用下述语句,将新选定项目(Drive1.Drive 属性)赋予 Dir1 列表框的 Path 属性:

Private Sub Drive1_Change ()

Dir1.Path = Drive1.Drive

End Sub

(5)  Path 属性赋值语句生成 Dir1_Change 事件并更新 Dir1 的显示以反映新驱动器的当前目录。

(6)  Dir1_Change 事件过程的代码将新路径(Dir1.Path 属性)赋予 File1 列表框的 File1.Path 属性:

Private Sub Dir1_Change ()

File1.Path = Dir1.Path

End Sub

(7)  File1.Path 属性赋值语句更新 File1 列表框中的显示以反映 Dir1 路径指定。用到的事件过程及修改过的属性与应用程序使用文件系统控件组合的方式有关。

作者:Admin  
相关文章
  • 没有相关文章
  • VB程序设计学习网站(赣南师范学院) © 2008 版权所有 All Rights Reserved.
  • 地址:江西省赣州市经济技术开发区 赣南师范学院数学与计算机科学学院 邮政编码:341000
    Email:ZQ188@163.com 技术支持QQ:87319633 移ICP备10086号
  • GnsySjxy! V2.4