Share via


Evento Application.MarkerEvent (Visio)

Se debe a una llamada al método QueueMarkerEvent .

Sintaxis

expresión. MarkerEvent (app, SequenceNum, ContextString)

expresión Variable que representa un objeto Application.

Parámetros

Nombre Obligatorio/opcional Tipo de datos Descripción
Aplicación Obligatorio [IVAPPLICATION] Instancia activa de Microsoft Visio.
SequenceNum Necesario Long Posición ordinal de este evento con respecto a los eventos que ya han ocurrido.
ContextString Obligatorio String Cadena de contexto pasada por el método QueueMarkerEvent.

Comentarios

A diferencia de otros eventos que Visio desencadena, el evento MarkerEvent lo desencadena un programa cliente. Un programa cliente recibe el evento MarkerEvent sólo si llamó al método QueueMarkerEvent.

Al utilizar el evento MarkerEvent junto con el método QueueMarkerEvent, un programa cliente puede colocar por sí mismo un evento en la cola. El programa cliente recibe el evento MarkerEvent después de que Visio desencadene todos los eventos presentes en su cola de eventos cuando se llama al método QueueMarkerEvent.

El evento MarkerEvent pasa tanto la cadena de contexto pasada por el método QueueMarkerEvent como el número de secuencia del evento MarkerEvent al controlador de eventos MarkerEvent. Cualquiera de estos valores se puede usar para correlacionar las llamadas a QueueMarkerEvent con eventos MarkerEvent . De este modo, un programa cliente puede diferenciar los eventos originados por él mismo y los eventos que no ha originado.

Por ejemplo, puede que un programa cliente que cambia los valores de las celdas de Visio desee responder sólo a los eventos CellChanged no originados por él. El programa cliente puede llamar primero al método QueueMarkerEvent y pasar una cadena de contexto para su uso posterior con el fin de poner entre corchetes el ámbito de su procesamiento.

 
vsoObject.QueueMarkerEvent "ScopeStart" 
 <My program changes cells here> 
vsoObject.QueueMarkerEvent "ScopeEnd" 

En el controlador de eventos MarkerEvent , el programa cliente podría usar la cadena de contexto pasada al método QueueMarkerEvent para identificar los eventos CellChanged que causó.

 
Dim blsICausedCellChanges as Boolean 
 
Private Sub vsoObject_MarkerEvent (ByVal vsoApplication As Visio.IVApplication, _ 
 ByVal lngSequenceNum As Long, ByVal strContextString As String) 
 
 If strContextString = "ScopeStart" Then 
 blsICausedCellChanges = True 
 ElseIf strContextString = "ScopeEnd" Then 
 blsICausedCellChanges = "False" 
 End If 
 
End Sub 
 
Private Sub vsoObject_CellChanged (ByVal Cell As Visio.IVCell) 
 
 'Respond only if this client didn't cause a cell change. 
 If blsICausedCellChanges = False Then 
 <respond to the cell changes> 
 End If 
 
End Sub

Si utiliza Microsoft Visual Basic o Visual Basic para Aplicaciones (VBA), la sintaxis de este tema describe una forma común y eficaz de controlar los eventos.

Si desea crear sus propios objetos Event , use el método Add o AddAdvise .

Para crear un objeto Event que ejecute un complemento, use el método Add, ya que se aplica a la colección EventList.

Para crear un objeto Event que reciba notificaciones, use el método AddAdvise.

Para encontrar un código de evento para el evento que desea crear, vea el tema sobre los códigos de evento.

Si controla este evento desde un programa que recibe una notificación, el evento MarkerEvent es uno de un grupo de eventos que registran información adicional en la propiedad EventInfo del objeto Application .

La propiedad EventInfo devuelve ContextString tal y como se ha descrito anteriormente. El argumento varMoreInfo de VisEventProc estará vacío.

Ejemplo:

Este ejemplo muestra cómo utilizar el evento MarkerEvent para marcar un evento en la cola de eventos.

Pegue este código de ejemplo en la ventana de código ThisDocument y, a continuación, ejecute UseMarker. La salida se muestra en la ventana Inmediato.

 
Dim WithEvents vsoApplication As Visio.Application 
 
Private Sub vsoApplication_MarkerEvent(ByVal app As Visio.IVApplication, _ 
 ByVal lngSequenceNum As Long, ByVal strContextString As String) 
 Debug.Print "Marker: " & app.EventInfo(0) 
 
End Sub 
 
Private Sub vsoApplication_ShapeAdded(ByVal vsoShape As Visio.IVShape) 
 Debug.Print " ShapeAdded: " & vsoShape.Name 
 
End Sub 
 
Public Sub UseMarker() 
 
 Set vsoApplication = ThisDocument.Application 
 
 'MarkerEvent events can be used to comment a segment 
 'of events in the queue. 
 vsoApplication.QueueMarkerEvent "I am starting..." 
 ActivePage.DrawRectangle 0, 0, 3, 3 
 vsoApplication.QueueMarkerEvent "I am finished..." 
 
End Sub

El resultado en la ventana Inmediato será como sigue:

Marker: I am starting...

ShapeAdded: Sheet.1

Marker: I am finished...

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.