Impressão de boletos...

Delphi

07/10/2005

Estou fazendo um programa para a impressão de boletos bancarios, mas ele só imprime até o 3º boleto. Gostaria de saber como posso continuar imprimindo os boletos sem dar um enddoc na impressão.
Já tentei configurar o tamanho do papel nas configurações da impressora mas o XP não deixa(é uma Ep. LX-300). Estou usando o TPrinter para imprimir. Estou mandando o código Também.

Desde já agradeço!!! :D

O código, só estou passando a parte de impressão:

//INÍCIO DA IMPRESSÃO IMPRESSÃO
Printer;
CONTCLI := SpinEdit1.VALUE;
PRINTER.TiTLE := ´ESM - BOLETOS´;
printer.begindoc;
PRINTER.Canvas.Font.Size := 10;
LINHA := 0;
IMPRESSAO := 0;
ACRESCIMO := 0;
CONT := 0;
DECRESCIMO := 0;
WHILE CONTCLI <= SpinEdit2.VALUE DO
BEGIN
IF DM.TbCliente.FindKey([CONTCLI]) THEN
BEGIN
if cancelar = true then
printer.Abort;
LINHA := LINHA + 40+ IMPRESSAO - DECRESCIMO;
PRINTER.CANVAS.TextOut(40,LINHA, ´QUALQUER LOCAL ATÉ O VENCIMENTO´);
PRINTER.CANVAS.TextOut(700,LINHA, DATETOSTR(DM.TbClienteDAT_VENC.VALUE));
LINHA := LINHA + 68;
PRINTER.CANVAS.TextOut(45,LINHA, DATETOSTR(NOW));
//Verificando Nota
IF DM.TbClienteNOTA.VALUE > 0 THEN
PRINTER.CANVAS.TextOut(300,LINHA, INTTOSTR(DM.TbClienteNOTA.VALUE));
LINHA := LINHA + 35;
PRINTER.CANVAS.TextOut(700,LINHA, CURRTOSTR(DM.TbClienteValor_Boleto.VALUE + DM.TbClienteUltima_Alteracao.VALUE));
LINHA := LINHA + 35;
//Verificando Desconto
if DM.TbClienteDESCONTO.VALUE > 0 then
PRINTER.CANVAS.TextOut(700,LINHA, FloatToStr(DM.TbClienteDESCONTO.VALUE));
LINHA := LINHA - 8 + ACRESCIMO;
PRINTER.CANVAS.TextOut(40,LINHA, ´APÓS O VENCIMENTO COBRAR MULTA DE 2¬ MAIS´);
LINHA := LINHA + 26;
PRINTER.CANVAS.TextOut(40,LINHA, ´JUROS DE 0,20¬ AO DIA´);
LINHA := LINHA + 150;
PRINTER.CANVAS.TextOut(40,LINHA, (DM.TbClienteNom_cliente.Value + ´ ´+ DM.TbClienteNUM_DOC.value));
LINHA := LINHA + 30;
PRINTER.CANVAS.TextOut(40,LINHA, (DM.TbClienteEnd_Cliente.VALUE));
LINHA := LINHA + 117;
PRINTER.CANVAS.TextOut(40,LINHA, ´´);
IMPRESSAO := IMPRESSAO + 75;
CONTCLI := CONTCLI +1;
ACRESCIMO := 10;
CONT := CONT + 1;
if cont >= 3 then
begin
LINHA := 0;
IMPRESSAO := 0;
ACRESCIMO := 0;
CONT := 0;
DECRESCIMO := 0;
end;
IF CONT >= 2 THEN
BEGIN
DECRESCIMO := 78;
END;
END ELSE
BEGIN
CONTCLI := CONTCLI +1;
END;
END;

IMPRESSAO := 0;
printer.enddoc;

Título do tópico editado por Massuda:[list:cd97d4b1f9][*:cd97d4b1f9]Texto apelativo. Removido:´URGENTE!!!!!´. [*:cd97d4b1f9]Reincidências serão punidas com o bloqueio do(s) tópico(s).[/list:u:cd97d4b1f9]Por favor, leia as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url] do fórum.



Celolegal

Celolegal

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

07/10/2005

Colega,

Procure por RLBoleto aqui mesmo no fórum ou no Google. Me parece a melhor solução hoje para isso.


GOSTEI 0
Macario

Macario

07/10/2005

Voce esta usando bolequetos pré-impressos não é?

Que tal vc tentar Write e WriteLn (impressão DOS), acho que teria um controle melhor, ao menos sobre as linhas.

:roll:


GOSTEI 0
Celolegal

Celolegal

07/10/2005

Mas como eu faço para imprimir com write e writeln...
Eu ja tentei mas a minha impressora esta em rede.. dai complica...
se tiver algum exemplo?!

valew :o


GOSTEI 0
Pro-luck

Pro-luck

07/10/2005

Caro colega,


Será q vc pode me mandar um exemplo de como utilizá-los. Estou precisando muito de cobnhecimento sobre esses dois comandos...

Antecipadamente agradeço...


GOSTEI 0
Edilcimar

Edilcimar

07/10/2005

eu utilizo o tprinter sem nenhum problema, veja este exemplo
http://forum.clubedelphi.net/viewtopic.php?t=70693
é só fazer a adaptação para o caso, mas não esqueça que as vezes existe um espaço em ´branco´ entre o fim do último boleto e o início do outro (pois normalmente são 3 boletos por página)


GOSTEI 0
POSTAR