דיווח מהיר פנימה 1920*1080 רזולוציה פלוס 125% כאשר סביבת הגדרות התצוגה לעיל היא,הפרופורציה של "הדפסה מקדימה" תהיה שגויה.(גדול מדי או קטן מדי),אבל ההדפסה בפועל היא נורמלית.,אם אתה רוצה לתקן,יש צורך לשנות את הקובץ qrprntr.pas של דוח מהיר בסביבת הקומפילציה,יש שתי דרכים לתקן את זה。
◎ מיקום הקובץ
ג:\קבצי תכנית (x86)\EmbarcaderoStudio16.0Quickrep506qrprntr.pas
◎ שיטה 1
הוסף פונקציית scaleToNativeDeskRes שתיקרא על ידי FMetafile.Width ו-FMetafile.Height。
procedure TQRPrinter.CreateMetafileCanvas; function scaleToNativeDeskRes(pVal: Integer): Integer; var tTemp: HDC; begin tTemp := GetDC(0); try Result := Round((pVal * GetDeviceCaps(tTemp, VERTRES)) / GetDeviceCaps(tTemp, DESKTOPVERTRES)); finally ReleaseDC(0, tTemp); end; end; begin ... FMetafile.Width := scaleToNativeDeskRes(XSize(PaperWidthValue)); FMetafile.Height := scaleToNativeDeskRes(YSize(PaperLengthValue)); FCanvas := TMetafileCanvas.Create(FMetafile, 0); FCanvas.Font.PixelsPerInch := MetafileDPI; ... end;
הדוגמה המלאה היא כדלקמן
procedure TQRPrinter.CreateMetafileCanvas; // 解決 Windows 字型放大到 125% 以上時,預覽列印的比例會異常的問題。 function scaleToNativeDeskRes(pVal: Integer): Integer; var tTemp: HDC; begin tTemp := GetDC(0); try Result := Round((pVal * GetDeviceCaps(tTemp, VERTRES)) / GetDeviceCaps(tTemp, DESKTOPVERTRES)); finally ReleaseDC(0, tTemp); end; end; begin FMetafile := TMetafile.Create; // {$define HIRES} {$IFDEF HIRES} // try a high res canvas XFactor := GetDeviceCaps(aPrinter.Handle, LogPixelsX) / 254; YFactor := GetDeviceCaps(aPrinter.Handle, LogPixelsY) / 254; FMetafile.Width := XSize(PaperWidthValue); FMetafile.Height := YSize(PaperLengthValue); FCanvas := TMetafileCanvas.Create(FMetafile, aprinter.Handle); FCanvas.Font.PixelsPerInch := GetDeviceCaps(aprinter.Handle, LOGPIXELSY); {$ELSE} // dpi fix ? suggested by David Martin FMetafile.Width := scaleToNativeDeskRes(XSize(PaperWidthValue)); // add // 在此處調用 scaleToNativeDeskRes。 FMetafile.Height := scaleToNativeDeskRes(YSize(PaperLengthValue)); // add // 在此處調用 scaleToNativeDeskRes。 FCanvas := TMetafileCanvas.Create(FMetafile, 0); // add FCanvas.Free; // add if FMetafile.Width > XSize(PaperWidthValue) then // add FMetafile.Inch := (96 * FMetafile.Width) div XSize(PaperWidthValue); // add // end fix FMetafile.Width := XSize(PaperWidthValue); FMetafile.Height := YSize(PaperLengthValue); FCanvas := TMetafileCanvas.Create(FMetafile, 0); YFactor := Screen.PixelsPerInch / 254; XFactor := YFactor; SetGraphicsMode(FCanvas.handle, GM_ADVANCED); // disable this line {$ENDIF} // FHyperlinks := TList.Create; end;
◎שיטה 2
למעשה, ב-Quick Report 5.06 בגרסה,סופק תיקון,לכתוב על {$IFDEF שוכרים} תַחַת,רק שהתוכנית לא שם {$להגדיר HIRES} הגדר מהי רזולוציה גבוהה,אז התוכנית לא תרוץ לתוך תוכנית התיקון。
לכן, השיטה השנייה היא ל {$IFDEF שוכרים} העבר את התוכנית פנימה {$אַחֵר} תַחַת,פשוט תחליף את הכתובת המקורית。
procedure TQRPrinter.CreateMetafileCanvas; begin FMetafile := TMetafile.Create; // {$define HIRES} {$IFDEF HIRES} {$ELSE} // try a high res canvas // 解決 Windows 字型放大到 125% 以上時,預覽列印的比例會異常的問題。 XFactor := GetDeviceCaps(aPrinter.Handle, LogPixelsX) / 254; YFactor := GetDeviceCaps(aPrinter.Handle, LogPixelsY) / 254; FMetafile.Width := XSize(PaperWidthValue); FMetafile.Height := YSize(PaperLengthValue); FCanvas := TMetafileCanvas.Create(FMetafile, aprinter.Handle); FCanvas.Font.PixelsPerInch := GetDeviceCaps(aprinter.Handle, LOGPIXELSY); // dpi fix ? suggested by David Martin FMetafile.Width := scaleToNativeDeskRes(XSize(PaperWidthValue)); // add FMetafile.Height := scaleToNativeDeskRes(YSize(PaperLengthValue)); // add FCanvas := TMetafileCanvas.Create(FMetafile, 0); // add FCanvas.Free; // add if FMetafile.Width > XSize(PaperWidthValue) then // add FMetafile.Inch := (96 * FMetafile.Width) div XSize(PaperWidthValue); // add // end fix FMetafile.Width := XSize(PaperWidthValue); FMetafile.Height := YSize(PaperLengthValue); FCanvas := TMetafileCanvas.Create(FMetafile, 0); YFactor := Screen.PixelsPerInch / 254; XFactor := YFactor; SetGraphicsMode(FCanvas.handle, GM_ADVANCED); // disable this line {$ENDIF} // FHyperlinks := TList.Create; end;
【參考連結】
- delphi – דוח מהיר הצגה או הדפסה שגויה של דוח עם הגדרת גודל הגופן של Windows היא: (125%,150%) או dpi גדול יותר אז 96 (120,144) – הצפת מחסנית
- בעיה בקנה מידה של פונקציות עם QuickReport – פורומים של מועדון דלפי
- [דיווח מהיר,QuickReport] אם תגדיר את ה-dpi ל-120% או 150% ב-Windows 10, חלון התצוגה המקדימה יהיה בערך 2/3 מהגודל..
- QR דוחס תווים בתצוגה מקדימה ובהדפסה – פורומים של מועדון דלפי