Delphi 7:应用程序扩展

时间:2010-02-19 19:30:10

标签: delphi resize scaling

在我的屏幕分辨率为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

我必须做些什么来达到这个目标?

  • ScaleBy
  • 比对

非常感谢你!

2 个答案:

答案 0 :(得分:3)

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

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

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

有时你需要做一些比单独使用锚点更复杂的部件移动和尺寸调整。在这些情况下,您将需要处理Form的OnResize事件。每当用户调整表单大小时,此事件都会被触发,这将使您有机会重新计算某些组件的大小和位置。

答案 1 :(得分:1)

只需正确设置锚点,即可显示其他信息。我不建议以编程方式强制任意高度和宽度。最好的办法是使用表单的OnClose事件来保存表单的高度和宽度,然后使用OnCreate设置高度和宽度。