2010-02-19 129 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