Author Topic: Need the Event For Connector in Visio while Source or Destinitaion changes.  (Read 5451 times)

0 Members and 1 Guest are viewing this topic.


  • Newbie
  • *
  • Posts: 1
Hi ,
I am Developing an Window Application in
I have added "Microsoft Office Visio 12.0 Drawing Control" in my ToolBox.

I need to prepare AuditLog for all the shapes(added , deleted or connected to other shapes)

I am getting events for Shape added or deleted from the default event list provided properties of the Drawing Page.

But I am not getting Event for Connector. I have to audit for each action of Connector like (if I change the source or destinition of connector  or connected to some other shape).

Kindly Suggest.

Chitta ranjan


  • Hero Member
  • *****
  • Posts: 1412
The issue your facing is that it is a cell changed event that you are looking for (and they happen a lot). One technique is to separate you event handling from general handling and then have a separate event class for forumula changed (the sdk shows an example of this).

I use something like this to track custom properties and 1d shapes (connectors and shapes configured as 1d)


Public Sub AddFormulaModifiedEventHandler(vsoDoc As Visio.Document)
    Dim objEvent As Visio.Event
    Dim vsoDocEvents As Visio.EventList

   ' Have Visio send send notification of formula changed events
    ' to mvsoFormEventSink.
    Set mvsoFormEventSink = New clsFormulaModifiedEventSink
    Set mvsoFormEventSink.pVsoApp = Visio.Application
    Set mvsoFormEventSink.pvisDoc = Visio.Application.ActiveDocument
    Set vsoDocEvents = vsoDoc.EventList
    Set objEvent = vsoDocEvents.AddAdvise( _
        Visio.VisEventCodes.visEvtFormula + Visio.VisEventCodes.visEvtMod, _
        mvsoFormEventSink, _
        "", _
    ' Filter which formula changed events get to vsoEventSink.
    ' Reduce the list to only the events during which the value
    ' of a custom property or 1d shapes is modified.
    Dim intCellFilter(1 To 14) As Integer
    ' do the custom properties section
    intCellFilter(1) = Visio.visSectionProp
    intCellFilter(2) = Visio.visRowFirst
    intCellFilter(3) = Visio.visCustPropsValue
    intCellFilter(4) = Visio.visSectionProp
    intCellFilter(5) = Visio.visRowLast
    intCellFilter(6) = Visio.visCustPropsValue
    intCellFilter(7) = True
    ' do the 1d section
    intCellFilter(8) = Visio.visSectionObject
    intCellFilter(9) = Visio.visRowFirst
    intCellFilter(10) = Visio.vis1DBeginX
    intCellFilter(11) = Visio.visSectionObject
    intCellFilter(12) = Visio.visRowLast
    intCellFilter(13) = Visio.vis1DEndY
    intCellFilter(14) = True
    objEvent.SetFilterSRC intCellFilter

End Sub