Share via


Evento Application.MarkerEvent (Visio)

Causado pela chamada do método QueueMarkerEvent .

Sintaxe

expressão. MarkerEvent (aplicativo, SequenceNum, ContextString)

expressão Uma variável que representa um Aplicativo objeto.

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
App Obrigatório [IVAPPLICATION] A instância ativa do Microsoft Visio.
SequenceNum Obrigatório Long A posição ordinal desse evento em relação a eventos passados.
ContextString Obrigatório String A sequência de caracteres de contexto que passou pelo método QueueMarkerEvent.

Comentários

Diferentemente de outros eventos que o Visio dispara, o evento MarkerEvent é disparado por um programa cliente. Um programa cliente recebe o evento MarkerEvent apenas se o programa chamou o método QueueMarkerEvent.

Usando o evento MarkerEvent em conjunto com o método QueueMarkerEvent, um programa cliente pode enfileirar um evento para ele mesmo. O programa cliente recebe o evento MarkerEvent após o Visio disparar todos os eventos presentes em sua fila de eventos no momento da chamada do QueueMarkerEvent.

O evento MarkerEvent passa a sequência de texto de contexto que passou pelo método QueueMarkerEvent e o número da sequência do evento MarkerEvent para o manipulador de evento MarkerEvent. Qualquer um desses valores pode ser usado para correlacionar chamadas QueueMarkerEvent com eventos MarkerEvent . Dessa maneira, um programa cliente pode distinguir eventos causados por ele de eventos que ele não causou.

Por exemplo, um programa cliente que altera os valores das células do Visio pode querer responder apenas aos eventos CellChanged que ele não causou. O programa cliente pode primeiro chamar o método QueueMarkerEvent e passar uma cadeia de caracteres de contexto para uso posterior para agrupar o escopo de seu processamento.

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

No manipulador de eventos MarkerEvent , o programa cliente poderia usar a cadeia de caracteres de contexto passada para o método QueueMarkerEvent para identificar os eventos CellChanged que ele causou.

 
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

Se estiver usando o Microsoft Visual Basic ou o Visual Basic for Applications (VBA), a sintaxe deste tópico descreverá uma maneira comum e eficiente de lidar com eventos.

Se você quiser criar seus próprios objetos Event , use o método Add ou AddAdvise .

Para criar um objeto Event que execute um complemento, use o método Add, uma vez que ele aplica-se à coleção EventList.

Para criar um objeto Event que receba notificação, use o método AddAdvise.

Para localizar um código de evento que você deseja criar, consulte Códigos de eventos.

Se você estiver lidando com esse evento de um programa que recebe uma notificação, o evento MarkerEvent será um de um grupo de eventos que registram informações extras na propriedade EventInfo do objeto Application .

A propriedade EventInfo retorna ContextString, conforme descrito acima. O argumento varMoreInfo para VisEventProc será vazio.

Exemplo

Este exemplo mostra como usar o evento MarkerEvent para marcar um evento na fila de eventos.

Cole este código de exemplo na janela de código ThisDocument e execute UseMarker. A saída é exibida na janela Imediata.

 
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

O resultado na janela Immediate é semelhante a isso:

Marcador: estou começando...

ShapeAdded: Sheet.1

Marcador: terminei...

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.