Compartir a través de


Método IVisEventProc.VisEventProc (Visio)

Función miembro privada de IVisEventProc que controla las notificaciones de eventos que le pasa el método EventList.AddAdvise .

Sintaxis

expresión. VisEventProc (nEventCode, pSourceObj, nEventID, nEventSeqNum, pSubjectObj, vMoreInfo)

Expresión Variable que representa un objeto IVisEventProc .

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
nEventCode Obligatorio Integer Evento o eventos que han tenido lugar.
pSourceObj Obligatorio Objeto Objeto cuya colección EventList contiene el objeto Event que ha originado la notificación.
nEventID Necesario Long Identificador único del objeto Event en la colección EventList.
nEventSeqNum Necesario Long Posición ordinal del evento con respecto a la secuencia de los eventos que se han producido en la instancia de la aplicación que realiza la llamada.
pSubjectObj Obligatorio Objeto Asunto del evento, que es el objeto en el que ha tenido lugar el evento. Vea Comentarios para obtener información detallada.
vMoreInfo Obligatorio Variant Información adicional sobre el asunto del evento. Vea Comentarios para obtener más información.

Valor devuelto

Variant

Comentarios

Para controlar las notificaciones de eventos, cree un módulo de clase que implemente la interfaz IVisEventProc y, a continuación, cree una instancia de esta clase para pasarla como argumento al método AddAdvise de la colección EventList . Utilice el método AddAdvise para crear objetos Event que envíen las notificaciones.

El parámetro nEventCode identifica el evento o eventos específicos que se produjeron. El argumento EventCode del método AddAdvise se pasa a VisEventProc como nEventCode. Dentro del procedimiento, puede utilizar cualquier técnica de bifurcación que desee para determinar qué evento ha tenido lugar y controlarlo. En el ejemplo que acompaña a este tema se utiliza una estructura de decisión Select Case.

A diferencia de la propiedad Index de la colección EventList, nEventID no cambia cuando se agregan o se eliminan objetos Event de la colección.

Desde VisEventProc, puede usar el código siguiente para obtener el objeto Event que envió la notificación.

pSourceObj. EventList.ItemFromID(nEventID )

La conexión entre el pSourceObj del objeto de origen y el objeto Event existe hasta que ocurra una de las siguientes situaciones:

  • El programa elimina el objeto Event.

  • El programa libera la última referencia al objeto de origen. (La colección EventList y los objetos Event contienen una referencia a su objeto de origen).

  • La instancia de aplicación de Microsoft Visio finaliza.

El primer evento que se produce en una instancia de Visio tiene nEventSeqNum = 1, el segundo evento = 2, etc. En algunos casos, puede usar el número de secuencia junto con la propiedad EventInfo para obtener más información sobre el evento.

El parámetro pSubjectObj de un evento ShapeAdded es un objeto Shape que representa la forma que se acaba de agregar, mientras que el asunto de un evento BeforeSelectionDelete es un objeto Selection en el que se seleccionan las formas que están a punto de eliminarse.

Para muchos eventos, vMoreInfo es una cadena similar a la línea de comandos que la aplicación pasa a los complementos que ejecuta. Si la notificación no incluye información adicional, este parámetro se establece en Nothing. Para obtener más información sobre los parámetros de notificación para un evento determinado, consulte el tema de evento determinado en esta referencia.

A partir de Visio 2000, VisEventProc se define como una función que devuelve un valor. Sin embargo, Visio solo examina los valores devueltos de las llamadas a VisEventProc que se pasan a un código de evento de consulta. Los objetos receptores que proporcionan VisEventProc a través de IDispatch no requieren ningún cambio. Para modificar los controladores de eventos existentes para que puedan controlar eventos de consulta, cambie el procedimiento Sub a un procedimiento Function y devuelva el valor adecuado. (Para obtener más información sobre los eventos de consulta, consulte esta referencia para los temas de eventos con el prefijo Query).

Si nEventCode identifica un evento de consulta (eventos con el prefijo Query), devuelve True desde VisEventProc para cancelar el evento y devuelve False para permitir que se produzca. El valor es arbitrario para otros eventos. Si no devuelve un valor explícito, Microsoft Visual Basic para Aplicaciones (VBA) devuelve una variant vacía, que Visio interpreta como False.

Ejemplo:

En este ejemplo se muestra cómo crear un módulo de clase que implementa IVisEventProc para controlar los eventos desencadenados por un objeto de origen en Visio, como el objeto Document. El módulo se compone de la función VisEventProc, que usa un bloque Select Case para comprobar la existencia de tres eventos: DocumentSaved, PageAdded y ShapesDeleted. Los demás eventos se procesan en el bloque predeterminado Case Else. Cada bloque Case crea una cadena (strMessage) que contiene el nombre y el código del evento desencadenado. Finalmente, la función muestra la cadena en la ventana Inmediato.

Copie este código de ejemplo en un nuevo módulo de clase de VBA o Visual Basic y asígnele el nombre clsEventSink. Entonces, podrá utilizar un módulo receptor de eventos para crear una instancia de la clase clsEventSink y los objetos Event que envían notificaciones del desencadenamiento de eventos a la instancia de la clase. Para ver cómo crear un módulo receptor de eventos, vea el ejemplo del método 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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.