Para establecer los margenes, en el envento OnNewsPage puedes poner el siguente código:
Código Delphi
[-]
with (Sender as TBaseReport) do begin
MarginTop := 1;
MarginBottom := 2;
MarginLeft := 1;
MarginRight := 1;
end
Las unidasdes son pulgadas o centimtros, depende de como tengas configurado.
Para agrupar eso ya es cuestión de lógica, tienes que hacer ciclos anidados, donde en cada ciclo exterior pongas el grupo y en el interior el detalle, por ejemplo:
Código Delphi
[-]
for i := 0 to 10 do begin
printab('Grupo ' + intostr(i));
newline;
for j := 0 to 5 do begin
printab('Detalle ' + intostr(j));
newline;
if linesleft = 1 then
newpage;
end
end
El último if es para que saltes de página, linesleft te dice cuantas líneas le quedan a la hoja, si le queda solo una entonces va a saltar de página.