程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB6 >> vb文件系統控件的使用

vb文件系統控件的使用

編輯:VB6

使用文件系統控件(Directory List Box、Drive List Box 和 File ListBox)

許多應用程序必須顯示關於磁盤驅動器、目錄和文件的信息。為使用戶能夠利用文件系統,Visual Basic 提供了兩種選擇。可以使用由 CommonDialog控件提供的標准對話框,或者使用 DirListBox、DriveListBox 和 FileListBox這三種特殊的控件的組合創建自定義對話。
文件系統控件使用戶能在應用程序中檢查可用的磁盤文件並從中選擇。若只需要標准的“打開文件”或“保存”對話框,則應考慮使用 CommonDialog控件。
詳細信息 請參閱本章前面的“使用CommonDialog控件”。

示例應用程序:Winseek.vbp
許多代碼示例都來自 WinSeek 示例應用程序(Winseek.vbp),該程序列在Samples目錄中。

檢查文件系統
每個文件系統控件都經過精心設計,將靈活、復雜的文件系統檢查功能與簡易的編程方法結合起來。每個控件都自動執行文件數據獲取任務,但也可編寫代碼自定義控件外觀並指定顯示的信息。

可單獨使用文件系統控件,也可組合起來使用。組合使用時,可在各控件的事件過程中編寫代碼來判斷它們之間的交互方式。也可讓它們獨立操作。圖 7.17 顯示了一起使用的三個控件。
文件系統控件自動從操作系統獲取一切信息;可訪問此信息或判斷每個控件通過其屬性顯示的信息。例如,在缺省時顯示當前工作目錄的內容(即啟動應用程序的目錄,或者由 ChDir 語句改變的當前目錄) 。
應用程序也可顯示文件列表,這些文件的名字匹配一種模式,例如 *.frm。只需在窗體上繪制一個文件列表,設置其 Pattern 屬性為 *.frm。運行時,可用下列代碼指定 Pattern 屬性:
File1.Pattern = "*.FRM"

文件系統控件使操作非常靈活,這是 CommonDialog 控件無法做到的。可以用多種方法混合、匹配它們,並可控制它們的外觀和交互方式。
如果目的就是要讓用戶能夠打開和保存文件,則 CommonDialog 控件為這些操作提供了現成的一組對話框。這些對話框也為許多其它基於 MicrosoftWindows 的應用程序所使用,因此具有標准化的外觀。這些控件也能識別可用的網絡驅動器。
詳細信息 請參閱本章前面的“使用 CommonDialog 控件”。

驅動器列表框
驅動器列表框是下拉式列表框。在缺省時在用戶系統上顯示當前驅動器。當該控件獲得焦點時,用戶可輸入任何有效的驅動器標識符,或者單擊驅動器列表框右側的箭頭。用戶單擊箭頭時將列表框下拉以列舉所有的有效驅動器。若用戶從中選定新驅動器,則這個驅動器將出現在列表框的頂端。可用代碼檢查 Drive 屬性來判斷當前選擇的驅動器。應用程序也可通過下述簡單賦值語句指定出現在列表框頂端的驅動器:
Drive1.Drive = "c:\"
驅動器列表框顯示可用的有效驅動器。從列表框中選擇驅動器並不能自動地變更當前的工作驅動器;然而可用 Drive 屬性在操作系統級變更驅動器,這只需將它作為 ChDrive 語句的參數:
ChDrive Drive1.Drive

目錄列表框
目錄列表框從最高層目錄開始顯示用戶系統上的當前驅動器目錄結構。起初,當前目錄名被突出顯示,而且當前目錄和在目錄層次結構中比它更高層的目錄一起向根目錄方向縮進。在目錄列表框中當前目錄下的子目錄也縮進顯示。在列表中上下移動時將依次突出顯示每個目錄項。

標識單個目錄
列表框中的每個目錄關聯一個整型標識符,可用它來標識單個目錄。CommonDialog 控件沒有提供這個功能。Path 屬性 (Dir1.Path) 指定的目錄總是有 ListIndex 值-1。緊鄰其上的目錄具有 ListIndex 值- 2,再上一個為ListIndex- 3,依次類推。Dir1.Path 的第一個子目錄具有 ListIndex 值 0。如圖 7.18 所示,若第一級子目錄有多個目錄,則每個目錄的 ListIndex 值按 1、2、3……的順序依次排列。

