- 0
Собственный TListBoxItem на C++
-
Похожий контент
-
- 0 ответов
- 45 просмотров
-
- 7 ответов
- 1 943 просмотра
-
- 0 ответов
- 1 716 просмотров
-
- 3 ответа
- 3 225 просмотров
-
- 0 ответов
- 1 498 просмотров
-
- 0 ответов
- 1 853 просмотра
-
- 0 ответов
- 1 177 просмотров
-
- 2 ответа
- 2 125 просмотров
-
- 3 ответа
- 3 033 просмотра
-
- 3 ответа
- 2 573 просмотра
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
Axbor
Очень не хватает примеров на C++. Решил поделится опытом.
Рассмотрим создание собственного "ListBoxItem"а на C++.
И так начнем.
Для начало создадим стиль для нашего "ListItem"а. В моем случае оно выглядит так:
Структура выглядеть следующим образом:
А вы сразу можете создать собственный стиль.
Создадим класс для нашего "Item"а. Я назвал его TMyListBoxItem.
Нужно знать следующие вещи:
ApplyStyle() вызывается когда стиль загружен.
FreeStyle() когда стиль выгружен.
GetDefaultStyleLookupName() когда стиль не задано берется названые стиля по умолчанию.
FindStyleResource("стиль") ищет в стиле ресурс с заданным названием.
ListBox автоматически очищает из невидимых "Item"ов стиль что бы избежать от расходы на память. И заново загружает когда оно видимо. При этом вызывается соответствующие функции приведенные выше
я приведу только некоторые кусочки кода. Остальное всё можете посмотреть в прикреплённых файлах.
Теперь напишем сами функции.
Вот и всё. Остается только добавит в наш проект ListBox и button для проверки.
Вот функция создания нашего "Item"а:
Скриншот программы:
В архиве мой класс и стиль. Для корректного отображения некоторых символов нужен fontcustom
Какие вопросы задавайте. Отдельное спасибо Ярославу за мануал на дельфи:
http://blogs.embarcadero.com/yaroslavbrovin/2012/10/15/listboxitem_styling_part2/
Администраторы и модераторы, прошу подкорректировать если что то неправильно.
ListBoxItem.zip
Изменено пользователем AxborСсылка на комментарий
9 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.