Как добавить битмапы в заголовок ListView.
Компилятор: C++ Builder
Для этого достаточно просто добавить в стиль заголовка ListView флаг HDF_BITMAP:
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
//Получаем дескриптор заголовка
HWND HeaderHandle = GetDlgItem(ListView1->Handle, 0);
//Структура элемента заголовка
HD_ITEM hdi;
for (int index = 0; index < ListView1->Columns->Count; index++)
{
//Получаем текущий формат
Header_GetItem(HeaderHandle, index, &hdi);
hdi.mask = HDI_TEXT | HDI_FORMAT | HDI_BITMAP | HDI_WIDTH;
//Флаги для битмапа
hdi.fmt = hdi.fmt | HDF_LEFT | HDF_BITMAP | HDF_STRING;
hdi.pszText = ListView1->Columns->Items[index]->Caption.c_str();
hdi.cchTextMax = ListView1->Columns->Items[index]->Caption.Length();
hdi.cxy = ListView1->Columns->Items[index]->Width;
switch(index)
{
case 0: hdi.hbm = Image1->Picture->Bitmap->Handle;
break;
default: hdi.hbm = Image2->Picture->Bitmap->Handle;
break;
}
//Применяем изменения
Header_SetItem(HeaderHandle, index, &hdi);
}
}
Если необходимо изменить размер заголовка, чтобы добавить в него битмапы большего размера, то необходимо изменить размер шрифта в большую сторону. Если же при этом нужно сохранить маленький размер шрифта, то прийдётся включить этот текст в картинку, либо самостоятельно рисовать (owner-drawn) заголовок.