【发布时间】:2009-08-31 15:42:44
【问题描述】:
有没有办法从表单的 OnCreate 事件处理程序或 C++Builder 构造函数中取消或中止表单创建?
基本上,我希望能够从 OnCreate 或构造函数调用 Close() 并让它完全跳过显示表单。我有几种形式,作为它们初始化的一部分,它们可能决定根本不应该显示它们。 (我意识到我可以将初始化的这一部分分开,或者从调用表单或类似的表单中添加额外的检查,但是如果有一种方法可以从 OnCreate 或构造函数中干净地完成所有这些工作,那似乎是最简单的。)
编辑:针对少数cmets,部分don't-show-at-all逻辑是UI逻辑而非业务逻辑;表单可能会在显示之前显示确认信息,或者它可能使用通用对话框来获取表单的输入,然后如果用户取消该对话框则中止。 (其中一些是业务逻辑,需要重构,但通常很难找到时间重构所有需要它的东西。)
【问题讨论】:
-
嗨。您的架构可能是错误的。如果您只想关闭它,请不要创建表单。相反,将所有初始化代码移动到一个大/胖过程中(我们称之为 ApplicationInitialize)。在该过程中,您决定要创建或不创建哪些表单。通过向自己发布消息 (wm_AppStarted) 来调用该胖程序,如下所示:stackoverflow.com/questions/382527/…
标签: delphi forms c++builder