2009-08-06 50 views
3

如果我創建一個新的Delphi窗體,掛鉤它的OnResize事件,並運行應用程序,OnResize會在窗口顯示之前觸發。我不知道這是否會在任何窗口發生。 (對於熟悉Windows API的任何人,我已將它追蹤到TCustomForm.ShowingChanged(Delphi 2007中的Forms.pas行5503)中的ShowWindow調用,這明顯觸發了WM_SIZE ...至少,對於沒有其他屬性設置的新窗口我沒有看到它記錄的ShowWindow總是激發WM_SIZE,所以我不知道我是否可以指望這個與否。)當一個Delphi窗體顯示時,會不會啓動OnResize?

所以:我可以依靠一個TForm 總是第一次顯示時觸發OnResize?或者是否有情況(如果窗口不可調整大小,或許如果Position屬性具有某些值等),OnResize可能會在窗口第一次顯示之前觸發而不是

回答

6

不,這個事件並不總是在窗體顯示時觸發,這取決於BorderStyle之類的事情。例如,它在啓動時觸發bsSingle,但不觸發bsDialog。

這很容易測試。只需將一些日誌代碼添加到主窗體的OnResize事件中,更改BorderStyle並運行您的應用程序。

+0

我想我必須測試每種可能的屬性組合 - 我老實說,沒想到它很容易找到非OnResize的情況。但很高興知道答案。謝謝! – 2009-08-06 18:46:30

相關問題