Jag har en property deklarerad såhär: Jovisst, men om jag vill göra det inifrån klassen? t.ex : du måste instansiera din klass. 'Minklass.cls: hihi, ett stort missförstånd. Jag vet hur man väl använder klassen när man har en instans av den. Så här ligger det till: Lättaste sättet att anropat den inom classen är:Anropa properties
Public property let MinEgenskap(nyttvärde as integer)
End property
Hur anropar jag den från min klass? t.ex Call MinEgenskap(5) ger 'invalid use of property'.
/FransSv: Anropa properties
'Minklass.cls:
Private sub Class_Initialize()
call minegenskap(nyttvärde) 'eller hur man nu gör
End sub
Public Property let MinEgenskap(newvalue as string)
lokalkopia_MinEgenskap = instr(nwevalue, " ") 'gör något med newvalue
End property
Saken är den att jag inte vill ha dubbelkod. Jag vill bara ha koden på ett ställe, nämligen i egenskapens let.
/FransSv: Anropa properties
Exempel:
Skapa en klass, låt den heta Class1
lägg följande kod i den.
Option Explicit
private localX as integer
Public Property Let Y(X As Integer)
localX = X
End Property
Public Property Get Y()As Integer
Y = localX
End Property
Innan du använder klassen måste du instansiera den.
I en form exempelvis:
Public minKlass as new Class1
nu kan du skriva minKlass.Y = 10
för sätta den egenskapen i objektet.
Nåja på den vägen är det
/peterhSv: Anropa properties
Private lokalkopia_MinEgenskap As long
Private sub Class_Initialize()
lokalkopia_MinEgenskap = "Start värde"
End sub
Public Property Get MinEgenskap() as string
MinEgenskap = lokalkopia_MinEgenskap
End property
Public Property let MinEgenskap(newvalue as string)
lokalkopia_MinEgenskap = newvalue
End propertySv: Anropa properties
När min egenskap tilldelas ett värde så ska saker räknas ut, andra variablar ändras osv. Denna kod som isåfall skulle göra det skulle ligga i egenskapens let sub.
Jag vill nu ändra, från insidan av klassen(t.ex en private function) egenskapen. Detta är inte nog med att bara ändra den lokala variabeln för egenskapen(lokalkopia_minegenskap, i Andreas fall) i och med att andra saker ska ske. Denna kod finns i egenskapen let sub.
Jag vill endast ha koden på ett ställe(egenskapens let sub) och jag vill kunna exekvera den från insidan av klassen lika väl som att moduler som har instansierat klassen ska kunna komma åt den.
Hajar ni? :)
/FransSv: Anropa properties
MinEgenskap=MinEgenskap
Det inebär också att Get anropas. Let proceduren anropas när ett värde tilldelas egenskapen.