Compartilhar via


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.