当Delphi表单显示时,它是否会始终触发OnResize?

时间:2009-08-06 14:50:33

标签: delphi startup vcl onresize

如果我创建一个新的Delphi表单,挂钩其OnResize事件并运行该应用程序,则在显示该窗口之前触发OnResize。我不知道的是,对于任何一个窗口,这是否会永远发生。

(对于熟悉Windows API的人,我已将其跟踪到TCustomForm.ShowingChanged中的ShowWindow调用(Delphi 2007中的Forms.pas第5503行),这显然会触发WM_SIZE ...至少,对于没有设置其他属性的新窗口。我没有看到它记录了ShowWindow总是触发WM_SIZE,所以我不知道我是否可以指望这个。)

所以:首次显示时,我是否可以依赖TForm 总是触发OnResize?或者是否存在环境(如果窗口不可调整大小,可能是位置属性具有某些值,等等,在首次显示窗口之前,OnResize可能触发?

1 个答案:

答案 0 :(得分:6)

不,当表单显示时,此事件并不总是触发,具体取决于BorderStyle之类的内容。例如,它在启动时为bsSingle启动,但不对bsDialog启动。

很容易测试。只需将一些日志代码添加到主窗体的OnResize事件中,更改BorderStyle并运行您的应用程序。

相关问题