Impressão de boletos...
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;
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
Curtidas 0
Respostas
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.
Procure por RLBoleto aqui mesmo no fórum ou no Google. Me parece a melhor solução hoje para isso.
GOSTEI 0
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:
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
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
Eu ja tentei mas a minha impressora esta em rede.. dai complica...
se tiver algum exemplo?!
valew :o
GOSTEI 0
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...
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
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)
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