Método Application.EndUndoScope (Visio)
Finaliza ou cancela uma transação que tem um escopo exclusivo.
Sintaxe
expressão. EndUndoScope (nScopeID, bCommit)
expressão Uma variável que representa um Aplicativo objeto.
Parâmetros
Nome | Obrigatório/Opcional | Tipo de dados | Descrição |
---|---|---|---|
nScopeID | Obrigatório | Long | A identificação do escopo a ser fechado. |
bCommit | Obrigatório | Boolean | Um sinalizador que indica que as alterações feitas durante o escopo devem ser aceitas (True) ou canceladas (False). |
Valor de retorno
Nada
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 ID de escopo armazenada na propriedade BeginUndoScope quando receber o evento ExitScope com essa ID.
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 Microsoft 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.
Se a solução do Visual Studio incluir a referência Microsoft.Office.Interop.Visio , este método será mapeado para o seguinte tipo:
- Microsoft.Office.Interop.Visio.IVApplication.EndUndoScope(int, bool)
Exemplo
Este exemplo mostra como usar o método EndUndoScope para finalizar uma transação que tem uma identificação de escopo exclusiva para uma instância do 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
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.