Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Alineacion QrDBtext (https://www.clubdelphi.com/foros/showthread.php?t=65471)

Viky 17-12-2009 16:45:24

Alineacion QrDBtext
 
Tengo un reporte que tiene 3 qrdbtext en la banda detalle, uno debajo de otro.
el primer qrdbtext, llamesmolo qrdbtext1, siempre va a esta completo, pero puede suceder que el qrdbtext2 y qrdbtext3 no esten completos, por lo tanto quiero que el alto de la banda se ajuste dependiendo si estan los 3 qrdbtext completos o no.
Porque o sino queda demasiado espacio entre una linea y otra. Como puedo lograr ajustar la banda ??

Gracias
Viky.

Aleca 17-12-2009 20:37:47

Código Delphi [-]
procedure TForm1.QRBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);
begin
  if QRDBText2.DataSet.FieldByName('NBRE_CAMPO').IsNull then
    QRDBText2.Height := 0;
  
  if QRDBText3.DataSet.FieldByName('NBRE_CAMPO').IsNull then
    QRDBText3.Height := 0
  else
    if QRDBText2.Height = 0 then
      QRDBText3.Top := QRDBText2.Top;
 
  QrBand1.Height := qrdbtext1.Height + qrdbtext2.Height + qrdbtext3.Height;
end;

espero q funcione, no lo alcance a probar. :):D:)

bubba 17-12-2009 20:57:15

Cita:

Empezado por Viky (Mensaje 349063)
Tengo un reporte que tiene 3 qrdbtext en la banda detalle, uno debajo de otro.
el primer qrdbtext, llamesmolo qrdbtext1, siempre va a esta completo, pero puede suceder que el qrdbtext2 y qrdbtext3 no esten completos, por lo tanto quiero que el alto de la banda se ajuste dependiendo si estan los 3 qrdbtext completos o no.
Porque o sino queda demasiado espacio entre una linea y otra. Como puedo lograr ajustar la banda ??

Gracias
Viky.

Hola Viky,

La solución pasa por programar el evento BeforePrint de la banda detalle, he hecho una prueba y funciona (el alto que he puesto para cada QRDBText es de 17 puntos, eso a gusto del consumidor):

Código Delphi [-]
procedure TForm1.DetailBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
var
   Alto: Integer;
begin
   Alto := 17;
   if not QuickRep1.DataSet.FieldByName('Campo2').IsNull then begin
      Alto := Alto + 17;
   end;
   if not QuickRep1.DataSet.FieldByName('Campo3').IsNull then begin
      Alto := Alto + 17;
   end;
   DetailBand1.Height := Alto;
end;

Saludos


La franja horaria es GMT +2. Ahora son las 13:58:10.

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