c++ - 将现有的 VCL 控件放置在 TPanel 组件上

标签 c++ controls vcl tpanel

众所周知,TPanel是其他可视化组件(TLabelTEdit等)的容器。 然而,似乎我们只能放置新的组件(来自 组件面板)到现有的 TPanel 上,然后 VCL 框架将自动将 TPanel 设为其父级)。

我想知道是否有一种方法可以将现有的可视组件(那些已经存在于我们的 VCL 表单中的组件)放置到 TPanel 上。我试过了

  • 将组件放置在现有的 TPanel 上(这不起作用,因为 框架不会将 TPanel 作为其父级)

  • 手动编辑表单的dfm文件(TPanel上的组件 现在不可见——一个错误?)

  • 在代码中显式设置组件的 Parent 属性(即使 Panel1 高度设置为 0,Label1 也可见)

    Label1->Parent = Panel1;
    

上面的方法都不起作用,但这似乎是一个非常基本的事情,它必须是一种方法来做到这一点。

谢谢

最佳答案

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

  • Control结构窗口拖放到所需的Parententer image description here

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

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

  • 中可见

关于c++ - 将现有的 VCL 控件放置在 TPanel 组件上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45708555/

相关文章:

delphi - 在Cbuilder中使用Delphi组件链接错误

Delphi - 是否可以禁用 Delphi 的表单延迟加载?

c++ - 当我向 <vector> 添加对象时出现段错误

c# - ListView C# 保持选中状态

wpf - 在 WPF 中构建出色的仪表板应用程序——有哪些可用的控件?

c# - 将子类别的 Microsoft Chart Control X 轴标签格式化为类似于 Excel 中生成的图表

c++ - 一个空的类会被优化掉吗

c++ - 使用If语句检测整数溢出

c++ - 如何使用智能指针围绕 C 'objects' 实现包装器?

delphi - 用于识别 C++ Builder 个性的条件指令