如何在 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
本身。
由于THeaderControl
是TWinControl
的后代,因此仅在运行时(而不是在设计时)您可以将THeaderControl
设置为Parent
的Parent
,然后您可以定位@ 987654328@ 根据需要相对于所需的标题部分,使用THeaderSection.Left
、THeaderSection.Width
和THeaderControl.Height
属性计算您希望TEdit
出现的标题部分的边界矩形。
【讨论】:
以上是关于如何在 THeaderSection 中嵌入 VCL TEdit 控件?的主要内容,如果未能解决你的问题,请参考以下文章
如何以模态方式呈现 VC,然后转到嵌入在导航控制器中的 VC
如何在 prepareForSegue 中嵌入 UINavigationController?
嵌入式 Linux 如何以root身份自动登录 如何开机自动执行脚本文件
如何重新加载UIPageViewController以在Swift中重新加载其视图