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

Постановка в очередь при завершении внутренней команды или при выходе клиента службы автоматизации из область с помощью метода EndUndoScope.

Синтаксис

expression. ExitScope (app, nScopeID, bstrDescription, bErrOrCancelled)

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

Параметры

Имя Обязательный или необязательный Тип данных Описание
приложение Обязательный [IVAPPLICATION] Экземпляр Microsoft Visio, содержащий область.
nScopeID Обязательный Long Не зависящий от языка номер, описывающий только что завершенную операцию или идентификатор область, возвращенный методом BeginUndoScope.
bstrDescription Обязательный String Текстовое описание операции, которая изменяется в разных языковых версиях. Содержит описание операции Visio в пользовательском интерфейсе или описание, переданное методу BeginUndoScope .
bErrOrCancelled Обязательный Boolean Значение true, если во время область произошла ошибка или если область была отменена; Значение false, если ошибка не возникла и она не была отменена.

Замечания

Значение nScopeID , возвращаемое в случае операции Visio, эквивалентно константам, связанным с командами, которые начинаются с visCmd*.

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

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

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

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

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

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

Свойство EventInfo возвращает bstrDescription, как описано ранее. Кроме того, аргумент varMoreInfo для VisEventProc содержит строку в следующем формате: [<nScopeID>;<bErrOrCancelled>;<bstrDescription>;<nHwndContext>], где nHwndContext — это дескриптор окна (HWND) окна, который является контекстом для команды; nHwndContext может иметь значение 0.

Для ExitScopeзначение bErrOrCancelled не равно нулю, если операция завершилась сбоем или была отменена.

Пример

В этом примере показано, как использовать событие ExitScope . В примере определяется, является ли вызов процедуры, обрабатывающей событие CellChanged, в определенном область, то есть происходит ли вызов между событиями EnterScope и ExitScope для этого область.

 
Private WithEvents vsoApplication As Visio.Application 
Private lngScopeID AsLong 
 
Public Sub Scope_Example() 
 
 Dim vsoShape As Visio.Shape 
 
 'Set the module-level application variable to 
 'trap application-level events. 
 Set vsoApplication = Application 
 
 'Begin a scope. 
 lngScopeID = Application.BeginUndoScope("Draw Shapes") 
 
 'Draw three shapes. 
 Set vsoShape = ActivePage.DrawRectangle(1, 2, 2, 1) 
 ActivePage.DrawOval 3, 4, 4, 3 
 ActivePage.DrawLine 4, 5, 5, 4 
 
 'Change a cell (to trigger a CellChanged event). 
 vsoShape.Cells("Width").Formula = 5 
 
 'End and commit this scope. 
 Application.EndUndoScope lngScopeID, True 
 
End Sub 
 
Private Sub vsoApplication_CellChanged(ByVal Cell As IVCell) 
 
 'Check to see if this cell change is the result of something 
 'happening within the scope. 
 If vsoApplication.IsInScope(lngScopeID) Then 
 Debug.Print Cell.Name & " changed in scope "; lngScopeID 
 End If 
 
End Sub 
 
Private Sub vsoApplication_EnterScope(ByVal app As IVApplication, _ 
 ByVal nScopeID As Long, _ 
 ByVal bstrDescription As String) 
 
 If vsoApplication.CurrentScope = lngScopeID Then 
 Debug.Print "Entering my scope " & nScopeID 
 Else 
 Debug.Print "Enter Scope " & bstrDescription & "(" & nScopeID & ")" 
 End If 
 
End Sub 
 
Private Sub vsoApplication_ExitScope(ByVal app As IVApplication, _ 
 ByVal nScopeID As Long, _ 
 ByVal bstrDescription As String, _ 
 ByVal bErrOrCancelled As Boolean) 
 
 If vsoApplication.CurrentScope = lngScopeID Then 
 Debug.Print "Exiting my scope " & nScopeID 
 Else 
 Debug.Print "Exit Scope " & bstrDescription & "(" & nScopeID & ")" 
 End If 
 
End Sub

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

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