编辑:在我输入文字墙时看到您添加的一些评论可以澄清一些事情。
我猜您正在使用资源编辑器来编辑 DFM 并修改应用程序的行为,而无需实际接触源代码?
在这种情况下,您可以尝试的最好方法是将Visible
属性设置为False
. 但是,如果开发人员“主动在代码中显示表单”,这将没有任何好处。(他可以通过调用Show
,ShowModal
甚至通过显式设置Visible
属性来做到这一点。)
不幸的是,如果是这种情况,那么如果不修改实际的源代码,您将无能为力。这是因为 DFM 是在加载表单时处理的;即在显示表单的开发人员代码之前。就算找地方设置ModalResult
也没用,因为调用的ModalResult
时候电流就清零了ShowModal
。
我不认为我完全理解你想要做什么,因为它没有意义。
在我看来,您希望表单一显示就自动关闭;这没有任何意义。:S
所以,如果我对你的理解正确,请解释你为什么要这样做;对于您的实际问题,可能有更好的解决方案。
但是,一些一般概念...
- 如果要关闭表单,则应将其链接到关闭表单的某些操作。在表单上放置一个按钮或一个菜单项。
- 标准表单有一个标准的 Windows 机制来默认关闭它们。(即右上角的 X。)
- 有两种显示形式的方式,显示方式确实会影响它的关闭方式。它可以模态显示(这意味着它是应用程序与用户交互的唯一形式),也可以正常显示(允许用户在应用程序的其他形式之间切换)。
- 以模态方式显示表单的意义在于,它会阻止代码的流动,直到用户完成所需的操作;它通常涉及用户提供某种形式的答案或确认。
- 当以模态方式显示时,表单应该用
ModalResult
.
- 正常显示时,
ModalResult
没有效果。
- 每当表单“关闭”时,有几种方法可以做到这一点。
- 表格可以简单地隐藏;它仍然存在,但不可见。下次要显示表单时,只需使其再次可见。
- 表格可以销毁;意味着它不再存在于内存中。如果这样做了,那么下次您要使用该表单时,您必须重新创建它。
- 可以主动阻止关闭表单的尝试(通常不建议这样做;但在特定情况下可能是必要的 - 例如,如果表单上的某些信息不正确)。
- 可以简单地最小化表单(这通常使用 MDI 子表单完成)。
- 注意:表单上还有许多属性(
FormStyle
最重要的)会影响其行为、显示和关闭方式。(例如,默认情况下,MDI 子表单将最小化,或者在关闭时不执行任何操作。)
- 注意:如果应用程序的主窗体正确关闭,则应用程序将关闭。
现在,一些技术细节......
- 如前所述,表单既可以模态显示,也可以正常显示;使用
MyForm.Show;
或ModalResult := MyForm.ShowModal;
- 注意:如果表单以模态方式显示,则您需要检查
ModalResult
以找出用户的答案并采取相应措施。
- 如果您以模态方式显示表单,则应设置
ModalResult
并且表单将自行关闭。一个简单的方法是为ModalResult
表单上的按钮分配一个;然后该按钮将在单击时自动设置表单ModalResult
。
- 如果您正常显示表单,那么您需要做的就是
MyForm.Close
在适当的时间点调用。注意:注意它们是“关闭”表单的其他方法,但最好使用此方法,因为它允许您处理OnCloseQuery
事件,这是一种确认是否允许关闭表单的机制。
- 注意:关闭表单时,Delphi 可以调用两个事件,您可以处理它们以修改表单关闭的行为方式:
OnCloseQuery
调用以确认是否允许关闭窗体。
OnClose
被调用来找出表单应该如何关闭(如前所述)。
回到您的问题(听起来您希望表单自动关闭)。而不是自动关闭表单;只是不要费心展示它。这很容易做到。所有形式都有一个Visible
属性;如果设置为True
,Delphi 会在创建时自动正常显示表单。因此,您需要做的就是确保该属性是False
.