... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$182,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Retângulos, linhas e bordas em relatórios

Os relatórios possuem um método chamado Line, que nos permite criar formas retangulares, em qualquer posição. 

O método Line tem a seguinte sintaxe:

Line (esquerda, topo)-(esquerda, topo), Cor, B

Observe que temos que indicar duas coordenadas para definir a posição e o tamanho do retângulo desejado: Esquerda significa o quanto a coordenada deverá estar afastada do canto esquerdo do relatório e Topo significa o quanto deverá estar afastada da parte superior do relatório.  A contagem é a partir das margens.

Exemplo:

me.Line (0,0) - (567,1134), vbRed, B

O resultado é este que você vê na imagem:

LINE

 

O VBA possui uma unidade de medida, chamada Twip, que equivale a 1/20 de um ponto ou 1/1.440 de uma polegada. Existem 567 Twips em um centímetro.  Os valores 567 e 1134 da coordenada acima estão em Twips.

Para facilitar a nossa compreensão, podemos trabalhar com valores em centímetros , bastando para isso, multiplicar o valor por 567 Twips.  Nosso exemplo acima,  fica assim:

me.Line (0,0) - (567 * 1, 567 * 2), vbRed, B

Ou seja, nossa segunda coordenada tem 1 cm afastada da esquerda e 2cm afastada do topo.

Podemos criar diversos retângulos no relatório.  Exemplo de dois retângulos:

me.Line (0,0) - (567 * 1, 567 * 2), vbRed, B

me.Line (567 * 0.3, 567 * 0.5) - (567 * 2.3, 567 * 3.5), vbBlue, B

Veja o resultado na imagem abaixo! O retângulo azul medindo 2cm x 3cm e afastado 0.3 cm da lateral esquerda e a 0.5 cm do topo.

LINE

 

Podemos alterar a largura da linha, através do propriedade DrawWidth.  Este valor é medido em Pixel que vai de 1 pixel (padrão) a 32767 pixels.  Exemplo:

me.DrawWidth = 8 'pixels

me.Line (0,0) - (567 * 1, 567 * 2), vbRed, B

me.DrawWidth = 1 'pixel

me.Line (567 * 0.3, 567 * 0.5) - (567 * 2.3, 567 * 3.5), vbBlue, B

Observe bem a largura da linha do retângulo vermelho em relação a do Azul:

LINE

 

Para preencher o retângulo, basta acrescentar um F depois do B. Exemplo:

me.Line (0,0) - (567 * 1, 567 * 2), vbRed, BF

Agora, veja o resultado:

LINE

 

Podemos criar um retângulo bem estreito, que dá para usá-lo como linha. Exemplo:

Me.Line (567 * 1, 567 * 1)-(567 * 1.02, 567 * 4), vbRed, B 'linha na vertical

Me.Line (567 * 2, 567 * 2)-(567 * 6, 567 * 2.03), vbRed, B 'linha na horizontal

Veja o resultado na figura abaixo:

LINE

 

Existem duas propriedades que nos permitem obter as dimensões do relatório:  Me.ScaleHeight que nos fornece a altura e a Me.ScaleWidth que nos fornece a largura.  As medidas são fornecidas em Twips. 

Então, fica fácil montarmos um retângulo, nas dimensões do relatório, formando com isso a nossa borda.  Exemplo:

me.DrawWidth = 8 'pixels

Me.Line (0, 0)-(Me.ScaleWidth - 25, Me.ScaleHeight - 25), vbRed, B

Observe que diminuí o tamanho em 25 twips para que as partes do retângulo da lateral direita e inferior apareçam.

Temos, como resultado, a imagem abaixo:

LINE

 

O evento que recebe o método Line para a formação da borda externa é o "Na página",  mas também pode ser utilizado em outras seções do relatório.  Exemplo do código utilizado em dois eventos de um relatório:

Private Sub Detalhe_Format(Cancel As Integer, PrintCount As Integer)
   Me.Line (0, 0)-(Me.ScaleWidth - 25, Me.ScaleHeight - 25), vbRed, B
End Sub

----------------------------------------------------------------------------------------------


Private Sub Report_Page()
   Me.Line (0, 0)-(Me.ScaleWidth - 25, Me.ScaleHeight - 25), vbBlack, B
End Sub

 

Veja,  na imagem abaixo, o resultado!  A borda preta formada no evento "Na página(report_page)" e as bordas em vermelho, geradas no evento "Ao Formatar" da seção detalhes.

LINE

 

Existe também o método para a criação de círculos (Circle) e que vou deixar para você pesquisar no help do Access. 

Bom estudo!


 

 


9 comentário(s)

MARCIO MELO - RJ   23/06/2011 13:52:16

Nosssaaa! matou a pau, gostei muito rsrsrs, você realmente domina o VBA e seu funcionamento, fico super feliz em ler seus artigos e obter conhecimento tão refinado, eu ainda não tive a oportunidade de fazer um curso avançado em nenhuma área da informática tudo que sei venho aprendendo na internet e aqui está sendo meu verdadeiro aprendizado, vou deixar aqui o meu último projeto como exemplo de tudo que aprendi www.sic.iniciantejoomla.com e acreditem esta tudo aqui no usandoaccess.

Obrigado Avelino! por mais esse artigo...

Sou mais Brasil!

Gilberto Mendes   23/06/2011 18:46:01

Bem divertido. Lembrou os tempos de visual basic no msx

Dá pra fazer vários relatórios e gráficos interessantes.

Legal que tem o comando circle e paint. Dá pra fazer várias brincadeiras:

Crie um relatório de uns 16 x 16cm

Private Sub Detalhe_Format(Cancel As Integer, FormatCount As Integer)

For i = 1 To 8000 Step 400
Me.Line (i, 0)-(8000, i), vbBlack
Me.Line (0, i)-(i, 8000), vbBlack
Next
Me.Line (0, 0)-(8000, 8000), vbRed, B

End Sub

Jeferson Braz   23/06/2011 21:05:46

Sem comentários.

O usandoaccess.com.br é o site de conteudo Access que mais cresce, e com artigos de qualidade como esse, vai se destacar ainda mais.

Vem para provar que quando há um programador de peso na frente da máquina, o Access é uma ferramenta sem concorrentes.

Sds

Anderson Luiz   23/06/2011 23:08:29

Grande Avelino

Suas aulas são memoráveis. Parabéns pelo conteúdo

Marcelo David   24/06/2011 00:28:35

Grande Avelino!!!
Voce simplismente surpreende a cada artigo!! Parabéns!!!

Lauro Sales   24/06/2011 18:07:03

Parabéns Avelino.
Aqui eu aprendo muito.

Wesley Soares   30/10/2013 10:03:54

Estou tentando colocar bordas na seção Detalhes de um relatório meu e esta dica sua foi boa porém ela não funciona quando existem campos com a função "Pode Ampliar", neste caso ele insere a borda porém ela fica no tamanho original da seção e não se expande com ela.
Conhece alguma forma de inserir borda ampliável em seções?

Avelino Sampaio   30/10/2013 10:38:07

Wesley,

Esperimente utilizar as bordas dos campos. Faça o seguinte:


1- Marque todos os campos
2- Clique na guia "Organizar" da Ribbon
3- No Grupo layout da ribbon clique no botão "tabela"

Veja então se atende.

Sucesso!

Wesley   30/01/2016 13:24:03

Vixe, muito atrasado mesmo mas sua dica de organizar layout por tabela foi excelente. Grato.


Envie seu comentário: