如果我创建一个新的 Delphi 表单,挂钩其 OnResize 事件并运行该应用程序,则在显示窗口之前会触发 OnResize。我不知道对于任何窗口来说,这种情况是否总是会发生。
(对于熟悉 Windows API 的人来说,我已将其追溯到 TCustomForm.ShowingChanged 中的 ShowWindow 调用(Delphi 2007 中的 Forms.pas 第 5503 行),这显然会触发WM_SIZE
...至少对于没有设置其他属性的新窗口来说是这样。我还没有看到 ShowWindow 总是触发的记录WM_SIZE
,所以我不知道我是否可以指望这一点。)
So: 我可以依赖 TForm吗always当它第一次显示时触发 OnResize ?或者是否存在 OnResize 可能出现的情况(也许窗口不可调整大小,也许 Position 属性具有某些值等)not在窗口首次显示之前发生火灾?
不,该事件并不总是在表单显示时触发,具体取决于 BorderStyle 等内容。例如,它在 bsSingle 启动时触发,但 bsDialog 则不会。
很容易测试。只需向主窗体的 OnResize 事件添加一些日志记录代码,更改 BorderStyle 并运行您的应用程序即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)