Ver Mensaje Individual
  #9  
Antiguo 30-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Reputación: 25
__cadetill Va por buen camino
Hola

He investigado por la linea que indicaba Juan Antonio pero claro, tan fácil no podía ser

Entonces he probado con la propiedad Status de TQRPrinter que, según una documentación antigua que he encontrado por internet (QR para D1) una impresión pasaba por estos estados

Código Delphi [-]
TQRPrinterStatus = (mpReady, mpBusy, mpFinished, mpPrinting, mpPreviewing);
Veo que en aquel entonces tenía el estado mpPrinting, y pienso, "de coña, un bucle mientras esté en este estado y listo!!!". Pues no, tampoco, lo señores de QuSoft tenían que quitar este estado. De hecho, almenos desde la versión que biene en Delphi 3, sólo quedan 3 de los 5 estados (encontré unos fuentes antiguos de la versión de D3)

Código Delphi [-]
TQRPrinterStatus = (mpReady, mpBusy, mpFinished);

Por lo que sólo veo una solución y es "apoderarme" del evento AfterPrint del Report y lanzar el mio propio para volver a habilitar los botones. Total que hago lo siguiente

Código Delphi [-]
....
    property AfterPrt: TQRAfterPrintEvent read FAfterPrt write FAfterPrt;
.....

procedure TPrevi.ImprimirExecute(Sender: TObject);
begin
  HabilitaBotones(false);
  if Assigned(Preview.QRPrinter.AfterPrint) then
    AfterPrt := Preview.QRPrinter.AfterPrint;
  Preview.QRPrinter.AfterPrint := AfterPrintReport;;

  Preview.QRPrinter.Print;
end;
Es decir, miro si estaba asignado el evento para lanzarlo despues del mio y al evento le asigno mi procedure. Pero, el problema es que no me captura mi procedure y sigue lanzando el suyo (el del componente TQuickReport)

No se por donde falla la lógica, pero debería de funcionar, no? O estoy muy espesito ya?

Ala, un saludo
Responder Con Cita