Как добавить битмапы в заголовок 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) заголовок.
|