Ver Mensaje Individual
  #1  
Antiguo 21-05-2012
santi33a santi33a is offline
Miembro
 
Registrado: jun 2005
Posts: 208
Reputación: 19
santi33a Va por buen camino
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?
Responder Con Cita