bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Retãngulos, linhas e borda em relatórios

Retângulos, linhas e bordas em relatórios

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 2x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

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!


 

 


15 comentário(s)

OLDRIVG   28/03/2019 02:45:18

Prezado Avelino, bom dia.
Desculpe-me pela demora.

Fiz como sugeriu, mas não me atendeu. O retângulo não acompanha a ampliação dos campos e não consegui configurar a margem esquerda e não imprime como é visualizado.
Mas agradeço-lhe pela a atenção.

Avelino Sampaio   14/03/2019 04:16:29

Oldrivg,

Altere a escala Width até que a borda apareça. Escolha um valor bem grande para testar. Exemplo (1250). Se aparecer vai testando valores menores até chegar na posição desejada.

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

Sucesso!

OLDRIVG   14/03/2019 03:31:55

Prezado Avelino, tentei utilizar o código
Me.DrawWidth = 8 'Valor em Pixel
Me.Line (0, 0)-(Me.ScaleWidth - 25, Me.ScaleHeight - 25), vbBlack, B
no evento "Na Página" de um formulário, conforme seu exemplo acima para formar uma borda. Entretanto, somente são exibidas as bordas superior, inferior e esquerda. A borda direita não é exibida. Porventura existe uma solução para este problema?
Desde já agradeço.

Avelino Sampaio   22/06/2018 02:35:41

Liomar,

muito obrigado pelo seu feedback e sucesso!

Liomar   20/06/2018 08:03:33

Fiz um armengo aqui que deu certo, no evento ao formatar da seção detalhe do Relatório. Trata-se de um Relatório de Conciliação Bancária. vejam:

Dim iChequesConciliados As Integer, dAlturaAcrescer As Double, dAlturaFixa As Double
iChequesConciliados = Nz(DCount("nrCheque", "tblSubConciliaçãoBanc", "NumConc=" & Me.CodConc), 0)

dAlturaFixa = 0
Me.DrawWidth = 10 'pixel

Select Case iChequesConciliados
Case Is = 0
dAlturaFixa = 11
Me.Line (50, 50)-(567 * 15, 567 * dAlturaFixa), vbBlack, B

Case Is <= 2
dAlturaFixa = 10
dAlturaAcrescer = iChequesConciliados * 0.4 'Aqui considero o tamanho a crescer por linha de registro.
Me.Line (50, 50)-(567 * 15, 567 * (dAlturaFixa + dAlturaAcrescer)), vbBlack, B

Case 2 To 4
dAlturaFixa = 9.5
dAlturaAcrescer = iChequesConciliados * 0.6
Me.Line (50, 50)-(567 * 15, 567 * (dAlturaFixa + dAlturaAcrescer)), vbBlack, B

Case 5 To 8
dAlturaFixa = 9.8
dAlturaAcrescer = iChequesConciliados * 0.5
Me.Line (50, 50)-(567 * 15, 567 * (dAlturaFixa + dAlturaAcrescer)), vbBlack, B

Case Is > 8
dAlturaFixa = 10
dAlturaAcrescer = iChequesConciliados * 0.5
Me.Line (50, 50)-(567 * 15, 567 * (dAlturaFixa + dAlturaAcrescer)), vbBlack, B
End Select

Liomar   19/06/2018 08:29:54

Excelente o artigo, porém tenho um Relatório e tentei aplicar o conceito na Seção Detalhe do Relatório. Ocorre que nesta Sessão Detalhe do Relatório, tenho um controle SubRelatório. Então, quando não tenho registros no subRelatório, o retângulo fecha a Sessão Detalhes Beleza, porém, quando são exibidos registros no subrelatório (a Seção Detalhe amplia), mas as linhas do retângulo não acompanham na vertical o crescimento da Seção Detlhe. Pensei em contar os registros do SubRelatório e fazer dimensionar as linhas do retângulo na vertical em função do número de registros do subrelatório; mas também não sei se isso é possível.

Alguma dica, amigo Avelino? Obrigado.

Wesley   30/01/2016 13:24:03

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

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 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?

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

Parabéns Avelino.
Aqui eu aprendo muito.

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

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

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

Grande Avelino

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

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

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

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!


Envie seu comentário: