ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Question: "myself" in a Class (https://www.excelbanter.com/excel-programming/387293-question-myself-class.html)

Charles

Question: "myself" in a Class
 
Hello

I am working with classes and I have a little question: how do you
create a pointer on the object in which the procedure sits?

More precisely, I have an object A, which has a procedure that allows
to create some Objects B. This procedure gets a pointer on object B
each time it creates one. It is therefore easy to have a list of
pointer to B stored in A.

Now I would like to create a link the other way round. I would like to
store in B a pointer to object A. Ideally that would be done when I
create B in the procedure. But for that, I need in the definition of
the procedure (which sits in object A) to use a pointer on A. Is there
a sort of "myself" instruction that I can use for that?

Not sure if this is clear. Thanks in advance

Best regards
Charles


Bob Phillips

Question: "myself" in a Class
 
I don't know is this is what you mean

Class1

Public test
Private mClass2 As Class2

Private Sub Class_Initialize()
test = "Testing initial class"
Set mClass2 = New Class2
mClass2.BackPointer = Me
mClass2.BackCall
End Sub

Class2

Private mBackClass As Object

Public Property Let BackPointer(ByRef Class As Object)
Set mBackClass = Class
End Property

Public Function BackCall()
MsgBox mBackClass.test
End Function


and test like so

Dim TestClass As Class1
Set TestClass = New Class1


--
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)

"Charles" wrote in message
oups.com...
Hello

I am working with classes and I have a little question: how do you
create a pointer on the object in which the procedure sits?

More precisely, I have an object A, which has a procedure that allows
to create some Objects B. This procedure gets a pointer on object B
each time it creates one. It is therefore easy to have a list of
pointer to B stored in A.

Now I would like to create a link the other way round. I would like to
store in B a pointer to object A. Ideally that would be done when I
create B in the procedure. But for that, I need in the definition of
the procedure (which sits in object A) to use a pointer on A. Is there
a sort of "myself" instruction that I can use for that?

Not sure if this is clear. Thanks in advance

Best regards
Charles




Charles

Question: "myself" in a Class
 
It works perfectly. That's exactly what I was looking for. "Me".....

Many thanks!
Charles


Vergel Adriano

Question: "myself" in a Class
 
"Me" is the reference to the current instance of the class. Something like
this

----- ClassA ----------
Private mstrName As String

Public Property Get Name()
Name = mstrName
End Property

Public Sub test()
Dim objB As New ClassB

mstrName = "ClassA"
Set objB.Parent = Me
MsgBox objB.Parent.Name

End Sub

----- ClassB ----------
Private mParent As ClassA

Public Property Set Parent(obj As ClassA)
Set mParent = obj
End Property

Public Property Get Parent()
Set Parent = mParent
End Property


----- Module1 ----------
Sub test()
Dim objA As New ClassA
objA.test
End Sub




--
Hope that helps.

Vergel Adriano


"Charles" wrote:

Hello

I am working with classes and I have a little question: how do you
create a pointer on the object in which the procedure sits?

More precisely, I have an object A, which has a procedure that allows
to create some Objects B. This procedure gets a pointer on object B
each time it creates one. It is therefore easy to have a list of
pointer to B stored in A.

Now I would like to create a link the other way round. I would like to
store in B a pointer to object A. Ideally that would be done when I
create B in the procedure. But for that, I need in the definition of
the procedure (which sits in object A) to use a pointer on A. Is there
a sort of "myself" instruction that I can use for that?

Not sure if this is clear. Thanks in advance

Best regards
Charles




All times are GMT +1. The time now is 12:54 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com