vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: ActiveX 
Autor: RalfH
Datum: 13.02.04 07:21

Servus,

ich hatte genau dasselbe Problem mit einem eigenem OCX.

In dem OCX wurde eine Collection angelegt. Und jedesmal wenn ich eine Form mit diesem Control mit Unload entladen hab, stürzte das Prog ab, obwohl im Terminate-Ereignis des OCX die Colleaction auf Nothing gesetzt wurde.

Die Ursache lag hier an der Anweisung
Set Form1 = Nothing
im Unload-Ereignis der Form. Das Terminate-Ereignis des OCX wird nämlich erst nach dem Unload-Ereignis der Form ausgeführt (damit beim Abbruch des Form-Unload-Ereignisses mit Cancel=true nix schiefgeht). Wahrscheinlich hat das OCX dann ein Problem wenn sein Eltern-Fenster bereits auf "Nothing" gesetzt wurde.

Ich hab dann die Entladeroutine der OCX-Collection als neue Public-SUB im OCX erstellt und diese Entladeroutine nun vor dem "Set Form1=Nothing" aufgerufen.

Vorher:
' Im Codemodul des OCX
Private Sub UserControl_Terminate()
  On Error Resume Next
 
  Set colData = Nothing
End Sub
 
' Im Codemodul der Form
Private Sub Form_Unload(Cancel As Integer)
  Set Form1 = Nothing ' Programm stürzte hier immer ab
End Sub
Und so stürzte es nicht mehr ab:
' Im Codemodul des OCX
Public Sub UnloadCollection()
  On Error Resume Next
 
  If Not colData Is Nothing Then Set colData = Nothing
End Sub
 
Private Sub UserControl_Terminate()
  UnloadCollection
End Sub
 
' Im Codemodul der Form
Private Sub Form_Unload(Cancel As Integer)
  On Error Resume Next
 
  UserControl1.UnloadCollection
  Set Form1 = Nothing 'das Programm stürzt hier nicht mehr ab
End Sub

Viel Spass,
R@lf

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
ActiveX560ThinkingBomb11.02.04 16:56
Re: ActiveX360ModeratorDieter11.02.04 17:29
Re: ActiveX400RalfH13.02.04 07:21

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel