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

Delphi开发中如何引用当前代码所属Form实例而非全局根Form?

问题原因

该问题由Delphi的默认全局Form变量机制导致:当你通过IDE创建TTestForm窗体类时,会自动生成一个和类名对应的全局变量TestForm,你直接调用TestForm.Caption时,访问的始终是这个全局变量指向的实例,自然不会作用到你手动创建的其他实例上。

解决方法

在窗体类的内部代码中,直接使用Self关键字即可引用当前代码执行所在的实例,不需要依赖任何全局变量:

// 写在TTestForm类的内部方法中即可
Self.Caption := 'Test';
// 也可以直接省略Self,直接访问类的成员属性,效果完全一致
Caption := 'Test';

额外注意点

  • 如果不需要默认创建的全局TestForm实例,可以到项目选项的「自动创建窗体」列表里把TTestForm移到「可用窗体」列表,避免全局变量默认指向多余的实例,也能减少不必要的启动资源占用
  • 你手动创建的窗体实例已经指定了Application作为Owner,程序退出时会自动释放,不需要额外手动处理内存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:27:02