2009-09-16 180 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

相關問題