Méthode IVisEventProc.VisEventProc (Visio)
Fonction membre privée de IVisEventProc qui gère les notifications d’événements qui lui sont transmises par la méthode EventList.AddAdvise .
Syntaxe
expression. VisEventProc (nEventCode, pSourceObj, nEventID, nEventSeqNum, pSubjectObj, vMoreInfo)
Expression Variable qui représente un objet IVisEventProc .
Parameters
Nom | Requis/Facultatif | Type de données | Description |
---|---|---|---|
nEventCode | Requis | Integer | Événement(s) produit(s). |
pSourceObj | Obligatoire | Object | Objet dont la collection EventList contient l'objet Event ayant envoyé la notification. |
nEventID | Obligatoire | Long | Identificateur unique de l'objet Event de la collection EventList. |
nEventSeqNum | Obligatoire | Long | Position ordinale de l'événement, compte tenu de la séquence des événements qui se sont produits dans l'instance appelante de l'application. |
pSubjectObj | Obligatoire | Object | Sujet de l'événement, qui est l'objet auquel l'événement s'est produit. Reportez-vous aux notes pour des exemples. |
vMoreInfo | Requis | Variant | Informations supplémentaires sur le sujet de l'événement. Reportez-vous aux notes pour plus d'informations. |
Valeur renvoyée
Variant
Remarques
Pour gérer les notifications d’événements, créez un module de classe qui implémente l’interface IVisEventProc , puis créez une instance de cette classe à passer en tant qu’argument à la méthode AddAdvise de la collection EventList . Utilisez la méthode AddAdvise pour créer des objets Event qui envoient les notifications.
Le paramètre nEventCode identifie le ou les événements spécifiques qui se sont produits. L’argument EventCode de la méthode AddAdvise est passé à VisEventProc en tant que nEventCode. Dans votre procédure, vous pouvez utiliser la technique de ramification de votre choix pour déterminer l'événement qui s'est produit et le gérer. L'exemple accompagnant cette rubrique utilise une structure de décision Select Case.
Contrairement à la propriété Index de la collection EventList, nIDÉvénement n'est pas modifié lorsque des objets Event sont ajoutés à la collection ou en sont supprimés.
À partir de VisEventProc, vous pouvez utiliser le code suivant pour obtenir l’objet Event qui a envoyé la notification.
pSourceObj. EventList.ItemFromID(nEventID )
La connexion de l'objet source pSourceObj à l'objet Event existe jusqu'à ce que l'un des événements suivants se produise :
Le programme supprime l'objet Event.
Le programme libère la dernière référence à l'objet source. (La collection EventList et les objets Event conservent une référence à leur objet source.)
L’instance de l’application Microsoft Visio se termine.
Le premier événement qui se produit dans une instance Visio a nEventSeqNum = 1, le deuxième événement = 2, et ainsi de suite. Dans certains cas, vous pouvez utiliser le numéro de séquence conjointement avec la propriété EventInfo pour obtenir plus d’informations sur l’événement.
Le paramètre pSubjectObj d’un événement ShapeAdded est un objet Shape qui représente la forme qui vient d’être ajoutée, tandis que l’objet d’un événement BeforeSelectionDelete est un objet Selection dans lequel les formes sur le point d’être supprimées sont sélectionnées.
Pour de nombreux événements, vPlusInfo est une chaîne similaire à la ligne de commande que l'application transmet aux modules complémentaires qu'elle exécute. Si la notification ne comprend pas d'informations supplémentaires, ce paramètre est défini sur Aucune (Nothing). Pour plus d’informations sur les paramètres de notification d’un événement particulier, consultez la rubrique relative à l’événement particulier dans cette référence.
À compter de Visio 2000, VisEventProc est défini comme une fonction qui retourne une valeur. Toutefois, Visio examine uniquement les valeurs de retour des appels à VisEventProc qui reçoivent un code d’événement de requête. Les objets sink qui fournissent VisEventProc via IDispatch ne nécessitent aucune modification. Pour modifier des gestionnaires d'événement existants de manière à ce qu'ils puissent gérer les événements de requête, transformez la procédure Sub en procédure Function et renvoyez la valeur appropriée. (Pour plus de détails sur les événements de requête, reportez-vous à cette référence pour des rubriques d'événement ayant le préfixe Query.)
Si nEventCode identifie un événement de requête (événements précédés de Query), retourne True à partir de VisEventProc pour annuler l’événement et false pour permettre qu’il se produise. La valeur est arbitraire pour les autres événements. Si vous ne retournez pas de valeur explicite, Microsoft Visual Basic pour Applications (VBA) renvoie un Variant vide, que Visio interprète comme False.
Exemple
Cet exemple indique comment créer un module de classe qui implémente IVisEventProc pour gérer des événements déclenchés par un objet source dans Visio, par exemple l'objet Document. Le module est composé de la fonction VisEventProc qui utilise un bloc Select Case pour vérifier trois événements : DocumentSaved, PageAdded et ShapesDeleted. Les autres événements relèvent du cas par défaut (Case Else). Chaque bloc Case crée une chaîne (strMessage) contenant le nom et le code de l’événement déclenché. Enfin, la fonction affiche la chaîne dans la fenêtre Exécution.
Copiez cet exemple de code dans un nouveau module de classe en VBA ou Visual Basic, en nommant le module clsEventSink. Vous pouvez ensuite utiliser un module récepteur d’événements pour créer une instance de la classe clsEventSink et des objets Event qui envoient des notifications de déclenchements d’événements à l’instance de classe. Pour voir comment créer un module récepteur d'événement, reportez-vous à l'exemple de la méthode AddAdvise.
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
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.