加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

取消/中止在Delphi / C Builder中创建新表单?

发布时间:2020-12-15 09:44:46 所属栏目:大数据 来源:网络整理
导读:有没有办法从表单的OnCreate事件处理程序或C Builder构造函数中取消或中止表单创建? 基本上,我希望能够从OnCreate或构造函数中调用Close()并让它完全跳过显示表单.我有几种形式,作为初始化的一部分可能会确定它们根本不应该显示. (我意识到我可以拆分初始化
有没有办法从表单的OnCreate事件处理程序或C Builder构造函数中取消或中止表单创建?

基本上,我希望能够从OnCreate或构造函数中调用Close()并让它完全跳过显示表单.我有几种形式,作为初始化的一部分可能会确定它们根本不应该显示. (我意识到我可以拆分初始化的这一部分或者从调用表单或类似的内容中添加额外的检查,但是如果有办法从OnCreate或构造函数中干净地完成所有这些操作,那么这似乎是最简单的.)

编辑:回应一些评论,一些不显示的逻辑是UI逻辑而不是业务逻辑;表单可能会在显示之前显示确认,或者它可能使用公共对话框来获取表单的输入,然后在用户取消该对话框时中止. (其中一些是业务逻辑,需要重构,但通常很难找到时间来重构所有需要它的东西.)

解决方法

您始终可以在OnCreate处理程序中调用Release,但这会导致表单快速显示然后被关闭.不是很专业的事情.

所以这是另一个想法.让表单具有公共函数或属性,以返回它们实际上是否显示.然后你通常会有

TheForm := TSomeForm.Create(Self);
TheForm.Show;

你将会拥有

TheForm := TSomeForm.Create(Self);
if TheForm.ShouldAppear then
  TheForm.Show
else
  TheForm.Release;

话虽如此 – 任何其他编码方式(所以你不创建一个会被立即销毁的形式)肯定会更好.特别是如果你想在UI和业务层之间保持清晰的分离,那么让代码决定是否在表单之外显示表单会更好.只有在做出决定后才能创建表单.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读