使用VisualFoxPro的CommonDialogs控件

字號:

第三節(jié) Common Dialogs 控件
    如果你用過 FoxPro GETFILE() 和 PUTFILE() 函數(shù)。你可能對它們多少有些遺憾:
    沒有辦法改變對話框的標(biāo)題。
    PUTFILE() 函數(shù)總是詢問用戶是否想復(fù)蓋已存在的文件。
    使用兩個函數(shù)時。指定的路徑必須存在,否則將顯示一條錯誤信息。
    為了得到更大的靈活性。你需要使用隨 VFP 5 同時發(fā)布的 Common Dialogs 控件(在 \WINDOWS\SYSTEM 目錄下的 COMDLG32.OCX 中)。該控件稱為 "Common dialogs" 是因?yàn)樗梢燥@示文件。顏色。字體和打印對話框。所有這些對話框提供了比 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() 顯示打印機(jī)對話框;
    ShowFont() 顯示字體對話框;
    ShowColor() 顯示顏色對話框。
    在本章中我們只使用了前兩個方法。
    屬性
    以下是最常用的 Common Dialogs 控件的文件對話框的屬性 (一些屬性也用于字體,顏色和打印機(jī)對話框);其它較少使用的屬性的信息參見它們的幫助文件:
    CancelError:如果想在用戶選擇取消時生成一個錯誤(錯誤號1429),設(shè)置該屬性為 .T.??梢栽诳丶?Error 方法中溫和地捕捉并處理錯誤。這是必須的,因?yàn)樵陬愃频?VFP 函數(shù)返回一個特殊值時(通常是一個空格) 來指明用戶選擇了取消,但這些對話框不會返回值。
    DefaultExt:如果用戶沒有輸入擴(kuò)展名,該擴(kuò)展名自動添加到用戶輸入的文件名后面。
    DialogTitle:對話框窗口標(biāo)題。
    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ù)庫文件") 和這些文件的擴(kuò)展名描述(如 "*.DBC")。說明和描述以豎線( | )分開??梢杂枚鄠€豎線分隔的方式提供一個以上的 filter。如,"數(shù)據(jù)庫文件 | *.DBC | 表 | *.DBF | 全部文件 | *.*"。
    FilterIndex:使用的默認(rèn) filter 。第一個 Filter 屬性是 1。
    Flags:該屬性控制對話框的外觀和行為。可使用的值見后。
    HelpFile:當(dāng)用戶單擊對話框中的幫助按鈕時使用的幫助文件的名字。
    HelpCommand:該屬性的最常用設(shè)置是(其它設(shè)置參見該控件的幫助文件) 0x1 (使用 HelpContextID),0x101 (使用關(guān)鍵字),或 0x105 (使用部分關(guān)鍵字)。注意:0x 符號,是 VFP 5 的新功能,指明一個十六進(jìn)制值。
    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。
    因?yàn)楦鱾€對話框的設(shè)置值相當(dāng)神秘,我創(chuàng)建了一個叫做 COMMDLG.H 的包含文件用于定義各個不同的值的常數(shù)。要設(shè)置控件的 Flags 屬性,簡單的添加你想組給的設(shè)置值即可。
    例如,要顯示幫助按鈕和復(fù)蓋警告,可以這樣設(shè)置:
    This.oCommonDialog.Flags = cnFILEDLG_OVERWRITE + cnFILEDLG_SHOWHELP