Méthode Application.BeginUndoScope (Visio)
Démarre une transaction avec un ID de portée unique pour une instance de Microsoft Visio.
Syntaxe
expression. BeginUndoScope (bstrUndoScopeName)
expressionUne variable qui représente un objetApplication.
Paramètres
Nom | Requis/Facultatif | Type de données | Description |
---|---|---|---|
bstrUndoScopeName | Requis | String | Nom de la portée ; peut apparaître dans l'interface utilisateur de Visio. |
Valeur renvoyée
Entier long
Remarques
Si vous avez besoin de savoir si les événements que vous recevez sont le résultat d’une opération particulière que vous avez lancée, utilisez les méthodes BeginUndoScope et EndUndoScope pour encapsuler votre opération. 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. Veillez à effacer l’ID d’étendue que vous avez stocké de la propriété BeginUndoScope lorsque vous recevez l’événement ExitScope avec 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 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.
Si votre solution Visual Studio inclut la référence Microsoft.Office.Interop.Visio , cette méthode correspond aux types suivants :
- Microsoft.Office.Interop.Visio.IVApplication.BeginUndoScope(string)
Exemple
Cet exemple indique comment utiliser la méthode BeginUndoScope pour démarrer 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 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
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.