PDA

Ver la Versión Completa : Qreport Sobre Un Formulario


miguelb
30-06-2003, 22:11:31
Estoy armando un qreport que debe imprimirse sobre un
formulario.
Tengo un Groupheader, un SubDetail y un GroupFooter.
Necesito que el SubDetail ocupe siempre la misma cantidad de lineas sin importar la cantidad de lineas del subdetail.
Esto es para que "calce" dentro del formulario.
Como hago?.
Gracias anticipadas.

marcoszorrilla
30-06-2003, 23:39:21
Con las líneas creo que no hay nada que hacer, prueba con altura.

Es decir si quieres que siempre mida una longitud determinada.

MiSubdetail.Height:=LoQueSea;

Puedes incluso darle dicha medida en tiempo de diseño.

Un Saludo.

cadetill
01-07-2003, 00:14:15
Otra idea es tener una variable global que vas incrementando en el GeforePrint de la banda. Cuando este llega al numero que tu quieres, pones la propiedad ForceNewPage a true y luego la vuelves a poner a false reiniciando el contador


procedure TDbGrid.QRSubDetail1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if QRSubDetail1.ForceNewPage then
begin
QRSubDetail1.ForceNewPage := false;
Conta := 0;
end;
inc(Conta);
if Conta = TuNumero then
QRSubDetail1.ForceNewPage := true;
end;


No lo he probado, pero la idea seria asi mas o menos

miguelb
01-07-2003, 15:09:04
marcos zorrilla:
Si modifico a altura de la banda del subdetail, lo que hago es ampliarle la altura de cada linea que imprime, y no del espacio asignado para todas las lineas. Es decir, si tengo altura = 5, cada linea ocupa 5 si la llevo a 20, entonces cada linea del subdetail estara ocupando 20. No pude encontrar como hacer para fijar el espacio total que ocupara todo el detalle.
cadetill:
ok, buena idea, me sirve para los casos en los cuales la cantidad de lineas es mayor de lo que yo quiero imprimir.
Pero si por ejemplo quiero que el espacio sea para 10 lineas, si tengo 15 registros, perfecto en el 10 corta. Pero si tengo 3 registros, los otros 7 no los voy a tener nunca, y comenzara automaticamente a imprimir el GroupFooter.
Quizas si pudiese hacer que se agreguen las 7 lineas restantes en blanco, pero no se como hacerlo, se podra agregar alguna banda que se maneje a mano. Es decir, yo la comienzo a imprimir y la imprimo la cantidad de veces que quiera.??

Gracias por sus ayudas, y espero mas.

Gracias
Miguel

marcoszorrilla
01-07-2003, 15:50:56
Se me ha ocurrido sobre la marcha, al leer tu respuesta, si por un casual funcionara me lo dices.

Pon un segundo Subdetail o una banda para subtotales, enganchado como el primero.

En el evento BeforePrint del Primero, en el que estarán las líneas reales cuentas cuantas líneas tiene y en virtud de esto le das la dimensión al segundo que solamente tendrá la misión de ocupar espacio debajo del anterior.

Un Saludo.

miguelb
01-07-2003, 16:33:44
A ver si te entiendo:
Tengo ahora el subdetail1.
Agrego un subdetail 2, enganchado con el primero y le asigno al subdetail 2 una altura standard en tiempo de diseño, y no le agrego ningun campo ni siquiera le relacion una tabla.
En tiempo de ejecucion
en el before del subdetail1, cuento las lineas que voy imprimiendo.
En el afterprint del subdetail2, segun la cantidad de lineas que conto el 1, calculo la altura del subdetail2, cuanto mas lineas imprimio menos altura le doy.

Esto es lo que sugeris?

Lo pruebo y te aviso.
Gracias
Miguel