修改Delphi DFM资源以在显示时关闭?
是否可以编辑DFM(Delphi的表单脚本格式),使表单在显示时自动关闭 我不使用Delphi编写代码,因此我不熟悉这些表单的工作方式,但我似乎可以在表单的OnShow或OnCreate事件中添加代码(但不是标准的Delphi代码)。但是,在尝试了Close、Exit、FormNameExit、Destroy等语句之后,将无法工作(将创建一个日志,说明OnShow属性的值无效等错误) 关闭表单的正常方式是通过按钮,但按钮没有OnClick事件,只有一个属性“ModalResult=1” 是否有一种方法可以使窗口在打开时关闭,我可以在表单的OnCreate或OnShow事件上使用一些标准函数?或者,在表单本身上创建一个复选框,使ModalResult=1?(不知道这是否有效) 谢谢你的建议修改Delphi DFM资源以在显示时关闭?,delphi,modal-dialog,reverse-engineering,dfm,Delphi,Modal Dialog,Reverse Engineering,Dfm,是否可以编辑DFM(Delphi的表单脚本格式),使表单在显示时自动关闭 我不使用Delphi编写代码,因此我不熟悉这些表单的工作方式,但我似乎可以在表单的OnShow或OnCreate事件中添加代码(但不是标准的Delphi代码)。但是,在尝试了Close、Exit、FormNameExit、Destroy等语句之后,将无法工作(将创建一个日志,说明OnShow属性的值无效等错误) 关闭表单的正常方式是通过按钮,但按钮没有OnClick事件,只有一个属性“ModalResult=1” 是否有一
=)
(注意:可能很明显,但我没有来源。)不在DFM中。您必须修改源。不在DFM中。您必须修改源代码。您看到的OnShow和OnCreate行仅用于提供源代码中已定义的方法的名称。您根本无法通过修改DFM文件来添加太多功能 也许表单已经有了一个匹配的事件处理程序来关闭它:可能是关闭按钮或菜单项的OnClick处理程序?如果是这样,您可以尝试将其设置为OnShow或OnCreate处理程序 您可能可以向表单中添加一个TButton并设置其ModalResult--我不记得您是否真的需要在form类中为DFM中的每个控件指定一个字段--但只有当表单以模态方式显示时,这才有效,您仍然需要单击它来关闭表单。您看到的OnShow和OnCreate行仅用于提供源代码中已定义的方法的名称。您根本无法通过修改DFM文件来添加太多功能 也许表单已经有了一个匹配的事件处理程序来关闭它:可能是关闭按钮或菜单项的OnClick处理程序?如果是这样,您可以尝试将其设置为OnShow或OnCreate处理程序
您可能可以向表单中添加一个TButton并设置其ModalResult--我不记得您是否真的需要在form类中为DFM中的每个控件指定一个字段--但只有当表单以模态方式显示时,这才有效,您仍然需要单击它来关闭表单。编辑:看到您在我键入文本墙时添加的一些注释,这会稍微澄清一些问题 我猜您正在使用资源编辑器编辑DFM并修改应用程序的行为,而不实际接触源代码 在这种情况下,最好将
Visible
属性设置为False
。但是,如果开发人员“在代码中主动显示表单”,这将没有任何好处。(他可以通过调用Show
,showmodel
或者甚至通过显式设置Visible
属性来实现这一点。)
不幸的是,如果是这种情况,那么如果不修改实际的源代码,您将无能为力。这是因为DFM是在加载表单时处理的;i、 e.在显示表单的开发人员代码之前。甚至找一个地方来设置ModalResult
也没有用,因为调用showmodel
时,当前的ModalResult
会被清除
我想我不太明白你想做什么,因为这毫无意义。在我看来,您希望表单一显示就自动关闭;这是没有道理的S
所以,如果我理解正确的话,请解释一下你为什么要这样做;对于您的实际问题,可能有更好的解决方案 然而,一些一般概念
- 如果要关闭表单,应将其链接到关闭表单的某个操作。在窗体上放置按钮或菜单项
- 默认情况下,标准窗体有一个标准的Windows机制来关闭它们。(即右上角的X。)
- 有两种方式显示表单,显示表单的方式确实会影响表单的关闭方式。它可以以模式显示(这意味着它是将与用户交互的应用程序的唯一形式),也可以正常显示(允许用户在应用程序的其他形式之间切换)。
- 以模式显示表单的意义在于,它会阻止代码流,直到用户完成所需的操作;它通常涉及用户提供某种形式的回答或确认
- 当以模式显示时,窗体应该用
关闭ModalResult
- 正常显示时,
无效ModalResult
- 每当一个表单被“关闭”时,有几种方法可以做到这一点。
- 形式可以简单地隐藏;它还在那里,但看不见。下次要显示表单时,只需再次使其可见即可
- 形式可以被破坏;这意味着它不再存在于记忆中。如果这样做了,那么下次要使用表单时,必须重新创建表单
- 可以主动阻止关闭表单的尝试(通常不建议;但在特定情况下可能是必要的-例如,如果表单上的某些信息不正确)
- 表单可以简单地最小化(这通常是通过MDI子表单实现的)
- 注意:表单上还有许多属性(
是最重要的属性),它们对表单的行为、显示和关闭方式有影响。(例如,默认情况下,MDI子表单在关闭时将最小化或不执行任何操作。)FormStyle
- NB:如果申请的主要形式是