【问题标题】:Delphi 7: Application scalingDelphi 7:应用程序扩展
【发布时间】:2011-01-18 22:23:45
【问题描述】:

在屏幕分辨率为 1280x800 的笔记本上,我开发了一个应用程序。现在我想在分辨率为 1600x1200 的台式电脑上使用它。

当然,它在台式电脑上太小了。我已经设置了尺寸,以便我可以在笔记本上看到整个表格。但在台式计算机上,所有内容都应调整大小。

但在大屏幕上,不应该以更大的尺寸查看事物,这意味着可以显示相同数量的信息。事物应该获得更高的高度和宽度值,以便显示更多信息。

在复杂的代码中,我的意思是这样的东西,它应该在创建表单时自动运行一次(OnCreate):

devResolutionX := 1280;
devResolutionY := 800;
useResolutionX := 1600; // how to get / read out this property?
useResolutionY := 1200; // how to get / read out this property?
Form1.Height := Form1.Height+devResolutionY-useResolutionY;
Form1.Height := Form1.Width+devResolutionX-useResolutionX;
// do that with all components which makes this approach complicated

我必须做什么才能达到这个目标?

  • 按比例缩放
  • 对齐方式
  • 锚点

非常感谢您!

【问题讨论】:

    标签: delphi resize scaling


    【解决方案1】:

    看起来您只需要将表单的 BorderStyle 属性设置为 bsSizeable。这将允许用户在他认为合适的时候调整表单的大小(或最大化它)。

    您还需要在此处使用锚点。如果您为表单上的所有组件设置 akLeft、akTop、akRight 和 akBottom 锚点,它们将随表单调整大小。

    不过,一旦你这样做了,你可能很快就会意识到这实际上并不是你想要做的。这些不断增长的组件可能会相互重叠。因此,您将需要考虑哪些组件的哪些边缘被锚定,哪些没有。

    有时您需要做一些比仅靠锚点处理的更复杂的组件移动和调整大小。在这些情况下,您需要处理 Form 的 OnResize 事件。每当用户调整表单大小时,都会触发此事件,它会让您有机会进行一些数学运算以重新计算某些组件的大小和位置。

    【讨论】:

    • 非常感谢!这正是我现在所做的。它与锚点配合得很好,但一些组件的移动和调整大小比其他组件更多。所以我另外使用了 OnResize。
    【解决方案2】:

    只需正确设置锚点,就会显示附加信息。我不建议以编程方式强制任意高度和宽度。最好的做法是使用表单的 OnClose 事件保存表单的高度和宽度,然后通过 OnCreate 设置高度和宽度。

    【讨论】:

    • 谢谢,使用正确的锚,它可以正常工作。在 OnClose 中保存高度和宽度值也是一个好主意。
    猜你喜欢
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 2016-11-01
    • 1970-01-01
    相关资源
    最近更新 更多