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.