Ola pessoal para quem ainda tem duvida sobre como como gerar relatorios para impressoras matriciais vou explicar pra vcs nesse pequeno artigo o componente VDO Print que pode ser baixada na nossa pagina de downloads.
- Código:
// Matricial 80 COLUNAS - VDOPRINT
4 : begin
with dmPesqVenda, cdsDuplicata do
Begin
with dmRelatorioBase, VDOPrtMatricial do
begin
Close;
CommandText := 'select * from LstDuplicata where codmov=' + IntToStr(AcodMov);
CommandText := CommandText + 'order by dtcadpedmov';
open;
First;// primeiro
{ Inicia o Documento }
BeginDoc;
{ Altero o fonte para o tamanho default }
Font.Size := fsCondensed;
//--------------- Imprime Cabecalho ----------------------------------------
Print(00, cdsDuplicatanomeemp.AsString );
Print(85,'C.N.P.J.: ' + cdsDuplicatacgcemp.AsString , True);// ejeta
Print(00, cdsDuplicataenderecoemp.AsString );
Print(85,'Emissao: ' + DateToStr(Data_Server), True );// ejeta
Print(00,'Isc.Est.: ' + cdsDuplicataIEEMP.AsString + ' - ' + cdsDuplicataCIDADEEMP.AsString , True);// ejeta
{ Altera o fonte para escrita de um título }
Font.Size := fsLargeCondensed;
{ Imprime o título e avança para linha seguinte em negrito}
Print(00,'DOCUMENTO AUXILIAR DE VENDA - PRE VENDA - NAO E DOCUMENTO FISCAL', True); // ejeta
{ Altero o fonte para o tamanho default }
Font.Size := fsCondensed;
//----------------- Imprime Dados da Venda ----------------------------------
Print(00,'Nro. Doc.: ' + IntToStr(cdsDuplicatacodpedido.AsInteger) );
Print(41,'Data Doc: ' + DateToStr(cdsDuplicatadtcadpedmov.AsDateTime) );
Print(90,'Vendedor: ' + cdsDuplicatanomeusu.AsString , True);// ejeta
Print(00,'Cliente: '+ cdsDuplicatanomecli.AsString);
Print(41,'CPF/CNPJ: ' + cdsDuplicatacgccli.AsString );
Print(90,'Fone: ' + cdsDuplicatafonecli.AsString , True); // ejeta
Print(00,'Endereco: ' + cdsDuplicataendcli.AsString + ' - ' + cdsDuplicataCIDADECLI.AsString + ' - ' + cdsDuplicataESTADOCLI.AsString);
Print(72,'Cep: ' + cdsDuplicatacepcli.AsString);
Print(90,'Ins. Est.: ' + cdsDuplicataiecli.AsString , True);// ejeta
Print(00,'Observacao.: ' + cdsDuplicataobsmov.asstring , True); // ejeta
//----------------- Imprime Itens da Venda ----------------------------------
{ Imprime um traço e avança para linha seguinte }
Replicate(00, 125);
Print(00,'Item');
Print(07,'Referencia');
Print(24,'Descricao');
Print(57,'Tamanho');
Print(73,'Marca');
Print(90,'Qtde');
Print(97,'Un');
Print(101,'Pr.Unit');
Print(110,'Desc. ');
Print(116,'SubTotal', True); // ejeta
{ Imprime um traço e avança para linha seguinte }
Replicate(00, 125);
{ Imprime detalhe - loope nos itens}
while not eof do
begin
Print(00, inttostr(cdsDuplicataitensmov.AsInteger ));
Print(07, cdsDuplicatanomemodelo.AsString );
Print(24, cdsDuplicatanomelinmov.AsString );
Print(57, cdsDuplicatanometamprod.AsString );
Print(73, cdsDuplicatanomeclasse2.AsString );
Print(90, formatfloat('####0.00', cdsDuplicataqtdmov.AsFloat) );
Print(97, cdsDuplicataundlin.AsString);
Print(101, formatfloat('####0.00', cdsDuplicataprvendamov.AsFloat));
Print(110, formatfloat('####0.00', cdsDuplicatavldescmov.AsFloat));
Print(116, formatfloat('####0.00', cdsDuplicataTotalItem.AsFloat) , True);// ejeta
next; // proximo registro
end;
{ Imprime um traço e avança para linha seguinte }
Replicate(00, 125);
Print(00,'Qtd. Produtos.: ' + IntToStr(cdsDuplicataItens.AsInteger) );
Print(18,'Qtd. Itens: ' + IntToStr(cdsDuplicatatotalqtd.AsInteger));
Print(111,'SubTotal: ' + formatfloat('####0.00', cdsDuplicatavlbrutomov.AsFloat) , True);// ejeta
Print(111,'Desconto: ' + formatfloat('####0.00', cdsDuplicatavldescmov.AsFloat) , True); // ejeta
Print(38,'-------------------------------' );
Print(73,'-------------------------------');
Print(111,'Total: ' + formatfloat('####0.00', cdsDuplicatavlbrutomov.AsFloat) , True);// ejeta
Print(48,'Cliente' );
Print(84,'Entregador' , True);// ejeta
{ Altera o fonte para escrita de um título }
Font.Size := fsLargeCondensed;
{ Imprime o título e avança para linha seguinte em negrito}
Print(00,'EXIJA O CUPOM FISCAL - NAO E VALIDO COMO GARANTIA DA MERCADORIA', True);// ejeta
{ Altero o fonte para o tamanho default }
Font.Size := fsCondensed;
{ Imprime um traço e avança para linha seguinte }
Replicate(00, 125);
{ Avança + duas linhas e imprime o número da página }
NewLine(2);
Print(00,'Página ' + Format('%3.3d', [CurrentPage]), True);// ejeta
{ Finalizo o Documento, ejetando a página }
EndDoc;
end;
end;
end;