含有類模塊的程序

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

expandtri全部顯示

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

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

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

在類模塊中定義過程以后,就可以通過新建類實例來新建對象。若要新建類實例,需要先使用該類定義的類型聲明一個變量。例如,如果類名為 ABasicClass,則可以通過下列方式為其新建實例:

Dim abc As New ABasicClass

當運行包含該聲明的代碼時,Visual Basic 會新建一個實例,然后就可以通過使用變量 abc 來應用其方法和屬性。例如,如果已經(jīng)自定義了一個名為 ListNames 的方法,則可以通過以下代碼應用該方法:

abc.ListNames

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

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

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

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

Dim frm As Form

DoCmd.OpenForm "Employees"

Set frm = Forms!Employees

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

Form_Employees.Visible = True

Form_Employees.Caption = "New Employees"

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

如果“Employees”窗體在“設計”視圖中打開,那么試圖運行該代碼時,Microsoft Access 會產(chǎn)生運行時錯誤。窗體只能在“窗體”視圖中打開。

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

創(chuàng)建窗體的多個非默認實例

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

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

Dim frm As New Form_Employees

該窗體的非默認實例是不可見的,除非明確地設置其 Visible 屬性。

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

您所設置的任何屬性都將影響窗體類的該實例,但不會與窗體一起保存。此外,如果在“設計”視圖中打開窗體,就無法新建窗體類的實例。

窗體類的非默認實例不能通過 Forms 集合中的名稱來引用,而只能通過索引編號引用,因為可以創(chuàng)建窗體的多個非默認實例,并且每個實例都具相同的名稱,因而在 Forms 集合中可以有多個同名的窗體,只有用索引編號才能區(qū)分它們。