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.