2010-02-19 109 views
2

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

当然,它在台式电脑上太小了。我已经设定了尺寸,以便我可以在笔记本上看到整个表格。但在台式电脑上,一切都应该调整大小。

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

在复杂的代码中,我的意思是这样,应运行时创建窗体(在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
  • 路线

非常感谢你提前!

回答

3

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

您还可以在这里使用锚点。如果您设置了akLeft,akTop,akRight和akBottom将锚定您表单上的所有组件,它们将使用该表单调整大小。

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

有时您需要做一些更复杂的元件移动和尺寸调整,而不是单独由锚点处理。在这些情况下,您需要处理表单的OnResize事件。每当用户调整表单大小时,该事件都会被触发,并且会让您有机会重新计算某些组件的大小和位置。

+0

非常感谢!这正是我现在所做的。它对锚点非常有用,但一些组件比其他组件移动和调整大。所以我另外使用OnResize。 – caw 2010-02-23 16:04:12

1

只需正确设置锚点,即可显示其他信息。我不会推荐强制任意的高度和宽度。最好的办法是使用窗体的OnClose事件来保存表单的高度和宽度,然后使用OnCreate设置高度和宽度。

+0

谢谢,正确的锚点它工作正常。并且在OnClose中保存高度和宽度值也是一个好主意。 – caw 2010-02-23 16:01:48