2009-08-06 82 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

相关问题