 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
jugado1820 Ens

Registrado: 16 Jun 2010Mensajes: 37
|
Publicado: Lun 26 Nov, 2018 8:18 pm Asunto: Script en fastreport |
|
|
Hola:
Tengo un problema y no encuentro la solución. Tengo un informe desarrollado en fastreport, y quiero que reportsummary me lo coloque al final de la pagina, y no justo al terminar el masterdata. Googleando, encontré dos scripts, uno en pascal para el fastreport, que es este:
Engine.CurY:=Engine.PageHeight-SummaryBand.Height-1;
Seguí googleando porque no me ejecutaba ni ese, ni nungun script, y indican que en el ejecutable (en el codigo de mi programa entiendo) se ponga lo siguiente:
TfrxReport.EngineOptionr.DestroyForms = false
Que pasandolo al c++ seria asi:
frxReport1->EngineOptions->DestroyForms = false
Pero sigue sin ejecutar el script.
¿Alguien sabe que ocurre?
Gracias de antemano
Un saludo |
|
| Volver arriba |
|
 |
jugado1820 Ens

Registrado: 16 Jun 2010Mensajes: 37
|
Publicado: Mar 01 Ene, 2019 5:34 pm Asunto: |
|
|
Hola de nuevo!!
Primero felicitar a todos el nuevo año 2019.
Segundo que he seguido investigando y, googleando, encontré que puedes ejecutar el script desde c++ builder, simplemente con poner:
nombre_fastreport->Script-> opciones
He conseguido ejecutar mensajes como hola mundo... etc. Lo que tengo escrito exactamente es lo siguiente:
prespc->Script->Parent = fsGlobalUnit();
prespc->Script->Lines->Text = "begin Engine.CurY:= Engine.PageHeight - reportsummary1.height -pagefooter1.Height - 1; end.";
prespc->Script->SyntaxType = "PascalScript";
if(prespc->Script->Compile())
prespc->Script->Execute();
else
ShowMessage(prespc->Script->ErrorMsg);
Ese codigo que tengo escrito es para alinear el reportsummary de fastreport al final, y dejarlo justo encima de de pagefooter, pero me da error de ejecucion, y no hay manera de conseguirlo. Aqui en el foro he investigado, pero o no se encuentra o no he sabido buscarlo. Si encontre algo de ayuda y hablaba del fastscript, arrastrando los objetos fscrits, pero es muy parecido a lo que tengo yo escrito pero sin arrastrar objetos.
Estoy usando ese codigo para alinear el reportsummary de fastreport al final de la pagina, justo encima del pagefooter. Si alguien sabe como alinearlo usando codigo o de otra manera, porfavor, que me heche un cable, pues en google no informa de mucho más de lo que tengo yo escrito y de lo que he investiga.
Muchisimas gracias por todo
Un saludo |
|
| Volver arriba |
|
 |
jugado1820 Ens

Registrado: 16 Jun 2010Mensajes: 37
|
Publicado: Mar 29 Ene, 2019 9:45 pm Asunto: |
|
|
Hola a todos de nuevo:
Ya tengo casi todo el problema resuelto, en fastreport no me ejecutaba
el script porque me faltaba script->run(); por ejemplo:
frxReport1->Script->Run();
Tambien abria que añadir:
frxReport1->PrepareReport(true);
frxReport1->ShowPreparedReport();
Quedando el codigo asi:
frxReport1->PrepareReport(true);
frxReport1->Script->Run();
frxReport1->ShowPreparedReport();
Ahora solo me queda un problema, el script que tengo en fastreport, en el reportsummary, no me ejecuta el evento Onbeforeprint, si alguien sabe
porque lo agradeceria mucho.
Tambien espero que este problema, cuando se solucione sirva para alguien más que tenga algun problema similar con algun script. |
|
| Volver arriba |
|
 |
jugado1820 Ens

Registrado: 16 Jun 2010Mensajes: 37
|
Publicado: Dom 17 Feb, 2019 8:57 pm Asunto: |
|
|
Hola a todos de nuevo:
Bueno queria contaros que ya he solucionado el problema. Parece ser que el problema era de mi fastreport. Cuando actualice a la nueva version (la que incluye embarcadero no tiene fastscript) no se actualizo bien por algún motivo, asi que volvi a hacer la instalacion, tanto de fastreport como de fastscript, y volvia a hacer el recompile, y ya funciona, me hace las instrucciones dentro del before...etc. Para aquellos que quieran alinear al final el reportsummary la instruccion es:
if Engine.FreeSpace <ReportSummary1.Height then Engine.NewPage;
Engine.CurY: = Engine.CurY + Engine.FreeSpace - ReportSummary1.Height - 0.00001;
Tambien podeis dejar la siguiente linea sola en el before que tambien funciona:
Engine.CurY: = Engine.CurY + Engine.FreeSpace - ReportSummary1.Height - 0.00001;
Espero servir de ayuda a cualquier programador o programadora que se encuentre en esta misma situacion.
Un saludo a todos |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|