2015-12-08 19 views
0

我在Delphi 10西雅图项目中使用高DPI选项。窗体上的控件(按钮,标签,复选框)可以根据不同的DPI设置很好地进行缩放。这些控制措施在设计时即下降。运行时创建TButton控制高DPI感知应用程序不扩展到监视器的DPI

但是,我有一些TButton控制,我在运行时创建。这些运行时间创建的按钮不会缩放并遵守显示器的DPI设置。例如,设计时间TButton的高度为25,设计时间刻度为31。但运行时创建的TButton控件不会从25缩放到31

我可以在运行时创建TButton控件左侧,顶部,宽度和高度做额外的计算,但这将是单调乏味的。在Delphi有没有现成的解决方案可以让我们根据显示器的DPI进行扩展?

回答

2

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

您可以使用受保护的ChangeScale方法TControl执行缩放。这分别接受两个参数MD,分子和分母。对于M96通过Form.PixelsPerInch对于D