Abenteuerlich

13/08/2012 - 08:33 von Lothar Geyer | Report spam
Ich habe da was vor, wo ich nicht weiß, ob es "unerwünschte
Nebeneffekte" hat.

In einer Form liegt ein Frame, auf dem Frame liegt (neben anderen
Controls) ein UserControl. Im UserControl steht:

Private WithEvents myContainer As Frame
Private WithEvents myParent As Form

Public Sub Init(ObjectType As PointTo_Enum, ObjectID As Long)

myObjectType = ObjectType
myObjectID = ObjectID

With UserControl.Extender
Set myContainer = .Container
Set myParent = .Parent
.Left = 0
.Top = .Container.Height - .Height
.Visible = True
.ZOrder
End With

Exit Sub

End Sub

Private Sub myParent_Resize()
Debug.Print "Parent resizing"
End Sub

Private Sub myParent_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Debug.Print "Parent QueryUnload"
End Sub

Andere Events benötige ich derzeit nicht.

Prinzipiell funktioniert das. Die Tatsache, dass das QueryUnload im UC
_nach_ dem QueryUnload in der Form aufgerufen wird, gefàllt mir
(gefühlsmàßig) zwar nicht, aber auch das macht keine Probleme.

Nun nochmals die eingangs gestellt Frage: habe ich irgendwelche
Nebeneffekte zu erwarten, die bisher beim Testen nicht aufgetaucht sind?

Lothar Geyer
 

Lesen sie die antworten

#1 Schmidt
13/08/2012 - 10:07 | Warnen spam
Am 13.08.2012 08:33, schrieb Lothar Geyer:

Nun nochmals die eingangs gestellt Frage: habe ich irgendwelche
Nebeneffekte zu erwarten, die bisher beim Testen nicht
aufgetaucht sind?



Denke ja.
Insbesondere bei solchen zyklischen Referenzen ist
das Verhalten in der IDE anders als im Kompilat
(die IDE ràumt viel besser auf).

Vielleicht einfach mal anstelle des Debug.Prints
eine MsgBox (oder ein File-Logging) verwenden und
das Sterbeverhalten im Kompilat testen.
Bin eigentlich ziemlich sicher, dass ohne manuelles
Auflösen der Parent-Referenzen das Ganze weniger
schön runterfàhrt.

Olaf

Ähnliche fragen