Pues si, la solución es hacerlo con el CompositeReport
al menos yo así lo tengo. Haces el mismo reporte, con el mismo formato, para las diferentes cosas que necesitas, al final, los agrupas todos juntos con el compositereport y aparecerán los tres como si fueran uno solo, el usuario simplemente verá un reporte. Puedes jugar con la propiedad "PrintIfEmpty" de cada reporte si deseas que aparezca o no cuando este no contenga datos.
El preview, lo tienes que hacer al compositereport
Código:
....
qrcompositereport1.Preview;
....
Y en el evento OnAddReports del compositereports:
Código:
procedure TfrmImprimir.QRCompositeReport1AddReports(Sender: TObject);
begin
with QRCompositeReport1.Reports do begin
Add(qrReporteReCambios);
Add(qrReporteMaquinas);
end; //with
end;
Si el compositereports no te esta funcionando, entonces te esta faltando algún detalle a la hora del diseño.