如何在THeaderSection中嵌入VCL TEdit控件



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

更新:

根据雷米下面的回答,我想出了下面的代码,效果很好。

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组件创建了一些必要的内部结构?

是,但不是直接。

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

由于THeaderControlTWinControl的后代,因此仅在运行时(而不是在设计时(,您可以将THeaderControl设置为TEditParent,然后根据需要使用THeaderSection.LeftTHeaderSection.WidthTHeaderControl.Height属性来计算要在其中显示TEdit的标头部分的边界矩形,从而将TEdit相对于所需的标头部分进行定位。

最新更新