본문 바로가기

[퀵리포트,quickReport] 윈도우10에서 dpi를 120%나 150%로 설정하면 미리보기창에서 2/3정도의 크기로..

델파이XE8을 사용하고 있습니다

기본으로 설치되는 퀵레포트로 작업을 햇는데 윈도우7에서는 미리보기와 실제인쇄를 하면 정상적으로 잘나옵니다

그런데 윈도우10에서는 미리보기와 실제인쇄를 하면 작게 출력이 됩니다

미리보기는 QRPreview 컴포넌트로 만들엇습니다

구글링하다가 윈도우10에서 작게 보이는 현상을 해결을 하는 소스를 찿았는데 QRPrntr.pas 이 파일에서 CreateMetafileCanvas 함수를 수정한건데  이게 읽기전용으로 되어있습니다

그래서 읽기전용을 풀어서 했는데도 계속 읽기전용으로 되어잇다고 수정이 안됩니다

탐색기에서 QRPrntr.pas파일이 보관으로 되어잇어서 풀었는데도 안되네요

 

어떻게 하면 수정이 될까요?



1. 개발/실행 플랫폼 
  (1) OS : 윈도우7, 10
  (2) 개발툴 : 델파이XE8
  (3) 사용 Database : 

2. 개발 중인 프로그램 

3. 질문 내용 
델파이XE8 에 퀵레포트 사용하신분 잇으신가요?
윈도우7은 정상적으로 나오는데 윈도우10에서 dpi를 120%나 150%로 설정하면 미리보기창에서 2/3정도의 크기로 보이고 인쇄할때도 실제로 2/3 크기로 인쇄가 됩니다(첨부파일)


델파이7에서는 아래사이트에 나온것처럼 했더니 올바로 나옵니다  120%, 150%로 변경을 해도 똑바로 나옵니다
http://stackoverflow.com/questions/25924614/quick-report-displaying-or-printing-a-report-incorrectly-with-windows-font-size


I found a working solution! Patch for QRPrntr.pas:

  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;

퀵레포트5.06에도 똑같이 적용을 하고
델파이XE8에서 컴파일을 한다음에 제어판에서 디스플레이 설정을 125%로 하면
레포트가 화면의70%뿐이 안나옵니다

해결방법이 없을까요?