Ver Mensaje Individual
  #2  
Antiguo 21-12-2009
bubba bubba is offline
Miembro
 
Registrado: jul 2008
Posts: 15
Reputación: 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