Метод Application.BeginUndoScope (Visio)

Запускает транзакцию с уникальным идентификатором область для экземпляра Microsoft Visio.

Синтаксис

expression. BeginUndoScope (bstrUndoScopeName)

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

Параметры

Имя Обязательный или необязательный Тип данных Описание
bstrUndoScopeName Обязательный String Имя область; может отображаться в пользовательском интерфейсе Visio.

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

Long

Замечания

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

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

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

Примечание.

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

Если ваше решение Visual Studio содержит ссылку microsoft.Office.Interop.Visio , этот метод сопоставляется со следующими типами:

  • Microsoft.Office.Interop.Visio.IVApplication.BeginUndoScope(string)

Пример

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

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