PDA

Ver la Versión Completa : Cambiar el nivel de zoom en un Quick Report programáticamente


Angel.Matilla
28-07-2017, 11:32:49
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:

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:
https://s1.postimg.org/y3rye6zyn/AMatilla_Qr.gif

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

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
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
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.
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.
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.