目录列表框

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

标识单个目录

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

图 7.18   目录列表框中显示的目录结构

设置当前目录

可用目录列表框的 Path 属性设置或返回列表框中的当前目录 (ListIndex = – 1)。例如,若为图 7.21 中的 Drive1.Path 赋以 "c:\payroll",则目录 \Pagroll 将成为当前工作目录。

同样,可把驱动器列表框的 Drive 属性赋予目录列表框的 Path 属性:

Dir1.Path = Drive1.Drive

执行赋值语句时,目录列表框将显示此驱动器上所有有效的目录和子目录。缺省时,目录列表框将显示驱动器的当前目录的所有上级目录以及下一级子目录,而驱动器是被指定给 Dir1.Path 属性的。目录列表框并不在操作系统级设置当前目录;它只是突出显示目录并将其 ListIndex 值设置为 – 1。

为设置当前工作目录应使用 ChDir 语句。例如,下列语句将当前目录变成目录列表框中显示的一个目录:

ChDir Dir1.Path

在使用文件控件的应用程序中,可用 Application 对象将当前目录设置成应用程序的可执行 (.exe) 文件所在目录:

ChDrive App.Path   '设置驱动器。
ChDir App.Path      '设置目录。

注意 Path 属性只在运行时可用,在设计时不可用。

详细信息 关于 Application 对象的详细信息,请参阅《语言参考》中“App 对象”。

单击目录项目

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

查找目录的相对位置

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

'初始化当前扩展目录。

GoHigher = 0   
'若目录不存在,
' Dir1.List(x) 返回空字符串。
Do Until Dir1.List(GoHigher) = ""
   GoHigher = GoHigher - 1
Loop
'如有必要可转换成正数。
LevelsAbove = Abs(GoHigher)