PDA

Ver la Versión Completa : Numero de componentes de Quick Report


GerTorresM
04-11-2011, 01:34:08
Hola a todos:

bien la situación del día es la siguiente:

pretendo mediante codigo
for i_local:= 0 to self.ComponentCount -1 do
if Components[i_local] is TQRLabel then
Try
for j_local:= 0 to pListadoDatos.Count do
begin
cadena_local:= pListadoDatos.Strings[j_local];
Posicion_local:= pos('-',cadena_local);
Tag_local:= StrToInt(copy(Cadena_local,0,Posicion_local));
if (Tag_local = TQRLabel(Components[i_local]).Tag) then
TQRLabel(Components[i_local]).Caption:= copy(Cadena_local,Posicion_local,length(Cadena_local)-Posicion_local);
end;
Except on e:exception do
ShowMessage(Components[i_local].Name + ' ' + e.Message);
End;


Llenar algunas etiquetas en un reporte, para el efecto guardo lo datos que me interesan escribir en un TStringList y pretendo ubicar el componente en el reporte y colocar el texto que viene de TStringList, bien mi idea era hacer un barrido del reporte, y mirar en los componentes su tag y apartir de eso en los QRLabel escribir su caption.

el problema es que al usar self.ComponentCount en el reporte obtengo siempre un CERO y por ende no hay recorrido, probe los mismo con ControlCount y obtuve el mismo resultado, entonces la pregunta es que propiedad que me permite saber cuantos componentes has en un reporte o en una banda ??


Agradezco de antemano



GerTorresM
Colombia

ecfisa
04-11-2011, 02:36:13
Hola GerTorresM

A modo de ejemplo, agregá 5 TQRLabel al TQuickReport y a cada Tag dale valores de 0 hasta 4, luego desde el form que lo invocas probá este código:

...
implementation

uses Unit2, // unidad donde está TQuickReport1
QRCtrls; // para evaluar TQRLabel

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
TS: TStrings;
begin
TS:= TStringList.Create;
try
// aca doy unos valores para los Caption, en tu caso supongo los llenarás a mano
for i:= 1 to 5 do TS.Add('ETIQUETA '+IntToStr(i));
with QuickReport1 do
begin
for i:= 0 to ComponentCount -1 do
if Components[i] is TQRLabel then
with TQRLabel(Components[i]) do Caption:= TS[Tag];
end;
finally
TS.Free;
end;
QuickReport1.Preview;
end;
...


Saludos.

GerTorresM
04-11-2011, 02:43:43
Gracias por tu respuestas, pero el problema es la falta de un Dataset, esto se debe a que el reporte se planteo sin dataset y qr me obliga a utilizarlo

ecfisa
04-11-2011, 04:19:50
Gracias por tu respuestas, pero el problema es la falta de un Dataset, esto se debe a que el reporte se planteo sin dataset y qr me obliga a utilizarlo
Hola GerTorres.

No entiendo esto último, según lo que comentaste primero:

pretendo mediante codigo
Llenar algunas etiquetas en un reporte, para el efecto guardo lo datos que me interesan escribir en un TStringList y pretendo ubicar el componente en el reporte y colocar el texto que viene de TStringList, bien mi idea era hacer un barrido del reporte, y mirar en los componentes su tag y apartir de eso en los QRLabel escribir su caption.

Es decir no veo que implicancia tiene la existencia o no de un TDataSet, con el llenado de la propiedad Caption de los TQRLabel.

Un saludo.