Haben Sie sich auch schon gefragt, wie ein AddIn für die Visual Basic 6-Entwicklungsumgebung (IDE) feststellen kann, ob sich die IDE im Entwurfs-Modus befindet, oder ob ein Projekt gestartet ist, die IDE sich also im Debug-Modus ("Run") befindet?
Eigentlich ist das eine einfache Sache. Die Schöpfer der IDE haben lediglich die dafür benötigten Schnittstellen vor uns versteckt. Warum sie das getan haben, weiß ich nicht. Aber glücklicherweise haben sie es nicht allzu gründlich getan.
Denn wenn Sie im Kontextmenü des Objekt-Katalogs den Menüpunkt "Ausgeblendete Mitglieder anzeigen" aktivieren, werden Sie bei der VBIDE-Bibliothek eine ganze Menge an neuen Objekten bzw. Schnittstellen, Eigenschaften und Methoden entdecken. Unter diesen im Objekt-Katalog grau dargestellten Einträgen werden Sie auch direkt unterhalb der Events-Schnittstelle die Schnittstelle Events2 finden, die gegenüber Events über eine Eigenschaft mehr verfügt: VBBuildEvents. Dieses neue Event-Objekt werden Sie ebenfalls unter den Neuentdeckungen finden. Und zwei der drei Ereignisse von VBBuildEvents melden uns schließlich, wie erhofft, den Wechsel zwischen Entwurfs- und Debug-Modus: EnterDesignMode und EnterRunMode.
Damit sich Ihr AddIn diese Ereignisse zunutze machen kann, genügen die Deklaration eines Ereignisempfängers und lediglich drei Zeilen Code, die am besten in der OnConnection-Prozedur der AddIn-Klasse aufgehoben sind.
Private WithEvents eVBBuildEvents As VBBuildEvents
Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
ByVal AddInInst As Object, custom() As Variant)
Dim nEvents2 As Events2
Set nEvents2 = Application.Events
Set eVBBuildEvents = nEvents2.VBBuildEvents
End Sub
In den beiden Ereignisprozeduren können Sie nun auf die Wechsel zwischen den beiden Modi reagieren.
Private Sub eVBBuildEvents_EnterDesignMode()
' Die VBIDE hat in den Entwurfs-Modus gewechselt
End Sub
Private Sub eVBBuildEvents_EnterRunMode()
' Die VBIDE hat in den Debug-Modus gewechselt
End Sub
Als drittes Ereignis bietet VBBuildEvents noch das Ereignis BeginCompile an. Dessen Namen sollten Sie allerdings wörtlich auffassen. Es gibt nämlich kein Gegenstück dazu, das etwa "FinishedCompile" heißen könnte...
|