Partager via


Méthode Document.EndUndoScope (Visio)

Termine ou annule une transaction ayant une portée unique.

Syntaxe

expression. EndUndoScope (nScopeID, bCommit)

Expression Variable qui représente un objet Document .

Parameters

Nom Requis/Facultatif Type de données Description
nScopeID Obligatoire Long ID de portée à fermer.
bCommit Requis Boolean Indicateur précisant si les modifications effectuées durant la portée doivent être acceptées (True) ou annulées (False).

Valeur renvoyée

Aucune

Remarques

Si vous voulez savoir si les événements reçus résultent d'une opération particulière que vous avez lancée, encadrez-la à l'aide des méthodes BeginUndoScope et EndUndoScope. Dans vos gestionnaires d'événements, utilisez la propriété IsInScope pour vérifier si l'ID de portée renvoyé par la méthode BeginUndoScope appartient au contexte actuel. Vérifiez que vous avez supprimé l'ID de portée stocké par la propriété BeginUndoScope lorsque vous recevez l'événement ExitScope comportant cet ID.

Vous devez régler les appels à la méthode BeginUndoScope avec les appels à la méthode EndUndoScope. Si vous appelez la méthode BeginUndoScope, vous devrez appeler la méthode EndUndoScope dès que vous en aurez terminé avec les actions constituant votre portée. Ainsi, alors que les actions servant à la multiplication de documents doivent être solides dans une portée unique, la fermeture d'un document peut avoir comme effet secondaire d'effacer les informations d'annulation pour la portée ouverte en cours mais également d'effacer les piles d'annulation et de rétablissement. Si cela se produit, le passage de bCommit = False à EndUndoScope ne restaure pas les informations d’annulation.

Vous pouvez également utiliser les méthodes BeginUndoScope et EndUndoScope pour ajouter une action définie par un module complémentaire au flux d’annulation de Microsoft Visio. Cette fonction est utile dans le cadre de scénarios sans mode dans lesquels l'agent d'activation appartient à l'interface utilisateur d'un module complémentaire ou est une action de programmation sans mode.

Remarque

La plupart des actions Visio étant déjà encapsulées dans des étendues d’annulation internes, les modules complémentaires en cours d’exécution dans l’application n’ont pas besoin d’appeler cette méthode.

Exemple

Cet exemple indique comment utiliser la méthode EndUndoScope pour finir une transaction avec un ID de portée unique pour une instance de Microsoft 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

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.