PDA

Ver la Versión Completa : QReport : Perdida de "posicion" en creacion de QRLabels dinaminas !!!


QuarkBcn
17-04-2007, 18:04:27
Hola a todos !!!

Tengo un problema "extraño".

Tengo una Qreport, sobre el cual, dentro de un DetailBand creo, de forma dinamica una serie de QRlabels. Las cuales estan definidas como
LblVal : array of TQrLabel

Se crean en una funcion todas las etiquetas, y en principio todo OK. (quedan bien posicionadas)

El problema es cuando en el OnNeedData hago mencion a la etiqueta (aqui es de donde obtengo los datos para el caption de las etiquetas)

with LblVal[i] do begin
caption := intToStr(i); //solo es para este ejemplo
end;

El valor Top y Left de la etiqueta, son los de la última etiqueta creada en la función de creación. Deberian ser los valores de la etiqueta posicionada por "i" dentro del array de etiquetas.

Espero haberme explicado, con claridad.

No entiendo lo que pasa !!!

Cualquir ayuda será bienvenida.

Gracias de antemano !!!

droguerman
17-04-2007, 18:57:53
Espero haberme explicado, con claridad.

para nada. :D, creo que te falta un par de parrafos por ahi

por el título podemos suponer que el problema es que el top y el left se mueven, eso se puede deber a que pones en el constructor create como owner de tus qrLabel a el mismo quickreport, cuando deberías poner como owner el band que los contiene, si eso no resulta intenta con la propiedad parent.

luisgutierrezb
17-04-2007, 18:59:50
tal vez si nos pusieras mas codigo de cuando creas las etiquetas y cuando les asignas valores

QuarkBcn
17-04-2007, 20:33:11
Veamos intento explicar lo que hago con mas detalle

LblVal[i]:= TQRLabel.Create(DetailBand1);
with LblVal[i] do begin
Parent := DetailBand1;
Autosize := TRUE;

//Fijo la posiciones para el ejemplo. En el caso real se calculan
Top := 20;
Left := 30;

NOTA: Top y Left se calculan y colocan correctamente en esta funcion.
cada LBLval[i] tiene sus propias posiciones.

//Este caption lo coloco para ver si las etiquetas se colocan correctamente y efectivamente lo hacen.
caption := '('+intToStr(i) + IntToStr(x)+')';

en el OnNeedData del Qreport llamo a otra funcion que contiene la info a colocar en el caption, y es aqui, donde el top y el left no se corresponden con la LBLval[i] que estoy asignando, sino con los valores de la ultima etiqueta creada en la funcion anterior.

Como ejemplo deciros que si la ultima etiqueta creada, supongamos que es
Lblval[5].top := 20
Lblval[5].left := 120

al usar la etiqueta; en el OnNeedData del report, por ejemplo la primera etiqueta del array:

Lblval[0].top vale 20
LblVal[0].left vale 120 (Es decir los valores de la ultima etiqueta creada)

Cuando por ejemplo en su creación valian
Lblval[0].top = 20
LblVal[0].left = 10


Bueno ... espero se me entienda algo mejor :D

Gracias de nuevo por vtra ayuda !!!

mightydragonlor
18-04-2007, 02:38:26
Te fal ta el Ownwer y el Var de [i], bueno eso creo.

QuarkBcn
18-04-2007, 09:48:48
No, no es ese el problema. Si te fijas, falta mucho codigo, ya que solo he puesto un resumen para que se entienda y no colocar todo el codigo.

Gracias de todas formas.

Sigo a la espera de alguna idea.

Saludos !!!

QuarkBcn
18-04-2007, 13:57:39
Por fin !!!

Lo que suele pasar muchas veces ... como alguien dice por aqui ... el que persevera ... consigue ... o algo similar :) ... es decir que al final uno mismo encuentra la solución.

De todas formas muchas gracias a todos, por vuestra ayuda.

Los árboles no me dejan ver el bosque !!!