Ver Mensaje Individual
  #9  
Antiguo 16-12-2009
bubba bubba is offline
Miembro
 
Registrado: jul 2008
Posts: 15
Reputación: 0
bubba Va por buen camino
Cita:
Empezado por sergiovalp Ver Mensaje
Me acordé como se hace:

1) creas una forma (form1)
2) en la forma agregas los dos reportes (qrp1 y qrp2)
3) en la forma pones el composite (comp)
3) en el evento OnAddReports agregas estas lineas:


Eso seria, que te resulte

saludos

Sergio
chile
Hola Sergio,

Gracias por la respuesta, pero es lo que comento en el post inicial, he utilizado el Composite y me pone un report a continuación del otro, sólo el detalle, cuando me interesa tanto la cabecera, como el pie.

Finalmente estuve probando la idea de duplicar todo en una sola banda (Headerband para ser exactos), con TQRLabels, sin TDataset y programando el evento OnNeedData y me funciona, de hecho voy contando las líneas y voy rellenando los QRLabels de la parte superior y la parte inferior, cuando llego al nº máximo de líneas, hago un NewPage y al finalizar hago el correspondiente Preview y me salió perfecto, aún debo perfeccionarlo, ya que hice una prueba con varios TQRLabels (tantos como filas caben en el impreso), pero lo he pensado y no hace falta, basta con tener una variable que me indique la posición inicial (Top), de la fila de los TQRLabels y cada vez que cambio de línea (registro en la tabla), le sumo "n" puntos, cuando llego al contador de líneas que caben, pues forzo el NewPage como comento y esta variable la inicializaría de nuevo con la posición Top inicial y ya está.

El código que he utilizado de momento y en el que debo cambiar por la idea esta de tener una variable con la posición Top es este:

Código Delphi [-]
procedure TfrmDobleQR2.qrAlbaranNeedData(Sender: TObject;
  var MoreData: Boolean);
var
   nLin, n, i: Integer;
begin
   i := 1;
   nLin := 18;
   for n := 1 to nLin do begin
      (FindComponent('qrlCodigo'+IntToStr(i)) as TQRLabel).Caption := 'Código ' + IntToStr(n);
      (FindComponent('qrlCodigo2'+IntToStr(i)) as TQRLabel).Caption := 'Código ' + IntToStr(n);
      (FindComponent('qrlDescripcion'+IntToStr(i)) as TQRLabel).Caption := 'Descripción ' + IntToStr(n);
      (FindComponent('qrlDescripcion2'+IntToStr(i)) as TQRLabel).Caption := 'Descripción ' + IntToStr(n);
      Inc(i);
      if i > 5 then begin
         i := 1;
         qrAlbaran.NewPage;
      end;
   end;
   if i <> 1 then begin
      for n := i to 5 do begin
         (FindComponent('qrlCodigo'+IntToStr(n)) as TQRLabel).Caption := '';
         (FindComponent('qrlCodigo2'+IntToStr(n)) as TQRLabel).Caption := '';
         (FindComponent('qrlDescripcion'+IntToStr(n)) as TQRLabel).Caption := '';
         (FindComponent('qrlDescripcion2'+IntToStr(n)) as TQRLabel).Caption := '';
      end;
      qrAlbaran.NewPage;
   end;
   MoreData := False;
end;

Muchas gracias a todos!

Saludos
Responder Con Cita