自定义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
相关产品推荐
相关产品推荐

