Criar etiqueta e definindo quantidades a serem impressas no Delphi FastReport
Esse post irei fazer será um adicional de um antigo post.
Vamos supor que queremos imprimir uma folha de etiquetas mas tem algumas destas etiquetas que queremos que seja impressão mais de uma quantidade.
Para isso vamos utilizar um TClientDataSet para selecionar os produtos e as quantidades de cada etiqueta por produto, e outro TClientDataSet para receber as informações de acordo com as quantidades informadas no TClientDataSet anterior;
Vamos baixar o exemplo do post anterior e fazer nossas alterações em cima dele, no TForm vamos colocar mais um TClientDataSet com os campos que iremos imprimir na nossa etiqueta, e um TDBGrid,
e acrescentar o campo QUANTIDADE do tipo Integer no TClientDataSet já existe.
Lembramos de sempre colocar padrão para carregar 1 quantidade, senão não irá apresentar informação alguma do produto. Vamos duplicar o TClientDataSet com as informações que vamos exibir na etiqueta.
procedure TFSistema.CarregarInformacoes;
var
i: Integer;
begin
CdsBarras.EmptyDataSet;
CDSEtiquetas_Teste.First;
while not CDSEtiquetas_Teste.Eof do begin
for I := 0 to CDSEtiquetas_TesteQUANTIDADE.Value - 1 do begin
CdsBarras.append;
CdsBarrasDESCRICAO.Value := CDSEtiquetas_TesteDESCRICAO.Value;
CdsBarrasCODBARRAS.Value := CDSEtiquetas_TesteCODBARRAS.Value;
CdsBarras.Post;
end;
CDSEtiquetas_Teste.Next;
end;
end;
Essa Procedure faremos um while para passar em todos os registros da tabela, e na linha de baixo um for para cadastrar a quantidade de etiquetas que informamos no TDBGrid.
O Botão de impressão da etiqueta vai ficar assim:
procedure TFSistema.btnVisualizarClick(Sender: TObject);
begin
if CDSEtiquetas_Teste.IsEmpty then begin
Application.MessageBox(Pchar('Seleção sem registros'), Pchar(Caption), MB_ICONINFORMATION + MB_OK + MB_DEFBUTTON1 + MB_SYSTEMMODAL);
Exit;
end;
if Ler_Arquivo('Etiquetas_6x16.fr3') then begin
CarregarInformacoes; {Nossa procedure}
frxTable.DataSet := CdsBarras; {Joga a tabela de etiquetas que criamos nova}
if Sender = btnVisualizar then
frxReport.ShowReport
else begin
frxReport.PrepareReport;
frxReport.Print;
end;
end;
end;
Percebe que coloquei no DataSet a tabela que criei depois a CdsBarras, e a procedure acima da linha onde e colocado o FrxTable.DataSet.
Vamos testar oque fizemos:
Espero ter acendido uma pequena luz no final do túnel de como fazer um documento com três tabelas.
Exemplo: Download do exemplo
0 comentários:
Postar um comentário