我正在尝试在C ++ Builder XE中的THeaderControl中使用标题的宽度。 THeaderControl被称为“标题” 我试图对齐宽度的TStringGrid称为“网格”。 在Header的OnResize事件处理程序中,我有以下代码:
void __fastcall TMainForm::HeaderResize(TObject *Sender)
{
for (int col=0; col<Header->Sections->Count; col++)
{
Grid->ColWidths[col]=Header->Sections[0].Width;
}
}
我认为可以,但不会编译。
似乎无法找到如何访问标题的宽度。
此外,当我在这里填充东西只是为了让它编译(例如Grid-&gt; ColWidths [col] = 100)时,HeaderResize事件处理程序不会被调用(即如果我在此循环中放置一个断点) ,运行程序并调整标题大小,它不会到达断点)。
答案 0 :(得分:1)
您没有正确访问各个标题部分。你需要这样做:
void __fastcall TMainForm::HeaderResize(TObject *Sender)
{
for (int col=0; col<Header->Sections->Count; col++)
{
Grid->ColWidths[col] = Header->Sections->Items[col]->Width;
}
}
请注意,Sections[col]
已替换为Sections->Items[col]
,.Width
已替换为->Width
。
对于未触发的OnResize
事件,OnResize
仅在整个THeaderControl
调整大小时触发。调整各个部分的大小时,会触发OnSectionResize
事件。该事件告诉您哪个部分已调整大小,例如:
void __fastcall TMainForm::HeaderSectionResize(TCustomHeaderControl *HeaderControl, THeaderSection *Section)
{
Grid->ColWidths[Section->Index] = Section->Width;
}