1

我们有一个 DPI 感知的 Delphi 项目。除其他外,我们通过在可执行文件中包含清单来实现这一点。这一切都很好,项目可以根据 DPI 设置很好地缩放。

最近我们开始翻译我们的产品,为此我们使用了 Sisulizer。此工具已配置为生成资源 DLL。清单由 Sisulizer 复制到资源 DLL,但不翻译。所以翻译也很好:)

但是,翻译后的项目不再完全支持 DPI。MessageBoxes(来自 Windows API)仍然支持 DPI,但项目的其余部分不再可扩展。未翻译的项目仍可识别 DPI。

4

1 回答 1

1

问题已解决。清单不是问题,它是 Sisulizer 项目中的一个选项:“表单缩放”设置为“禁用缩放”,这导致资源 DLL 中的 dfm 被更改(添加了“Scaled=False”)。将其更改为“忽略”解决了该问题。

从 GUI 更改语言(因此 Screen.FormCount > 0)时,缩放不会自动设置为正确的 DPI。或者换句话说:表单在其设计时状态下从资源 DLL 流式传输。我们通过在切换到另一种语言之前记录每种形式的比例因子来解决此问题。一旦更改了语言(并且所有表格都已翻译),我们将比例因子重新应用于表格,以便一切都按预期显示。

于 2020-09-29T14:17:29.740 回答