設置當前目錄
可用目錄列表框的 Path 屬性設置或返回列表框中的當前目錄 (ListIndex = -1)。例如,若為圖 7.18 中的 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 對象的詳細信息,請參閱《Visual Basic 6.0語言參考》中“App 對象”。

單擊目錄項
目單擊目錄列表框中的某個項目時將突出顯示該項目。而雙擊項目時則把它賦予 Path 屬性並把其 ListIndex 屬性設置為-1,然後重繪目錄列表框以顯示直接相鄰的下級子目錄。

查找目錄的相對位置
ListCount 屬性返回當前擴展目錄下的目錄數目,而不是目錄列表框中的目錄總數。因為當前擴展目錄的 ListIndex 值總為 - 1,所以可以編程來判斷在目錄層次結構中,當前擴展目錄與根目錄有多大距離。例如:
'初始化當前擴展目錄。
GoHigher = 0
'若目錄不存在,
'則 Dir1.List(x) 返回空字符串。
Do Until Dir1.List(GoHigher) = ""
GoHigher = GoHigher - 1
Loop
'如有必要可轉換成正數。
LevelsAbove = Abs(GoHigher)

文件列表框
文件列表框在運行時顯示由 Path 屬性指定的包含在目錄中的文件。可用下列語句在當前驅動器上顯示當前目錄中的所有文件:
File1.Path = Dir1.Path
然後,可設置 Pattern 屬性來顯示這些文件的子集—─例如,設置為 *.frm後將只顯示這種擴展名的文件。Pattern 屬性也接受由分號分隔的列表。例如,下列代碼行將顯示所有擴展名為 .frm 和 .bas 的文件:
File1.Pattern = "*.frm; *.bas"Visual Basic 支持 ? 通配符。例如,???.txt 將顯示所有文件名包含三個字符且擴展名為 .txt 的文件。

使用文件屬性
文件列表框的屬性也提供當前選定文件的屬性(Archive、Normal、System、Hidden 和 ReadOnly)。可在文件列表框中用這些屬性指定要顯示的文件類型。System 和 Hidden 屬性的缺省值為 False。Normal、Archive 和 ReadOnly屬性的缺省值為 True。
例如,為了在列表框中只顯示只讀文件,直接將 ReadOnly 屬性設置為 True並把其它屬性設置為 False:
File1.ReadOnly = True
File1.Archive = False
File1.Normal = False
File1.System = False
File1.Hidden = False
當 Normal = True 時將顯示無 System 或 Hidden 屬性的文件。當 Normal =False 時也仍然可顯示具有 ReadOnly 和/或 Archive 屬性的文件,只需將這些屬性設置為 True。
注意 不使用 attribute 屬性設置文件屬性。應使用 SetAttr 語句設置文件屬性。缺省時,在文件列表框中只突出顯示單個選定文件項。要選定多個文件,應使用 MultiSelect 屬性。
詳細信息 關於 SetAttr 語句的詳細信息,請參閱《Visual Basic 6.0語言參考》的“SetAttr 語句”和“MultiSelect 屬性”。

使用文件系統控件的組合
如果使用文件系統控件的組合,則可同步顯示信息。例如,若有缺省名為Drive1、Dir1 和 File1 的驅動器列表框、目錄列表框和文件列表框,則事件可能按如下順序發生:
1. 用戶選定 Drive1 列表框中的驅動器。
2. 生成 Drive1_Change 事件,更新 Drive1 的顯示以反映新驅動器。
3. Drive1_Change 事件過程的代碼使用下述語句,將新選定項目(Drive1.Drive 屬性)賦予 Dir1 列表框的 Path 屬性: Private Sub Drive1_Change ()
Dir1.Path = Drive1.Drive
End Sub
4. Path 屬性賦值語句生成 Dir1_Change 事件並更新 Dir1 的顯示以反映新驅動器的當前目錄。
5. Dir1_Change 事件過程的代碼將新路徑(Dir1.Path 屬性)賦予 File1 列表框的 File1.Path 屬性:
Private Sub Dir1_Change ()
File1.Path = Dir1.Path
End Sub
6. File1.Path 屬性賦值語句更新 File1 列表框中的顯示以反映 Dir1 路徑指定。
用到的事件過程及修改過的屬性與應用程序使用文件系統控件組合的方式有關。下節“文件系統控件方案:文件搜索器應用程序”演示了這裡描述的控件同步。

  1. 上一頁:
  2. No
Copyright © 程式師世界 All Rights Reserved