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

自定义FireMonkey组件时,如何在设计期结构视图隐藏子组件?

如何隐藏FireMonkey自定义组件的内部子组件(结构视图中)

嘿,这个问题我之前也碰到过!当你在FireMonkey自定义组件里创建内部子控件时,IDE默认会把它当成可编辑的子项显示在结构视图里,要隐藏那个TLayout其实很简单,只要给它加两个关键设置就行:

  • 调用SetSubComponent(True):把这个TLayout标记为当前组件的内部子组件,明确告诉IDE它属于组件的一部分,不是用户可单独编辑的元素。
  • 设置Stored := False:让这个子组件不会被保存到窗体的FMX文件中,同时也会从结构视图里彻底隐藏掉。

修改后的构造函数代码如下:

constructor TControl1.Create(AOwner: TComponent);
begin
  inherited;
  fTest := TLayout.Create(Self);
  fTest.Parent := Self;
  // 添加这两行关键代码
  fTest.SetSubComponent(True);
  fTest.Stored := False;
end;

另外还有一种等价的方式,就是修改子组件的ComponentStyle,添加csHidden标志,效果完全一样:

fTest.ComponentStyle := fTest.ComponentStyle + [csHidden];

不过更推荐用前一种方式,因为SetSubComponent搭配Stored是Delphi/FireMonkey里处理内部子组件的标准做法,语义更清晰,也能避免一些潜在的意外问题。

这样修改之后,你再把组件放到窗体上,结构视图里就不会再显示那个TLayout子组件啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:38:58