Share via


CurrentScope Property [Visio 2003 SDK Documentation]

Determines the ID of the scope that causes an event to fire.

longRet = object**.CurrentScope**

longRet     Long. The scope ID of the most recently fired EnterScope event; visScopeIDInvalid (-1) if a scope isn't open.

object     Required. An expression that returns an Application object.

Version added

2000

Remarks

The scope ID could be an internal Microsoft Office Visio scope ID that corresponds to a Visio command or an external scope ID passed to an Automation client by the BeginUndoScope method.

The recipients of an event consider a scope open if the EnterScope event has fired but the ExitScope event has not fired.

To determine if the event queue firing is related to a particular scope internal to the application or one opened and closed by an Automation client, use the IsInScope property.

Example

This example shows how to use the CurrentScope property to determine the ID of the current scope.

Private WithEvents vsoApplication As Visio.Application 
Private lngScopeID As Long

Public Sub ScopeActions()
 
    Dim vsoShape As Visio.Shape 

    'Set the module level application variable to
    'trap Application level events.
    Set vsoApplication = Application 

    'Begin a scope, set the module level 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 (which would trigger a cell changed 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 current 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 strDescription As String, _ 
    ByVal bErrOrCancelled As Boolean) 

    If vsoApplication.CurrentScope = lngScopeID Then
        Debug.Print "Exiting current scope " & nScopeID 
    Else
        Debug.Print "ExitScope " & bstrDescription & "(" & nScopeID & ")" 
    End If 
 
End Sub

Applies to | Application object | InvisibleApp object

See Also | BeginUndoScope method | EnterScope event | ExitScope event | IsInScope property | IsUndoingOrRedoing property