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
Gracias de nuevo por vtra ayuda !!!