Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Imprimir composite report desde preview personalizado (https://www.clubdelphi.com/foros/showthread.php?t=9976)

SnaKe 07-05-2004 08:41:02

Imprimir composite report desde preview personalizado
 
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.

Código Delphi [-]
 
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:

Código Delphi [-]
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:

Código Delphi [-]
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:

Código Delphi [-]
if qrPrinter.Master is TqrCompositeRep Then

Ese error lo he conseguido eliminar pero:

Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 13:13:52.

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