Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Запускает транзакцию с уникальным идентификатором область для экземпляра 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 и обратная связь.