在高DPI感知应用程序上创建的运行时TButton控件无法扩展到监视器的DPI

时间:2015-12-08 15:10:13

标签: delphi

我在Delphi 10 Seattle项目中使用High DPI选项。表单上的控件(按钮,标签,复选框)可以在不同的DPI设置上很好地扩展。这些控制措施在设计时逐渐形成。

但是,我在运行时创建了一些TButton控件。这些运行时创建按钮不会缩放并遵循显示器的DPI设置。例如,设计时间为TButton,设计时间范围内25的高度为31。但是,运行时创建的TButton控件无法从25扩展到31

我可以在运行时创建的TButton控件上对左侧,顶部,宽度和高度进行额外计算,但这将是乏味的。 Delphi中是否有可用的解决方案允许我们根据监视器的DPI进行扩展?

1 个答案:

答案 0 :(得分:2)

您需要在代码中执行此缩放。 VCL不会尝试对在运行时手动创建的控件执行任何此类缩放。

您可以使用ChangeScale的受保护TControl方法来执行缩放。这分别接受两个参数MD,分子和分母。通过Form.PixelsPerInch的{​​{1}}和M的{​​{1}}。