Artigo Clube Delphi Edição 12 - Personalizando o Preview no QuickReport

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (0)

Artigo da Revista Clube Delphi Edição 12.

Esse artigo faz parte da revista Clube Delphi edição 12. Clique aqui para ler todos os artigos desta edição



Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.

Personalizando o Preview no QuickReport

 

Um dos grandes recursos disponibilizados pelo QuickReport é a capacidade de personalizar sua tela de preview. Não que isto seja de extrema necessidade – já que a janela de preview padrão atende a maioria das necessidades, pois oferece o controle de zoom, a navegação entre as páginas e ainda a opção de ler ou salvar o relatório em disco. Porém, para os exigentes, existem alguns fortes argumentos:

 

1)     Os hits e as dicas poderão ser traduzidos;

2)     Personalizar o relatório dá a oportunidade de adequar a tela de preview ao design do software que está sendo construído

3)     É possível adicionar recursos não encontrados na versão default do preview, como a seleção personalizada de zoom (a versão padrão oferece apenas três opções de zoom)

 

Para criar uma nova janela de preview não será preciso recorrer a nenhum API ou outras esquisitices da programação de nossa época. O próprio QuickReport oferece o objeto TqrPreview para este fim.

 

[figura – objeto TqrPreview]

 

A construção de uma tela de preview deve ser realizada sobre um objeto Tform, e não sobre um objeto TquickReport. Em uma nova aplicação, crie um formulário em branco, que servirá como base para o preview. Neste form, insira um objeto tQrPreview, um objeto Tpanel, um objeto TcomboBox, um objeto Tlabel, um objeto Tedit e 9 objetos TSpeedButton. Suas propriedades serão alteradas conforme a lista a seguir:

 

Tpanel

Align             AlTop

 

TqrPreview

Align             AlClient

 

  • Os objetos a seguir serão incluídos dentro do Tpanel:

 

TcomboBox1

Left              16

Name            Combobox1

Items           200

                   100

                   80

                   60

                   40

 

Label1

Caption                  %

Font.Style     Bold

Left              72

 

TspeedButton

Name            SbFirst

Glyph            arrow2l.bmp

Left              120

 

TspeedButton

Name            sbPrior

Glyph            arrow1l.bmp

Left              144

 

Tedit

Name  Edit1

Text   ‘’

Left    168

 

Tlabel

Name  Label1

Caption         ‘’

Left    208

 

TspeedButton

Name  sbNext

Left    248

Glyph  arrow1r.bmp

 

TspeedButton

Name  SbLast

Left    272

Glyph  arrow2r.bmp

 

TspeedButton

Name  sbPrintSetup

Glyph  printer.bmp

Left    320

 

TspeedButton

Name  sbPrint

Glyph  docsingl.bmp

Left    344

 

TspeedButton

Name  sbClose

Glyph  dooropen.bmp

Left    392

 

Tform

Name  FrmPreview

 

O formulário deverá estar parecido com a figura a seguir:

 

 

Conforme pode ser observado, esta janela irá permitir a seleção de qualquer porcentagem de preview além de executar as funções já encontradas na default.  Vejamos a implementação de cada um dos speedbuttons inseridos no form:

 

Controlando o Preview:

 

A ComboBox irá permitir a seleção ou digitação de um número porcentual para o preview. O evento OnChange deste objeto deve ser preenchido conforme a listagem abaixo:

 

procedure TfrmPreview.ComboBox1Change(Sender: TObject);

begin

  try

    qrPreview1.Zoom:=StrToInt(ComboBox1.Text)

    except

  End;

end;

 

Repare que a propriedade Zoom realiza toda a tarefa. A cláusula try..except está envolvendo a propriedade para evitar possíveis erros de digitação.

 

Navegando entre as páginas:

 

Outras duas propriedades irão nos ajudar no processo de permitir ao usuário a navegação entre as páginas do relatório: pagenumber e pagecount. Abaixo o código dos quatro botões de navegação:

 

procedure TfrmPreview.sbFirstClick(Sender: TObject);

begin

  QrPreview1.PageNumber:=1;

  ChecaPaginas;

end;

 

procedure TfrmPreview.sbPriorClick(Sender: TObject);

begin

  QrPreview1.PageNumber:=QrPreview1.PageNumber-1;

  ChecaPaginas;

end;

 

procedure TfrmPreview.sbNextClick(Sender: TObject);

begin

  QrPreview1.PageNumber:=QrPreview1.PageNumber+1;

  ChecaPaginas;

end;

 

procedure TfrmPreview.sbLastClick(Sender: TObject);

begin

  QrPreview1.PageNumber := QrPreview1.QrPrinter.PageCount;

  ChecaPaginas;

end;

 

 

A procedure que acompanha os eventos, chamada ChecaPaginas, irá controlar o estado dos botões e exibir o número da página atual no objeto label1. Veja o código da procedure:

 

procedure TFrmPreview.ChecaPaginas;

begin

  Edit1.Text:=IntTostr(QrPreview1.PageNumber);

  Label1.Caption:=' de '+ Inttostr(QrPreview1.QrPrinter.PageCount);

 

sbFirst.Enabled := (qrPreview1.PageNumber > 1);

sbPrior.Enabled := (qrPreview1.PageNumber > 1);

sbNext.Enabled := (qrPreview1.PageNumber <

qrPreview1.qrPrinter.PageCount);

sbLast.Enabled := (qrPreview1.PageNumber <

qrPreview1.qrPrinter.PageCount);

end;

 

 

Temos ainda o objeto Edit1, que permite ao usuário digitar um número de página para pular direto. Precisamos modificar o seu evento OnChange:

 

procedure TfrmPreview.Edit1Change(Sender: TObject);

begin

  try

    qrPreview1.pagenumber:=strToInt(Edit1.text);

    except

  End;

end;

 

 

IMPRIMINDO E CONFIGURANDO A IMPRESSORA:

 

O objeto tQrPrinter nos dá os métodos necessários: Print e PrintSetup. Veja o código:

 

procedure TfrmPreview.sbPrintSetupClick(Sender: TObject);

begin

  qrPreview1.QRPrinter.PrintSetup

end;

 

procedure TfrmPreview.sbPrintClick(Sender: TObject);

begin

  qrPreview1.QRPrinter.Print

end;

 

 

E, por último, o botão fechar:

 

procedure TfrmPreview.sbcloseClick(Sender: TObject);

begin

  close;

end;

 

 

 

 

EXECUTANDO O PREVIEW PERSONALIZADO

 

O último é indicar que o preview a ser executado é o nosso form, e não a janela default. Podemos utilizar o evento OnPreview do objeto QuickReport para indicar isso:

 

procedure TQuickReport3.QuickRepPreview(Sender: TObject);

begin

    FrmPreview.QrPreview1.QrPrinter :=

         TQrPrinter(Sender);

    FrmPreview.Show;

end;

 

 

Esse formulário poderá ser utilizado em qualquer aplicação que utilize o quickreport. Para facilitar, você pode colocá-lo no Repositório de Objetos. Basta clicar com o botão direito sobre o formulário, escolher a opção Add to Repository e preencher a janela de acordo com a figura abaixo:

 

 

 

 

Como podemos perceber, personalizar o preview do QuickReport pode acrescentar mais funcionalidade ao seu aplicativo. Em nosso exemplo acrescentamos a possibilidade do usuário pular para uma página simplesmente digitando o seu número, além de acrescentar um zoom personalizado. Você pode continuar explorando a capacidade do QuickReport e acrescentar mais funções ao preview. Este exemplo pode ser baixado no endereço www.clubedelphi.com.br/edicao12/qrpreview.zip

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?