【问题标题】:Placing existing VCL controls on a TPanel component将现有 VCL 控件放置在 TPanel 组件上
【发布时间】:2018-01-24 07:13:58
【问题描述】:

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

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

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

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

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

    Label1->Parent = Panel1;
    

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

谢谢

【问题讨论】:

  • 试图移动结构视图树中的控件?
  • 我尝试手动编辑 dfm,以便控件是相关 TPanel 的子项。没用。控件现在完全不可见。
  • 当您尝试移动结构视图树中的控件时会发生什么?您还应该查看Left 和Top 属性。
  • “移动结构视图树中的控件”到底是什么意思?我想我只能在设计时手动移动控件或编辑 dfm 文件。无论如何,如果没有其他工作,我将简单地向我的 TPanel 添加新控件,这将工作,但这是稍微多一点工作。
  • IDE 有一个名为“结构”的视图,它在设计时显示表单的结构。您可以通过主菜单“查看”打开它。在那里您可以拖放项目以更改其父项。

标签: c++ controls vcl tpanel


【解决方案1】:

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

  • 从结构窗口将Control拖放到所需的Parent中

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

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

【讨论】:

  • 是的,第二种方法按照 Kerem D 的建议工作(感谢 Kerem)。即使 Left 和 Top 看起来不错(它们似乎在其父控件的范围内),我也无法使第三种方法起作用。我仍然会赞成你的回答。
猜你喜欢
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 2013-06-02
  • 1970-01-01
相关资源
最近更新 更多