Fórum Fechar o Word soh quando o documento for para a impressão #198536
02/12/2003
0
:cry: Olá Caros e Caras Colegas.
Estou com a seguinte dificuldade: Tenho um arquivo (*.doc), no qual carrego dados de uma ofício destino a uma ou mais pessoas.
Este documento deve logo que carregado ele deve ser impresso via programa.
O problema é eu uso um documento que é modelo para gerar os demais ofícios. Eu crio em outro documentos, primeiramente eu mando imprimir, através do comando:
[color=red:1b7e922476][size=18:1b7e922476]msword.activedocument.printout(copies:=1);[/size:1b7e922476][/color:1b7e922476]
[size=12:1b7e922476]E logo após passo a seguinte instrução:[/size:1b7e922476]
[color=darkblue:1b7e922476][size=18:1b7e922476]msword.activedocument.close(savechanges:=0);
msword.quit;[/size:1b7e922476][/color:1b7e922476]
[size=12:1b7e922476][/size:1b7e922476]Mas como o word ainda está enviando o documento para a fila da impressora, ele dá aquela msg:
[color=green:1b7e922476][/color:1b7e922476][i:1b7e922476]O Word está imprimindo. Encerrar o Word implicará no cancelamento de todos os trabalhos de impressão pendentes. Deseja encerrar o Word? [/i:1b7e922476]
Logicamente, esta mensagem aparece no meu sistema.
:wink: Então Colegas, existe alguma forma de evitar esta mensagem, ou seja, descobrir em que momento o word enviou a impressão para a impressora?
:P Obrigada, pela atenção. Bom trabalho a todos...
Estou com a seguinte dificuldade: Tenho um arquivo (*.doc), no qual carrego dados de uma ofício destino a uma ou mais pessoas.
Este documento deve logo que carregado ele deve ser impresso via programa.
O problema é eu uso um documento que é modelo para gerar os demais ofícios. Eu crio em outro documentos, primeiramente eu mando imprimir, através do comando:
[color=red:1b7e922476][size=18:1b7e922476]msword.activedocument.printout(copies:=1);[/size:1b7e922476][/color:1b7e922476]
[size=12:1b7e922476]E logo após passo a seguinte instrução:[/size:1b7e922476]
[color=darkblue:1b7e922476][size=18:1b7e922476]msword.activedocument.close(savechanges:=0);
msword.quit;[/size:1b7e922476][/color:1b7e922476]
[size=12:1b7e922476][/size:1b7e922476]Mas como o word ainda está enviando o documento para a fila da impressora, ele dá aquela msg:
[color=green:1b7e922476][/color:1b7e922476][i:1b7e922476]O Word está imprimindo. Encerrar o Word implicará no cancelamento de todos os trabalhos de impressão pendentes. Deseja encerrar o Word? [/i:1b7e922476]
Logicamente, esta mensagem aparece no meu sistema.
:wink: Então Colegas, existe alguma forma de evitar esta mensagem, ou seja, descobrir em que momento o word enviou a impressão para a impressora?
:P Obrigada, pela atenção. Bom trabalho a todos...
Eneblis
Curtir tópico
+ 0
Responder
Posts
03/12/2003
Deus
Bem, o existe uma saída para tal, mas depende de como você quer resolver o problema. A questão é que o status de impressão está em [i:78b8f73d26]BackgroundPrintingStatus[/i:78b8f73d26], então há a seguinte saída:
Só que isso causa um inconveniente: a aplicação toda vai parar até que o documento tenha sido impresso. Se você não deseja isso - e quem deseja? ;) - você tem duas saídas: ou implementar isso num thread, ou colocar um timer para verificar de 5 em 5s ou 10 em 10s, tipo:
O timer seria bem mais rápido de se implementar, acho que seria uma solução ideal. :) Quando você for imprimir, ligue o timer. Quando entrar naquele bloco [i:78b8f73d26]begin / end[/i:78b8f73d26], desligue o timer. Simples. ;)
Espero ter ajudado! Abraços, dEUS.
msword.ActiveDocument.Printout(Copies := 1); repeat until (msword.BackgroundPrintingStatus = 0); msword.ActiveDocument.Close(SaveChanges := 0); msword.Quit;
Só que isso causa um inconveniente: a aplicação toda vai parar até que o documento tenha sido impresso. Se você não deseja isso - e quem deseja? ;) - você tem duas saídas: ou implementar isso num thread, ou colocar um timer para verificar de 5 em 5s ou 10 em 10s, tipo:
if not (msword.BackgroundPrintingStatus > 0) then begin msword.ActiveDocument.Close(SaveChanges := 0); msword.Quit; end;
O timer seria bem mais rápido de se implementar, acho que seria uma solução ideal. :) Quando você for imprimir, ligue o timer. Quando entrar naquele bloco [i:78b8f73d26]begin / end[/i:78b8f73d26], desligue o timer. Simples. ;)
Espero ter ajudado! Abraços, dEUS.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)