| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
rockman2003 Master

Registrado: 27 Ene 2004Mensajes: 202Ubicación: Madrid
|
Publicado: Dom 16 May, 2010 10:52 am Asunto: Migrar QuickReport a Fast Report |
|
|
Hola a todos,
Voy a comenzar a migrar todos los informes que tengo en QuickReport a FastReport.
Para no empezar de cero, voy a utilizar una clase que ofrece FastReport para migrar "lo gordo".
La manera de utilizarlo es la siguiente
| Código: |
TConverterQr2Fr *conv = new TConverterQr2Fr(NULL);
conv->Source = QuickRep1;
conv->Target = FReport;
conv->Convert();
frxReport1->SaveToFile("converted_fromQR.fr3");
|
Es muy sencillo de comprender, el problema es que me gustaría integrarlo en el programa, para no tener que ir añadiendo informe por informe (Estamos hablando de más de 100).
Lo que se me ha ocurrido es en el Preview del informe, que me salga una opción que sea (Convertir a Fast Report), y como el QuickRep1 esta creado, se realizaría la conversión sin problemas.
Espero haberme explicado bien.
Muchas gracias |
|
| Volver arriba |
|
 |
rockman2003 Master

Registrado: 27 Ene 2004Mensajes: 202Ubicación: Madrid
|
Publicado: Dom 16 May, 2010 11:19 am Asunto: |
|
|
He encontrado este codigo en el foro
https://cppbuilder.es/viewtopic.php?t=5629&highlight=castellano+quickreport
Con esto me hago la idea de lo que tengo que hacer, pero...
¿como puedo hacer que una funcion se ejecute en el evento OnBeforePrint de cualquier TQuickRep del proyecto sin tener que recorrerme todos los formularios del proyecto?
Muchas gracias |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Dom 16 May, 2010 3:09 pm Asunto: |
|
|
Prueba con el siguiente código en el constructor del Form principal:
| Código: | // Añadimos la cabecera: #include<QRPrev.hpp>
static struct LOCAL_BEFORE_PRINT {
void __fastcall OnBeforePrint(TCustomQuickRep* Sender, bool& PrintReport)
{
// ...
// TConverterQr2Fr *conv = new TConverterQr2Fr(NULL);
// conv->Source = /*QuickRep1*/ Sender; <--
// conv->Target = FReport;
// conv->Convert();
// frxReport1->SaveToFile("converted_fromQR.fr3");
// ...
ShowMessage("OnBeforePrint");
}
void __fastcall ScreenActiveFormChange(TObject* Sender)
{
if (Screen->ActiveForm && Screen->ActiveForm->ClassNameIs("TQRStandardPreview"))
{
TQRStandardPreview* prev = static_cast<TQRStandardPreview*>(Screen->ActiveForm);
TCustomQuickRep* qr = dynamic_cast<TCustomQuickRep*>(prev->QRPrinter->Master);
if (qr) qr->BeforePrint = OnBeforePrint;
}
}
__fastcall LOCAL_BEFORE_PRINT()
{
Screen->OnActiveFormChange = ScreenActiveFormChange;
}
} local_before_print; |
Esto hará que se ejecute el código que pongas aquí para todos los informes.. y hay que tener en cuenta que como sustituimos el evento original, si ya usabas ese evento en algún informe se ignorara el anterior, así que si necesitas que se ejecute el evento original y el que se ponga aquí avisa para modificar el código.. |
|
| Volver arriba |
|
 |
rockman2003 Master

Registrado: 27 Ene 2004Mensajes: 202Ubicación: Madrid
|
Publicado: Lun 17 May, 2010 7:55 pm Asunto: |
|
|
Me vale perfecto _Leo
El problema es que yo pensaba que la migración de Quick Report a Fast Report estaba mas currado, así que me veo pasando todos a mano.
En fin, veo que al final es la unica manera de migrar las cosas...
Muchas gracias |
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Mar 14 Abr, 2015 5:45 pm Asunto: |
|
|
Una pregunta,
Que cabeceras o que incluyes para poder hacer uso de TConverterQr2Fr, es que no lo encuentro por ningún lado.
Un saludo.
Carlos _________________ Carlos J. Fernandez |
|
| Volver arriba |
|
 |
|