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

Delphi TMS Web Core动态创建TWebFrame为空,求正确实现方法

TMS Web Core动态创建TWebFrame组件空白问题的解决方法

问题原因

TMS Web Core的TWebFrame和VCL的TFrame底层机制差异显著:Web环境下框架内部组件的DOM元素依赖DFM资源映射生成,直接通过Create(Application)构造框架时,不会自动触发DFM资源的加载流程,仅创建了框架的容器节点,内部组件的DOM未初始化,因此显示空白。

正确实现方式

需要显式加载框架的DFM资源,同时调整构造函数的Owner参数以确保组件生命周期正确。修改主窗体OnCreate事件代码如下:

procedure TFormMain.WebFormCreate(Sender: TObject);
var
  aFrame: TFrameDemo;
begin
  // 以主窗体作为Owner,绑定组件生命周期
  aFrame := TFrameDemo.Create(Self);
  // 设置父容器与布局方式
  aFrame.Parent := Self;
  aFrame.Align := alClient;
  aFrame.Visible := True;
  // *关键步骤*:加载框架对应的DFM资源,第二个参数为框架单元名(不带扩展名)
  aFrame.LoadResource(HInstance, 'Unit2');
end;

额外注意事项

  • 框架单元(Unit2)的DFM资源会在编译时自动嵌入项目,无需额外配置。
  • 避免使用Application作为框架Owner,Web环境下建议以父容器组件作为Owner,便于资源回收。
  • 变量需声明为具体的TFrameDemo类型,而非基类TWebFrame,这样才能调用LoadResource方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:43:28