VideMedlem sedan dec. 19998 577 inlägg Hej!
Hur gör jag för att använda ett objekt jag skapat i en form i en annan form?
Jag har deklarerat objektet publikt i den ena:
Public tst As Database
Private Sub Form_Load()
Set tst = New Database
End Sub
Nu vill jag i ett annat form använda samma objekt, men den säger att variabeln inte är dimmad.
Mvh, Vide
nikoMedlem sedan juni 20022 599 inlägg Enklast via punktnotation: Form1.tst, fast det är inte speciellt "snyggt".
Det är bättre att göra referensen Private och använda en publik accessfunktion:
Private tst As Database
Public Function GetDatabase() as Database
Set GetDatabase = tst
End Sub
Sen anropar du: Form1.GetDatabase() .
Marcus EMedlem sedan maj 20021 466 inlägg
niko skrev:
Enklast via punktnotation: Form1.tst, fast det är inte speciellt "snyggt".
Varför inte? Om variabeln tillhör formuläret är det lämpligast att använda det sättet. Ska variabeln vara global bör den placeras i en modul istället.
VideMedlem sedan dec. 19998 577 inlägg Smart! ;)
Jag testade ett annat sätt som fungerade, men det är inte lika OOP:
Private tst As Database
Private Sub Form_Load()
Set tst = TestForm.tst
End Sub
nikoMedlem sedan juni 20022 599 inlägg
Marcus E skrev:
Varför inte? Om variabeln tillhör formuläret är det lämpligast att använda det sättet. Ska variabeln vara global bör den placeras i en modul istället.
Visst. Om databasen ska accessas över flera formulär så är det så klart bättre att lägga den i en modul. Tänkte mest att det var bra att visa att det trots allt går.
Att jag sen inte tycker det är "snyggt" att ha en Database publik på ett formulär är av rent subjektiva, estetiska skäl. En databas känns inte som en "naturlig" property på ett formulär i stil med bredd, höjd, position osv .. Fast i praktiken har det ju ingen betydelse.
Men, men .. tycke och smak. :OO
VideMedlem sedan dec. 19998 577 inlägg Om jag lägger skapandet av objektet i en vanlig Module, hur kommer jag då åt den i dom andra klasserna.
Egentligen är väl frågan, vad är den egentliga skillnaden på en Modle och en Class Module?
nikoMedlem sedan juni 20022 599 inlägg En moduls publika variabler och funktioner kan anropas från all övrig kod via punktnotation på modulnamnet (om missförständ inte kan uppstå så kan man hoppa över modulnamnet och använda enbart variabel- och funktionsnamn).
När det gäller klassmoduler måste normalt först ett objekt av klassen skapas. Därefter kan publika variabler och funktioner anropas med punktnotation på objektnamnet.
En modul kan alltså ses som ett specialfall av en klassmodul där alla funktioner och variabler är statiska och man kan använda en förenklad notation.