如何解决Delphi项目不再通过资源DLL
我们有一个支持DPI的Delphi项目。除其他外,我们通过在可执行文件中包含清单来实现这一点。一切正常,项目可以根据DPI设置很好地扩展。
最近,我们开始翻译我们正在使用Sisulizer的产品。该工具已配置为生成资源DLL。清单由Sisulizer复制到资源DLL,但不进行翻译。因此翻译效果也很好:)
但是,翻译后的项目不再完全支持DPI。 MessageBox(来自Windows API)仍然支持DPI,但项目的其余部分不再可扩展。未翻译的项目仍可识别DPI。
解决方法
问题已解决。清单不是问题,它是Sisulizer项目中的一个选项:“表格缩放”设置为“禁用缩放”,这导致dfm在资源DLL中被更改(添加了“ Scaled = False”)。将其更改为“忽略”可以解决该问题。
从GUI更改语言时(因此Screen.FormCount> 0),缩放比例不会自动设置为正确的DPI。换句话说:表单是在设计时从资源DLL中流式传输的。我们已通过在切换到另一种语言之前记录每种形式的比例因子来解决此问题。语言更改(所有表格都已翻译)后,我们将比例因子重新应用于表格,以便一切都按预期显示。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。