PDA

Ver la Versión Completa : Imprimir composite report desde preview personalizado


SnaKe
07-05-2004, 08:41:02
Hola a todos,

Por primera vez he utilizado un composite report, lo he montado y me aparece en mi propia ventana preliminar correctamente pero tengo un problema, en mi ventana preliminar tengo un único botón para imprimir, cuando se pulsa aparece el cuadro de dialogo de Imprimir permitiendo seleccionar impresora y si se acepta se imprime y si se cancela pues no se imprime.

Bien, esto funciona correctamente si lo que aparece es un TQuickRep pero ahora con un CompositeReport mi código no funciona. ¿Como podría solucionarlo?, la idea es que sea independiente de TQuickRep y de TQRCompositeReport. No quiero poner dos botones en mi preliminar (uno que saque la configuración de impresoras y otro que sea el de imprimir) sino que quiero que haga eso con un único botón, primero aparezca el setup y si se acepta el cuadro pues se imprima.

Os adjunto el código del botón imprimir de mi preliminar que tengo actualmente y que funciona correctamente con TQuickRep y no con TQrCompositeRep, ya os digo que el CompositeReport lo tengo correctamente en el preliminar y que mi preliminar funciona bien si son Reports y no Composite.


procedure TFPreview.tbImprimirClick(Sender: TObject);
begin
if QRPrinter.Master <> nil then begin
with TCustomQuickRep(QRPrinter.Master) do begin
PrinterSetup;
if Tag = 0 then
Print;
end;
end;
end;


También he obtenido el codigo correcto si le doy a imprimir correctamente pero el problema lo tengo desde el preliminar. Codigo de impresión directa:


CompositeRep.PrinterSetup;
if (CompositeRep.Tag = 0) then
CompositeRep.Print;


Un saludo a todo y gracias por adelantado.

Gydba
07-05-2004, 14:20:45
Buenas, en lo particular no manejo el qreport pero si te interesa puedo realizarte una prueba con freereport mañana sábado que tengo tiempo para ver si está el mismo problema.

jachguate
07-05-2004, 16:59:44
Hola.

No he entendido exactamente cual es tu problema, pero si simplemente tenes que ejecutar código distinto si se trata de un CompositeReport o no, podrias hacer algo como:


procedure TFPreview.tbImprimirClick(Sender: TObject);
begin
if QRPrinter.Master <> nil then begin
if qrPrinter.Master is TqrCompositeRep Then
Begin
with (qrPrinter.Master as TqrCompositeRep) do
Begin
PrinterSetup;
if tag = 0 Then
Print;
End;
End
Else Begin
with TCustomQuickRep(QRPrinter.Master) do begin
PrinterSetup;
if Tag = 0 then
Print;
end;
End;
end;
end;


Hasta luego.

;)

SnaKe
10-05-2004, 14:22:44
Hola,


Gracias a todos.

Gydba, con FreeReport no me vale, tiene que ser con QuickReport.

Jachguate, el código que pusiste no compila, dos lineas dan error, la primera es la de:


if qrPrinter.Master is TqrCompositeRep Then


Ese error lo he conseguido eliminar pero:


with (qrPrinter.Master as TqrCompositeReport) do


dice... Incompatible types: 'TQRCompositeReport' and 'TWinControl' (el tipo TQrCompositeRep que escribiste no existe y lo cambié por TQrCompositeReport)

Ese tipo de conversiones ya he tratado de realizarlas pero no me deja, no he encontrado la solución, al principio creí que con algo parecido a lo que decias funcionaría pero no encuentro la clave...

Un saludo y gracias de nuevo.

jachguate
10-05-2004, 20:31:15
Pues yo acabo de probar algo muy similar y compila sin problemas... que versión de delphi usas.

Hasta luego

;)

SnaKe
11-05-2004, 09:31:50
Hola,

Utilizo delphi 7 y QuickReport 3.0.9 y nada, no hay forma de que compile...


Un saludo.