Méthode Application.EndUndoScope (Visio)

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

Syntaxe

expression. EndUndoScope (nScopeID, bCommit)

expressionUne variable qui représente un objetApplication.

Paramètres

Nom Requis/Facultatif Type de données Description
nScopeID Obligatoire Long ID de portée à fermer.
bCommit Requis Boolean Indicateur indiquant que les modifications apportées pendant l’étendue 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. 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 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.

Si votre solution Visual Studio inclut la référence Microsoft.Office.Interop.Visio , cette méthode correspond au type suivant :

  • Microsoft.Office.Interop.Visio.IVApplication.EndUndoScope(int, bool)

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.