2012-05-18 81 views
12

我正在一個可觀的表單上進行一些實時繪圖。當用戶調整窗體大小時,我不希望將大小更改應用於我的圖形渲染,直到用戶釋放鼠標按鈕,因此調整大小已完成。如何檢測這一點,並且只有在用戶完成表單大小調整後才調整渲染大小。因爲現在,如果我使用我的表單的OnResize事件,它將不斷地爲鼠標移動的每個像素重新渲染所有內容。如何檢測窗體大小何時啓動和停止?

我已經嘗試了鼠標向下/向上事件並跟蹤此事件,但是在調整窗體大小時不會調用這些事件。

回答

20

要檢測移動或大小調整已開始,請收到WM_ENTERSIZEMOVE消息。一旦用戶點擊窗口的標題欄或調整邊框大小(窗口進入移動或調整大小的循環),它就會被髮送到窗口。

要檢測移動或大小已完成,請收到WM_EXITSIZEMOVE消息。一旦用戶釋放窗口的標題欄或調整邊框尺寸(使窗口退出移動或調整大小的循環),它將被髮送到窗口。

您可以在表單級別聲明(和實現)他們抓住其中一方:

procedure WMEnterSizeMove(var Message: TMessage); message WM_ENTERSIZEMOVE; 
procedure WMExitSizeMove(var Message: TMessage); message WM_EXITSIZEMOVE; 
+6

+1。希望你不介意一點幫助。 :) –

+0

TLama:在FMX中有這樣的方法嗎? – RobertFrank

相關問題