Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Fin de Impresion (https://www.clubdelphi.com/foros/showthread.php?t=51530)

luxus 18-12-2007 15:53:55

Fin de Impresion
 
Hola,

¿Me podeis indicar cómo comprobar si una impresion ha finalizado? Lo digo porque he implementado un form en el que se pueden imprimir 4 reports diferentes.

1. Report 1
2. Report 2
3. Report 3
4. Report 4

Cada uno son checkboxes con lo que se puede seleccionar el Report 1 y el Report 3 por ejemplo. Con este ejemplo, la duda que me surge es ¿cómo saber si la impresion del Report 1 ha finalizado para mandar a imprimir el Report 3?


Gracias por vuestra ayuda

jachguate 18-12-2007 16:34:18

Lamentablemente no nos das una ídea de cómo realizas la impresión... así que hablando de windows en general y de una aplicación con un solo hilo de ejecución, o mas propiamente dicho, donde la impresión se realiza en el hilo principal, se decirte que cuando las rutinas que realizan la impresión retornan, es porque ya la impresión está finalizada, desde el punto de vista del aplicativo. En otras palabras, están en el spooler de windows, que finalmente es quien prioriza, decide que se imprime, que no, y finalmente resuelve las configuraciones y comunicación con la impresora.

En otras palabras. Si la rutina que imprime el Report1 retorna, podes iniciar la impresión del Report3, pues el spooler de windows está en capacidad de procesarla.

Hasta luego.

;)

luxus 18-12-2007 16:47:26

Implementacion
 
Pues la impresion la realizo usando QReport. No sé si es a eso lo que te refieres.

Entiendo que sea Windows el que gestione la impresion y la prioridad. Pero me gustaría que no se enviasen todas las ordenes a la vez y que haya un numero elevado de trabajos de impresión pendientes.

Es más....¿como detecto que la ipresión del Report1 ha finalizado? ¿Qué variable me indica dicha finalizacion?

jachguate 19-12-2007 00:45:32

Si a lo que te referís es a saber cuando se ha terminado de imprimir físicamente... podes capturar el mensaje WM_SPOOLERSTATUS, que se envía a todas las aplicaciones cada vez que un trabajo se añade o se retira de la cola de imrpesión.

Aclaro que esto funcionará solamente si:
  • Tu aplicación es la única que imprime. Es decir, no hay chance de que otras aplicaciones envíen trabajos a la cola
  • Obviamente, que estes imprimiendo en local. NO funcionará con una impresora remota.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 06:09:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi