função Visio VBA para ver se há uma forma na frente / atrás de uma forma
Pergunta
Existe uma maneira no Visio VBA para ver se há uma forma na frente ou atrás de uma forma no Visio?
Eu imagino que eu poderia escrever algo que verifica a caixa delimitadora de cada forma em uma página para ver se ele ocupa o mesmo espaço que a minha forma. Eu prefiro usar algo built-in desde a verificação de cada forma pode levar um longo tempo como um desenho fica mais e mais formas.
Solução
A propriedade Shape.SpatialRelation vai dizer se duas formas tocar. A propriedade Shape.Index irá dizer-lhe que está na frente ou atrás na z-ordem.
Aqui está um exemplo simples:
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
Leia mais aqui:
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow