Ver Mensaje Individual
  #8  
Antiguo 24-11-2007
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Reputación: 23
salvica Va por buen camino
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,   { Form_QReportTitulo   }
  frmQReportExtremas, { Form_QReportExtremas }
  frmQReportPresion,  { Form_QReportPresion  }
  frmQReportNubes,    { Form_QReportNubes    }
  frmQReportCifrado;  { Form_QReportCifrado  }

{$R *.dfm}

procedure TForm_QReportDatos.QRCompositeReport_OnAddReports(
  Sender: TObject);
begin
{ añadir informes a la hoja }
  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
{ impresion de los cuadernos }
  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 );
    { impresion de la portada del cuaderno }
      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;
{ crear los forms que compondrán la página }
  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
     { en el informe de EXTREMAS }
       AbrirDatasetExtremas( FECHA_HOJA, HAY_MYSQL,
                                   DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
  end;
  Application.CreateForm(TForm_QReportPresion, Form_QReportPresion);
  with Form_QReportPresion  do begin
     { en el informe de PRESION  }
       AbrirDatasetPresion(  FECHA_HOJA, HAY_MYSQL,
                                   DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
  end;
  Application.CreateForm(TForm_QReportNubes, Form_QReportNubes);
  with Form_QReportNubes do begin
     { en el informe de NUBES  }
       AbrirDatasetNubes(    FECHA_HOJA, HAY_MYSQL,
                                   DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
  end;
  Application.CreateForm(TForm_QReportCifrado, Form_QReportCifrado);
  with Form_QReportCifrado do begin
     { en el informe de CIFRADO  }
       AbrirDatasetCifrado(  FECHA_HOJA, HAY_MYSQL,
                                   DIR_MAIN+OS_Separador+USUARIO+OS_Separador );
  end;
{ impresion de los datos de la hoja del cuaderno }
  Application.CreateForm(TForm_QReportDatos, Form_QReportDatos);
  with Form_QReportDatos do begin
       QRCompositeReport_.Preview;
       Free;
  end;
{ eliminar los forms que compondrán la página }
  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
Responder Con Cita