Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-12-2009
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Reporte con características predefinidas

Hola a tod@s


Bien la situacion que tengo hoy es la siguiente:


Pretendo crear una clase con la que se manejan algunas caractericas que deseo tener en los reportes de la totalidad de la aplicación, es decir un reporte base; para el efecto he hecho lo siguiente:

1. Cree tomando las opciones : File -> new -> other -> Report un reporte basado en quick report.

2. Defini una serie de etiquetas que se han de utilizar en el report.

3. Por último intente llenar las etiquetas utilizando los siguiente eventos :
1. Con el Create, pero como no encontre el create en QReport, entonces utliice el WinControlFormCreate, que pertence al formulario como tal, tal como se puede ver en el código adjunto, sin obtener resultado alguno.

2. Como no obtuve resultados, decidi utilizar el evento OnPreview, pero para desgracia ni siquiera visualiza el reporte.

Adjunto el Código

Código Delphi [-]

unit FrepBaseReporte;

interface

uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
  DB, DBTables, StdCtrls, ExtCtrls, Forms, QuickRpt, QRCtrls, Dialogs,
  QRExport;

type
  TQRRepBaseReporte = class(TQuickRep)
    PageHeaderBand1: TQRBand;
    TitleBand1: TQRBand;
    PageFooterBand1: TQRBand;
    QRLSoftmilenium: TQRLabel;
    QRPagina: TQRLabel;
    QRSDPagina: TQRSysData;
    QRSDFechaHora: TQRSysData;
    QRIEscudoIzquierda: TQRImage;
    QRIEscudoDerecha: TQRImage;
    QRLNombreEmpresa: TQRLabel;
    QRLNit: TQRLabel;
    QRLCiudad: TQRLabel;
    QRLNombreReporte: TQRLabel;
    QRLLogo: TQRLabel;
    QRTFTexto: TQRTextFilter;
    QRCSVFComas: TQRCSVFilter;
    QRHTMLFWeb: TQRHTMLFilter;
    procedure QuickRepAfterPreview(Sender: TObject);
    procedure WinControlFormCreate(Sender: TObject);
  private

  public

  end;

var
  QRRepBaseReporte: TQRRepBaseReporte;

implementation

uses Uprocedimientos, UDMReportes;

{$R *.DFM}

procedure TQRRepBaseReporte.QuickRepAfterPreview(Sender: TObject);
begin
  Self.DataSet.Close;
end;

procedure TQRRepBaseReporte.WinControlFormCreate(Sender: TObject);
Var QCodigo : TQuery;
begin
  QCodigo:= UProcedimientos.CrearConsulta();
  With QCodigo do
    begin
      sql.Text:= 'Select * from Configuracion';
      try
        open;
        QRLNombreEmpresa.Caption:= FieldByName('NombreEmpresa').AsString;
        QRLNit.Caption:= 'Nit ' + FieldByName('Nit').AsString;
        QRLCiudad.Caption:= FieldByName('Ciudad').AsString;
        QRLNombreReporte.Caption:='';
        QRLLogo.Caption:= FieldByName('Lema').AsString;
        QRIEscudoIzquierda.Picture.LoadFromFile(FieldByName('Escudo').AsString);
        QRIEscudoDerecha.Picture.LoadFromFile(FieldByName('Escudo').AsString);
      Except
      end
    end;
  Self.DataSet.Open;
end;

end.


¿Que debo hacer, en que evento lo debo ingresar?



Gracias de antemano



gertorresm
Responder Con Cita
  #2  
Antiguo 21-12-2009
bubba bubba is offline
Miembro
 
Registrado: jul 2008
Posts: 15
Poder: 0
bubba Va por buen camino
Hola,

Yo lo tengo resuelto más o menos y sin TQRLabel, directamente con TQRDBText.

Para ello tengo en la parte pública definido un TDataSet con el nombre Tabla (lo puedes poner como propiedad publicada), y tengo un procedimiento (AsignarTabla), para asignar a la propiedad DataSet de todos los TQRDBText del QuickReport el TDataSet con nombre Tabla que he definido en la parte pública. Eso sí, es para los listados estándar y siempre creo la tabla con los mismos campos y conforme voy grabando el detalle, a esos campos le doy los valores que me interesan, a saber, título del listado, fecha, nombre de la empresa, etc... Cuando creo el formulario que contiene el QuickReport, antes de hacer el Preview o Print del mismo, asigno a la variable Tabla el TDataSet con todos los registros, llamo al procedimiento AsignarTabla y ya está. El ejemplo:

Código Delphi [-]
type
  TfrmImpListado = class(TForm)
    qrListado: TQuickRep;
    PageHeaderBand1: TQRBand;
    DetailBand1: TQRBand;
    PageFooterBand1: TQRBand;
    QRDBText1: TQRDBText;
    QRDBText2: TQRDBText;
    QRDBText3: TQRDBText;
    QRDBText4: TQRDBText;
    QRDBText5: TQRDBText;
    QRDBText6: TQRDBText;
    QRDBText7: TQRDBText;
    QRDBText8: TQRDBText;
    QRDBText9: TQRDBText;
    QRDBText10: TQRDBText;
    QRDBText11: TQRDBText;
    QRDBText12: TQRDBText;
    procedure AsignarTabla;
  private
    { Private declarations }
  public
    { Public declarations }
    Tabla: TDataSet;
  end;

implementation
 
{$R *.DFM}
procedure TfrmImpListado.AsignarTabla;
var
   n: Integer;
begin
   qrListado.DataSet := Tabla;
   for n := 0 to frmImpListado.ComponentCount - 1 do begin
      if frmImpListado.Components[n] is TQRDBText then begin
         (frmImpListado.Components[n] as TQRDBText).DataSet := Tabla;
      end;
   end;
end;

Saludos
Responder Con Cita
  #3  
Antiguo 21-12-2009
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hola,
puedes pasar de todo y crear los componentes en tiempo de ejecución. Sabiendo los campos de la query o tabla, calculas sus anchos y haces un bucle para que se creen.
Si además dejas que el usuario pueda elegir los campos que quiere enviar al listado, pues ya está.

Te dejo una unidad que hace esto. Es mejorable, pero yo es la única forma de hacer listados más o menos genéricos que utilizo en mis aplicaciones.
Lo único que como soy un gañán, la llamos a través de una función, en lugar de hacer un objeto y tirarla en los formularios.
Además, permite mostrar la selección de campos o no en base a un parámetro, permite obtener totales por uno o varios campos, ..... te podría servir. Se instancia cada vez que se invoca y se destruye al finalizar.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip Unidad Listados.zip (6,5 KB, 9 visitas)
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Características de los ListView con Imágenes madiazg Varios 9 03-04-2012 19:58:57
Caracteristicas de un buen servidor??? MOCOSO07 Varios 13 07-05-2010 02:39:53
Caracteristicas de un Ordenador lKinGl API de Windows 17 08-10-2008 08:29:41
Caracteristicas de un tutorial Caral Varios 18 11-09-2007 00:12:44
Caracteristicas de JBuilder 9 jhonny Noticias 0 16-05-2003 21:29:40


La franja horaria es GMT +2. Ahora son las 17:32:59.


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
Copyright 1996-2007 Club Delphi