Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

creación dinámica de venatanas

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: creación dinámica de venatanas Responder citando

Hola,

tengo unos 25 quick reports y mi intención no es cargarlos cuando comineza la
aplicación sino dinámicamente. Para eso comento del .cpp principal las lineas

Application->CreateForm(__classid(TfrmQR),
&frmQR);

y las ejecuto en el modulo de impresión y luego con

delete QR

recupero el espacio en memoria de los QR y los borro
dinámicamente

Ahora, la aplicación se carga más rápido pero lo que
estoy haciendo no andan
en un Composite Report sino que cuando no se generan
errores en los reports
me aparecen errores en la aplicación

¿qué estoy haciendo mal?


Volver arriba
Mensaje    Asunto: creación dinámica de venatanas Responder citando

Hola Adrian:

Yo prefiero ejecutar los reports así:

  // Hay que añadir: #include <memory>
  std::auto_ptr<TfrmQR> QR(new TfrmQR(0));
  QR->Preview();

o bien, así:

  TfrmQR *QR = new TfrmQR(0);
QR->Preview();
delete QR;

Y para trabajar con 'TQRCompositeReport' con reports creados dinamicamente podemos usar sus eventos 'OnAddReports' y 'OnFinished', por ejemplo, en el evento OnAddReports creamos dinamicamente los reports:

  void __fastcall TForm1::QRCompositeReport1AddReports(TObject *Sender)
  {
      // TQRCompositeReport: OnAddReports
      QRCompositeReport1->Reports->Add(new TfrmQR1(0));
      QRCompositeReport1->Reports->Add(new TfrmQR2(0));
  }

en el evento OnFinished liberamos la memoria:

  void __fastcall TForm1::QRCompositeReport1Finished(TObject *Sender)
  {
      // TQRCompositeReport: OnFinished
      TQuickRep *q = dynamic_cast<TQuickRep*>(Sender);
      if (q) delete q;
  }

entonces ya podemos usar el 'TQRCompositeReport' de la manera habitual:

  QRCompositeReport1->Preview();

Espero haberme explicado bien...
Saludos.

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.