为什么我无法访问THeaderSection的宽度

时间:2013-05-14 09:08:54

标签: c++builder

我正在尝试在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事件处理程序不会被调用(即如果我在此循环中放置一个断点) ,运行程序并调整标题大小,它不会到达断点)。

1 个答案:

答案 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;
}