Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Cambiar el nivel de zoom en un Quick Report programáticamente (https://www.clubdelphi.com/foros/showthread.php?t=92107)

Angel.Matilla 28-07-2017 11:32:49

Cambiar el nivel de zoom en un Quick Report programáticamente
 
Cuando se hace un Preview de un QucikReport en la botonera que aparece en la parte superior, un TTollBar, el primer botón de la izquierda hace un zoom para que la página se vea completa en pantalla. Al pulsarlo ¿qué valor del quickreport se modifica? He estado mirando las propiedades y sólo veo dos que afecten a la presentación: PrevFormStyle y PreviewInitialState pero no he conseguido comprobar cual se modifica.

Eso o bien que me digáis que propiedad he de modificar, ya sea del informe o a través de la API, para que por código pueda forzar ese zoom.

Caminante 28-07-2017 16:32:51

Hola

No se si sea de ayuda pero para manejar por codigo el zoom puedes crear una ventana de vista previa con el componente QRPreview desde ahi tienes los metodos ZoomToFit y ZoomToWidth .

Saludos

ecfisa 28-07-2017 17:51:58

Hola.

Coincido totalmente con la sugerencia de Caminante, un ejemplo programático simple:
Código PHP:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
cSpinEditZoomValue->Value 100;
  
Panel1->Align     alTop;
  
QRPreview1->Align alClient;
}

// QuickRep OnPreview
void __fastcall TForm1::QuickRep1Preview(TObject *Sender)
{
  
QRPreview1->QRPrinter static_cast<TQRPrinter*>(Sender);
  
QRPreview1->Show();
}

// Preview
void __fastcall TForm1::btnPreviewClick(TObject *Sender)
{
  
QuickRep1->Preview();
}

// To fit
void __fastcall TForm1::btnZoomToFitClick(TObject *Sender)
{
  
QRPreview1->ZoomState qrZoomToFit;
  
QRPreview1->ZoomToFit();
}

// To width
void __fastcall TForm1::btnZoomToWidthClick(TObject *Sender)
{
  
QRPreview1->ZoomState qrZoomToWidth;
  
QRPreview1->ZoomToWidth();
}

// Custom
void __fastcall TForm1::cSpinEditZoomValueChange(TObject *Sender)
{
  
QRPreview1->ZoomState qrZoomOther;
  
QRPreview1->Zoom      cSpinEditZoomValue->Value;


Muestra:


Saludos :)

Angel.Matilla 31-07-2017 10:25:19

Gracias por las respuestas. Efectivamente estaba hablando de un Preview. Probaré el código.

Angel.Matilla 31-07-2017 10:37:34

He estado probando pero me tiene un poco despistado el código que has puesto
Cita:

Empezado por ecfisa (Mensaje 519821)
Código PHP:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
cSpinEditZoomValue->Value 100;
  
Panel1->Align     alTop;
  
QRPreview1->Align alClient;
}

// QuickRep OnPreview
void __fastcall TForm1::QuickRep1Preview(TObject *Sender)
{
  
QRPreview1->QRPrinter static_cast<TQRPrinter*>(Sender);
  
QRPreview1->Show();
}

// Preview
void __fastcall TForm1::btnPreviewClick(TObject *Sender)
{
  
QuickRep1->Preview();
}

// To fit
void __fastcall TForm1::btnZoomToFitClick(TObject *Sender)
{
  
QRPreview1->ZoomState qrZoomToFit;
  
QRPreview1->ZoomToFit();
}

// To width
void __fastcall TForm1::btnZoomToWidthClick(TObject *Sender)
{
  
QRPreview1->ZoomState qrZoomToWidth;
  
QRPreview1->ZoomToWidth();
}

// Custom
void __fastcall TForm1::cSpinEditZoomValueChange(TObject *Sender)
{
  
QRPreview1->ZoomState qrZoomOther;
  
QRPreview1->Zoom      cSpinEditZoomValue->Value;



Quiero entender de QRPreview1 es el formulario en el que se encuentra el QReport. Pero es que al compilar, con BCB6, me da errores porque me dice que ni ZoomState ni ZoomToFit() son propiedades o eventos ni del formulario ni del informe.

ecfisa 31-07-2017 18:38:25

1 Archivos Adjunto(s)
Hola.

Realmente no sé que te puede estar sucediendo, pareciera que te faltaría incluir QuickRpt.hpp..., me hubiera orientado mucho leer los mensajes de error textualmente.
De todos modos te adjunto los fuentes del ejemplo que realizé para que puedas analizarlos con tranquilidad y cotejarlo con tu código.

Saludos :)

Caminante 31-07-2017 19:03:25

Cita:

Empezado por Angel.Matilla (Mensaje 519878)
Quiero entender de QRPreview1 es el formulario en el que se encuentra el QReport.

QRPreview1 es un componente TQRPreview que se utiliza para crear tu propia ventana de vista previa

Saludos.

Angel.Matilla 01-08-2017 10:29:47

Gracias por las respuestas.
Cita:

Empezado por ecfisa (Mensaje 519884)
me hubiera orientado mucho leer los mensajes de error textualmente.

¿Los del compìlador? Porque no llega a ejecutarse. Me dice lo que te puse en el mensaje anterior que ZoomState no es una propiedad ni ZoomToFit() un evento ni del QuicReport ni del formulario que los soporta.
Cita:

Empezado por Caminante
QRPreview1 es un componente TQRPreview que se utiliza para crear tu propia ventana de vista previa

¿Ves? Eso no se me había ocurrido :(

Angel.Matilla 01-08-2017 10:52:12

Vale, creo que lo he entendido. Estaba obcecado en que el código que me habías puesto se ejecutaba sobre la botonera que aparece por defecto cuando se hace un Preview de un QR. No me había fijado que defines una botonera propia.


La franja horaria es GMT +2. Ahora son las 12:30:33.

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