2009-09-16 181 views
8

我们有一些使用Delphi 7编写的遗留应用程序。多年来,我们一直有几个要求来支持这些应用程序中的自定义桌面dpi设置,但是我们已经能够避开子弹直到知道。那么我们不能再做了。如何在Delphi 7应用程序中支持自定义桌面DPI设置?

当用户将他们的桌面设置为120dpi时,某些控件“脱落”应用程序或延伸到可见范围之外的形式,特别是锚定在其父项右侧的那些形式。

我可以做什么来防止这个问题没有心脏直视手术。

+0

如果没有“开心手术”,VCL根本无法做到这一点。目前为止我所见过的最佳解决方案是在Inno Setup中使用的,Inno Setup具有'Scaled'设置为'False'的形式,但在运行时采用了自定义缩放函数。这使得IS创建的安装程序在高DPI设置下看起来相当不错。 – mghie 2009-09-16 12:25:26

回答

1

如您所知,这是一个well known issue with Delphi forms and interactions with system font sizes

Delphi窗体的默认行为是尝试缩放以尊重(运行时)用户的桌面环境。正如你发现的那样,这可能会产生意想不到的副作用。

但是Scaled属性(默认为TRUE)可以设置为FALSE以防止出现这种情况,但我建议您阅读第一篇文章,并考虑the information in this article以确定这是否适合您的情况。如果你很幸运,只需在所有表单上设置缩小到FALSE,即使不是全部(这可能是单调乏味的,但并不完全是心内直视手术),也可能为你提供一个很好的途径。

+0

啊,你打了我几秒钟,你的回答更好/更完整。我会删除我的类似答案。 :-) – robsoft 2009-09-16 11:44:12

+3

-1的提示,甚至考虑简单地将'Scaled'设置为'False'。人们可以这样做,但只能通过完整的运行时调整大小和重新定位所有控件。最好在为每个表单设置正确的系统字体(在运行时确定)之后。无论是缩放还是运行时间的调整都不过是对视力受损和/或DPI屏幕高的人的残酷。 – mghie 2009-09-16 12:20:49

相关问题