Exempel: Menar du innehållet som variabelvärden i objektet ?? Litet exempel av en clon metod som du kan använda dig av. Du är tvungen att anpassa den till ditt projekt. Om du har klassen i en ActiveX dll eller exe så kan du använda "Persistable" möjligheten för klassen. Tackar för tipsen, det löste sig utmärkt med en clone function.Kopiera innehållet i ett objekt
Dim objTest(2) as new clsTest
'Gör saker med ena instansen
objTest(0). add blabla
Nu vill jag kopiera innehållet i objTest(0) till objTest(1).
Hur gör jag det utan att objTest(1) refererar till SAMMA objekt.
Set objTest(1) = objTest(0) ....går alltså inte
Någon som hajar vad jag menar?
/JensaSv: Kopiera innehållet i ett objekt
Isåfall kan du kopiera dem genom
att använda propertie let och propertie get
nyttObj.variabel=gammaltObjekt.variabel
Public Property Get variabel() As String
variabel = lagradVariabel
End PropertySv: Kopiera innehållet i ett objekt
Class Modul: Person
-----------------------------------
Option Explicit
Private mName As String
Private mAge As Byte
Private mHairColor As HairColor
Public Enum HairColor
Blond
Brunett
End Enum
Public Property Get Name() As String
Name = mName
End Property
Public Property Let Name(vData As String)
mName = vData
End Property
Public Property Get Age() As Byte
Age = mAge
End Property
Public Property Let Age(vData As Byte)
mAge = vData
End Property
Public Property Get HairColor() As HairColor
HairColor = mHairColor
End Property
Public Property Let HairColor(vData As HairColor)
mHairColor = vData
End Property
Public Function Clone() As Person
Set Clone = New Person
Clone.Name = mName
Clone.Age = mAge
Clone.HairColor = mHairColor
End Function
------------------------------------
Du använder den:
Set objTest(1) = objTest(0).CloneSv: Kopiera innehållet i ett objekt
Om du använder tidigare exempel och lägger till följande kod i Person Classen:
Private Sub Class_ReadProperties(PropBag As PropertyBag)
mName = PropBag.ReadProperty("Name", "")
mAge = PropBag.ReadProperty("Age", 0)
mHairColor = PropBag.ReadProperty("HairColor", 0)
End Sub
Private Sub Class_WriteProperties(PropBag As PropertyBag)
PropBag.WriteProperty "Name", mName
PropBag.WriteProperty "Age", mAge
PropBag.WriteProperty "HairColor", mHairColor
End Sub
Module: mdlMain
----------------------------
Option Explicit
Public Sub Main()
Dim objTest(0 To 2) As Person
Set objTest(0) = New Person
With objTest(0)
.Name = "Ola"
.Age = 26
.HairColor = Blond
End With
Set objTest(1) = CloneObject(objTest(0))
End Sub
Public Function CloneObject(Object As Object) As Object
Dim P As PropertyBag
Set P = New PropertyBag
P.WriteProperty "Object", Object
Set CloneObject = P.ReadProperty("Object")
Set P = Nothing
End Function
-------------------------------
CloneObject är en generell funktion som kan användas på "Persistable" objekt.Sv: Kopiera innehållet i ett objekt