| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > ListView. Цвет текста выделенной строки |
| Автор: artsb 9.3.2011, 14:54 |
| Всем привет! Есть необходимость изменять цвет текста Item'ов в зависимости от некоторых условий. В обработчике OnDrawItem меняю цвет шрифта канвы. Всё рисуется правильно. Но если выделить такую строку, то цвет становится обычным - clHighlightText. Пробовал в том же обработчике менять цвет шрифта средствами GDI, с помощью SetTextColor. В этом случаем, шрифт вообще "сбивается". Рисовать в ручную не очень хочется. Тем более, из-за такой мелочи. Плюс, при ручной отрисовке, пропадут все виндовозные красатули в Vista и выше. Там же не просто заливается фон, а рисуется рамка. |
| Автор: sawfish 10.3.2011, 08:46 |
| Ну так и обрабатывайте TOwnerDrawState State, если он будет odSelected, то задавайте нужный цвет. |
| Автор: Nat 10.3.2011, 09:19 | ||
Так же работает для ListView1CustomDrawItem(). |
| Автор: artsb 10.3.2011, 12:09 |
| Ребят, спасибо. Но это первое, что я попробовал. И, как я уже писал, это прекрасно работает только если запись не выделена. Если она активна, то используется системный цвет. В итоге, сейчас рисую вручную. Всем спасибо. ЗЫ Если у кого-нибудь появятся мысли - пишите. |
| Автор: Nat 10.3.2011, 13:15 |
| Возможно, есть какие-то библиотеки компонентов, где в ListView можно задать цвет шрифта при выделении. У меня в 2009 студии такая подгружена. |
| Автор: artsb 10.3.2011, 13:25 |
| Это точно. Но я не пользуюсь сторонними компонентами. Не люблю, когда проект от чего-то зависит. |