2015-12-08 42 views
0

我在Delphi 10西雅圖項目中使用高DPI選項。窗體上的控件(按鈕,標籤,複選框)可以根據不同的DPI設置很好地進行縮放。這些控制措施在設計時即下降。運行時創建TButton控制高DPI感知應用程序不擴展到監視器的DPI

但是,我有一些TButton控制,我在運行時創建。這些運行時間創建的按鈕不會縮放並遵守顯示器的DPI設置。例如,設計時間TButton的高度爲25,設計時間刻度爲31。但運行時創建的TButton控件不會從25縮放到31

我可以在運行時創建TButton控件左側,頂部,寬度和高度做額外的計算,但這將是單調乏味的。在Delphi有沒有現成的解決方案可以讓我們根據顯示器的DPI進行擴展?

回答

2

您需要在代碼中執行此比例縮放。 VCL不會嘗試對運行時手動創建的控件執行任何此類縮放。

您可以使用受保護的ChangeScale方法TControl執行縮放。這分別接受兩個參數MD,分子和分母。對於M96通過Form.PixelsPerInch對於D