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
    即使在
    Panel1
    高度设置为0时也可见)

以上两种方法都不起作用,但这似乎是一种基本的方法,因此必须采用这种方法


谢谢

根据我使用VCL的经验(我使用Delphi,但我认为同样适用于C++),我知道在设计时更改已存在控件的父控件的3种方法:

  • 控件
    从结构窗口拖放到所需的
    父控件

  • 选择
    控件
    ,将其剪切为Ctrl+X,选择所需的
    父控件
    并粘贴Ctrl+V。这样
    控件
    将粘贴为所需的
    父控件的子控件

  • 手动编辑DFM文件。这样做时,您必须注意
    Left
    Top
    属性,因为
    控件可以放置在新的
    父项
    之外,并且它可能看起来不可见。在这种情况下,我建议将控件的
    Left
    Top
    设置为
    0
    ,以确保
    控件在其新的
    父控件中可见


是否尝试移动结构视图树中的控件?我已尝试手动编辑dfm,以便控件是相关TPanel的子项。没用。控件现在完全不可见。当您尝试在结构视图的树中移动控件时会发生什么?您还应该查看
Left
Top
属性。您所说的“在结构树视图中移动控件”到底是什么意思?我想我只能在设计时手动移动控件,或者编辑dfm文件。不管怎么说,如果没有其他办法,我只需要在我的TPanel中添加新的控件就行了,但这需要做更多的工作。IDE有一个名为“Structure”的视图,它在设计时显示窗体的结构。您可以通过主菜单“查看”打开它。您可以在那里拖放项目以更改其父项。是的,第二种方法的工作原理与Kerem D(感谢Kerem)的建议相同。即使Left和Top看起来正常(它们似乎在其父控件的范围内),我也无法使第三种方法工作。我仍然会投票支持你的答案。
Label1->Parent = Panel1;