程序設計時,我們經常會需要打開或選擇計算機上的文件,這時候就可以使用TOpenDialog組件來顯示一個文件選擇對話框。
1、“打開”對話框的標題設置
對話框的標題可以讓用戶明白對話框的意圖,標題的自定義需要設置“打開”對話框的Title屬性,需要注意的是,只有ofExNoPlaceBar屬性為False才能看到對話框標題。

2、設置打開對話框不顯示位置欄
修改TOpenDialog的OptionEx屬性中的子屬性ofExNoPlaceBar為True,是打開的對話框沒有位置欄(位置欄指的是左側,桌面,此電腦等)。
3、設置打開對話框的文件類型過濾器
通過設置文件類型過濾器,我們可以根據文件類型縮小查詢范圍一邊選擇。有兩種方式.
(1)通過對象監視器中的Filter屬性進行設置


(2)通過代碼進行設置
OpenDialog1.Filter:= '文本文件|*.txt|單元文件|*.pas';//使用|隔開 OpenDialog1.Execute;
4、設置打開對話框打開時的初始文件路徑
設置InitialDir 屬性可以賦予對話框的初始文件路徑,如果沒有設置該屬性或者指定的目錄不存在,則由全局變量ForceCurrentDirectory確定初始化目錄,如果該變量為True,
對話框則在當前工作目錄處被打開,否則對話框會在當前工作目錄或者我的文檔目錄處被打開,這依賴於Windows版本。
OpenDialog1.InitialDir:='d:\';//默認打開D 盤符 OpenDialog1.Execute;
5、設置打開對話框可以選擇多個文件
TOpenDialog組件有個Option屬性,通過修改這個增加這個屬性中的選項,可以改變對話框的外觀跟行為。
如果需要同時選擇多個文件,需要設置Options屬性中的子屬性ofAllowMultSelect的值為True。
示例:
OpenDialog1.Options:= OpenDialog1.Options+ [ofAllowMultiSelect];//原有的options屬性加上多文件屬性 OpenDialog1.Execute;
options屬性說明
| 屬性 | 說明 |
| ofReadOnly | 只讀復選框被選中 |
| ofOverwritePrompt | 當用戶選擇一個已存在的文件時,彈出一個警告信息框,詢問是否重寫該文件 |
| ofhideReadOnly | 隱藏“打開“對話框中的只讀復選框 |
| ofNoChangeDir | 當用戶單擊ok 按鈕后,重新設置當前路徑為選擇文件之前的路徑 |
| ofShowHelp | 在對話框中顯示”幫助“按鈕 |
| ofNoValidate | 對於”打開“對話框中選擇的文件名不進行檢查,允許非法的文件名 |
| ofAllowMultiSelect | 程序運行時用戶可以同時選擇多個文件 |
| ofExtensionDirfferent | 程序運行時,當選擇的文件擴展名與DefaultExt屬性不同時,則自動設置該標記 |
| ofPathMustExist | 當用戶選擇的文件目錄不存在時,彈出一個錯誤消息框 |
| ofFileMustExist | 當用戶選擇一個不存在的文件時,彈出一個錯誤信息框 |
| ofCreatePrompt | 當用戶選擇一個不存在的文件時,彈出一個信息框,詢問是否創建新的文件 |
| ofShareAware | 當文件共享非法時,忽略共享錯誤,允許用戶選擇文件 |
| ofNoReadonlyReturn | 當用戶選擇一個只讀文件,產生一個錯誤消息 |
| ofnoTestFileCreate | 當用戶在一個不能修改的共享網絡路徑中保存文件時,不進行網絡文件的保護,磁盤路徑,磁盤空間等檢查 |
| ofNoNetworkbutton | 在對話框中打開一個映射網絡驅動對話框時,移除”網絡“按鈕,該選項只有在Options屬性包含ofOldStyleDialog選項時才可用 |
| ofNoLongNames | 只遵循文件命名規則,該選項只有在包含ofOldStyleDialog選項時才起作用 |
| ofOldStyleDialog | ”打開“對話框采用舊的風格 |
| ofNoDereferenceLinks | 禁止放棄windows的快捷方式,當打開一個快捷方式時,賦予文件名(FileName)快捷方式的路徑和名稱,而不是快捷方式關聯的文件路徑和名稱 |
| ofEnableIncludNotify | 當用戶在對話框中打開一個文件夾時,發送CDN_INCLUDEITEM通知消息,該通知被發送到文件夾內部的每一項,該選項之應用在win2000及以后的版本 |
| ofEnableSizing | 該選項只應用在win98及之后的版本,允許資源管理器風格的對話框,通過鼠標或鍵盤調整大小,在默認情況下,”打開“對話框允許調整大小,而不考慮該選項,在用戶提供了鈎子函數或自定義模板時才需要該選項 |
| ofDontAddToRecent | 阻止文件添加到最近打開的文件列表中 |
| ofForceShowHidden | 保證隱藏文件在對話框中可見 |
(1)DefaultExt屬性
此屬性用於指定一個默認的擴展名。如果用戶在對話框中選擇的文件沒有帶擴展名,就用這個屬性作為文件的擴展名,如果不需要默認擴展名,應當把這個屬性設為空。
(2)FileName屬性
FileName屬性可以指定一個文件名。在打開對話框時,這個文件名出現在對話框的“文件名”框中。在對話框中,可以指定其他文件名,如果單擊“OK”按鈕,對話框將關閉,並且FileName屬性變成用戶新指定的文件名,包括文件的路徑和擴展名。FileName屬性也可以指定一個不存在的文件名,表示將打開一個新文件。
(3)FilterIndex屬性
如果有多個過濾器,這個屬性用於指定哪個過濾器是默認過濾器。默認過濾器將顯示在“打開”對話框的“文件類型”組合框的編輯框中。注意,過濾器的序號從1開始。
6、TOpenDialog組件的重要事件
OnCanClose----------當用戶試圖關閉對話框時將觸發這個事件
OnFolderChange------當用戶在對話框中改變、擴展或折疊了一個目錄(也叫文件夾),將觸發該事件
OnSelectionChange---當用戶打開對話框、選擇某個目錄或文件、選擇另一個過濾器、建立一個新的目錄時將觸發這個事件
OnShow--------------當對話框調用Execute方法、並且對話框還未顯示時觸發此事件
OnTypeChange--------當用戶在對話框中選擇了另一個過濾器時,將發生這個事件
(1)OnCanClose事件
當用戶試圖關閉對話框時將觸發這個事件。這樣就有機會對用戶輸入的文件名進行檢查。如果文件名不符合要求,就把CanClose參數設為False,表示不允許關閉對話框。
(2)OnFolderChange事件
當用戶在對話框中改變、擴展或折疊了一個目錄(文件夾),將觸發該事件。在程序中可以利用此事件獲取用戶瀏覽過的目錄。
(3)OnSelectionChange事件
當用戶打開對話框、選擇某個目錄或文件、選擇另一個過濾器或建立一個新的目錄時將觸發這個事件。
OnSelectionChange事件與OnFolderChange事件相比觸發的概率比較高。
(4)OnTypeChange事件
當用戶在對話框中選擇了另一個過濾器時,將觸發這個事件。在此事件中結合FilterIndex屬性的使用,可以獲取當前對話。
