【发布时间】:2012-04-16 13:12:31
【问题描述】:
我在 Delphi5 中工作
我希望在项目运行时销毁组件之前出现自定义表单。
是否可以在自定义组件中执行此操作?换句话说,我可以在自定义组件在运行时销毁之前显示一个表单,当放置它的表单关闭时?
我尝试在组件的析构函数中放置以下内容,但在关闭表单时出现访问冲突错误:
destructor TqqFormLogger.Destroy;
begin
if NOT (csDesigning in ComponentState) then
SurveyForm.Click;
inherited Destroy;
end;
【问题讨论】:
-
做你想做的事没问题。不可能说为什么它不适合你。
SurveyForm是什么?任何更多代码的机会,以便我们可以看到 AV 在哪里。 -
抱歉没说清楚。我拥有的是一个名为“FormLogger”的组件,它放置在我们项目的所有表单上。在项目运行时,该组件会创建一个 TButton(称为 SurveyButton),如果单击该按钮,则会打开一个表单(SurveyForm)。到目前为止,这部分工作正常。但是,我们希望在每次关闭表单时都打开 SurveyForm(即触发 SurveyButton.Click 事件)。似乎当在我的组件的析构函数中触发了 SurveyButton.click 时,承载该组件的主窗体已经被销毁。有解决办法吗?谢谢
-
表单在设计时组件上自动调用
FreeNotification()(反过来又调用表单的FreeNotification()方法)。您的组件可以覆盖其Notification()方法以检测何时释放表单。或者,如果您有任何在关闭时没有立即释放的 Form,您的组件的构造函数可以将事件处理程序分配给 Form 的OnClose事件。 -
嗨雷米,谢谢你的建议。您能否阐明如何实施上述两个建议,特别是如何分配或覆盖我的所有者表单(组件所在的表单)的 OnClose 事件?
标签: delphi components vcl delphi-5