Dúvida em código simples de impressão... Alguém me ajuda?
17/04/2003
0
Bom dia companheiros...
Vejam se podem me ajudar....
Estou imprimindo destinatários de boletos no verso das guias, e quanto ao código da emissão total dos destinatários está tudo OK, funciona da seguinte forma:
Coloco o ponteiro da tabela no fim da mesma, e vou varrendo a tabela do fim para o início, imprimindo cada registro que satisfaça a condição
definida pelo usuário. Este procedimento de varrer a tabela do fim para o inicio é devido a posição que os boletos saem na impressora, mas quanto a isso está tudo ok.
Acontece que tive que criar uma opção de impressão parcial dos destinatários das guias. Imaginem se porventura der um problema durante a impressão, que neste caso envolvem quase 400 guias por mês, foi necessário abrir ao usuário selecionar em qual destinatário a impressão foi paralizada para dar continuidade a impressão.
No caso da emissão total, vejam um resumo do código:
{Atribui a Impressora a um arquivo}
AssignPrn(PrintFile);
Rewrite(PrintFile);
{Define a fonte do Form}
Printer.Canvas.Font := Font;
Printer.Canvas.Font.Size := 12;
{Armazena a posiçào atual, criando um bookMark}
BookMark := dtmDados.QryBoletos.GetBookmark;
dtmDados.QryBoletos.DisableControls;
Try
[b:0c3140c929]dtmDados.QryBoletos.Last;[/b:0c3140c929]
while not dtmDados.QryBoletos.Bof do
Begin
writeln(PrintFile);
writeln(PrintFile);
writeln(PrintFile);
writeln(PrintFile);
dtmDados.qryBoletos.MoveBy(-1);
Write(PrintFile, #12)
End;
Finally
{Volta ao bookmark e o destroi}
dtmDados.qryBoletos.GotoBookmark (BookMark);
dtmDados.qryBoletos.FreeBookmark (BookMark);
dtmDados.qryBoletos.EnableControls;
System.Closefile (PrintFile);
End;
Vejamos... No caso da impressão parcial dos destinatários eu abri uma listagem para o usuário selecionar em qual registro foi paralizada a impressão,desta forma então, na hora de imprimir a emissão parcial dos destinatários eu tirei o comando: [b:0c3140c929]dtmDados.QryBoletos.Last;[/b:0c3140c929]
Porque se eu jogasse o ponteiro no final da tabela seriam impressos todos os destinatários novamente, o que quero é somente a partir do destinatário que o usuário selecionou.
Ao tirar esta linha do código, o delphi não executa a impressão. Porque?
Eu não conheço muito bem o comando Try- Finally, pois um companheiro do fórum que me passou este codigo de exemplo. Este erro tem algo a ver coma retirada do comando que coloca a tabela no final para iniciar a impressão?
Se alguém puder me ajudar, ficarei muito grato...
Um grande abraço a todos...
Pablo - Marília/SP
Vejam se podem me ajudar....
Estou imprimindo destinatários de boletos no verso das guias, e quanto ao código da emissão total dos destinatários está tudo OK, funciona da seguinte forma:
Coloco o ponteiro da tabela no fim da mesma, e vou varrendo a tabela do fim para o início, imprimindo cada registro que satisfaça a condição
definida pelo usuário. Este procedimento de varrer a tabela do fim para o inicio é devido a posição que os boletos saem na impressora, mas quanto a isso está tudo ok.
Acontece que tive que criar uma opção de impressão parcial dos destinatários das guias. Imaginem se porventura der um problema durante a impressão, que neste caso envolvem quase 400 guias por mês, foi necessário abrir ao usuário selecionar em qual destinatário a impressão foi paralizada para dar continuidade a impressão.
No caso da emissão total, vejam um resumo do código:
{Atribui a Impressora a um arquivo}
AssignPrn(PrintFile);
Rewrite(PrintFile);
{Define a fonte do Form}
Printer.Canvas.Font := Font;
Printer.Canvas.Font.Size := 12;
{Armazena a posiçào atual, criando um bookMark}
BookMark := dtmDados.QryBoletos.GetBookmark;
dtmDados.QryBoletos.DisableControls;
Try
[b:0c3140c929]dtmDados.QryBoletos.Last;[/b:0c3140c929]
while not dtmDados.QryBoletos.Bof do
Begin
writeln(PrintFile);
writeln(PrintFile);
writeln(PrintFile);
writeln(PrintFile);
dtmDados.qryBoletos.MoveBy(-1);
Write(PrintFile, #12)
End;
Finally
{Volta ao bookmark e o destroi}
dtmDados.qryBoletos.GotoBookmark (BookMark);
dtmDados.qryBoletos.FreeBookmark (BookMark);
dtmDados.qryBoletos.EnableControls;
System.Closefile (PrintFile);
End;
Vejamos... No caso da impressão parcial dos destinatários eu abri uma listagem para o usuário selecionar em qual registro foi paralizada a impressão,desta forma então, na hora de imprimir a emissão parcial dos destinatários eu tirei o comando: [b:0c3140c929]dtmDados.QryBoletos.Last;[/b:0c3140c929]
Porque se eu jogasse o ponteiro no final da tabela seriam impressos todos os destinatários novamente, o que quero é somente a partir do destinatário que o usuário selecionou.
Ao tirar esta linha do código, o delphi não executa a impressão. Porque?
Eu não conheço muito bem o comando Try- Finally, pois um companheiro do fórum que me passou este codigo de exemplo. Este erro tem algo a ver coma retirada do comando que coloca a tabela no final para iniciar a impressão?
Se alguém puder me ajudar, ficarei muito grato...
Um grande abraço a todos...
Pablo - Marília/SP
Pablo_lima
Curtir tópico
+ 0
Responder
Posts
17/04/2003
Rebel_inside
hmmmm.. você pode tentar fazer o seguinte..
- definir uma variável do tipo bool (ex.: var [b:72ccfa4028]Continuar[/b:72ccfa4028]: Boolean; )
- De acordo com o que você quer fazer, especificar um valor para [b:72ccfa4028]Continuar[/b:72ccfa4028]
- No comando dataset.Last, substituir por if (not [b:72ccfa4028]Continuar[/b:72ccfa4028]) then dataset.Last;
acho que foi isso que você perguntou.
Espero ter ajudado
- definir uma variável do tipo bool (ex.: var [b:72ccfa4028]Continuar[/b:72ccfa4028]: Boolean; )
- De acordo com o que você quer fazer, especificar um valor para [b:72ccfa4028]Continuar[/b:72ccfa4028]
- No comando dataset.Last, substituir por if (not [b:72ccfa4028]Continuar[/b:72ccfa4028]) then dataset.Last;
acho que foi isso que você perguntou.
Espero ter ajudado
Responder
Clique aqui para fazer login e interagir na Comunidade :)