Pues en mi caso casí nunca cambiamos los tamaños de los reportes.. pues siempre se tienen un tamaña especifico para cada reporte.. pero tal vez te sirva esta pequeña rutina donde se configuran ciertas propiedades la impresora default, podrías poner una pantalla antes de llamar tu reporte donde selecciones el tamaño de papel o variarlo en base a alguna variable que indique a que tipo de papel va ese reporte.
With Printer do
Begin
Printer.GetPrinter(ADevice,ADriver,APort,DeviceHandle);
if DeviceHandle <> 0 Then
Begin
DevMode := GlobalLock(DeviceHandle);
//GlobalUnlock(DeviceHandle);
end;
with DevMode^ do
begin
dmFields := dmFields or DM_PAPERWIDTH;
//dmPaperSize := DMPAPER_LETTER;
//dmPaperWidth := 1500;
dmPaperWidth := 1500;
dmPaperLength := 1500;
dmPaperSize := DMPAPER_USER;
dmFields := dmFields or DM_PAPERSIZE or DM_PAPERLENGTH or DM_PAPERWIDTH;
end;
GlobalUnlock(DeviceHandle);
Printer.SetPrinter(ADevice, ADriver, APort, DeviceHandle);
end;
|