Método Document.BeginUndoScope (Visio)
Inicia uma transação com uma identificação de escopo exclusiva para uma instância do Microsoft Visio.
Sintaxe
expressão. BeginUndoScope (bstrUndoScopeName)
Expressão Uma variável que representa um objeto Document .
Parâmetros
Nome | Obrigatório/Opcional | Tipo de dados | Descrição |
---|---|---|---|
bstrUndoScopeName | Obrigatório | String | O nome do escopo; pode aparecer na interface do usuário do Visio. |
Valor de retorno
Long
Comentários
Se precisar saber se os eventos recebidos são o resultado de uma determinada operação que você iniciou, use os métodos BeginUndoScope e EndUndoScope para quebrar sua operação. Nos seus manipuladores de eventos, use a propriedade IsInScope para testar se a identificação de escopo retornada pelo método BeginUndoScope é parte do contexto atual. Certifique-se de limpar a identificação de escopo armazenada da propriedade BeginUndoScope ao receber o evento ExitScope com essa identificação.
Você deve equilibrar as chamadas para o método BeginUndoScope e as chamadas para o método EndUndoScope. Se chamar o método BeginUndoScope, você deverá chamar o método EndUndoScope assim que concluir as ações que constituem seu escopo. Além disso, enquanto as ações para vários documentos devem ser robustas em um único escopo, fechar um documento pode ter o efeito colateral de apagar as informações de desfazer para o escopo aberto no momento, bem como apagar as pilhas desfazer e refazer. Se isso acontecer, passar bCommit = False para EndUndoScope não restaurará as informações de desfazer.
Você também pode usar os métodos BeginUndoScope e EndUndoScope para adicionar uma ação definida por um complemento ao fluxo de desfazer do Visio. Isso é útil quando você está operando em cenários sem janela restrita em que o agente iniciador é parte de uma ação programática sem janela restrita ou uma interface do usuário de um complemento.
Observação
A maioria das ações do Visio já está envolvida em escopos internos de desfazer, portanto, os complementos em execução no aplicativo não precisam chamar esse método.
Exemplo
Este exemplo mostra como usar o método BeginUndoScope para iniciar uma transação com uma identificação de escopo exclusiva para uma instância do 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
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.