Como alternar cores nas linhas de impressão no Quick Report no Delphi

Uma solução interessante para relatórios é o “zebrado” nas linhas, não fica muito pesado visualmente como uma grade e facilita a leitura da mesma forma. É uma técnica muito utilizada e no Quick Report é muito fácil de fazer.

Mostraremos como fazer um "zebrado" de branco e cinza no formulário.

Mostraremos como fazer um "zebrado" de branco e cinza no formulário.

Utilizaremos um formulário simples que mostrará como deve ser montado de forma rápida a operação para alternância entra o cinza e o branco como no exemplo acima. Observe a montagem do Quick Report Abaixo:

Montagem do quick report para alternância das linhas

Montagem do quick report para alternância das linhas

Nesse Quick Report temos os tipos de QRBand, pela ordem: Page Header, Title, ColumnHeader, Detail e Page Footer. Optamos por começar o relatório com o cinza na linha do título, para isso alteramos o “Color” para “clSilver” tanto do QRBand, quanto dos QRLables que utilizamos para os títulos das colunas no ColumnHeader.

Para realizar o controle do zebrado, faça o seguinte:

1. No form do seu Quick Report lance a seguinte variável:

var
controlacor: string;

2. Depois peça o evento “AfterPrint” do QRBand imediatamente anterior ao dos dados que serão impressos, no nosso exemplo seria o próprio “ColumnHeader”, veja:

procedure Tfrm_saida.QRBand5AfterPrint(Sender: TQRCustomBand;
  BandPrinted: Boolean);
begin
controlacor:='N';
end;

Observação: Iremos começar com nosso parâmetro em N de não, sem cinza, pois já utilizamos o cinza na linha do título.

3. Agora é a rotina que vai fazer o zebrado propriamente dito, entraremos com a rotina no evento “BeforePrint”, observe:

procedure Tfrm_saida.QRBand2BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
if controlacor='S' then
  begin
     QRBand2.Color:=clSilver;
     QRDBText1.Color:=clSilver;
     QRDBText2.Color:=clSilver;
     QRDBText3.Color:=clSilver;
     controlacor:='N';
  end else if controlacor='N' then
    begin
       QRBand2.Color:=clWhite;
       QRDBText1.Color:=clWhite;
       QRDBText2.Color:=clWhite;
       QRDBText3.Color:=clWhite;
       controlacor:='S';
    end;
end;

Obervação: Atenção, pois você terá que alterar a cor do fundo dos labels também para não ficar no fundo branco quando você colocar cinza no QRBand.

Espero que tenha ajudado, abraço

Plínio Cruz

 

Compatilhe esse artigo!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.