Размеры экрана Delphi различаются в двух приложениях на одном компьютере... как решить?

У меня есть два приложения, которые используют одни и те же формы. Я заметил, что эти формы отображались по-разному, когда я запускал приложения. Я поместил этот код в верхней части исходного кода проекта:

var f: TextFile;
s: String;

{$R *.res}

begin

s := TPath.GetFileNameWithoutExtension(Application.ExeName);
AssignFile(f, s + '-screen.txt');
Rewrite(f);
Writeln (f, s + '.Desktop TLHW: ' + IntToStr(screen.DesktopTop) + ', ' +
                                    IntToStr(screen.DesktopLeft) + ', ' +
                                    IntToStr(screen.DesktopHeight) + ', ' +
                                    IntToStr(screen.DesktopWidth));
CloseFile (f);

aDAM2-screen.txt показал: aDAM2.Desktop TLHW: 0, 0, 720, 1280

aDAM3-screen.txt показал: aDAM3.Desktop TLHW: 0, 0, 1080, 1920

Я не понимаю, как это происходит, и затрудняюсь решить эту проблему, особенно учитывая, что свойства TScreen доступны только для чтения.

1 ответ

Решение

Вероятное объяснение состоит в том, что одна программа подвержена виртуализации DPI, а другая - нет. В системе указано 150% масштабирования шрифта.

Истинное разрешение 1920 на 1080, и aDAM3 сообщает, что, поскольку он не подлежит виртуализации DPI.

С другой стороны aDAM2 подлежит виртуализации DPI и поэтому сообщает виртуализированные измерения, которые являются истинными измерениями, деленными на 1,5. Это 1280 на 720.

Другие вопросы по тегам