Úvod.
Minulý týden jsme vyzkoušeli příklad pro předání objektu základní třídy prostřednictvím Set Vlastnost Postup, aby se stal součástí objektu v paměti. Předaný objekt se stane rozšířením nebo podřízeným objektem hlavního objektu v paměti. V našem dřívějším programu bylo předání podřízeného objektu cílovému objektu provedeno ve fázi vytváření instance našeho testovacího programu. V pozdější části programu jsme přiřadili hodnoty předaným vlastnostem objektu. Následující příklad je mírně odlišný.
Pro ty, kteří by si chtěli projít předchozí články o modulu MS-Access Class Module, jsou uvedeny níže:
- MS-Access Class Module a VBA
- Pole objektů třídy VBA MS Access
- Základní třída MS-Access a odvozené objekty
- Základní třída VBA a odvozený objekt-2
Tentokrát otevřeme oba Objekty (ClsArea – základní třída, ClsVolume2 – cílová třída) samostatně v našem testovacím programu. Před jejich předáním do cílového objektu třídy ClsVolume2 přiřaďte hodnoty do vlastností základní třídy ClsArea. Pamatujte, že třída Volume2 má pouze jednu vlastní vlastnost, p_Height Vlastnost a její metoda Volume() potřebuje Délku a Šířka Hodnoty základní třídy ClsArea pro výpočet objemu.
- Zkopírujte a vložte následující ukázkový testovací kód do standardního modulu.
Procedura SetNewVol2_2.
Public Sub SetNewVol2_2() 'Method 2/2 Dim CA As ClsArea Dim Vol As ClsVolume2 Set CA = New ClsArea Set Vol = New ClsVolume2 CA.strDesc = "Bed Room" CA.dblLength = 90 CA.dblWidth = 10 Stop 'Here ClsArea class Object CA is passed to the ‘Property procedure Set CArea of ClsVolume2 object Vol Set Vol.CArea = CA 'Pass ClsArea obj to ClsVolume2 Vol.dblHeight = 10 'assign height to ClsVolume2 Debug.Print "Description", "Length", "Width", "Area", "Height", "Volume" With Vol.CArea Debug.Print .strDesc, .dblLength, .dblWidth, .Area(), Vol.dblHeight, Vol.Volume() End With Stop Set CA = Nothing Set Vol = Nothing End Sub
Recenze kódu VBA.
V prvním Ztlumit výpis, CA je definován jako ClsArea Object a Vol jako objekt ClsVolume2. Následující dva příkazy vytvoří instanci obou objektů v paměti.
Následující tři příkazy přiřazují hodnoty vlastnostem objektu třídy ClsArea.
Zastavit příkaz pozastaví provádění kódu, abychom mohli ověřit hodnoty vlastností objektu v okně Locals.
Nastavit Vol.CArea =CA příkaz přiřadí CA objektu třídy ClsArea jako podřízený objekt do Vol (ClsVolume2) Objekt.
V dalším kroku dblHeight Vlastnost objektu třídy ClsVolume2 je přiřazena s hodnotou 10.
Další příkazy před příkazem Stop vytisknou hodnoty z paměti do okna Debug.
Další dvě Nastavit Příkazy odstraní objekty z paměti před ukončením programu.
Zobrazte okno Locals.
- Vyberte Okno Místní Možnost z nabídky Zobrazit.
- Klikněte někam doprostřed kódu a stiskněte F5 pro spuštění kódu, dokud se program nezastaví na Stop prohlášení. Případně můžete stisknout F8 spouštět kód krok po kroku a zkontrolovat změny v okně Locals v každém kroku.
- Klikněte na [+] Symbol pro rozbalení a zobrazení jak vlastností objektů, tak hodnot.
- Zkontrolujte oblast CA a p_Area Odkaz na objekt v části Hodnota sloupec Svazek Objekt. Hodnota v něm se zobrazuje jako Nic protože jsme ještě nepředali objekt CA objektu Vol.
- Pokud jste dokončili prohlížení obsahu okna Locals, spusťte kód do příštího Stop prohlášení. Nyní CArea Získejte proceduru vlastnictví a p_Area Objektu je přiřazen objekt třídy ClsArea.
Vyzkoušíme další příklad varianty obou těchto dvou tříd ClsArea a ClsVolume2.
Nový modul třídy ClsVolume3.
1. Vložte nový modul třídy a změňte jeho název Hodnota vlastnosti na ClsVolume3 .
2. Zkopírujte a vložte následující kód VBA do modulu třídy ClsVolume3:
Option Compare Database Option Explicit 'Method three Private p_Height As Double Public p_Area As ClsArea Public Property Get dblHeight() As Double dblHeight = p_Height End Property Public Property Let dblHeight(ByVal dblNewValue As Double) p_Height = dblNewValue End Property Public Function Volume() As Double Volume = p_Area.dblLength * p_Area.dblWidth * Me.dblHeight End Function Private Sub Class_Initialize() Set p_Area = New ClsArea End Sub Private Sub Class_Terminate() Set p_Area = Nothing End Sub
Zkontrolujte kód od začátku:p_Height prohlášena za soukromý majetek. p_Area Vlastnost třídy ClsVolume3 deklarovaná jako Veřejná Objekt ClsArea. To znamená p_Area se zobrazí jako vlastnost třídy ClsVolume3 s vlastními zobrazitelnými vlastnostmi pro přímé Get/Let operace v uživatelském programu ve standardním modulu. Přestože byl objekt třídy ClsArea deklarován jako veřejný majetek třídy ClsVolume3, jeho vlastnosti jsou zapouzdřeny v samotné třídě ClsArea.
Zkontrolujte Class_Initialize() a Class_Terminate() Podprogramy. Objekt ClsArea je vytvořen v kódu Class_Initialize() a odebere objekt z paměti v kódu Class_Terminate() po ukončení uživatelského programu.
Program testování.
Ukázkový testovací kód VBA je uveden níže.
Zkopírujte a vložte kód do standardního modulu.
Public Sub SNewVol3() 'Here ClsArea class is declared as a Public Property of ClsVolume3 Dim volm As ClsVolume3 Set volm = New ClsVolume3 volm.p_Area.strDesc = "Bed Room" volm.p_Area.dblLength = 15 'assign length volm.p_Area.dblWidth = 10 'assign width in clsArea volm.dblHeight = 10 'assign height to ClsVolume2 Debug.Print "Description", "Length", "Width", "Area", "Height", "Volume" With volm.p_Area Debug.Print .strDesc, .dblLength, .dblWidth, .Area, volm.dblHeight, volm.Volume End With Set volm = Nothing End Sub
Zobrazte okno Locals (View - -> Locals Window), pokud již není otevřené.
Klikněte někam doprostřed kódu a stiskněte F8 spustit kód VBA jeden řádek po druhém a sledovat místní okno, abyste mohli sledovat, co se děje v každém kroku.
Všechny výše uvedené varianty třídy ClsVolume byly napsány s méně kódem, kromě prvního příkladu třídy ClsVolume.
Práce s objektem Recordset.
Příští týden budeme pracovat s vestavěným Object DAO.Recordset a vytvořte modul třídy komu:
- Vypočítat a aktualizovat pole,
- Seřadit data,
- Vytiskněte seřazená data do okna ladění,
- a Vytvořte klon tabulky s seřazenými daty.
Příští týden bude hodně akce.
Seznam všech odkazů na toto téma.
- MS-Access Class Module a VBA
- Pole objektů třídy VBA MS Access
- Základní třída MS-Access a odvozené objekty
- Základní třída VBA a odvozené objekty-2
- Základní třída a varianty odvozených objektů
- Sada záznamů a modul třídy Ms-Access
- Přístup k modulu třídy a třídám Wrapper
- Transformace funkčnosti třídy Wrapper
- Základy přístupu a shromažďovacích objektů
- Modul třídy Ms-Access a objekt kolekce
- Záznamy tabulek v objektu a formuláři kolekce
- Základy objektů slovníku
- Základy objektů slovníku-2
- Řazení klíčů a položek objektů slovníku
- Zobrazení záznamů ze slovníku do formuláře
- Přidat objekty třídy jako položky slovníku
- Aktualizovat položku slovníku objektů třídy ve formuláři