2012-05-12 71 views

回答

5

如果你只需要在主顯示器的大小,而不是桌面大小(ñ顯示器之和),您可以使用此:

uses ..., FMX.Platform; 


var 
    p: TPointF; 
begin 
    p := Platform.GetScreenSize; 
    ShowMessage(Format('X: %f' + LineFeed + 'Y: %f', [p.X, p.Y])); 

WindowsOS X

+0

+1屏幕截圖。留言Merci。 –

+0

剛剛在我的博客上發了一條消息...... http://capecodgunny.blogspot.com/2012/05/keeping-screen-resolution-in-mind.html –

1

事實上SM_CXSCREENSM_CYSCREEN可能不應該使用的。這只是告訴你主監視器的尺寸。在多臺顯示器的這些日子裏,這不是非常有用。在VCL代碼中,您應該使用Screen.Monitors[]和相關屬性來獲取有關您的顯示器的信息。

至於FMX,沒有多顯示器支持,也沒有平臺獨立的方式來查找屏幕尺寸指標。在你的鞋子裏,我會簡單地使用Screen.Monitors[],並在你遇到它時處理FMX端口。無論如何,當您移植到FMX時,您將不得不重新編寫所有GUI代碼,並且這個特定問題是您最擔心的問題。

最後,當你說

我想放在佔位符在我的代碼時,我將它移植到XE2

我相信大家都知道,移植到FMX不強制性的。 VCL在XE2中仍然支持並且可用,並且我看不到它將在很長一段時間內被移除。您可以移植到XE2,而不需要任何與FMX有關的事情。

+0

我正在創建IniFile初始化例程。我希望SM_CXSCREEN和SM_CYSCREEN的唯一原因是IniFile的值(如果尚未創建)。我可以選擇任意值,但我想將主屏幕設置爲主監視器的80%。 –

+1

好的,在這種情況下,'SM_CXSCREEN'是合理的。順便說一句,爲什麼要花費初始化喜好的ini文件。如果ini文件不存在,則創建默認值。然後在應用程序關閉時保存偏好設置。這樣你就不必編寫特殊的代碼來初始化它,並且它可以強大的刪除。但這不是主題。 –

+0

@CapeCodGunny:同意David對ini文件的方法。只要確保從ini文件中讀取的所有值都使用正確的默認值,最好是來自某個mydefaultconsts.pas單元的常量。這樣,即使有人手動創建ini文件並且並未設置所有值,您也可以安全使用所有值。 –

相關問題