Событие 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 и обратная связь.