You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Free Pascal/Lazarus中FormCloseQuery事件未触发问题咨询

解决FormCloseQuery无法触发的问题

嘿,我看了你的代码,逻辑本身没毛病,为啥FormCloseQuery不触发呢?核心原因很简单:你只写了事件处理方法,但没把它和窗体的OnCloseQuery事件绑定起来。在Lazarus/FPC的框架里,事件方法必须和控件的对应事件关联后,系统才会在合适的时机调用它,光写方法可不行~

给你两种靠谱的解决办法:

方法一:用窗体设计器可视化绑定(最省事)

  1. 打开Lazarus的窗体设计界面,选中你的Form1
  2. 看右侧的Object Inspector面板,切换到Events标签页
  3. 找到OnCloseQuery这一项,点击旁边的下拉框,选择你已经写好的TForm1.FormCloseQuery方法
  4. 保存项目重新编译运行,现在不管点窗体的X按钮,还是点Button1调用Close,都能触发FormCloseQuery了

方法二:手动在代码里绑定事件

如果不想用设计器,也可以在FormCreate里手动把事件和方法关联上,修改你的FormCreate代码:

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage('FormCreate Procedure wurde gestartet');
  // 手动绑定OnCloseQuery事件到我们的处理方法
  Self.OnCloseQuery := @FormCloseQuery;
end;

这样改完编译运行,事件也能正常触发啦。

测试验证

不管用哪种方法,修改后再试:点击窗体右上角的关闭按钮,或者点击Button1,都会弹出那个确认对话框,说明FormCloseQuery已经正常工作了。


内容的提问来源于stack exchange,提问作者Albin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:45:31