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