C++ 将现有VCL控件放置在TPanel组件上
众所周知,C++ 将现有VCL控件放置在TPanel组件上,c++,controls,vcl,tpanel,C++,Controls,Vcl,Tpanel,众所周知,TPanel是其他可视组件的容器(TLabel,TEdit等)。 但是,我们似乎只能放置新组件(从 组件调色板)安装到现有TPanel上,然后VCL框架将自动使TPanel成为其父项) 我想知道是否有办法将现有的可视组件(那些已经在我们的VCL表单上的组件)放到TPanel上。我试过了 在现有TPanel上放置组件(这不起作用,因为 框架不会使TPanel成为其父对象) 手动编辑表单的dfm文件(TPanel上的组件 现在你看不见了(一只虫子?) 在代码中显式设置组件的父属性(Lab
TPanel
是其他可视组件的容器(TLabel
,TEdit
等)。
但是,我们似乎只能放置新组件(从
组件调色板)安装到现有TPanel上,然后VCL框架将自动使TPanel成为其父项)
我想知道是否有办法将现有的可视组件(那些已经在我们的VCL表单上的组件)放到TPanel上。我试过了
- 在现有TPanel上放置组件(这不起作用,因为 框架不会使TPanel成为其父对象)
- 手动编辑表单的dfm文件(TPanel上的组件 现在你看不见了(一只虫子?)
- 在代码中显式设置组件的父属性(
即使在Label1
高度设置为0时也可见)Panel1
谢谢根据我使用VCL的经验(我使用Delphi,但我认为同样适用于C++),我知道在设计时更改已存在控件的父控件的3种方法:
- 将
从结构窗口拖放到所需的控件
父控件
- 选择
,将其剪切为Ctrl+X,选择所需的控件
并粘贴Ctrl+V。这样父控件
将粘贴为所需的控件
父控件的子控件
- 手动编辑DFM文件。这样做时,您必须注意
和Left
属性,因为Top
控件可以放置在新的
之外,并且它可能看起来不可见。在这种情况下,我建议将控件的父项
和Left
设置为Top
,以确保0
控件在其新的
父控件中可见
Left
和Top
属性。您所说的“在结构树视图中移动控件”到底是什么意思?我想我只能在设计时手动移动控件,或者编辑dfm文件。不管怎么说,如果没有其他办法,我只需要在我的TPanel中添加新的控件就行了,但这需要做更多的工作。IDE有一个名为“Structure”的视图,它在设计时显示窗体的结构。您可以通过主菜单“查看”打开它。您可以在那里拖放项目以更改其父项。是的,第二种方法的工作原理与Kerem D(感谢Kerem)的建议相同。即使Left和Top看起来正常(它们似乎在其父控件的范围内),我也无法使第三种方法工作。我仍然会投票支持你的答案。
Label1->Parent = Panel1;