Share via


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.