0

我在表单上针对不同显示器 DPI 设置自动缩放控件时遇到问题。Rad Studio 10.2 东京。“启用高 dpi”已打开。我在设计时将表单的 PixelsPerInch 设置为 96。我将 TPageControl 放在一个窗体上,在其中创建一个 TTabSheet 页面,将一些控件放在一个页面上并将它们的 Anchor 属性设置为 akRight(除了 akLeft 和 akTop)。当程序在分辨率为 120 DPI 的监视器上运行时,这些控件的右边缘出现延伸超出 PageControl 的右边界,因此控件的右侧部分不可见。如果我关闭 akRight,则控件的缩放比例正确。但我需要这些锚在运行时正确调整表单大小。如何解决问题?

PS 该错误已在 Rad Studio 10.3 中修复

4

2 回答 2

0

TFont 的 C++ Builder 帮助 说:

PixelsPerInch 属性仅影响打印机字体,不应修改。

要修改字体的大小,请使用 Size 或 Height 属性。

于 2018-01-23T05:05:03.973 回答
0

在高 dpi 模式下,拥有无数 TPageControl 和 TEdit、TMemo 和其他未对齐控件的应用程序,我遇到了同样的问题。

我解决这个问题的第一个方法是尝试将 TForm 传递给一个名为 的过程FixFormScaling(),我打算在其中修复所有错误的缩放问题。但是我失败了,因为包含的控件有许多不同的对齐方式,我无法在一个简短的过程中合理处理。

第二种方法似乎有效:在每个 TTabSheet 上,我放置了一个具有以下属性的 TPanel:

Align=alClient
BevelOuter=bvNone
Name=pnlDpiHelper<NameOfTabsheet>
ShowCaption=False

我正在将所有其他控件(TEdit、TMemo 等)移动到该 TPanel 上。在高 dpi 模式下的结果是现在一切似乎都正确缩放了!

于 2018-11-01T13:04:54.520 回答