Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Код

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().


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

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


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

Автор: Nat 10.3.2011, 13:15
Возможно, есть какие-то библиотеки компонентов, где в ListView можно задать цвет шрифта при выделении. У меня в 2009 студии такая подгружена.

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)