Visio VBA fonctionne pour voir s'il y a une forme devant / derrière une forme
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.
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:
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow