Ir al contenido


Foto

No puedo programar eventos con Fast Report 5.0


  • Por favor identifícate para responder
13 respuestas en este tema

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 07 diciembre 2015 - 09:06

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?


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

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


  • 0

#3 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 07 diciembre 2015 - 09:29

Gracias por tu pronta respuesta

Me las tendre q arreglar sin los eventos


  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

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


  • 0

#5 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

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?


  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

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


  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 07 diciembre 2015 - 01:02

Hola
 
Pues si que se puede.
 
En el evento beforePrint del frxReport se puede hacer todo lo que necesitas, te pongo un ejemplo sencillo.

delphi
  1.  
  2. procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent);
  3. var
  4. Memo: TfrxMemoView;
  5. RFC: string;
  6. begin
  7. RFC := IBTable1.FieldByName('RFC_IMP').AsString;
  8. Memo := frxReport1.FindObject('Memo1') as TfrxMemoView;  
  9. case length(trim(RFC)) of
  10.      0: Memo.Text := 'SIN RFC';
  11.     12: Memo.Text := Format('Persona Moral %s', [RFC]);
  12.     13: Memo.Text := Format('Persona Fisica %s', [RFC]);
  13.     else Memo.Text := 'TAX ID';
  14.   end;
  15. 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
  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

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


  • 0

#9 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

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:
 


delphi
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. begin
  3. frxReport1.AddFunction('function FuncionA: string;'); // sin parametros
  4. frxReport1.AddFunction('function FuncionB(const Value: Variant): string;'); // con un parametro
  5. frxReport1.AddFunction('function FuncionC(const Value1, Value2..ValueN: Variant): string;'); // con n parametros
  6. frxReport1.AddFunction('function FuncionD: Integer;'); // otro tipo de retorno
  7. end;

 
Luego hay un evento que hay que implementar, el OnUserFunction:
 
 


php
  1. function TForm1.frxReport1UserFunction(const MethodName: string; var Params: Variant): Variant;
  2. begin
  3. if MethodName = 'FUNCIONA' then // siempre en mayuscula
  4. Result := 'Funcion A'
  5. else if MethodName = 'FuncionB' then
  6. Result := IntToStr(Params[0])
  7. else if MethodName = 'FuncionC' then // puedo llamar a otra funcion sin problemas
  8. Result := CalcularFuncionC(Params[0], Params[1])

Luego pones un Memo en el Reporte, y en su text lo siguiente:

[NOMBREFUNCION(Param1, Param2, ParamN)]
[FUNCIONA)]
[FUNCIONB(Param1)]
 


  • 1

#10 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

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


  • 1

#11 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 07 diciembre 2015 - 04:12

Muchas Gracias Egostar

 

Resolvi con el codigo q me sugeriste, asi quedo el mio


php
  1. procedure TModuloReport.frIndicadoresBeforePrint(Sender: TfrxReportComponent);
  2. var
  3.   Plan, Real  :TfrxMemoView;
  4.   Fila        :Integer;
  5.  
  6. begin
  7.   Fila := frdsIndicadores.DataSet.FieldByName('Fila').AsInteger;
  8.   Plan := frIndicadores.FindObject('frdsCertificoPlan') as TfrxMemoView;
  9.   Real := frIndicadores.FindObject('frdsCertificoReal') as TfrxMemoView;
  10.   if Fila = 10 then
  11.     begin
  12.       Plan.DisplayFormat.FormatStr:='0.0000';
  13.       Real.DisplayFormat.FormatStr:='0.0000';
  14.     end
  15.   else
  16.     begin
  17.       Plan.DisplayFormat.FormatStr:='#,##0.00';
  18.       Real.DisplayFormat.FormatStr:='#,##0.00';
  19.     end;
  20.  

 


  • 0

#12 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

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


  • 0

#13 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

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


  • 0

#14 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

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. (y)

 

Saludos


  • 0




IP.Board spam blocked by CleanTalk.