如何在 THeaderSection 中嵌入 VCL TEdit 控件?

Posted

技术标签:

【中文标题】如何在 THeaderSection 中嵌入 VCL TEdit 控件?【英文标题】:How to embed a VCL TEdit control in a THeaderSection? 【发布时间】:2018-11-29 20:01:24 【问题描述】:

我想在 THeader 控件上嵌入一个 TEdit 控件。

更新:

根据下面 Remy 的回答,我想出了以下运行良好的代码。

int secsWidth(0);
for(int i = 0; i < HeaderControl1->Sections->Count; i++)

    secsWidth += HeaderControl1->Sections->Items[i]->Width;


TPoint p1(HeaderControl1->Left, HeaderControl1->Top);
TPoint p2 = HeaderControl1->ClientToScreen(p1); //<--- ???
mEdit->Left = p1.X + secsWidth;
mEdit->Top = p1.Y;
mEdit->Parent = HeaderControl1;

以上代码在框架构造函数中执行。框架是动态创建的。

无论出于何种原因,如果上面标记为“??”的行被注释掉,则编辑控件不可见。观察到这条线并没有真正做任何事情..!

我猜这个调用为 HeaderControl 组件创建了一些必要的内部结构?

【问题讨论】:

【参考方案1】:

是的,但不是直接的。

THeaderSection 不是它自己的 UI 控件,它只是内存中的一个集合项,因此它不能承载任何子控件。唯一的 UI 控件是 THeaderControl 本身。

由于THeaderControlTWinControl 的后代,因此仅在运行时(而不是在设计时)您可以将THeaderControl 设置为ParentParent,然后您可以定位@ 987654328@ 根据需要相对于所需的标题部分,使用THeaderSection.LeftTHeaderSection.WidthTHeaderControl.Height 属性计算您希望TEdit 出现的标题部分的边界矩形。

【讨论】:

以上是关于如何在 THeaderSection 中嵌入 VCL TEdit 控件?的主要内容,如果未能解决你的问题,请参考以下文章

如何以模态方式呈现 VC,然后转到嵌入在导航控制器中的 VC

如何在 prepareForSegue 中嵌入 UINavigationController?

嵌入式 Linux 如何以root身份自动登录 如何开机自动执行脚本文件

如何重新加载UIPageViewController以在Swift中重新加载其视图

导航并将字符串传递给嵌入在 TabVC 和 NavigationVC 中的另一个 VC

Python嵌入项目中的VC ++ 6“未解决的外部”