Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ListView. Цвет текста выделенной строки 
:(
    Опции темы
artsb
Дата 9.3.2011, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Всем привет!

Есть необходимость изменять цвет текста Item'ов в зависимости от некоторых условий.
В обработчике OnDrawItem меняю цвет шрифта канвы. Всё рисуется правильно. Но если выделить такую строку, то цвет становится обычным - clHighlightText.

Пробовал в том же обработчике менять цвет шрифта средствами GDI, с помощью SetTextColor. В этом случаем, шрифт вообще "сбивается".

Рисовать в ручную не очень хочется. Тем более, из-за такой мелочи. Плюс, при ручной отрисовке, пропадут все виндовозные красатули в Vista и выше. Там же не просто заливается фон, а рисуется рамка.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
sawfish
Дата 10.3.2011, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 30.7.2008
Где: Новосибирск

Репутация: 8
Всего: 8



Ну так и обрабатывайте TOwnerDrawState State, если он будет odSelected, то задавайте нужный цвет.
PM MAIL   Вверх
Nat
Дата 10.3.2011, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 16.4.2007

Репутация: нет
Всего: нет



Код

void __fastcall TMainForm::ListView1CustomDrawSubItem(TCustomListView *Sender, TListItem *Item,
          int SubItem, TCustomDrawState State, bool &DefaultDraw)
{
                if( (Item->Index > m[0]) & (Item->Index <= ind[0] ) )
                Sender->Canvas->Font->Color = clPurple;
    if( (Item->Index > m[1]) & (Item->Index <= ind[1] ) )
            Sender->Canvas->Font->Color = clBlue;
    if( (Item->Index > m[2]) & (Item->Index <= ind[2] ) )
            Sender->Canvas->Font->Color = clGreen;
}


Так же работает для ListView1CustomDrawItem().



Это сообщение отредактировал(а) Nat - 10.3.2011, 09:21
PM MAIL   Вверх
artsb
Дата 10.3.2011, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Ребят, спасибо. Но это первое, что я попробовал. И, как я уже писал, это прекрасно работает только если запись не выделена. Если она активна, то используется системный цвет.

В итоге, сейчас рисую вручную.
Всем спасибо.


ЗЫ Если у кого-нибудь появятся мысли - пишите.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Nat
Дата 10.3.2011, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 16.4.2007

Репутация: нет
Всего: нет



Возможно, есть какие-то библиотеки компонентов, где в ListView можно задать цвет шрифта при выделении. У меня в 2009 студии такая подгружена.
PM MAIL   Вверх
artsb
Дата 10.3.2011, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Это точно. Но я не пользуюсь сторонними компонентами.  Не люблю, когда проект от чего-то зависит.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1116 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.