?? 139.txt
字號:
在VB中直接用ODBC API訪問數據庫
中國航空信息中心 吳 斌
從WINDOWS 95開始,微軟為我們提供了一個好用的文件搜索器。使用這個搜索器,我們可以方便快捷的查找到符合條件的文件。但有時我們在程序設計中也需要這一功能,能否在自己的程序中實現呢?答案當然是肯定的。下面我們就來著手設計一個VB程序中的文件搜索器。
首先,進入VB中,建立一個新的表單。在表單上建立一個驅動器列表框(DriveList),一個目錄列表框(FolderList),一個檢查框(SubCheck),一個ListView控件(FileList),兩個文本框(FileName,FileSize)和兩個按鈕(cmdSearch,cmdExit)。需要注意的是ListView 控件是 Mscomctl.ocx 文件中一組 ActiveX 控件的一部分。若要在應用程序中使用 ListView 控件,必須將 Mscomctl.ocx 文件添加到工程中。選擇ListView控件,點擊鼠標右鍵,在彈出菜單中選擇“屬性”。在屬性窗口的“列首”頁中設置將要顯示的列,連續按動“插入列”5次。排列好各控件的位置,然后加入以下代碼:
Option Explicit
Dim FileSys As Scripting.FileSystemObject
Private Sub CmdExit_Click()
End
End Sub
Private Sub DriveList_Change()
FolderList.Path = DriveList
End Sub
Private Sub Form_Load()
Dim I As Integer
Set FileSys = New Scripting.FileSystemObject
FolderList.Path = Left(DriveList.Drive, 2) & "\"
With FileList.ColumnHeaders.Item(1)
.Alignment = lvwColumnLeft
.Text = "文件名"
.Width = 2000
End With
With FileList.ColumnHeaders.Item(2)
.Alignment = lvwColumnRight
.Text = "大小(KB)"
.Width = 1500
End With
With FileList.ColumnHeaders.Item(3)
.Alignment = lvwColumnLeft
.Text = "類型"
.Width = 1500
End With
With FileList.ColumnHeaders.Item(4)
.Alignment = lvwColumnLeft
.Text = "路徑"
.Width = 2000
End With
With FileList.ColumnHeaders.Item(5)
.Alignment = lvwColumnLeft
.Text = "修改時間"
.Width = 2000
End With
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set FileSys = Nothing
End Sub
Private Sub cmdSearch_Click()
Dim SFolderStart As Scripting.Folder
Set SFolderStart = FileSys.GetFolder(FolderList.Path)
FileList.ListItems.Clear
AddFiles SFolderStart
If FileList.ListItems.Count = 0 Then MsgBox _
"沒找到任何符合條件的文件!",vbOKOnly + vbInformation, "提示信息"
End Sub
Private Sub AddFiles(SFolderSearch As Scripting.Folder)
Dim SFolder As Scripting.Folder
Dim SFile As Scripting.File
Dim sngFileSize As Single
Dim lngSize As Long
Dim Itm As ListItem
If SubCheck.Value = 1 Then
If SFolderSearch.SubFolders.Count Then
For Each SFolder In SFolderSearch.SubFolders
AddFiles SFolder
Next SFolder
End If
End If
sngFileSize = FileSize * 1000
For Each SFile In SFolderSearch.Files
With SFile
If .Size >= sngFileSize And IIf(FileName.Text < > "", _
InStr(.Name, FileName.Text) > 0, True) Then
Set Itm = FileList.ListItems.Add(Text:=.Name)
lngSize = .Size / 1000
With Itm
.SubItems(1) = Format(lngSize, "#,###")
.SubItems(2) = SFile.Type
.SubItems(3) = SFile.ParentFolder
.SubItems(4) = SFile.DateLastModified
End With
End If
End With
Next SFile
Set Itm = Nothing
Set SFolder = Nothing
End Sub
運行后,選擇相應目錄,再在FileName文本框中輸入要查找的文件名或文件名的一部分,然后再在FileSize文本框中輸入文件的大小,按下搜索按鈕即可搜索到相應文件。當然,這只是個功能較為簡單的文件搜索器,有興趣的讀者可以使用Scripting.FileSystemObject對象的屬性為其添加一些更為有用的功能。
本例程序在Visual Basic 4.0、Windows 95環境下調試通過。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -