|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.03.2012, 11:25 | #1 |
Delphi XE7
Пользователь
Регистрация: 26.07.2010
Сообщений: 74
|
TListView OwnerDraw не рисуются SubItems
На основе данной темы (http://programmersforum.ru/showthread.php?t=174029) сделал код для отрисовки списка ListView:
Код:
Результат немного не устроил в плане изменения цвета текста всей строки. Нужно изменить цвет только 3-й колонки. Читал тему (http://programmersforum.ru/showthread.php?t=6090), где схожая проблема, но при данном решении сильно тормозит список. Пытался так же описывать отдельно CustomDrawItem и CustomDrawSubItem, но снова ничего не помогло, SubItems просто невидны. Последний раз редактировалось JoLan; 05.03.2012 в 15:26. |
05.03.2012, 20:21 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А в чем проблема? Sender.Canvas.Font.Color и используй для изменения цвета текста в колонках. Для колонки 3 делай как нужно, для остальных белый
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
09.03.2012, 08:16 | #3 | |
Delphi XE7
Пользователь
Регистрация: 26.07.2010
Сообщений: 74
|
Цитата:
И еще 1 неприятная вещь: при наведении курсора на выделенную строку через 1 секунду область под курсором и сам Item закрашиваются Код отрисовки Item: Код:
Код:
|
|
09.03.2012, 10:57 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
В примере из #1 для прорисовки текста Rect меняете в цикле. Что мешает в этом же обработчике в этом же цикле и фон прорисовывать разным цветом?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
09.03.2012, 11:36 | #5 |
Delphi XE7
Пользователь
Регистрация: 26.07.2010
Сообщений: 74
|
Тогда по событию CustomDrawSubItem не рисуется текст. Выводить текст в SubItems по отрисовке Item - получится пример #1. Замкнутый круг.
|
09.03.2012, 12:50 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
GetColor(S) из #1 используйте только для прорисовки текста в нужной колонке, в остальных - белый в вашем случае. Это же можно определить по индексу субитема. Тогда CustomDrawItem будет достаточно без AdvancedCustomDraw. И в чем необходимость FillRect в цикле? Фон уже прорисован выше по коду
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 09.03.2012 в 12:52. |
10.03.2012, 15:56 | #7 |
Delphi XE7
Пользователь
Регистрация: 26.07.2010
Сообщений: 74
|
Код:
Это уже вопрос говнокодности. Последний раз редактировалось JoLan; 10.03.2012 в 16:00. |
10.03.2012, 16:35 | #8 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Почему у меня получается
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
10.03.2012, 17:36 | #9 |
Delphi XE7
Пользователь
Регистрация: 26.07.2010
Сообщений: 74
|
Спасибо огромное. Через DrawItem получилось.
|
13.02.2016, 01:01 | #10 |
Регистрация: 09.02.2012
Сообщений: 7
|
Доброго всем времени суток!
Код:
Код:
Вопрос: как избавиться? Код:
Заранее Благодарен. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
SubItems.Delete | bulldog5293 | Общие вопросы Delphi | 6 | 09.11.2010 11:01 |
ListView SubItems | mutabor | Компоненты Delphi | 0 | 19.08.2010 14:38 |
вместо шрифтов рисуются иероглифы | Sharley | Общие вопросы Delphi | 4 | 27.04.2008 18:41 |