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


Метод Document.EndUndoScope (Visio)

Завершает или отменяет транзакцию с уникальной областью.

Синтаксис

expression. EndUndoScope (nScopeID, bCommit)

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

Параметры

Имя Обязательный или необязательный Тип данных Описание
nScopeID Обязательный Long Идентификатор закрываемой области.
bCommit Обязательный Boolean флаг, указывающий, что изменения, внесенные в область, должны быть приняты (True) или отменены (False).

Возвращаемое значение

Отсутствует

Примечания

Если необходимо знать, являются ли события, которые вы получаете, результатом конкретной операции, которую вы инициировали, используйте методы BeginUndoScope и EndUndoScope , чтобы обертывать операцию. В обработчиках событий используйте свойство IsInScope , чтобы проверить, является ли идентификатор области, возвращенный методом BeginUndoScope , частью текущего контекста. При получении события ExitScope с этим идентификатором убедитесь, что вы удалили идентификатор области, сохраненный из свойства BeginUndoScope.

Вызовы метода BeginUndoScope необходимо сбалансировать с вызовами метода EndUndoScope . При вызове метода BeginUndoScope следует вызвать метод EndUndoScope сразу после выполнения действий, составляющих область. Кроме того, хотя действия для нескольких документов должны быть надежными в пределах одной области, закрытие документа может иметь побочный эффект очистки сведений об отмене для открытой области, а также очистки стеков отмены и повтора. В этом случае передача bCommit = Falseв EndUndoScope не восстанавливает сведения об отмене.

Вы также можете использовать методы BeginUndoScope и EndUndoScope , чтобы добавить действие, определенное надстройкой, в поток отмены microsoft Visio. Это полезно, если вы работаете в сценариях без режима, где агент-инициатор является частью пользовательского интерфейса надстройки или немодерным программным действием.

Примечание.

Большинство действий Visio уже заключены во внутренние области отмены, поэтому надстройкам, работающим в приложении, не нужно вызывать этот метод.

Пример

В этом примере показано, как использовать метод EndUndoScope для завершения транзакции с уникальным идентификатором области для экземпляра Visio.

 
Private WithEvents vsoApplication As Visio.Application 
Private lngScopeID As Long 
 
Public Sub EndUndoScope_Example() 
 
 Dim vsoShape As Visio.Shape 
 
 'Set the module-level application variable to 
 'trap Application-level events. 
 Set vsoApplication = Visio.Application 
 
 'Begin a scope and set the module-level variable. 
 lngScopeID = vsoApplication.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. 
 vsoApplication.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 и обратная связь.