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

问题描述 投票:0回答:2

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

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

vcl hdpi dpi-aware
2个回答
0
投票

TFont的C ++ Builder帮助说:

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

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


0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.