Printing the preview metafile. When QR previews a report it is always saved as a metafile which is an exact replica of what appears on the preview window. No regeneration is required so the printing will take place immediately. This is an unofficial fix. It requires placing a global variable in the interface part of qrprntr.pas, so will break compatibility with TChart. There are 2 changes - 1. Declare a global var 'GlobalPrintMetafile' in the interface of qrprntr.pas, like this - .. .. var QRExportFilterLibrary : TQRExportFilterLibrary; GlobalPrintMetafile : boolean;// add this line implementation .. .. 2. In TQRPrinter.Print change 1 line like this (must do)- .. .. // line below has 'and not GlobalPrintMetaFile' inserted if assigned(FMaster) and not ReportLoaded and not GlobalPrintMetaFile then PostMessage(Master.Handle, CM_QRPRINT, 0, 0) else if (Status = mpFinished) and PrinterOK then try APrinter.Title := Title; .. .. .. AND replace this line ( optional) if you want custom paper sizes - APrinter.Canvas.StretchDraw(Rect(0, 0, APrinter.PageWidth, APrinter.PageHeight), APage) WITH this ...IF you want to use custom paper sizes. if papersize <> custom then APrinter.Canvas.StretchDraw(Rect(0, 0, APrinter.PageWidth, APrinter.PageHeight), APage) else APrinter.Canvas.StretchDraw( Rect(0, 0, aprintersettings.FPaperWidth, aprintersettings.FPaperLength), APage) 3. To print the metafile use this code - // remember to put qrprntr in the 'Uses' list ... // when the print is selected from the preview, the metafile will // be printed. GlobalPrintMetafile := true; reportform.quickrep.preview; |