Domanda

Esiste un modo in Visio VBA per vedere se c'è una forma davanti o dietro una forma in Visio?

Immagino di poter scrivere qualcosa che controlli il rettangolo di selezione di ogni forma in una pagina per vedere se occupa lo stesso spazio della mia forma. Preferirei usare qualcosa di incorporato poiché il controllo di ogni forma potrebbe richiedere molto tempo poiché un disegno diventa sempre più forme.

È stato utile?

Soluzione

La proprietà Shape.SpatialRelation ti dirà se due forme toccano. La proprietà Shape.Index ti dirà quale è davanti o dietro nell'ordine z.

Ecco un semplice esempio:

Public Sub DoShapesIntersect(ByRef shape1 As Visio.Shape, ByRef shape2 As Visio.Shape)

    '// do they touch?
    If (shape1.SpatialRelation(shape2, 0, 0) <> 0) Then

        '// they touch, which one is in front?
        If (shape1.Index > shape2.Index) Then
            Debug.Print shape1.Name + " is in front of " + shape2.Name
        Else
            Debug.Print shape1.Name + " is behind " + shape2.Name
        End If
    Else
        Debug.Print "shape1 and shape2 do not touch"
    End If

End Sub

Leggi di più qui:

Proprietà Shape.SpatialRelation su MSDN

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top