Buscar

Imprimindo tedits e outros no quick report... sem precisar de bd. a função busca valor

Código

Depois de muitas buscas (MAIS DE 1 MÊS PESQUISANDO e quebrando a cabeça) para poder montar um formulário Quick Report que pudesse buscar valores e dados de uma planilha StringGrid, achei essa função que disponibilizo.

Ela foi elaborada por Micheus de Blumenau/SC. Sendo que os créditos dessa excelente solução são totalmente dele. O qual parabenizo pelo brilhante trabalho.

Efetuei no meu sistema os ajustes para que o QR buscasse os valores tanto de células do StringGrid quanto de TEdits e funcionou perfeitamente.


Desenhando o Relatório
1) Adicione um form ao seu projeto o qual estará seu relatório. Dê um nome ao form, tipo RelImprimeEdit;
2) Da paleta do Quickreport adicione um componente QuickRep (o 1º da lista) e posicioneo no canto superior esquerdo para facilitar o trabalho de desenho. Como você não iremos obter as informações de uma tabela, mas sim iremos "prencher" o relatório utilizando de labels, defina a propriedade PrintIfEmpty para TRUE;
3) Dê um duplo click na "folha" branca que apareceu (QuickRep) e configure as informações do papel (tamanho e posicionamento: Portrait ou Landscape), defina as margens (observe que a unidade de medida deve estar em MM), defina o tamanho padrão das letras (será utilizado para cada componente que você adicionar ao relatório), defina as bandas que você quer no relatório (header, title, footer, ...). Em meu exemplo adicionei Page header, Detail e Page footer;
4) Estas bandas adicionadas ao relatório podem ser ajustadas em sua altura. Então ajuste conforme necessário;
5) Para colocar um texto de título na banda PageHeader, vá na paleta do QuickReport localize o componente QRLabel (passando o mouse sobre os componentes da paleta você vê no hint o nome dos componentes, caso tenha dúvida). Clique nele para selecionar e a seguir clique na banda PageHeader. Ajuste posição e faça os ajustes das propriedades que você necessitar modificar.
6) Para imprimir o conteúdo dos Edit's que você deseja, você também utilizará os componentes QRLabel (eventualmente um QRMemo ou QRRichEdit). Entretando, estes QRLabel's são adicionados na banda Detail. Coloque-os de acordo com sua necessidade. Por ex. um para o label e outro para receber o valor;
7) Para adicionar o nº de página, data/hora do sistema no rodapé da página (PageFooter), você utiliza o componente QRSysData e altera sua propriedade Data (qrsDateTime, qrsPageNumber, ...)

Particularmente eu prefiro passar as informações por parâmetro para os relatórios, então vou seguir desta forma. Mas, nada impede que você acesse diretamente os componentes que foram adicionados ao form do relatório a partir do form que chama a impressão.

Preparando o relatório para mostrar os dados
Na sessão Public da declaração do form do relatório (RelImprimeEdit), defina uma procedure que conterá todos os parâmetros a serem passados. Em meu exemplo teremos apenas doi parâmetros: Nome e Endereço;

CODE
type
  TRelImprimeEdit = class(TForm)
    ...
  public
    procedure Imprime(Nome, Endereco :string);
  end;
implementation
...
procedure TRelImprimeEdit.Imprime(Nome, Endereco :string);
begin
// inicializa os QRLabel's correspondentes aos campos informados
  QRLNome.Caption := Nome;
  QRLEndereco.Caption := Endereco;
// Aqui o relatório será apresentado na tela, para visualizar e imprimir
  QuickRep1.Preview;
end;

Chamando o relatório para mostrar os dados
No form que chama a impressão (RelImprimeEdit), utilizei um botão para isto. Então, no evento OnClick do mesmo adicionamos o código que cria/destroi o form do relatório dinamicamente:

CODE
procedure TFrmMain.Button1Click(Sender: TObject);
begin
  RelImprimeEdit := TRelImprimeEdit.Create(Self);
  try
    RelImprimeEdit.Imprime(Edit1.Text, Edit2.Text);
  finally
    RelImprimeEdit.Free;
  end;
end;

Como criamos o relatório dinamicamente, devemos remover o mesmo da auto-criação. Para isso, no menu principal do Delphi, vá em Projects->Options e na guia Form localize e remova o form RelImprimeEdit da caixa Auto-create forms


 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Impressão
Adicionada dia: 19/08/07
Por: Marcelo Augusto
Visualizada: 9318 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009