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.