The QRP File Handler class TQRPHandler in QRExtra.pas ===================================================== Saved reports can be swiftly printed or displayed with this code - uses qrextra; procedure HandleQRPFile(ReportFile: String; ToPrint: Boolean); var QRPDevice: TQRPHandler; begin QRPDevice := TQRPHandler.Create; try QRPDevice.Filename := ReportFile; if ToPrint then QRPDevice.Print else QRPDevice.Preview; finally QRPDevice.Free; end; end; An extension to the QRPHandler class that sends to a selected printer. ---------------------------------------------------------------------- Add this new method in qrextra.pas. TQRPHandler = class private // add this private var FPIndex : integer; .. public // new public method - call it what you will // params : QRP file to send, destination printer index. procedure SendFile( pfilename : string; PIndex : integer); .. .. end; implementation procedure TQRPHandler.SendFile( pfilename : string; PIndex : integer); begin if assigned(FQRPrinter) then FQRPrinter.Free; FQRPrinter := TQRPrinter.Create; if FQRPrinter.PrinterIndex <> PIndex then FQRPrinter.PrinterIndex := PIndex; FPIndex := PIndex; FFilename := pfilename; FQRPrinter.Load(FFilename); FQRPrinter.Print; end; -------------------------------------------------------------------------- Example code using the SendFile method - procedure SendaFile(ReportFile: String); var QRPDevice: TQRPHandler; SelectedPrinterIndex : integer; begin // Add some code to set the printer index for destination // e.g. a printer setup dialog SelectedPrinterIndex := ????? QRPDevice := TQRPHandler.Create; try QRPDevice.SendFile( ReportFile, SelectedPrinterIndex ); finally QRPDevice.Free; end; end;