含有類模塊的程序

此頁(yè)沒(méi)有內(nèi)容條目
內(nèi)容

expandtri全部顯示

Microsoft Access 中有兩種類型的模塊:標(biāo)準(zhǔn)模塊類模塊。在 Microsoft Access 95 中,類模塊只存在于與窗體或報(bào)表的關(guān)聯(lián)中。而在 Microsoft Access 97 中,它們也存在于“數(shù)據(jù)庫(kù)”窗口的“模塊”選項(xiàng)卡上。

用類模塊創(chuàng)建自定義對(duì)象

使用類模塊可以創(chuàng)建自定義對(duì)象的定義。保存類模塊時(shí)使用的名稱成為自定義對(duì)象的名稱。而類模塊中定義的公用 SubFunction 過(guò)程則成為對(duì)象的自定義方法;公用 Property Let、Property GetProperty Set 過(guò)程成為對(duì)象的屬性。

在類模塊中定義過(guò)程以后,就可以通過(guò)新建類實(shí)例來(lái)新建對(duì)象。若要新建類實(shí)例,需要先使用該類定義的類型聲明一個(gè)變量。例如,如果類名為 ABasicClass,則可以通過(guò)下列方式為其新建實(shí)例:

Dim abc As New ABasicClass

當(dāng)運(yùn)行包含該聲明的代碼時(shí),Visual Basic 會(huì)新建一個(gè)實(shí)例,然后就可以通過(guò)使用變量 abc 來(lái)應(yīng)用其方法和屬性。例如,如果已經(jīng)自定義了一個(gè)名為 ListNames 的方法,則可以通過(guò)以下代碼應(yīng)用該方法:

abc.ListNames

Microsoft Access 95 的新增功能:創(chuàng)建窗體類的默認(rèn)實(shí)例

當(dāng)在“窗體”視圖中打開(kāi)窗體時(shí),不論是通過(guò)用戶界面還是從 Visual Basic 中,都可以創(chuàng)建該窗體類模塊的實(shí)例。換句話說(shuō),即為該對(duì)象分配了一定的內(nèi)存空間。然后可以像對(duì)任何內(nèi)置對(duì)象那樣從代碼中調(diào)用其方法、設(shè)置或返回其屬性。在“打印預(yù)覽”中打開(kāi)報(bào)表時(shí)也是這樣的。

在 Visual Basic 代碼中引用窗體時(shí),通常使用窗體類的默認(rèn)實(shí)例。每個(gè)窗體的類只有一個(gè)默認(rèn)實(shí)例。也可以從 Visual Basic 中為同一窗體的類創(chuàng)建多個(gè)實(shí)例。當(dāng)創(chuàng)建窗體類的多個(gè)實(shí)例時(shí),就創(chuàng)建了非默認(rèn)實(shí)例。

創(chuàng)建窗體的默認(rèn)實(shí)例有四種方法??梢酝ㄟ^(guò)以下方法來(lái)打開(kāi)已有窗體:使用用戶界面、執(zhí)行 DoCmd 對(duì)象的 OpenForm 方法、調(diào)用 CreateForm 方法并將新窗體切換到“窗體”視圖、使用 Visual Basic 創(chuàng)建一個(gè) Form 類型的變量來(lái)引用默認(rèn)實(shí)例。下面的示例將打開(kāi)“Employees”窗體,并將 Form 對(duì)象變量指向該窗體:

Dim frm As Form

DoCmd.OpenForm "Employees"

Set frm = Forms!Employees

Microsoft Access 還提供一種快捷方式,只需一步就可以打開(kāi)一個(gè)窗體,并引用它的方法或?qū)傩曰蚴且迷摯绑w上一個(gè)控件的方法或?qū)傩浴?duì)窗體的類模塊的引用如下例所示:

Form_Employees.Visible = True

Form_Employees.Caption = "New Employees"

當(dāng)運(yùn)行該代碼時(shí),如果“Employees”窗體尚未打開(kāi),Microsoft Access 會(huì)先在“窗體”視圖中打開(kāi)“Employees”窗體,然后將窗體的標(biāo)題設(shè)為“New Employees”。只有明確地將窗體的 Visible 屬性設(shè)為 True (-1),窗體才可見(jiàn)。當(dāng)調(diào)用該代碼的過(guò)程執(zhí)行結(jié)束,窗體的該實(shí)例將被破壞,也就是說(shuō)會(huì)關(guān)閉窗體。

如果“Employees”窗體在“設(shè)計(jì)”視圖中打開(kāi),那么試圖運(yùn)行該代碼時(shí),Microsoft Access 會(huì)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤。窗體只能在“窗體”視圖中打開(kāi)。

如果使用這種語(yǔ)法在“窗體”視圖中對(duì)窗體屬性或其中一個(gè)控件的屬性進(jìn)行更改,則在窗體實(shí)例被破壞時(shí)這些更改將會(huì)丟失。在對(duì)“窗體”視圖中的窗體更改屬性設(shè)置時(shí)總是這樣。必須在“設(shè)計(jì)”視圖中更改窗體屬性,然后將更改隨窗體一起保存。

創(chuàng)建窗體的多個(gè)非默認(rèn)實(shí)例

如果要同時(shí)顯示多個(gè)窗體實(shí)例,可以創(chuàng)建多個(gè)窗體類的非默認(rèn)實(shí)例。例如,要同時(shí)顯示雇員和雇員主管的記錄,可以創(chuàng)建兩個(gè)“Employees”窗體類的實(shí)例,一個(gè)用來(lái)顯示雇員記錄,另一個(gè)顯示主管記錄。

若要從 Visual Basic 中創(chuàng)建窗體類的非默認(rèn)實(shí)例,必須先聲明一個(gè)以窗體的類模塊名稱為類型的變量。必須在變量聲明中包含 New 關(guān)鍵字。例如,下面的代碼將新建一個(gè)“Employees”窗體的實(shí)例,然后將它分配給一個(gè) Form 類型的變量:

Dim frm As New Form_Employees

該窗體的非默認(rèn)實(shí)例是不可見(jiàn)的,除非明確地設(shè)置其 Visible 屬性。

當(dāng)創(chuàng)建該實(shí)例的程序執(zhí)行結(jié)束,該實(shí)例就會(huì)從內(nèi)存中刪除,除非已將表示它的變量聲明為模塊級(jí)變量。因?yàn)槟K級(jí)變量將保留自己的值,直到使用“運(yùn)行”菜單上的“重新設(shè)置”命令或工具欄上的“重新設(shè)置”按鈕來(lái)重新設(shè)置它們?yōu)橹?,所以,如果變量已聲明為模塊級(jí)變量,窗體就會(huì)一直保持打開(kāi)狀態(tài)。

您所設(shè)置的任何屬性都將影響窗體類的該實(shí)例,但不會(huì)與窗體一起保存。此外,如果在“設(shè)計(jì)”視圖中打開(kāi)窗體,就無(wú)法新建窗體類的實(shí)例。

窗體類的非默認(rèn)實(shí)例不能通過(guò) Forms 集合中的名稱來(lái)引用,而只能通過(guò)索引編號(hào)引用,因?yàn)榭梢詣?chuàng)建窗體的多個(gè)非默認(rèn)實(shí)例,并且每個(gè)實(shí)例都具相同的名稱,因而在 Forms 集合中可以有多個(gè)同名的窗體,只有用索引編號(hào)才能區(qū)分它們。