在VCL表单的PageControl上使用锚点进行错误的自动缩放控件

时间:2018-01-21 18:47:41

标签: vcl hdpi dpi-aware

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

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

2 个答案:

答案 0 :(得分:0)

TFont的C ++ Builder帮助说:

  

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

     

要修改字体大小,请使用“大小”或“高度”属性。

答案 1 :(得分:0)

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

我解决此问题的第一种方法是尝试将TForm传递给名为FixFormScaling()的过程,该过程旨在修复所有有问题的缩放问题。但是由于所包含的控件有许多不同的对齐方式,所以我失败了。我无法在一个简短的过程中合理地处理它。

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

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

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