Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Numero de componentes de Quick Report (https://www.clubdelphi.com/foros/showthread.php?t=76480)

GerTorresM 04-11-2011 01:34:08

Numero de componentes de Quick Report
 
Hola a todos:

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

pretendo mediante codigo
Código Delphi [-]
  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:
Código Delphi [-]
...
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

Si pero no
 
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

Cita:

Empezado por GerTorresM (Mensaje 417547)
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:
Cita:

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.


La franja horaria es GMT +2. Ahora son las 20:52:21.

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