IVisEventProc.VisEventProc-Methode (Visio)
Private Memberfunktion von IVisEventProc , die Ereignisbenachrichtigungen verarbeitet, die von der EventList.AddAdvise-Methode an sie übergeben werden.
Syntax
Ausdruck. VisEventProc (nEventCode, pSourceObj, nEventID, nEventSeqNum, pSubjectObj, vMoreInfo)
Ausdruck Eine Variable, die ein IVisEventProc-Objekt darstellt.
Parameter
Name | Erforderlich/Optional | Datentyp | Beschreibung |
---|---|---|---|
nEventCode | Erforderlich | Integer | Das ereignis oder die ereignisse, die aufgetreten sind. |
pSourceObj | Erforderlich | Objekt | Das Objekt, dessen EventList-Auflistung das Event-Objekt enthält, das die Benachrichtigung gesendet hat. |
nEventID | Erforderlich | Long | Der eindeutige Bezeichner des Event-Objekts innerhalb der EventList-Auflistung. |
nEventSeqNum | Erforderlich | Long | Die Position des Ereignisses in Bezug auf die Abfolge von Ereignissen, die in der aufrufenden Instanz der Anwendung aufgetreten sind. |
pSubjectObj | Erforderlich | Objekt | Der Betreff des Ereignisses, bei dem es sich um das Objekt handelt, für das das Ereignis aufgetreten ist. Beispiele finden Sie in den Hinweisen. |
vMoreInfo | Erforderlich | Variant | Zusätzliche Informationen zum Betreff des Ereignisses. Weitere Informationen finden Sie unter "Anmerkungen". |
Rückgabewert
Variant
Bemerkungen
Um Ereignisbenachrichtigungen zu verarbeiten, erstellen Sie ein Klassenmodul, das die IVisEventProc-Schnittstelle implementiert, und erstellen Sie dann eine Instanz dieser Klasse, die als Argument an die AddAdvise-Methode der EventList-Auflistung übergeben wird. Verwenden Sie die AddAdvise-Methode , um Event-Objekte zu erstellen, die die Benachrichtigungen senden.
Der Parameter nEventCode identifiziert das oder die ereignisse, die aufgetreten sind. Das EventCode-Argument der AddAdvise-Methode wird als nEventCode an VisEventProc übergeben. Innerhalb Ihrer Prozedur können Sie eine beliebige Verzweigungstechnik verwenden, um zu bestimmen, welches Ereignis aufgetreten ist, und es zu behandeln. Das Beispiel, das dieses Thema begleitet, verwendet eine Select Case-Entscheidungsstruktur .
Im Gegensatz zur Index-Eigenschaft der EventList-Auflistung ändert sich nEventID nicht, wenn Event-Objekte der Auflistung hinzugefügt oder daraus gelöscht werden.
In VisEventProc können Sie den folgenden Code verwenden, um das Event-Objekt abzurufen, das die Benachrichtigung gesendet hat.
pSourceObj. EventList.ItemFromID(nEventID )
Die Verbindung zwischen dem Quellobjekt pSourceObj und dem Event-Objekt besteht, bis eine der folgenden Punkte auftritt:
Das Event-Objekt wird vom Programm gelöscht.
Der letzte Verweis auf das Quellobjekt wird vom Programm freigegeben. (Die EventList-Auflistung und die Event-Objekte enthalten einen Verweis auf ihr Quellobjekt.)
Die Microsoft Visio-Anwendungsinstanz wird beendet.
Das erste Ereignis, das in einer Visio-Instanz auftritt, hat nEventSeqNum = 1, das zweite Ereignis = 2 usw. In einigen Fällen können Sie die Sequenznummer in Verbindung mit der EventInfo-Eigenschaft verwenden, um weitere Informationen zum Ereignis zu erhalten.
Der pSubjectObj-Parameter für ein ShapeAdded-Ereignis ist ein Shape-Objekt , das die gerade hinzugefügte Form darstellt, während der Betreff eines BeforeSelectionDelete-Ereignisses ein Selection-Objekt ist, in dem die Shapes ausgewählt werden, die gelöscht werden sollen.
Bei vielen Ereignissen ist vMoreInfo eine Zeichenfolge, die der Befehlszeile ähnelt, die die Anwendung an die ausgeführten Add-Ons übergibt. Falls die Benachrichtigung keine zusätzlichen Informationen enthält, ist dieser Parameter auf Nothing festgelegt. Ausführliche Informationen zu Benachrichtigungsparametern für ein bestimmtes Ereignis finden Sie im Thema zu bestimmten Ereignissen in dieser Referenz.
Ab Visio 2000 wird VisEventProc als Funktion definiert, die einen Wert zurückgibt. Visio untersucht jedoch nur Rückgabewerte von Aufrufen von VisEventProc , denen ein Abfrageereigniscode übergeben wird. Senkenobjekte, die VisEventProc über IDispatch bereitstellen, erfordern keine Änderung. Um vorhandene Ereignishandler so zu ändern, dass sie Abfrageereignisse ausführen können, ändern Sie die Sub-Prozedur in eine Function-Prozedur, und geben Sie den entsprechenden Wert zurück. (Weitere Informationen zu Abfrageereignissen finden Sie in dieser Referenz in Ereignisthemen mit dem Präfix Query.)
Wenn nEventCode ein Abfrageereignis (Ereignisse mit dem Präfix Query) identifiziert, geben Sie True von VisEventProc zurück, um das Ereignis abzubrechen, und geben Sie False zurück, um es zuzulassen. Der Wert ist für andere Ereignisse beliebig. Wenn Sie keinen expliziten Wert zurückgeben, gibt Microsoft Visual Basic for Applications (VBA) einen leeren Variant-Wert zurück, den Visio als False interpretiert.
Beispiel
In diesem Beispiel wird gezeigt, wie Sie ein Klassenmodul erstellen, das IVisEventProc implementiert, um Ereignisse zu behandeln, die von einem Quellobjekt in Visio ausgelöst werden, z. B. das Document-Objekt . Das Modul besteht aus der VisEventProc-Funktion, die einen Select Case-Block zum Überprüfen von drei Ereignissen verwendet: DocumentSaved, PageAdded und ShapesDeleted. Andere Ereignisse fallen unter den Standardfall (Case Else). Jeder Case-Block erstellt eine Zeichenfolge (strMessage), die den Namen und den Ereigniscode des ausgelösten Ereignisses enthält. Schließlich wird die Zeichenfolge von der Funktion im Direktfenster angezeigt.
Kopieren Sie diesen Beispielcode in ein neues Klassenmodul in VBA oder Visual Basic, und nennen Sie das Modul clsEventSink. Anschließend können Sie ein Ereignissenkenmodul verwenden, um eine Instanz der clsEventSink-Klasse und der Event-Objekte zu erstellen, die Benachrichtigungen über Ereignisauslösung an die Klasseninstanz senden. Informationen zum Erstellen eines Ereignissenkenmoduls finden Sie im Beispiel für die AddAdvise-Methode .
Implements Visio.IVisEventProc
'Declare visEvtAdd as a 2-byte value
'to avoid a run-time overflow error
Private Const visEvtAdd% = &H8000
Private Function IVisEventProc_VisEventProc( _
ByVal nEventCode As Integer, _
ByVal pSourceObj As Object, _
ByVal nEventID As Long, _
ByVal nEventSeqNum As Long, _
ByVal pSubjectObj As Object, _
ByVal vMoreInfo As Variant) As Variant
Dim strMessage As String
'Find out which event fired
Select Case nEventCode
Case visEvtCodeDocSave
strMessage = "DocumentSaved (" & nEventCode & ")"
Case (visEvtPage + visEvtAdd)
strMessage = "PageAdded (" & nEventCode & ")"
Case visEvtCodeShapeDelete
strMessage = "ShapesDeleted(" & nEventCode & ")"
Case Else
strMessage = "Other (" & nEventCode & ")"
End Select
'Display the event name and the event code
Debug.Print strMessage
End Function
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.