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
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 with piAjuste do begin
.
.
.
end;
with rv do begin Open;
SelectReport(s,true);
Pag := ProjMan.FindRaveComponent(s+'.Page1',nil) as TRavePage; 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?