0

我有两个使用相同表单的应用程序。我注意到,当我运行应用程序时,这些表单的显示方式有所不同。我把这段代码放在项目源代码的顶部:

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 属性是只读的。

4

1 回答 1

0

可能的解释是,一个程序受DPI 虚拟化,而另一个则不受。系统指定了 150% 的字体缩放。

真正的分辨率是 1920 x 1080,并且aDAM3正在报告,因为它不受 DPI 虚拟化的影响。

另一方面aDAM2受制于 DPI 虚拟化,因此报告虚拟化维度,即真实维度除以 1.5。即 1280 乘 720。

于 2017-05-26T13:35:47.917 回答