تقرير سريع في 1920*1080 القرار زائد 125% عندما تكون بيئة إعداد العرض أعلاه,ستكون نسبة "معاينة الطباعة" غير صحيحة.(كبيرة جدًا أو صغيرة جدًا),لكن الطباعة الفعلية طبيعية.,إذا كنت تريد تصحيح,من الضروري تعديل ملف qrprntr.pas الخاص بالتقرير السريع في بيئة الترجمة,هناك طريقتان لتصحيح ذلك。
◎ موقع الملف
C:\ملفات البرنامج (إلى x86)\إمباركاديروستوديو16.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;
◎ الطريقة الثانية
في الواقع، في التقرير السريع 5.06 في الإصدار,تم توفير الإصلاح,اكتب على {$استئجار IFDEF} تحت,الأمر فقط أن البرنامج غير موجود {$تعريف التعيينات} تحديد ما يشكل دقة عالية,وبالتالي فإن البرنامج لن يدخل في برنامج التصحيح。
ولذلك فإن الطريقة الثانية هي {$استئجار 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;
【參考連結】
- دلفي – تقرير سريع يعرض أو يطبع تقريرًا بشكل غير صحيح باستخدام إعداد حجم الخط في Windows: (125%,150%) أو نقطة في البوصة أكبر من ذلك الحين 96 (120,144) – تجاوز المكدس
- مشكلة تحجيم الوظيفة مع QuickReport – منتديات نادي دلفي
- [تقرير سريع,تقرير سريع] إذا قمت بتعيين النقطة في البوصة على 120% أو 150% في نظام التشغيل Windows 10، فسيكون حجم نافذة المعاينة حوالي 2/3..
- يقوم QR بضغط الأحرف في المعاينة والطباعة – منتديات نادي دلفي