Hola a todos
Estoy usando el FastReport 5.0 que viene con el Delphi RAD Studio 10, y todo funciona muy bien excepto que no me permite programar eventos
Cuando le hago clic a la pestaña de Eventos es como si estuviera inhabilitada, lo mismo que la pestaña Code
Por que sucedera esto?
Habra q hacer alguna configuracion adicional? o que?

No puedo programar eventos con Fast Report 5.0
#1
Escrito 07 diciembre 2015 - 09:06
#2
Escrito 07 diciembre 2015 - 09:20
Hola
Necesitas comprar la versión de pago de FastReport, la versión que ahora viene incluida en el RAD no los tiene habilitados.
Saludos
#3
Escrito 07 diciembre 2015 - 09:29
Gracias por tu pronta respuesta
Me las tendre q arreglar sin los eventos
#4
Escrito 07 diciembre 2015 - 10:01
Gracias por tu pronta respuesta
Me las tendre q arreglar sin los eventos
No se que es lo que deseabas realizar en los eventos, pero hay muchas cosas que se pueden automatizar con las propiedades de los objetos.
Saludos
#5
Escrito 07 diciembre 2015 - 10:11
No se que es lo que deseabas realizar en los eventos, pero hay muchas cosas que se pueden automatizar con las propiedades de los objetos.
Saludos
Es que muestro un listado de indicadores economicos, pero el formato para mostrar los saldos es diferente
Es decir, la mayoria es de la forma: 0,000.00 (2 decimales) excepto dos que son de la forma 0.0000 (4 decimales)
En dependencia del indicador, es que se cambia el formato de la cantidad de decimales
Se podra hacer esto de otra forma?
#6
Escrito 07 diciembre 2015 - 10:40
Es que muestro un listado de indicadores economicos, pero el formato para mostrar los saldos es diferente
Es decir, la mayoria es de la forma: 0,000.00 (2 decimales) excepto dos que son de la forma 0.0000 (4 decimales)
En dependencia del indicador, es que se cambia el formato de la cantidad de decimales
Se podra hacer esto de otra forma?
Hasta donde me acuerdo (porque no tengo aquí fastreport, puedes modificar las propiedades de cualquiera de los objetos que contiene tu forma FastReport desde Delphi, voy a ver si consigo algo para ejemplificarlo, no tengo a la mano mi laptop.
Saludos
#7
Escrito 07 diciembre 2015 - 01:02
Pues si que se puede.
En el evento beforePrint del frxReport se puede hacer todo lo que necesitas, te pongo un ejemplo sencillo.
procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent); var Memo: TfrxMemoView; RFC: string; begin RFC := IBTable1.FieldByName('RFC_IMP').AsString; Memo := frxReport1.FindObject('Memo1') as TfrxMemoView; case length(trim(RFC)) of 0: Memo.Text := 'SIN RFC'; 12: Memo.Text := Format('Persona Moral %s', [RFC]); 13: Memo.Text := Format('Persona Fisica %s', [RFC]); else Memo.Text := 'TAX ID'; end; end;
La parte importante es encontrar el objeto, y eso se hace con la función FindObject() como lo podrás observar en el ejemplo.
Espero que te sirva,
Saludos
#8
Escrito 07 diciembre 2015 - 01:25
Hola
Adjunto una imagen de la prueba que hice, si tenia FastReport en el XE7 de la compañia.
Saludos
Archivos adjuntos
#9
Escrito 07 diciembre 2015 - 04:07
Hola, si bien te respondi en ClubDelphi, tambien pego aqui la respuesta porque creo que podria ser de utilidad para la comunidad
Primero hay que agregar la declaracion de la funcion al reporte:
procedure TForm1.FormCreate(Sender: TObject); begin frxReport1.AddFunction('function FuncionA: string;'); // sin parametros frxReport1.AddFunction('function FuncionB(const Value: Variant): string;'); // con un parametro frxReport1.AddFunction('function FuncionC(const Value1, Value2..ValueN: Variant): string;'); // con n parametros frxReport1.AddFunction('function FuncionD: Integer;'); // otro tipo de retorno end;
Luego hay un evento que hay que implementar, el OnUserFunction:
function TForm1.frxReport1UserFunction(const MethodName: string; var Params: Variant): Variant; begin if MethodName = 'FUNCIONA' then // siempre en mayuscula Result := 'Funcion A' else if MethodName = 'FuncionB' then Result := IntToStr(Params[0]) else if MethodName = 'FuncionC' then // puedo llamar a otra funcion sin problemas Result := CalcularFuncionC(Params[0], Params[1]) end;
Luego pones un Memo en el Reporte, y en su text lo siguiente:
[NOMBREFUNCION(Param1, Param2, ParamN)]
[FUNCIONA)]
[FUNCIONB(Param1)]
#10
Escrito 07 diciembre 2015 - 04:09
Yo uso la alternativa anterior para imprimir reportes "complejos"; descubri que algunas cosas es muy complicado manejarlas con DataSet y es preferible hacerlo con objetos; y la forma de conectar los metodos de los objetos con el reporte es usando funciones, creo que es muy versatil y facil de implementar, la verdad es un gusto Fast Reports
#11
Escrito 07 diciembre 2015 - 04:12
Muchas Gracias Egostar
Resolvi con el codigo q me sugeriste, asi quedo el mio
procedure TModuloReport.frIndicadoresBeforePrint(Sender: TfrxReportComponent); var Plan, Real :TfrxMemoView; Fila :Integer; begin Fila := frdsIndicadores.DataSet.FieldByName('Fila').AsInteger; Plan := frIndicadores.FindObject('frdsCertificoPlan') as TfrxMemoView; Real := frIndicadores.FindObject('frdsCertificoReal') as TfrxMemoView; if Fila = 10 then begin Plan.DisplayFormat.FormatStr:='0.0000'; Real.DisplayFormat.FormatStr:='0.0000'; else begin Plan.DisplayFormat.FormatStr:='#,##0.00'; Real.DisplayFormat.FormatStr:='#,##0.00'; end; end;
#12
Escrito 07 diciembre 2015 - 04:15
Agustin
Mientras respondia a egostar publicaste tu respuesta, muchas gracias a ti tambien, la opcion que sugieres la tendre en cuenta tambien para cuando necesite reportes mas complejos
#13
Escrito 07 diciembre 2015 - 04:18
Yo uso la alternativa anterior para imprimir reportes "complejos"; descubri que algunas cosas es muy complicado manejarlas con DataSet y es preferible hacerlo con objetos; y la forma de conectar los metodos de los objetos con el reporte es usando funciones, creo que es muy versatil y facil de implementar, la verdad es un gusto Fast Reports
Pues si, es un gusto trabajar con FastReport, lastima q lo descubri tan tarde, antes usaba QReport
Pero la verdad que Fast Report es lo mejor, muy flexible y versatil
#14
Escrito 07 diciembre 2015 - 04:56
Yo uso la alternativa anterior para imprimir reportes "complejos"; descubri que algunas cosas es muy complicado manejarlas con DataSet y es preferible hacerlo con objetos; y la forma de conectar los metodos de los objetos con el reporte es usando funciones, creo que es muy versatil y facil de implementar, la verdad es un gusto Fast Reports
Muy bueno el aporte amigo Agustín Ortu, el que sabe sabe, siempre lo he dicho.
Saludos