- 中查找“文件系统控件方案”更多相关内容
- 中查找“文件系统控件方案”更多相关内容
- ·上一篇文章:文件系统控件的使用二
- ·下一篇文章:Frame控件的使用
文件系统控件方案
文件系统控件方案:文件搜索器
应用程序因为用户常常希望快速查找应用程序的可用文件或文件组,所以,许多应用程序都提供查询文件系统的功能。Winseek.vbp 示例应用程序协助用户浏览驱动器和目录并显示所有类型的文件。
下表总结了 WinSeek 应用程序在Seek.frm 窗体中使用的控件。
注意 文件系统控件没有 caption 属性,虽然可为它们加标签并指定访问键。关于这种使用标签的方法的详细信息,请参阅本章后面的“使用Label 控件”一节。
编写 WinSeek 应用程序的代码
用鼠标单击驱动器列表框中的项目就会触发 Change 事件。当用户选定项目并接着改变窗体上的焦点时也将触发 Change 事件。在目录列表框中,需要 DblClick 事件生成 Change 事件。
当用户不想用鼠标变更目录时,通常使用箭头键选定需要的目录,然后按ENTER 键。
因为 ENTER 键通常与缺省 CommandButton 控件关联,所以,WinSeek 必须识别用户在何时只是想变更目录而不搜索文件。
通过判断 dirList 列表框的路径是否不同于当前突出显示的目录,WinSeek应用程序解决了这个问题。当用户单击目录列表框中的项目或用箭头键在目录列表框中移动时,可能发生这种情况。下列代码判断 dirList.Path 是否与突出显示的目录不同。若不同,则更新 dirList.Path。若相同,则执行搜索操作。
Private Sub cmdSearch_Click()
.
.
.
''若 dirList.Path 与当前选定目录不同,
''则执行更新操作;否则执行''搜索操作。
If dirList.Path <> dirList.List(dirList.ListIndex) Then
dirList.Path = dirList.List(dirList.ListIndex)
Exit Sub
End If
''继续搜索。
.
.
.
End Sub
WinSeek 应用程序使用下述过程处理重要的事件:
drvList_Change 过程
dirList_Change 过程
cmdSearch_Click 过程
DriveListBox 控件的 Change 事件
当用户单击驱动器列表框的项目时就会生成控件的 Change 事件。此时将调用 drvList_Change 事件过程并运行下述代码: Private Sub drvList_Change ()
On Error GoTo DriveHandler
''若选定新驱动器,则 Dir1 列框''更新显示 。
dirList.Path = drvList.Drive
Exit Sub
''若发生错误,则用 dirList.Path 重新设置 drvList.Drive。
DriveHandler:
drvList.Drive = dirList.Path
Exit Sub
End Sub
注意,无论用鼠标单击还是移动选项(例如,利用箭头键移动),在选定新驱动器时都将在驱动器列表框中发生 Change 事件。试图访问未关闭驱动器门的软盘驱动器,或者选定一个无意中已切断连接的网络驱动器,诸如此类的操作都将触发错误处理程序。因为出错后不能按原先的安排赋值,所以 dirList.Path 仍包含先前的有效驱动器。将 dirList.Path 重新赋予drvList.Drive 后就可更正这个错误。
详细信息 请参阅第十三章“调试代码和处理错误”。
DirListBox 控件的 Change 事件
如果用户双击目录列表框中的项目或在代码中(如 drvList_Change 过程中)变更dirList 的 Path 属性,就会启动 dirList_Change 事件。下列代码响应此事件:
Private Sub dirList_Change ()
''更新文件列表框,以便与目录列表框同步。
filList.Path = dirList.Path
End Sub
此事件过程将 dirList 列表框的 Path 属性赋予 filList 列表框的 Path 属性。这将在 filList 列表框中触发重新绘制的 PathChange 事件;不必在filList_PathChange 过程中添加代码,因为此应用程序中的事件在 filList 列表框结束。
CommandButton 控件的 Click 事件
此事件过程判断 dirList 列表框中突出显示的项目是否和 dirList.Path 相同。若项目不同,则更新 dirList.Path;否则执行搜索操作。
Private Sub cmdSearch_Click ()
.
.
.
''若 dirList.Path 与当前选定的目录不同,
''则更新;否则执行搜索。
If dirList.Path <> dirList.List _
(dirList.ListIndex) Then
dirList.Path = dirList.List(dirList.ListIndex)
Exit Sub
End If
''继续搜索。
.
.
.
End Sub
注意 可用附加功能增强 WinSeek 应用程序。例如会出现这样的情况,希望使用文件控件的属性。这时可通过使用复选框使用户设置文件属性的不同组合,以使文件列表框显示 Hidden、System 等等属性的文件。这将把搜索限制在满足条件的文件中。