2014-09-19 1 views
2

Эта проблема хорошо известна, но мне еще предстоит найти решение.Неверное отображение отчета или печать отчета с установкой размера шрифта Windows: (125%, 150%) или dpi больше, чем 96 (120,144)

Всякий раз, когда фон-размер в окнах установлен выше, чем нормальный размер

отчет сжимается относительно размера бумаги,

и получает на якорь в левом верхнем углу страницы, как так:

Image1

Swiching в «масштабируется» свойство включить или выключить в любой точке не влияет на это.

Как возится с PixelsPerInch.

Единственное решение, предложенное от тех, что я видел, что на самом деле делает что-то,

и могут быть найдены в QuickReport форуме, в этой ссылке прямо здесь:

QrPreview with UseDpiScaling under Windows7,

включает в себя создание новый ресурс проекта, добавив следующие строки:

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

Однако единственное, что это делает, это мак е текст в докладе большего,

в то время как отчет остается в пределах одних и тех же boundries, как показано на рисунке ниже:

Image2

Что можно сделать по этому поводу?

мне нужен отчет в соответствии с размером бумаги,

для отображения и печати так же, как он был разработан, независимо от окна размера шрифта

+0

На самом деле весь VCL имеет проблемы с правильной настройкой этих настроек DPI. Я даже видел, что программное обеспечение Microsoft само по себе выглядит ужасно, когда это изменяется. Одна из самых распространенных жалоб от наших клиентов. Мы всегда говорим им, что настройка всегда должна быть на 100%, и что Microsoft никогда не должна была использовать этот вариант в первую очередь. –

+0

У меня нет проблем с QR и большими шрифтами, потому что шрифт принтера не имеет ничего общего с шрифтом экрана. QR делает предварительный просмотр печати в метафайл, который затем отображается на экране, но я не испытывал затруднений ни при проектировании, просмотре, ни при печати с размерами экрана экрана Windows с использованием Delphi и Windows 7 с большим количеством приложений, отчетов и 50 пользователей с различными настройками шрифта, DPI и экрана в 20+ приложениях и около 1000 отчетов. –

+0

@ Шкала Jerry Font важна для экранов с высокой плотностью пикселей. Сейчас они распространены. Это не сложно сделать правильно. –

ответ

0

Я нашел рабочее решение! Патч для 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; 
Смежные вопросы