Common Dialogs 控件
如果你用過 FoxPro GETFILE() 和 PUTFILE() 函數(shù)。你可能對它們多少有些遺憾:
- 沒有辦法改變對話框的標題。
- PUTFILE() 函數(shù)總是詢問用戶是否想復(fù)蓋已存在的文件。
- 使用兩個函數(shù)時。指定的路徑必須存在,否則將顯示一條錯誤信息。
為了得到更大的靈活性。你需要使用隨 VFP 5 同時發(fā)布的 Common Dialogs 控件(在 \WINDOWS\SYSTEM 目錄下的 COMDLG32.OCX 中)。該控件稱為 "Common dialogs" 是因為它可以顯示文件。顏色。字體和打印對話框。所有這些對話框提供了比 VFP 的相同功能更大的靈活性。例如。當(dāng)在 VFP 中使用 GETFONT() 和 GETCOLOR() 函數(shù)時。你控制不了所有的東西,如非 TrueType 字體是否可用或用戶是否可自定義顏色。Common Dialog 中的字體和顏色對話框就有這種功能。
由于時間限制。在本章中我們只集中討論文件對話框。如果你想知道關(guān)于顏色,字體和打印對話框的更多信息。請參閱 ActiveX 控件的幫助文件。注意 Common Dialogs 控件沒有出現(xiàn)在幫助文件的目錄頁中。但可以在選定控件后按下 F1 鍵或在幫助索引中搜索 "Common Dialog" 來找到它們。 方法
Common Dialogs 控件有五個方法,它們都沒有參數(shù):
- ShowOpen() 顯示打開文件對話框;
- ShowSave() 顯示保存文件對話框;
- ShowPrinter() 顯示打印機對話框;
- ShowFont() 顯示字體對話框;
- ShowColor() 顯示顏色對話框。
在本章中我們只使用了前兩個方法。 屬性
以下是最常用的 Common Dialogs 控件的文件對話框的屬性 (一些屬性也用于字體,顏色和打印機對話框);其它較少使用的屬性的信息參見它們的幫助文件:
- CancelError:如果想在用戶選擇取消時生成一個錯誤(錯誤號1429),設(shè)置該屬性為 .T.??梢栽诳丶?Error 方法中溫和地捕捉并處理錯誤。這是必須的,因為在類似的 VFP 函數(shù)返回一個特殊值時(通常是一個空格) 來指明用戶選擇了取消,但這些對話框不會返回值。
- DefaultExt:如果用戶沒有輸入擴展名,該擴展名自動添加到用戶輸入的文件名后面。
- DialogTitle:對話框窗口標題。
- FileName:用于文件名的初值,添加它的內(nèi)容到從對話框返回的用戶輸入值上。如果不允許選擇多個文件,或雖允許但用戶只選擇了一個文件,F(xiàn)ileName 包含了選定文件的完整的路徑和文件名。如果允許選擇多個文件且用戶選擇了一個以上的文件,F(xiàn)ileName 在選定文件列表前,含有以分隔符與選定文件分開的,選定文件的路徑(多個文件之間以分隔符分開,但不帶路徑)。在 Windows 95 和 NT 4 中分隔符是CHR(0),在 Windows NT 3.51 中分隔符是一個空格。例如,如果用戶從 VFP 的示例數(shù)據(jù)目錄中選擇了三個表,F(xiàn)ileName 的內(nèi)容可能是 C:\VFP5\SAMPLES\DATA <分隔符> CUSTOMER.DBF <分隔符> ORDERS.DBF <分隔符> ORDITEMS.DBF"。關(guān)于分解 FileName 為路徑和不同的文件名,請參見 SFFileDialog 類的 SetProperties() 方法(稍后講述)。
- FileTitle:若不允許選擇多個文件,返回不含路徑的選定文件的名字.否則返回值為空。
- Filter:可接受文件說明。Filter 有兩個部分:用戶所見到的說明(如,"數(shù)據(jù)庫文件") 和這些文件的擴展名描述(如 "*.DBC")。說明和描述以豎線( | )分開??梢杂枚鄠€豎線分隔的方式提供一個以上的 filter。如,"數(shù)據(jù)庫文件 | *.DBC | 表 | *.DBF | 全部文件 | *.*"。
- FilterIndex:使用的默認 filter 。第一個 Filter 屬性是 1。
- Flags:該屬性控制對話框的外觀和行為??墒褂玫闹狄姾蟆?
- HelpFile:當(dāng)用戶單擊對話框中的幫助按鈕時使用的幫助文件的名字。
- HelpCommand:該屬性的最常用設(shè)置是(其它設(shè)置參見該控件的幫助文件) 0x1 (使用 HelpContextID),0x101 (使用關(guān)鍵字),或 0x105 (使用部分關(guān)鍵字)。注意:0x 符號,是 VFP 5 的新功能,指明一個十六進制值。
- HelpContext:當(dāng) HelpCommand 的值設(shè)置為 0x1 時,要顯示的幫助文件中的主題的 HelpContextID。
- HelpKey:當(dāng) HelpCommand 的值設(shè)置為 0x101 或 0x105 時,要在幫助文件中查找的關(guān)鍵字。
- InitDir:對話框要顯示的初始目錄。
注意幫助中提到了另外兩個屬性,Path 和 Drive,但它們并不存在。
Flags 屬性的行動與 VFP 的 MESSAGEBOX() 的 DialogBoxType 參數(shù)相似;可以按你的需要添加多個不同的值來組合它的外觀和行為。不幸的是,即使 flag 對于多種類型的對話框具有相同的意思,但它可能有不同的值。
例如,顯示幫助按鈕 flag 對于顏色對話框是 0x8 而對于文件對話框是 0x10。
因為各個對話框的設(shè)置值相當(dāng)神秘,我創(chuàng)建了一個叫做 COMMDLG.H 的包含文件用于定義各個不同的值的常數(shù)。要設(shè)置控件的 Flags 屬性,簡單的添加你想組給的設(shè)置值即可。
例如,要顯示幫助按鈕和復(fù)蓋警告,可以這樣設(shè)置:
This.oCommonDialog.Flags = cnFILEDLG_OVERWRITE cnFILEDLG_SHOWHELP
以下是最常用的 Flags 選擇(其它的參見幫助文件):
- Allow Multiple File Selection (0x200;cnFILEDLG_MULTIPLE 在 COMMDLG.H 文件中):允許選擇多個文件。如果開啟了這一開關(guān),對話框的出現(xiàn)與一般的 Windows 95 對話框相當(dāng)不同,除非你也添加了 0x80000 (cnFILEDLG_EXPLORER) 到 Flags 中;注意幫助文件中的該值是錯誤的 0x8000
|