在DELPHI中我們需要打開一個文件或選擇一個文件可以用到 TOpenDialog組件,下面來介紹一下 TOpenDialog 的具體用法.
TOpenDialog 在Delphi 的 Dialogs 下面
1.TOpenDialog組件的典型用法
“打開”對話框是用TOpenDialog組件實現(xiàn)的,TOpenDialog組件是非可視組件。
Filter屬性用于設(shè)置文件過濾器,讓對話框只列出特定類型的文件。在設(shè)計時可以單擊Filter屬性旁的省略號“.”按鈕,打開“Filter.Editor”對話框,在“Filter.Name”欄鍵入關(guān)于過濾器的簡短說明,在“Filter”欄鍵入通配符,在設(shè)計期,把“打開”對話框組件加到窗體上,看到的是TOpenDialog組件的圖標,只有調(diào)用對話框的Execute方法,才能在運行期看到真正的對話框。
2.TOpenDialog組件的重要屬性
DefaultExt-------------此屬性用于指定一個默認的擴展名
FileName---------------此屬性用于指定一個文件名
Files------------------通過此屬性可以訪問多個文件
Filter-----------------此屬性用于設(shè)置文件過濾器
FilterIndex------------此屬性用于指定哪個過濾器是默認過濾器
InitialDir-------------設(shè)置此屬性可以指定另外一個目錄
Options----------------此屬性用于設(shè)置“打開”對話框的選項
Title------------------此屬性用于設(shè)置對話框的標題
(1)DefaultExt屬性
此屬性用于指定一個默認的擴展名。如果用戶在對話框中選擇的文件沒有帶擴展名,就用這個屬性作為文件的擴展名,如果不需要默認擴展名,應當把這個屬性設(shè)為空。
(2)FileName屬性
FileName屬性可以指定一個文件名。在打開對話框時,這個文件名出現(xiàn)在對話框的“文件名”框中。在對話框中,可以指定其他文件名,如果單擊“OK”按鈕,對話框?qū)㈥P(guān)閉,并且FileName屬性變成用戶新指定的文件名,包括文件的路徑和擴展名。FileName屬性也可以指定一個不存在的文件名,表示將打開一個新文件。
(3)Files屬性
如果Options屬性包含ofAllowMultiSelect元素,表示允許一次選擇多個文件,這些文件可以通過Files屬性訪問。Files屬性是一個TStrings對象。
(4)Filter屬性
此屬性用于設(shè)置文件過濾器,讓對話框只列出特定類型的文件。在設(shè)計時,可以單擊 Filter屬性旁的“...”按鈕,打開“Filter Editor”對話框,在“Filter Name”欄鍵入關(guān)于過濾器的簡短說明,在“Filter”欄鍵入通配符,例如通配符“*.txt”表示讓對話框只顯示擴展名為.txt的文件。當然,用戶可以在“打開”對話框的“文件名”框內(nèi)直接輸入一個擴展名不為 .txt文件名的文件。同時,F(xiàn)ilter屬性可以設(shè)置多個過濾器,這些過濾器將顯示在“打開”對話框的“文件類型”組合框內(nèi)。
(5)FilterIndex屬性
如果有多個過濾器,這個屬性用于指定哪個過濾器是默認過濾器。默認過濾器將顯示在“打開”對話框的“文件類型”組合框的編輯框中。注意,過濾器的序號從1開始。
(6)InitialDir屬性
此屬性用于設(shè)置打開對話框第1次打開時的默認打開目錄。例如要將打開對話框的默認打開目錄設(shè)置為C盤根目錄,就可以將InitialDir屬性設(shè)置為“C:/”。
(7)Options屬性
此屬性用于設(shè)置“打開”對話框的選項。它設(shè)定了如下16個用戶可選值。
. ofAllowMultiSelect:用戶可以一次選擇多個文件。
. ofCreatePrompt:如果用戶輸入的文件名是不存在的,當用戶單擊“OK”按鈕時,將顯示一個提示框,詢問要不要建立這個文件。
. ofExtensionDifferent:如果用戶所選文件的擴展名與DefaultExt屬性設(shè)置的默認擴展名不同,就包含這個元素。
. ofFileMustExist:用戶輸入的文件名必須是已存在的。
. ofHideReadOnly:對話框中不顯示“以只讀方式打開”復選框。
. ofNoChangeDir:即使用戶在對話框中選擇了其他目錄,但對程序來說,當前目錄總是對話框第一次打開時的目錄。
. ofNoDereferenceLinks:如果用戶選擇的是快捷方式文件(.lnk),F(xiàn)ileName屬性是快捷方式文件本身,而不是快捷文件指向的文件。
. ofNoLongNames:不允許長文件名。
. ofNoReadOnlyReturn:不允許用戶選擇只讀的文件,否則將顯示一個警告框。
. ofNoTestFileCreate:保存文件時不進行寫保護、磁盤滿、驅(qū)動器門打開等檢查。
. ofNoValidate:不對文件名中的字符進行合法性檢查。
. ofOverwritePrompt:用于“另存為”對話框中,如果用戶指定的文件名已存在,將顯示一個警告框用來讓用戶選擇是否要覆蓋已有的文件。
. ofPathMustExist:用戶輸入的路徑必須是已經(jīng)存在的,否則將顯示警告。
. ofReadOnly:選中“以只讀方式打開”復選框。
. ofShareAware:對話框不理會所有的共享錯誤。
. ofShowHelp:對話框中將顯示“幫助”按鈕。
(8)Title屬性
此屬性用于設(shè)置對話框顯示時的窗口標題。例如大多數(shù)據(jù)庫程序都有還原數(shù)據(jù)庫功能,其打開對話框的標題就可以設(shè)置為“打開還原文件”。
3.TOpenDialog組件的重要事件
OnCanClose----------當用戶試圖關(guān)閉對話框時將觸發(fā)這個事件
OnFolderChange------當用戶在對話框中改變、擴展或折疊了一個目錄(也叫文件夾),將觸發(fā)該事件
OnSelectionChange---當用戶打開對話框、選擇某個目錄或文件、選擇另一個過濾器、建立一個新的目錄時將觸
發(fā)這個事件
OnShow--------------當對話框調(diào)用Execute方法、并且對話框還未顯示時觸發(fā)此事件
OnTypeChange--------當用戶在對話框中選擇了另一個過濾器時,將發(fā)生這個事件
(1)OnCanClose事件
當用戶試圖關(guān)閉對話框時將觸發(fā)這個事件。這樣就有機會對用戶輸入的文件名進行檢查。如果文件名不符合要求,就把CanClose參數(shù)設(shè)為False,表示不允許關(guān)閉對話框。
(2)OnFolderChange事件
當用戶在對話框中改變、擴展或折疊了一個目錄(文件夾),將觸發(fā)該事件。在程序中可以利用此事件獲取用戶瀏覽過的目錄。
(3)OnSelectionChange事件
當用戶打開對話框、選擇某個目錄或文件、選擇另一個過濾器或建立一個新的目錄時將觸發(fā)這個事件。
OnSelectionChange事件與OnFolderChange事件相比觸發(fā)的概率比較高。
(4)OnTypeChange事件
當用戶在對話框中選擇了另一個過濾器時,將觸發(fā)這個事件。在此事件中結(jié)合FilterIndex屬性的使用,可以獲取當前對話。
4.TOpenDialog組件的重要方法
TOpenDialog組件最重要的方法就是Execute方法。此方法能夠顯示對話框,以供用戶設(shè)置文件路徑及文件名。其使用方法如下:
OpenDialog1.Execute;