Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   casting Composite Report: error al imprimir (https://www.clubdelphi.com/foros/showthread.php?t=33908)

MsYo 20-07-2006 10:18:59

casting Composite Report: error al imprimir
 
Hola,
estoy desarrollando una función que, a groso modo es como sigue:

function Previsualizar (informe: TObject; ............);



var
CReport: TTQRCompositeReport;
QReport: TQuickRep;
tipo: integer;



begin
if (informe.ClassName = TQRCompositeReport.ClassName) then



begin
tipo := 0;
CReport := TQRCompositeReport (informe);



end else
if (informe.ClassName = TQuickRep.ClassName) then



begin
tipo := 1;
QReport := TQuickRep (informe);



end;

case tipo of
0: CReport.Preview;
1: QReport.Preview;
end;



end;

(No hago el casting de la forma "informe as TQRCompositeReport" ya que salta una excepción del tipo: "invalid class typecast".)

El problema es el siguiente: el preview se realiza correctamente, pero cuando se pulsa el botón de Imprimir, casi siempre (aunque no siempre, lo cual es muy extraño) sale una ventana de error aludiendo a la DLL en la que tengo la función y no se puede imprimir. Pero no sé por donde atacar, ya que el botón de imprimir y su evento es interno al previsualizador del composite.

Si alguien ha tenido algún problema similar o puede darme informacion útil se lo agradeceré.

MsYo 20-07-2006 11:02:54

Debí haber informado también de que esa función está dentro de una DLL, es decir, que desde un ejecutable estoy pasando un Composite Report a una DLL para que lo previsualice y lo imprima.

El caso es que acabo de acotar más el problema. He evitado lo del casting creando una función para cada tipo de informe tal que así:

function Previsualizar (informe: TQuickRep; ............); overload;

function Previsualizar (informe: TQRCompositeReport;....); overload;

Aún así sigue produciéndose el mismo error, por lo que quizás el problema no esté en el casting sino en el hecho de pasar el composite a una DLL y que sea ella la que llame al Preview.

MsYo 24-07-2006 12:29:09

Definitivamente el problema ocurre al pasar el Composite a una DLL (con un QuickReport sencillo no hay ningún problema) y hacer el Preview desde dentro de la DLL. Todo parece ir bien, pero al pulsar el botón de Imprimir en el previsualizador sale un error. No se da el problema si se hace un Composite.Print() por código.

Debe de ser un bug del CompositeReport, y parece que los de QuSoft no están actualizando, así que nos tendremos que buscar la vida.


La franja horaria es GMT +2. Ahora son las 14:41:49.

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