Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Problemas con Lazreport (https://www.clubdelphi.com/foros/showthread.php?t=78854)

santi33a 21-05-2012 15:32:11

Problemas con Lazreport
 
Hola a todos, con los primeros pasos en este reporteador me he encontrado con algunos problemas que me gustaría consultar con ustedes a ver que me podían decir.
según esta pagina
http://wiki.freepascal.org/Tutorial_de_LazReport

encontré que cualquiera de estos 2 códigos funcionan para pasarle un valor a una variable

Código Delphi [-]
procedure TForm1.frReport1GetValue(const ParName: String;  
var ParValue: Varying; VAr fld: TField);  
begin 
 // trata o caso de variáveis não dependentes
 if UpperCase(ParName)=' TEST' then 
    ParValue:=' Answer: Variable " test1 " ';  
end;

ó

Código Delphi [-]
 procedure TForm1.Button1Click(Sender:TObject);
 begin
   frReport1.Values.FindVariable('test').Field := QuotedStr('test1');
   frReport1.ShowReport;
 end;

el caso es que la segunda variante no me funciona, me da Access violation, pensé usar esta variante para crear un solo componente TfrReport en mi aplicación y de esta forma en la medida de cual sea el informe necesario lo llamo desde un form que voy creando, pues cada informe tiene sus propias variables, de lo contrario tendría una lista algo grande de variables en dependencia de la cantidad de informes que al final tenga mi aplicación las cuales todas las tendría que gestionar desde el evento GetValue, o sino en cada form crear un TfrReport para cada informe, creen q ustedes que esta ultima variante sea la mas optima?

Y aprovechando el mismo hilo quería saber si es posible en tiempo de ejecución crear o modificar algun componente de un reporte?, algo así se puede hacer en Rave que es el que siempre he usado.
En Rave lo usaba así

Código Delphi [-]
procedure TFIAjuste.BitBtnAClick(Sender: TObject);
var
 lRep: TRaveReport;
 Pag : TRavePage;
 s : string;
begin
  with dmr do begin // este es un modulo de datos donde tengo las consultas para los informes
   with piAjuste do begin
      .
      .
      .
     end;
   with rv do begin  // rv, es el componente TRvProject, que está en el modulo dmr
    Open;
    SelectReport(s,true);
    Pag := ProjMan.FindRaveComponent(s+'.Page1',nil) as TRavePage; // s tiene el nombre del reporte
    lRep := ProjMan.ActiveReport;
    with TRaveText.Create(lRep) do
     begin
      Parent := Pag;
      Text := 'Texto que quiero poner';
      top := Pag.PageHeight - 0.3;
      left := 0.3;
      Rotation := 90;
      Font.Size := 7;
     end;
     if RGConf.ItemIndex = 0 then begin
      SetParam('Fecha','');
      SetParam('Per','Desde ' + DateToStr(dtDesde.Date) +
               ' hasta el ' + DateToStr(dtHasta.Date));
      end
     else begin
      SetParam('Fecha','sin confirmar');
      SetParam('Per','');
      end;
    RvSystem1.SystemPrinter.Title := 'TMag_Ajustes';
    Execute;
    Close;
    end;
   end;
  end;
end;

Como podré hacer algo de esto en Lazreport?

santi33a 22-05-2012 16:18:00

1 Archivos Adjunto(s)
Respondiéndome yo mismo, lo primero lo logré de esta forma

Código Delphi [-]
frvariables['casa'] := 'Valor de la variable casa';

y lo segundo

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
var
v: TfrView;
Page: TfrPage;
begin
  fr.LoadFromFile('11a.lrf');
  Page := fr.Pages[0];
  v := frCreateObject(gtMemo, ''); // create data field
  v.SetBounds(20, 140, 200, 16);
  v.Memo.Add('pepe');
  Page.Objects.Add(v);
  fr.ShowReport ;
end;

Espero le sirva a alguien

Ahora lo que si no he logrado si alguien sabe como podre visualizar el reporte desde la vista de diseño si le agrego a algun Memo el valor de una variable, me da error, la variable se llama casa por ejemplo


Santiago


La franja horaria es GMT +2. Ahora son las 13:56:31.

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