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.

Foi útil?

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:

Shape.SpatialRelation propriedade no MSDN

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top