त्वरित रिपोर्ट 1920*1080 संकल्प प्लस 125% जब उपरोक्त डिस्प्ले सेटिंग वातावरण होता है,"पूर्वावलोकन प्रिंट" का अनुपात गलत होगा.(बहुत बड़ा या बहुत छोटा),लेकिन वास्तविक मुद्रण सामान्य है.,अगर आप सही करना चाहते हैं,संकलन परिवेश में त्वरित रिपोर्ट की qrprntr.pas फ़ाइल को संशोधित करना आवश्यक है,इसे ठीक करने के दो तरीके हैं。
◎ फ़ाइल स्थान
सी:\कार्यक्रम फाइलें (86)\EmbarcaderoStudio16.0Quickrep506qrprntr.pas
◎ विधि 1
FMetafile.Width और FMetafile.Height द्वारा कॉल किए जाने के लिए एकscaleToNativeDeskRes फ़ंक्शन जोड़ें。
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
वास्तव में, त्वरित रिपोर्ट में 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;
संदर्भ [कड़ी]
- डेल्फी – विंडोज़ फ़ॉन्ट आकार सेटिंग के साथ किसी रिपोर्ट को गलत तरीके से प्रदर्शित करना या प्रिंट करना त्वरित रिपोर्ट है: (125%,150%) या फिर डीपीआई बड़ा 96 (120,144) – स्टैक ओवरफ़्लो
- QuickReport के साथ फ़ंक्शन स्केलिंग समस्या – क्लब डेल्फ़ी फ़ोरम
- [त्वरित रिपोर्ट,त्वरित रिपोर्ट] यदि आप विंडोज़ 10 में डीपीआई को 120% या 150% पर सेट करते हैं, तो पूर्वावलोकन विंडो लगभग 2/3 आकार की होगी।.
- QR पूर्वावलोकन और प्रिंट में वर्णों को संपीड़ित करता है – क्लब डेल्फ़ी फ़ोरम