Добавление битмапов на закладки в PageControl или
TabControl.
Компилятор: C++ Builder
Используя макрос TabCtrl_SetItem(), можно очень просто
добавлять битмапы на закладки в PageControl или
TabControl. Данный метод использует owner-drawn для
TabControl/PageControl.
Замечание: Необходимо иметь ImageList с каждым
элементом, отвечающим за определённую закладку (Tab),
или заполнить элементы iImage структуры TC_ITEM чтобы
связать их с номером картинки закладки.
//Unit1.cpp--------------------------------------------------------------------
//
// Изменяем стиль каждой TabSheet так, чтобы
// можно было помещать
битмапы...
//
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
//Получаем
текущий стиль
DWORD dwStyle = GetWindowLong(PageControl1->Handle, GWL_STYLE);
//Добавляем стиль "поместить
иконку слева" или TCS_FORCELABELLEFT
// взависимости
от того, где Вы хотите разместить картинку
SetWindowLong(PageControl1->Handle, GWL_STYLE,
dwStyle | TCS_FIXEDWIDTH | TCS_FORCEICONLEFT);
//Изменяем аттрибуты каждой
закладки
TC_ITEM tci;
for (int index = 0; index <
PageControl1->PageCount; index++)
{
//флаги для картинги
tci.mask = TCIF_TEXT | TCIF_IMAGE;
//добавляем предыдущий
текст
tci.pszText =
PageControl1->Pages[index]->Caption.c_str();
int
max = PageControl1->Pages[index]->Caption.Length() * sizeof(char);
tci.cchTextMax = max;
tci.iImage = index;
//применяем изменения
TabCtrl_SetItem(PageControl1->Handle, index,
&tci);
}
//связываем ImageList с TabControl
PageControl1->Perform(TCM_SETIMAGELIST, 0,
(LPARAM)ImageList1->Handle);
}
|