Formulários e relatórios "zebrados"

Programar para dar uma aparência "zebrada" a  um relatório é relativamente fácil, mas manipular essa aparência em formulário é complicado.  Você utiliza uma API ou uma "Formatação Condicional".    Isso no Access 2007 foi resolvido e sem nenhuma linha de programação, bastando alterar duas linhas na lista de propriedades.  veja na figura abaixo:

Aviso Segurança

No exemplo, mantive a cor do fundo branca e selecionei cinza para a cor de fundo alternativa.  Veja como ficou:

Aviso Segurança

 

Você pode manipular essa configuração através de um novo evento, chamado "Ao pintar", incorporado na seção detalhe de formulários e de relatórios. Aviso Segurança

Com o evento "Ao Pintar", podemos ir muito além do que "zebrar" formulários ou relatórios.  Veja, neste meu exemplo, quero destacar valores maiores do que 1 mil reais, pintando a faixa de azul.  Observe o código:

 

Private Sub Detalhe_Paint()

'----------------------------------
'Alterando cor da faixa
'----------------------------------

If Me!ValorVerba > 1000 Then
   '---------------------------------------------------
   'Pinta tanto a faixa alternativa como a faixa normal
   '---------------------------------------------------
   Me.Detalhe.AlternateBackColor = RGB(132, 161, 198) ' azul
   Me.Detalhe.BackColor = RGB(132, 161, 198) 'azul
Else
   '----------------------------------------------------------
   'Se for menor do que 1000, pinta nos padrões estabelecidos,
   'ou seja, branco para faixa normal e cinza para a
   'faixa alternativa
   '----------------------------------------------------------
   Me.Detalhe.BackColor = RGB(255, 255, 255) 'Branco
   Me.Detalhe.AlternateBackColor = RGB(236, 236, 236) 'cinza claro
End If

End Sub

Como resultado do código aplicado, temos:Aviso Segurança

 

Podemos aproveitar para manipular a cor da fonte.  Neste exemplo, o valor que tiver superior a 1 mil reais ficará em vermelho.  Veja como ficou a alteração do código:
 

Private Sub Detalhe_Paint()

'-------------------------------
'Alterando cor do texto
'-------------------------------

If Me!ValorVerba > 1000 Then
   Me!ValorVerba.ForeColor = 255 'vermelho
Else
   Me!ValorVerba.ForeColor = 0 'preto
End If

'----------------------------------
'Alterando cor da faixa
'----------------------------------

If Me!ValorVerba > 1000 Then
   '---------------------------------------------------
   'Pinta tanto a faixa alternativa como a faixa normal
   '---------------------------------------------------
   Me.Detalhe.AlternateBackColor = RGB(132, 161, 198) ' azul
   Me.Detalhe.BackColor = RGB(132, 161, 198) 'azul
Else
   '---------------------------------------------------------
   'Se for menor do que 1000, pinta nos padrões estabelecidos,
   'ou seja, branco para faixa normal e cinza para a
   'faixa alternativa
   '---------------------------------------------------------
   Me.Detalhe.BackColor = RGB(255, 255, 255) 'Branco
   Me.Detalhe.AlternateBackColor = RGB(236, 236, 236) 'cinza claro
End If

End Sub

Como resultado temos:Aviso Segurança

 

Nos relatórios funciona da mesma maneira.   Agora é só usar a sua criatividade!

 

 


4 comentário(s)

Mauro Fuzetto   3/5/2009 02:54:46

Muito valiosos as capturas de tela para quem está começando como eu. Já havia visto o recurso de zebrar as linhas de formulários mas nunca usei, de modo que agora tenho uma idéia mais precisa de como implementar. Além disso, para mim foi novidade a possibilidade de determinar a cor de uma linha baseado ou de mudar a formatação do texto baseado em certo valor.

Gostei também da alternância entre captura de tela e código. Quando já se está familiarizado com certas funções e maneiras de se fazer algo via VBA talvez a captura não seja tão importante; mas daí é ensinar para quem já sabe. Para quem está começando ou num nível intermediário (meu caso) poder visualizar o efeito do que se estpa dizendo é valiosíssimo. Sem contar que economiza a escrita de um bom número de parágrafos meramente descritivos.

Obrigado por compartilhar o que você sabe.

Antonio João    9/7/2009 17:25:47

Caro Sampaio,

Antes de mais nada, obrigado por compartihar sempre seu conhecimento com todos nos mortais, voce e mesmo uma pessoa abençoada, sou seu fã a muitos anos, sonho um dia ter pelo menos uns 30% por cento do seu conhecimento e esforço, eu nao tenho a mesma capacidade de apreendizado tal qual voce pois ja estou perto dos 60 anos e nem sempre a cabeça ajuda, mas sou fussão, tento apreender de todas a maneiras e graças a pessoas como voce acabo sobrevivendo um pouco nesta vida tao concorrida, te escrevi tudo isto para voce sentir o quanto e importante a sua ajuda no sentido de nos orientar, entao deixo aqui meus agradecimentos e minha sincera admiração pelo seu trabalho prestado a todos que usam e recorrem do seu conhecimento, um abraço.

Avelino Sampaio   10/7/2009 14:19:35

Fico muito lisonjeado. O jeito de retribuir é caprichando ainda mais.

Grato

João Ricardo   29/8/2009 23:26:31

Muito obrigado Avelino. Estou pesquisando aqui depois de ter acessado sua ajuda no Fórum do Orkut.
Valeu mesmo. É mais simples do que eu pensava e mais util do que podia imaginar.

Abraços


Envie seu comentário: