Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   QReport : Perdida de "posicion" en creacion de QRLabels dinaminas !!! (https://www.clubdelphi.com/foros/showthread.php?t=42569)

QuarkBcn 17-04-2007 18:04:27

QReport : Perdida de "posicion" en creacion de QRLabels dinaminas !!!
 
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

Cita:

Empezado por QuarkBcn
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 !!!


La franja horaria es GMT +2. Ahora son las 05:04:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi