PDA

Ver la Versión Completa : Alineacion QrDBtext


Viky
17-12-2009, 16:45:24
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
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
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):


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