Visio VBA fonctionne pour voir s'il y a une forme devant / derrière une forme

StackOverflow https://stackoverflow.com/questions/154408

  •  03-07-2019
  •  | 
  •  

Question

Existe-t-il un moyen dans Visio VBA de voir s’il existe une forme devant ou derrière une forme dans Visio?

J'imagine que je pourrais écrire quelque chose qui coche la boîte de sélection de chaque forme dans une page pour voir si elle occupe le même espace que ma forme. Je préfère utiliser quelque chose d'intégré, car vérifier chaque forme peut prendre beaucoup de temps car un dessin prend de plus en plus de formes.

Était-ce utile?

La solution

La propriété Shape.SpatialRelation vous dira si deux formes se touchent. La propriété Shape.Index vous indiquera ce qui se trouve devant ou derrière dans l'ordre z.

Voici un exemple simple:

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

Lisez la suite ici:

Propriété Shape.SpatialRelation sur MSDN

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top