Размеры экрана 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.