我在Delphi 10 Seattle项目中使用High DPI选项。表单上的控件(按钮,标签,复选框)可以在不同的DPI设置上很好地扩展。这些控制措施在设计时逐渐形成。
但是,我在运行时创建了一些TButton
控件。这些运行时创建按钮不会缩放并遵循显示器的DPI设置。例如,设计时间为TButton
,设计时间范围内25
的高度为31
。但是,运行时创建的TButton
控件无法从25
扩展到31
。
我可以在运行时创建的TButton
控件上对左侧,顶部,宽度和高度进行额外计算,但这将是乏味的。 Delphi
中是否有可用的解决方案允许我们根据监视器的DPI进行扩展?
答案 0 :(得分:2)
您需要在代码中执行此缩放。 VCL不会尝试对在运行时手动创建的控件执行任何此类缩放。
您可以使用ChangeScale
的受保护TControl
方法来执行缩放。这分别接受两个参数M
和D
,分子和分母。通过Form.PixelsPerInch
的{{1}}和M
的{{1}}。