Поделиться через


Событие Application.MarkerEvent (Visio)

Вызвано вызовом метода QueueMarkerEvent .

Синтаксис

expression. MarkerEvent (app, SequenceNum, ContextString)

выражение: переменная, представляющая объект Application.

Параметры

Имя Обязательный или необязательный Тип данных Описание
Приложение Обязательный [IVAPPLICATION] Активный экземпляр Microsoft Visio.
SequenceNum Обязательный Long Порядковый номер этого события по отношению к прошлым событиям.
ContextString Обязательный String Строка контекста, переданная методом QueueMarkerEvent .

Замечания

В отличие от других событий, запускаемых Visio, событие MarkerEvent запускается клиентской программой. Клиентская программа получает событие MarkerEvent только в том случае, если клиентская программа называется методом QueueMarkerEvent .

Используя событие MarkerEvent в сочетании с методом QueueMarkerEvent , клиентская программа может ставить событие в очередь к себе. Клиентская программа получает событие MarkerEvent после того, как Visio запускает все события, присутствующих в очереди событий во время вызова QueueMarkerEvent .

Событие MarkerEvent передает в обработчик событий MarkerEvent строку контекста, переданную методом QueueMarkerEvent, и порядковый номер события MarkerEvent. Любое из этих значений можно использовать для корреляции вызовов QueueMarkerEvent с событиями MarkerEvent . Таким образом, клиентская программа может отличать события, вызванные ею, от тех, которые она не вызвала.

Например, клиентской программе, изменяющей значения ячеек Visio, может потребоваться только реагировать на события CellChanged , которые она не вызвала. Клиентская программа может сначала вызвать метод QueueMarkerEvent и передать строку контекста для последующего использования в квадратные скобки области ее обработки.

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

В обработчике событий MarkerEvent клиентская программа может затем использовать строку контекста, переданную методу QueueMarkerEvent , для идентификации вызванных ею событий CellChanged .

 
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

Если вы используете Microsoft Visual Basic или Visual Basic для приложений (VBA), синтаксис в этом разделе описывает распространенный и эффективный способ обработки событий.

Если вы хотите создать собственные объекты Event , используйте метод Add или AddAdvise .

Чтобы создать объект Event , запускающий надстройку, используйте метод Add в том виде, в котором он применяется к коллекции EventList .

Чтобы создать объект Event , получающий уведомление, используйте метод AddAdvise .

Чтобы найти код события, которое требуется создать, см. статью Коды событий.

Если вы обрабатываете это событие из программы, которая получает уведомление, событие MarkerEvent является одним из групп событий, которые записывают дополнительные сведения в свойство EventInfo объекта Application .

Свойство EventInfo возвращает ContextString , как описано выше. Аргумент varMoreInfo для VisEventProc будет пустым.

Пример

В этом примере показано, как использовать событие MarkerEvent для маркировки события в очереди событий.

Вставьте этот пример кода в окно кода ThisDocument и запустите UseMarker. Выходные данные отображаются в окне Интерпретация.

 
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

Выходные данные в окне Интерпретация выглядят следующим образом:

Маркер: Я начинаю...

ФигураДобавлено: Лист.1

Маркер: Я закончил...

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.