Sometimes in VbClassic you want to get hold of an object but not keep a reference to it.
An example would be a Parent property in a collection item. If you do it by holding a reference to the parent in each member of the collection, you end up with circular referenes.
Instead you can hold a Proxy to the parent object.
http://www.vb-faq.com/Articles/Hughson/proxyobjects.asp
This link seems to be dead, here is some example code
You will need the Child, the Parent, and the Proxy Object
ParentProxy Object
--------------------------------
Option Explicit
Public Event GetRef(ByRef RHS As MyParent)
Public Function GetParent() As MyParent
Dim Ref As MyParent
RaiseEvent GetRef(Ref)
Set GetParent = Ref
End Function
Child Object
----------------------
..
Private aParent as ParentProxy
..
Public Property Get Parent() as MyParent
Set Parent = aParent.GetParent
End Property
Public Property Set Parent(RHS as MyParent)
Set aParent as MyParent.Proxy
End Property
Parent Object
----------------------------
Private WithEvents priParentProxy as ParentProxy
Private Sub Class_Initialize()
..
Set priParentProxy = New ParentProxy
..
End Sub
Friend Property Get Proxy() As ParentProxy
Set Proxy = priParentProxy
End Property
Private Sub priParentProxy_GetRef(RHS As MyParent)
Set RHS = Me
End Sub
Occasionally, you may still be forced to work in Office 97, in which case, you can't define custom events. In these cases, you have 2 alternatives that I know of:
One question: When can it happen that the proxied object is released, but you still try to reference it through the proxy? Without this knowledge, I am not certain that I dare to use this pattern. -- ThomasEyde