如何在TFrame创建时执行代码?(Delphi 11.3 FMX环境)
在Delphi 11.3 FMX中实现TFrame创建时执行代码的方法
FMX框架下的TFrame确实没有VCL里的OnCreate事件,要在Frame创建时执行代码,最直接可靠的方式是重写Frame的构造函数,具体操作如下:
- 打开你的Frame单元,在类声明中添加构造函数的override声明
- 在实现部分重写
Create方法,在调用inherited之后写入自定义代码
示例代码:
type TMyCustomFrame = class(TFrame) // 这里是你Frame上的控件声明 private { 私有成员 } public constructor Create(AOwner: TComponent); override; end; implementation {$R *.fmx} constructor TMyCustomFrame.Create(AOwner: TComponent); begin inherited; // 必须先调用父类构造函数,保证Frame基础结构初始化完成 // 在这里编写你需要在Frame创建时执行的代码 // 比如初始化变量、加载配置、创建动态控件等 Log.d('TMyCustomFrame 已完成创建'); end;
关键说明
- 这个构造函数会在Frame被实例化的瞬间执行:不管是通过代码手动
TMyCustomFrame.Create(Owner)创建,还是设计时拖到窗体上、运行时由父窗体自动创建,都会触发这段代码 - 执行时机早于Frame的
OnShow、OnActivate等显示相关事件,也早于父窗体OnCreate的后续逻辑(若Frame是父窗体的子控件,父窗体创建时会优先实例化Frame)
内容的提问来源于stack exchange,提问作者Gorhin Stroebel
相关产品推荐
相关产品推荐

