Frage

Gibt es eine Möglichkeit in Visio VBA, um zu sehen, ob es eine Form vor oder hinter einer Form in Visio ist?

Ich stelle mir vor ich etwas schreiben könnte, die den Begrenzungsrahmen von jeder Form in einer Seite überprüft, ob es den gleichen Raum wie meine Form einnimmt. Ich würde lieber etwas verwenden, built-in, da jede Form Überprüfung lange dauern könnte als eine Zeichnung mehr und mehr Formen wird.

War es hilfreich?

Lösung

Die Shape.SpatialRelation Eigenschaft wird Ihnen sagen, wenn zwei Formen berühren. Die Shape.Index Eigenschaft wird Ihnen sagen, welche vor oder hinter in der z-Reihenfolge.

Hier ist ein einfaches Beispiel:

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

Lesen Sie mehr hier:

Shape.SpatialRelation Property auf MSDN

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top