Visio Guy

Visio => Programming & Code => Topic started by: smelvadj on April 05, 2019, 02:43:55 PM

Title: Update ActivePage when shifting between fans/pages
Post by: smelvadj on April 05, 2019, 02:43:55 PM
All my event based code depends on a m_page variable which is set AS the activePage. Yet, i need a Way to set my m_page to the real active page where i do my changes before the event based code is activated. Hos can i update the ActivePage to always be the current page ??
Title: Re: Update ActivePage when shifting between fans/pages
Post by: Yacine on April 06, 2019, 02:45:13 AM
m_page won't be updated when you change the page, but activepage will.
So either you reassing m_page to activepage in each piece of your code,
or you catch the event page changed at doc level and do the reassignement there - at one central place.
Title: Re: Update ActivePage when shifting between fans/pages
Post by: smelvadj on April 06, 2019, 02:49:35 PM
Hi, Think you for the reply.

I have tried the pageChanged event, but this only fires if i change the name of the page.

I an looking for another event which is triggered when i shift page, because alle my other code are fired by m_page events and is therefore dependent on that m_page is equal to ActivePage.
Title: Re: Update ActivePage when shifting between fans/pages
Post by: OldSchool1948 on April 08, 2019, 12:23:23 PM
This will update the m_vsoPage variable after you change pages

Code: [Select]
Private Sub m_visWins_WindowTurnedToPage( _
                ByVal visWin As IVWindow)

    '// visWin is the window, as it is AFTER
    '// the page has been turned.
       
    Set m_vsoPage = Visio.ActivePage

End Sub

This will update the m_vsoPage variable before you change pages

Code: [Select]
Private Sub m_visWins_BeforeWindowPageTurn( _
                ByVal visWin As IVWindow)

    '// Note: visWin.Page holds the page that
    '// visWin shows BEFORE the page is turned!

    Set m_vsoPage = Visio.ActivePage
   
End Sub

I use this code to setup and close things out

Code: [Select]
Option Base 1
Option Explicit

Private WithEvents m_vsoApp As Visio.Application
Private WithEvents m_visWins As Visio.Windows
Private WithEvents m_vsoPage As Visio.Page

Code: [Select]
Private Sub Document_RunModeEntered( _
                ByVal doc As IVDocument)
                   
    '// Initialize Global Variables
    Set m_vsoApp = ThisDocument.Application
    Set m_visWins = Visio.Application.Windows
    Set m_vsoPage = Visio.ActivePage

End Sub

Code: [Select]
Private Sub Document_BeforeDocumentClose( _
                ByVal doc As IVDocument)
       
    Set m_vsoApp = Nothing
    Set m_visWins = Nothing
    Set m_vsoPage = Nothing

End Sub