Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Решение проблемы отображения отчета в QuickReport при измененном размере шрифта Windows

Delphi , Компоненты и Классы , TQuickReport

Проблема отображения отчета в QuickReport при измененном размере шрифта Windows знакома многим разработчикам, но решение этой проблемы не так очевидно. В данной статье мы рассмотрим причины возникновения этой проблемы и предложим несколько решений для ее устранения.

Причина проблемы

Проблема связана с настройками шрифта в Windows. Когда размер шрифта увеличен более чем на 100%, отчет в QuickReport может неправильно отображаться на экране и при печати. В результате отчет может не помещаться на странице и быть привязанным к верхнему левому углу страницы.

Возможные решения

Решение 1: Использование DPI-совместимости

Одним из решений является использование DPI-совместимости в настройках проекта. Для этого необходимо добавить в файл проекта (.dproj) следующие строки:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
  <windowsSettings>
    <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
  </windowsSettings>
</application>
</assembly>

Однако, это решение может только увеличить размер шрифта в отчете, но не решить проблему с размером отчета на странице.

Решение 2: Изменение свойства "Scaled" формы

Еще одним решением является изменение свойства "Scaled" формы, используемой в QuickReport. Нужно установить это свойство в значение "False". Однако, это решение также может не решить проблему полностью, так как оно не учитывает настройки DPI в Windows.

Решение 3: Использование патча для QuickReport

Более радикальным решением является использование патча для QuickReport, который учитывает настройки DPI в Windows и корректирует размер отчета в соответствии с ними. Ниже приведен пример патча для файла 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;

Этот патч корректирует размер метафайла в соответствии с настройками DPI в Windows, что позволяет отчету правильно отображаться на экране и при печати, независимо от размера шрифта в Windows.

Заключение

В данной статье мы рассмотрели проблему отображения отчета в QuickReport при измененном размере шрифта Windows и предложили несколько решений для ее устранения. Важно помнить, что настройки DPI в Windows могут повлиять на отображение отчета, и поэтому необходимо учитывать это при разработке отчетов в QuickReport. Использование патча для QuickReport может быть самым эффективным решением для устранения этой проблемы.

Создано по материалам из источника по ссылке.

Статья посвящена решению проблемы неправильного отображения отчета в QuickReport при измененном размере шрифта в Windows.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TQuickReport ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-08-29 09:41:04/0.0034420490264893/0