Share via


Método InvisibleApp.EndUndoScope (Visio)

Finaliza o cancela una transacción que tiene un ámbito único.

Sintaxis

expresión. EndUndoScope (nScopeID, bCommit)

Expresión Variable que representa un objeto InvisibleApp .

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
nScopeID Necesario Long Identificador del ámbito que se desea cerrar.
bCommit Obligatorio Boolean Marca que indica que los cambios realizados durante el ámbito deben aceptarse (True) o cancelarse (False).

Valor devuelto

Nothing

Comentarios

Si desea saber si los eventos que recibe son el resultado de una determinada operación que ha iniciado, utilice los métodos BeginUndoScope y EndUndoScope para envolver la operación. En los controladores de eventos, utilice la propiedad IsInScope para probar si el identificador de ámbito devuelto por el método BeginUndoScope es parte del contexto actual. Asegúrese de borrar el identificador de ámbito que almacenó de la propiedad BeginUndoScope cuando reciba el evento ExitScope con ese identificador.

Debe igualar las llamadas al método BeginUndoScope con las llamadas al método EndUndoScope. Si llama al método BeginUndoScope, debería llamar al método EndUndoScope en cuanto haya finalizado las acciones que constituyen el ámbito. Por otra parte, si bien las acciones con varios documentos deberían ser estables dentro de un solo ámbito, cerrar un documento puede tener el efecto secundario de borrar la información de deshacer para el ámbito abierto actualmente, así como el de borrar las pilas de deshacer y rehacer. Si esto sucede, pasar bCommit = False a EndUndoScope no restaura la información de deshacer.

Además, puede usar los métodos BeginUndoScope y EndUndoScope para agregar una acción definida por un complemento a la secuencia de deshacer de Microsoft Visio. Esto resulta útil si está trabajando en escenarios sin modo en los que el agente de inicio forma parte de la interfaz de usuario de un complemento o de una acción sin modo creada mediante programación.

Nota:

La mayoría de las acciones de Visio ya están encapsuladas en ámbitos de deshacer internos, por lo que los complementos que se ejecutan en la aplicación no necesitan llamar a este método.

Ejemplo:

Este ejemplo muestra cómo utilizar el método EndUndoScope para finalizar una transacción que tiene un identificador de ámbito único para una instancia de 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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.