Вопрос Компонент TNewCheckListBox

Leserg

Участник
Прошу помощи от пользователей, разбирающихся в создании/модификации компонентов Delphi.

Пытаюсь прикрутить к стандартному компоненту TNewCheckListBox из Inno Setup такие свойства, как прозрачность фона, собственное изображение в качестве фона и альтернативный фон. В разработке использую функции процедуры компании ALMEDIADEV, т.к. не разбираюсь как это все можно реализовать. Метод простой - скопировал и вставил.

В чем затык. При выборе элемента списка, когда включены свойствах прозрачности и фона, надпись элемента как-бы накладывается на то, что было ранее. Получается болд выделение, но без сглаживания. Выглядит некрасиво и неряшливо. При прокрутке списка выбранный эллемент многократно накладывается сам на себя, и надпись становится все жирнее и жирнее. Тоже происходит и при динамическом изменении размеров списка. Я не могу понять из-за чего это происходит и как это исправить. Может кто объяснит, в чем причина, как сделать правильно и прочее.
 
Последнее редактирование:

Leserg

Участник
Немного переделал. Теперь нет многократного наложения текста у выбранного пункта списка. Проблема осталась, но теперь она не такая явная (наложение происходит единожды при выборе пункта). В общем, первый блин комом. Смотрим демку в Inno Setup.
 

Вложения

Leserg

Участник
Очередное обновление.

Удалена часть кода, которая никак не влияла на конечный результат. В компоненте окончательно (я так думаю, но могу ошибаться) реализована поддержка VCL Styles. Теперь нет "слета" скина при использовании, как дефолтных, так и кастомных списков TNewCheckListBox, как это было ранее, включая применение плагина VCL Style. Добавлена прорисовка фокуса выделения при включенной прозрачности фона или использовании собственного изображения в качестве фона.

Основная проблема - повторная прорисовка текста выбранного элемента списка при включенной прозрачности и собственном фоне - так и не решена. Это хорошо видно на прилагаемых демо сборках. Все еще надеюсь на помощь. В противном случае все это так и останется незавершенным проектом (без релиза) или до момента, когда я окончательно разберусь в создании компонентов с желаемыми свойствами. До пенсии еще 5 лет. А там времени, надеюсь, будет поболе - авось тогда доведу все это дело до конца.

В связи с тем, что в разработке используются функции и процедуры коммерческого проекта, исходный код компонента публиковаться не будет. :$

Прилагаю демо в Inno Setup.

На этом изыскания по данному вопросу пока прекращаю. :hi:
Огромная благодарность участнику LexBell за проявленное участие и помощь. :drinks:

P.S. Сейчас работаю на интеграцией компонентов ALMEDIADEV в Inno Setup для возможности полной кастомизации графической части инсталляторов без использования сторонних компонентов и библиотек. Частично вы можете это увидеть в прилагаемых демках (в частности анимация страниц).

До скорых встреч, увидимся. ;)
 

Вложения

El Sanchez

Новичок
Основная проблема - повторная прорисовка текста выбранного элемента списка при включенной прозрачности и собственном фоне - так и не решена.
Типичная ошибка - рисовать поверх того, что ранее должно быть затёрто. Не парьтесь, коммерческий код в Inno всё равно не примут. Компонент то я сделал и уже выложил на оффоруме, только Мартейн хочет вносить изменения маленькими порциями, и я себе слабо представляю, как фактически замену целиком целого модуля разбить логически на серию коммитов.
 
Сверху