也可以在“類設(shè)計(jì)器”或“類瀏覽器”中打開(kāi)一個(gè)基本類,查看其結(jié)構(gòu)和代碼。這是一種極好的方法,不但可以更深入理解 Visual FoxPro 編程,還可以理解基本類的工作機(jī)理。
以下內(nèi)容可指導(dǎo)用戶如何將 Visual FoxPro 基本類添加到應(yīng)用程序中。
在將一個(gè)基本類添加到應(yīng)用程序之前,用戶需要了解該基本類的 Visual FoxPro 基類。某些基本類只能在表單上用作可視對(duì)象,而其他基本類是非可視的,可以通過(guò)編程運(yùn)行,而不必放在表單上。Visual FoxPro 基本類文檔描述了每個(gè)基本類的基類,用戶可以用來(lái)確定某個(gè)基本類是否可以添加到表單上、或在應(yīng)用程序中通過(guò)編程運(yùn)行。請(qǐng)注意,在“組件管理庫(kù)”中,可以在一個(gè)基本類上單擊鼠標(biāo)右鍵來(lái)顯示一個(gè)快捷菜單,然后從快捷菜單中選取“屬性”命令,并選取“類”選項(xiàng)卡顯示這個(gè)基類。
下表列出了 Visual FoxPro 的基類,并說(shuō)明如何將其添加到用戶應(yīng)用程序中。
種類 A –可以放落到表單上的基類。 | 種類 B –可以放落到表單上或在應(yīng)用程序中通過(guò)編程運(yùn)行的基類。 | 種類 C – 只能在應(yīng)用程序中通過(guò)編程運(yùn)行的基類 |
Checkbox | Custom | Form |
Combobox | Container | Formset |
命令button | Timer | Toolbar |
命令group | ProjectHook | |
Editbox | ActiveDoc | |
Grid | ||
Hyperlink | ||
Image | ||
Label | ||
Line | ||
Listbox | ||
OLE控件 | ||
Optionbutton | ||
Optiongroup | ||
Shape | ||
Spinner | ||
Textbox |
通常用戶需要經(jīng)常將基本類添加到表單中??梢詮?#8220;組件管理庫(kù)”、“類瀏覽器”、“項(xiàng)目管理器”和表單控件工具欄將基本類拖動(dòng)到表單上。
注釋 可以選中一個(gè)已經(jīng)添加到表單上的基本類,然后從“工具”菜單中選擇“類瀏覽器”命令來(lái)顯示該基本類的詳細(xì)信息。
組件管理庫(kù) – “組件管理庫(kù)”提供了將基本類添加到表單的最簡(jiǎn)便的方法。對(duì)于種類為 A 和 B 的基類,用戶可以從“組件管理庫(kù)”拖動(dòng)基本類,然后將其放落到表單上。在“組件管理庫(kù)”中,也可以在一個(gè)基本類上單擊鼠標(biāo)右鍵顯示一個(gè)快捷菜單,然后選擇“添加至表單”命令,將該基本類添加到表單上。
有些基本類具有相關(guān)的生成器,這些生成器可自動(dòng)啟動(dòng)并向用戶提示該基本類的詳細(xì)信息。
類瀏覽器 – 用戶可以使用瀏覽器左上角的拖動(dòng)圖標(biāo),將對(duì)應(yīng)于 A 和 B 基類的基本類從“類瀏覽器”拖動(dòng)到表單上。方法是:在“類瀏覽器”中選中一個(gè)基本類,并在瀏覽器左上角單擊該基本類的圖標(biāo),然后將該圖標(biāo)拖動(dòng)到表單上;在表單上,在該基本類出現(xiàn)的地方釋放鼠標(biāo)按鈕。
從“類瀏覽器”中將基本類拖動(dòng)到表單上,將不啟動(dòng)相關(guān)的生成器。但可以在將基本類拖動(dòng)到表單上后,啟動(dòng)生成器。方法是:選中表單上的基本類,單擊鼠標(biāo)右鍵顯示快捷菜單,從快捷菜單上選取“生成器”命令啟動(dòng)生成器。
項(xiàng)目管理器 – 可以從“項(xiàng)目管理器”拖動(dòng)對(duì)應(yīng)于種類 A 和 B 基類的基本類,并將其放落到表單上。
從“項(xiàng)目管理器”中將基本類拖動(dòng)到表單上,將不啟動(dòng)相關(guān)的生成器。但可以在將基本類拖動(dòng)到表單上后,啟動(dòng)生成器。方法是:選中基本類,單擊鼠標(biāo)右鍵顯示快捷菜單,從快捷菜單上選取“生成器”命令啟動(dòng)生成器。
表單控件工具欄 – 添加到表單控件工具欄上的對(duì)應(yīng)于種類 A 和 B 基類的基本類,可以從工具欄添加到表單上。
如果沒(méi)有啟用“生成器鎖定”,從表單控件工具欄放落基本類可能會(huì)啟動(dòng)相關(guān)的生成器。如果啟用“生成器鎖定”,則可在將基本類添加到表單上后啟動(dòng)生成器。方法是:選中基本類,單擊鼠標(biāo)右鍵顯示快捷菜單,從快捷菜單上選取“生成器”命令啟動(dòng)生成器。
在將包含基本類的表單添加到 Visual FoxPro 項(xiàng)目中時(shí),“項(xiàng)目管理器”自動(dòng)地將包含該基本類的可視類庫(kù)添加到項(xiàng)目中。但有時(shí)需要人工地將基本類添加到項(xiàng)目中,如當(dāng)用戶應(yīng)用程序需運(yùn)行種類 C 對(duì)應(yīng)的基本類時(shí),必須人工地將基本類添加到項(xiàng)目中。
可以使用下列方法之一將 Visual FoxPro 基本類添加到項(xiàng)目中:
可以從“組件管理庫(kù)”將基本類拖動(dòng)到該項(xiàng)目中、或在“組件管理庫(kù)”中,在基本類上單擊鼠標(biāo)右鍵顯示快捷菜單,然后選擇“添加至項(xiàng)目”命令,實(shí)現(xiàn)將基本類添加到項(xiàng)目中。在將基本類添加到項(xiàng)目中時(shí),將顯示“向項(xiàng)目添加類”對(duì)話框,有下列選項(xiàng):
向項(xiàng)目添加類
選擇本選項(xiàng)可以將基本類及其 .vcx 類庫(kù)添加到項(xiàng)目中。對(duì)于放落到表單上的類(種類 A 和 B),這些操作將自動(dòng)完成。對(duì)于種類 B 和 C 的某些類,如果打算在應(yīng)用程序中通過(guò)編程對(duì)其進(jìn)行調(diào)用,需要選擇本選項(xiàng)。
從選定的類創(chuàng)建新類
選擇本選項(xiàng)可以根據(jù)希望添加到項(xiàng)目的基本類創(chuàng)建一個(gè)新的子類。通常情況下,通過(guò)添加附加的程序代碼,可以改進(jìn)原始基本類的功能。
從選定的類創(chuàng)建新表單
對(duì)于基類是 Form 的基本類(如,_dialogs.vcx 中的基本類),可以選擇本選項(xiàng)來(lái)根據(jù)基本類創(chuàng)建一個(gè)新的表單,改進(jìn)初始基本類的功能。
可以使用 Windows“資源管理器”來(lái)訪問(wèn)將要添加到項(xiàng)目中的類。
若要使用 Windows“資源管理器”添加基本類
該可視類庫(kù)將被添加到“項(xiàng)目管理器”的“類庫(kù)”數(shù)據(jù)項(xiàng)中。
在“項(xiàng)目管理器”中,可以使用“添加”按鈕將類添加到項(xiàng)目中。
若要在“項(xiàng)目管理器”中添加基本類
在很多情況下,無(wú)須通過(guò)額外的編程,基本類和應(yīng)用程序即可一起工作。但對(duì)于某些基本類(對(duì)于種類 B 和種類 C 中的非可視基類),可能需要提供附加的程序代碼。
例如,基本類經(jīng)常為基于種類 B 的 Custom 類,這些基本類需要附加的編程。這些非可視類經(jīng)常用來(lái)完成一些公用任務(wù),如檢查 Windows 注冊(cè)表中的信息、處理環(huán)境設(shè)置、管理應(yīng)用程序錯(cuò)誤以及利用其他應(yīng)用程序的自動(dòng)服務(wù)(如使用 Microsoft Word 進(jìn)行郵件合并)等。
可以將這些非可視類放落到表單上,但除此之外,還需要做一些額外的工作,才能使基本類和應(yīng)用程序一起工作。在某些情況下,在將基本類放落到表單上時(shí),將啟動(dòng)生成器。
下面的示例演示了如何在應(yīng)用程序中使用非可視基本類的程序代碼:
WITH THISFORM._FILEVERSION1 .cFileName = HOME( )+ 'VFP6.EXE' .GetVersion( ) .DisplayVersion( ) ENDWITH
可以將一個(gè)非可視類合并到應(yīng)用程序中,而不必將其放落到表單上,但必須將其包含在用于創(chuàng)建應(yīng)用程序的項(xiàng)目中。下列代碼演示了如何運(yùn)行相同的“文件版本”基本類,但不將該類放落到表單上。
LOCAL oFileVersionoFileVersion = NewObject(_fileversion, _utilities.vcx)WITH oFileVersion.cFileName = HOME( )+ 'VFP6.EXE'.GetVersion( ).DisplayVersion( )ENDWITH
注釋 本示例假設(shè)這段代碼可以定位 _utilities.vcx 類庫(kù),或這段代碼位于一個(gè)連編時(shí)包含 _utilities.vcx 的 .app 文件中。
在使用非可視基本類時(shí),用戶需要了解如何以及何時(shí)在應(yīng)用程序中使用該類,以便正確地設(shè)置其范圍。如果只有一個(gè)表單使用該類,只需將其拖動(dòng)到對(duì)應(yīng)的表單上。但是,如果有很多表單使用該類,或者由應(yīng)用程序全域使用,則該基本類在應(yīng)用程序中應(yīng)該有一個(gè)全域范圍,以便在整個(gè)應(yīng)用程序中都可以對(duì)其進(jìn)行訪問(wèn)。此外,全域范圍也可能提高性能。
也可以通過(guò)編程向應(yīng)用程序中添加可視基本類,例如基類是表單的基本類。下列的示例為一段代碼,可以添加到應(yīng)用程序中,顯示一個(gè)“關(guān)于框”對(duì)話框(Aboutbox dialog)。
LOCAL oAboutoAbout = NewObject(_aboutbox,_dialogs.vcx)oAbout.Show( )
用戶可以為每個(gè)應(yīng)用程序創(chuàng)建“對(duì)話框”基本類的子類,這樣可以定制應(yīng)用程序?qū)υ捒蛑械膬?nèi)容。下面示例演示了如何創(chuàng)建 Aboutbox 基本類的子類:
-或-
從“組件管理庫(kù)”中將“運(yùn)行表單”按鈕(Run Form button)類(Foundation classes\Buttons 文件夾)拖放到表單上。啟動(dòng)生成器時(shí),指定需要執(zhí)行表單名。
如果使用 Visual FoxPro 6.0 的應(yīng)用程序框架,應(yīng)用程序生成器將自動(dòng)管理表單( .scx 和 .vcx 表單類)的添加操作。新的應(yīng)用程序向?qū)Щ?#8220;組件管理庫(kù)”的“新應(yīng)用程序”數(shù)據(jù)項(xiàng)將在創(chuàng)建的項(xiàng)目中安裝這個(gè)框架。應(yīng)用程序生成器直接與該框架交互,使用戶可以指定如何以及在何處啟動(dòng)表單。
通過(guò)使用一個(gè)由“應(yīng)用程序向?qū)?#8221;、“應(yīng)用程序生成器”和“組件管理庫(kù)”生成的框架,用戶可以得到種類豐富的工具,只需少量的代碼即可創(chuàng)建整個(gè)應(yīng)用程序。
Visual FoxPro 的基本類及其屬性和方法程序使用下列命名約定。
大多數(shù)基本類是 _base.vcx 可視類庫(kù)中的類的子類,可以在 \Ffc\ 文件夾找到這些基本類。這些類的命名約定反映了所使用的基類,如在 _base.vcx 中 Custom 類的子類稱為 _Custom。在 _base.vcx 中,在每個(gè)類名前都帶有下劃線( _ )。
有些類庫(kù)不包含根據(jù) _base.vcx 創(chuàng)建的子類,因?yàn)檫@些類與其他 Visual FoxPro 組件共享,如向?qū)Ш蜕善?。這些類包含在沒(méi)有下劃線的類庫(kù)中,例如 Registry.vcx。
方法程序的名稱經(jīng)?;谄鋭?dòng)作名,如 RunForm。如果名稱包含幾個(gè)單詞,如 RunForm,則大寫(xiě)字母將反映這一點(diǎn)。屬性名通常在前面有一個(gè)小寫(xiě)字母,用來(lái)反映特定屬性的數(shù)據(jù)類型,如 cFileName 表明該屬性是一個(gè)字符類型。另外,屬性的默認(rèn)值也設(shè)置為相應(yīng)的數(shù)據(jù)類型,如邏輯型屬性可以初始化為“假”(.F.),而數(shù)值型屬性可以初始化為 0。
早期版本的 Visual FoxPro 類的屬性不受這些屬性命名約定的限制,并且保持原來(lái)的名稱,以避免與引用這些屬性的用戶代碼產(chǎn)生兼容性沖突。
用戶可以改進(jìn)或修改 Visual FoxPro 基本類,以滿足應(yīng)用程序的需要。但是,我們建議您不要修改基本類本身,因?yàn)榛绢惪赡軙?huì)周期性地更新,并帶有新的功能。
由于提供了源代碼,這樣用戶可以創(chuàng)建任何基本類的子類,來(lái)覆蓋或改進(jìn)屬性和方法程序。當(dāng)特定的基本類在不同的應(yīng)用程序中有不同的行為時(shí),可以選擇創(chuàng)建子類。
如果需要對(duì) Visual FoxPro 基本類添加全域性的更改時(shí),可以修改 _base.vcx。既然基本類是根據(jù) _base.vcx 創(chuàng)建的子類,對(duì)該類庫(kù)的更改將自動(dòng)反映到基本類中。_base.vcx 中的所有類都提供了一組普通的方法程序和屬性。但如果 _base.vcx 中的類不能向應(yīng)用程序添加所需的行為時(shí),可以更改這些類(這與建議不要更改的基本類不同)。
但是,如果需要從用戶自定義的基類(而不是基于當(dāng)前使用的 Visual FoxPro 基類)繼承 _base.vcx 中類的行為,應(yīng)該重新定義這些類,而不要更改 _base.vcx。如果已經(jīng)有了一個(gè)基于 Visual FoxPro 基類的自定義類庫(kù),可以重新定義 _base.vcx 中的類,以便從自定義類中繼承其行為。這樣,當(dāng)組件使用 _FoundationClasses 時(shí),組件也將自定義類中繼承行為。可使用類瀏覽器重新定義特定類的父類。
如果將整個(gè) _base.vcx 中的類替換為用戶自定義類,請(qǐng)確保類名必須相同,否則基本類將有丟失的鏈接。
聯(lián)系客服