Hola
chavi, yo lo hago de la siguiente forma:
- Tengo un formulario para cada informe a incluir en el Composite.
- Tengo un formulario con el Composite. (en el uses deben estar los anteriores)
- Tengo un formulario principal con un botón, en el cual:
a) - Creo los forms a utilizar en el composite
b) - En cada formulario puse un procedimiento público, para que rellene el Dataset que le corresponda y lo llamo después de crear el form correspondiente
c) - Llamo al Composite para que genere el informe completo
d) - Cuando vuelve de imprimir, cierro los Dataset
e) - Elimino los forms
El composite, en su procedimiento solo tiene:
Código Delphi
[-]
uses
frmQReportTitulo,
frmQReportExtremas,
frmQReportPresion,
frmQReportNubes,
frmQReportCifrado;
{$R *.dfm}
procedure TForm_QReportDatos.QRCompositeReport_OnAddReports(
Sender: TObject);
begin
with QRCompositeReport do begin
Reports.Add( Form_QReportTitulo.QuickRep_TITULO );
Reports.Add( Form_QReportExtremas.QuickRep_EXTREMAS );
Reports.Add( Form_QReportPresion.QuickRep_PRESION );
Reports.Add( Form_QReportNubes.QuickRep_NUBES );
Reports.Add( Form_QReportCifrado.QuickRep_CIFRADO );
end;
end;
Y el evento OnClick del botón de form principal (es un poco largo, pero bueno)
Código Delphi
[-]
procedure TForm_Impresion.Button__OnClick(Sender: TObject);
begin
if( FormatDateTime('dd', FECHA_HOJA)='01' ) then begin
MsgBox( 'IMPRESIÓN DE PORTADAS',
'Se va a imprimir la portada del cuaderno'+OS_CRLF2+
'Si desea utilizar una cartulina, pongala en la impresora.'+OS_CRLF2+
'Pulse el botón para comenzar imprimir...',
btnAccept, smbAtencion, btnAccept );
Application.CreateForm(TForm_QReportPortada, Form_QReportPortada);
with Form_QReportPortada do begin
RellenarPortada( DIR_MAIN+OS_Separador+USUARIO+OS_Separador, FECHA_HOJA );
QuickRep__Portada.Preview;
Free;
end;
end;
Application.CreateForm(TForm_QReportTitulo, Form_QReportTitulo);
with Form_QReportTitulo do begin
PonerTituloAlInforme( FECHA_PARTE, HAY_MYSQL,
DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
end;
Application.CreateForm(TForm_QReportExtremas, Form_QReportExtremas);
with Form_QReportExtremas do begin
AbrirDatasetExtremas( FECHA_HOJA, HAY_MYSQL,
DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
end;
Application.CreateForm(TForm_QReportPresion, Form_QReportPresion);
with Form_QReportPresion do begin
AbrirDatasetPresion( FECHA_HOJA, HAY_MYSQL,
DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
end;
Application.CreateForm(TForm_QReportNubes, Form_QReportNubes);
with Form_QReportNubes do begin
AbrirDatasetNubes( FECHA_HOJA, HAY_MYSQL,
DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
end;
Application.CreateForm(TForm_QReportCifrado, Form_QReportCifrado);
with Form_QReportCifrado do begin
AbrirDatasetCifrado( FECHA_HOJA, HAY_MYSQL,
DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
end;
Application.CreateForm(TForm_QReportDatos, Form_QReportDatos);
with Form_QReportDatos do begin
QRCompositeReport_.Preview;
Free;
end;
with Form_QReportTitulo do begin
Free;
end;
with Form_QReportExtremas do begin
CerrarDatasetExtremas( HAY_MYSQL );
Free;
end;
with Form_QReportPresion do begin
CerrarDatasetPresion( HAY_MYSQL );
Free;
end;
with Form_QReportNubes do begin
CerrarDatasetNubes( HAY_MYSQL );
Free;
end;
with Form_QReportCifrado do begin
CerrarDatasetCifrado( HAY_MYSQL );
Free;
end;
end;
Espero que te sirva
Saludos
Salvica