Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.559
Poder: 27
dec Va camino a la famadec Va camino a la fama
Vistas preliminares a la medida

Ya he perdido la cuenta de las veces que me han preguntado cómo se programa una ventana de vista preliminar para QuickReport. No voy a mostrar las últimas técnicas disponibles, que pasan por definir una clase de ventana de vista preliminar por omisión (falta de documentación, como siempre), pero la técnica que mostraré vale para todas las versiones de QuickReport.

Primero desarrollaremos la ventana de vista preliminar. Creamos un nuevo formulario, al cual llamaremos wndPrev. En su interior dejamos caer un ToolBar y un componente QRPreview, de la página QReport de la Paleta de Componentes. A este último control le cambiamos su propiedad Align a alClient. Ahora interceptamos el método OnClose del formulario, para garantizar la devolución de recursos:

Código Delphi [-]
procedure TwndPrev.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Action := caFree;
   QRPreview1.QRPrinter := nil;
end;

En la barra de herramientas añadimos cuatro botones para navegar por las páginas.

Estos son los métodos que ejecutarán:

Código Delphi [-]
procedure TwndPrev.bnPrimero(Sender: TObject);
begin
   QRPreview1.PageNumber := 1;
end;

procedure TwndPrev.bnAnterior(Sender: TObject);
begin
   QRPreview1.PageNumber := QRPreview1.PageNumber - 1;
end;

procedure TwndPrev.bnSiguiente(Sender: TObject);
begin
   QRPreview1.PageNumber := QRPreview1.PageNumber + 1;
end;

procedure TwndPrev.bnUltimo(Sender: TObject);
begin
   QRPreview1.PageNumber := QRPreview1.QRPrinter.PageCount;
end;

Traemos dos botones más, para el factor de escala de la muestra:

Código Delphi [-]
procedure TwndPrev.bnZoomIn(Sender: TObject);
begin
   QRPreview1.Zoom := QRPreview1.Zoom + 20;
end;

procedure TwndPrev.bnZoomOut(Sender: TObject);
begin
   QRPreview1.Zoom := QRPreview1.Zoom - 20;
end;

Existen también métodos para los valores especiales de acercamiento: ZoomToFit y ZoomToWidth. Para terminar con la ventana, traemos un botón de impresión:

Código Delphi [-]
procedure TwndPrev.bnPrint(Sender: TObject);
begin
   QRPreview1.QRPrinter.Print;
end;

En el informe para el cual queremos esta vista preliminar debemos interceptar el evento OnPreview:

Código Delphi [-]
procedure TrptCustomer.QuickRep1Preview(Sender: TObject);
begin
   with TwndPrev.Create(nil) do
   begin
      QRPreview1.QRPrinter := Sender as TQRPrinter;
      ShowModal;
      // El formulario se destruye automáticamente
   end,
end;

Para tener acceso al tipo TQRPrinter necesitamos añadir la unidad QRPrntr a la cláusula uses de la unidad del informe. Estoy mostrando la vista preliminar en forma modal, pero también podía haber utilizado una ventana no modal o incluso MDI.

Finalmente, hay que tener cuidado con la forma en que se ejecuta el informe:

Código Delphi [-]
procedure TwndMain.Button1Click(Sender: TObject);
begin
   rptCustomer.QuickRep1.PreviewModal;
end;

En La Cara Oculta de Delphi 4, el ejemplo de vista preliminar del CD-ROM llamaba directamente al método Preview. Pero a partir de la versión 3.0.3 de QuickReport, que apareció mucho después de salir Delphi 4 al mercado, este método dejó de funcionar con formularios de previsualización a la medida
Responder Con Cita
  #2  
Antiguo 05-07-2006
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Talcahuano - Chile
Posts: 2.291
Poder: 17
BlueSteel Va por buen camino
Hola.. estube realizando esto y me parece muy interesante... pero quede atrapado en este código...


Donde se declara esto...???

Código:
procedure TwndMain.Button1Click(Sender: TObject);
begin
   rptCustomer.QuickRep1.PreviewModal;
end;
Salvo ese código se funciono el formulario.. lo único es que no se mostra la vista previa.. puede ser por ese codigo.. y cuando pinche el boton de imprimir solo me imprimio la primera parte..
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:39:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi