Поиск:

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


Новичок



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

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



Здравствуйте!

Подскажите как поменять цвет шрифта выделенной строки в ListView?
Т. е. что бы при выделении итема фон был синий, а шрифт - красный.

Приведённый ниже код не работает для выделенной строки!!! 

Код

void __fastcall TForm1::ListView1CustomDrawItem(TCustomListView *Sender,
      TListItem *Item, TCustomDrawState State, bool &DefaultDraw)
{
        if (Item->Index ==ListView1->ItemIndex)
        {
             Sender->Canvas->Font->Color = clRed;
    }

}


А в обработчике выделения не удаётся поменять цвет!!!

Код

void __fastcall TForm1::ListView1SelectItem(TObject* Sender, TListItem* Item,
    bool Selected) 


Спасибо! 
PM MAIL   Вверх
Dem_max
Дата 24.5.2013, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Разреши мультиселект и посмотри  smile 

Код

void __fastcall TForm1::ListView1CustomDrawItem(TCustomListView *Sender, TListItem *Item,
          TCustomDrawState State, bool &DefaultDraw)
{
    TCanvas *pCanvas = Sender->Canvas;

    if(State.Contains(odSelected))
    {
                         pCanvas->Font->Color = clGreen;
    }

    if(State.Contains(odFocused))
    {
                         pCanvas->Font->Color = clRed;
    }

}


Это сообщение отредактировал(а) Dem_max - 24.5.2013, 14:55


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
neoarey
Дата 27.5.2013, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Что-то не работает... 
Ничего больше не нужно? У меня 6 borland

user posted image

user posted image
PM MAIL   Вверх
Dem_max
Дата 27.5.2013, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



За Builder 6 ничего не скажу я 11 летним старым ПО не пользуюсь и тебе не советую

Это сообщение отредактировал(а) Dem_max - 27.5.2013, 15:25


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
neoarey
Дата 27.5.2013, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А чем советуешь? Чем ты пользуешься?  smile 
PM MAIL   Вверх
neoarey
Дата 28.5.2013, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот, нашёл решение...
OwnerDraw должен иметь значение true
Правда при этом методе некорректно отображение при горизонтальном скроллинге...
Но и это решаемо.


Код

void __fastcall TForm1::ListView1DrawItem(TCustomListView* Sender,
    TListItem* Item, TRect& Rect, TOwnerDrawState State)
{
    TRect v_Rect;
    TListView* ListView1 = dynamic_cast<TListView*>(Sender);
    TCanvas* Canvas = Sender->Canvas;
    if (Item->Selected == true)
    {
        Canvas->Brush->Color = clSilver;
        Canvas->Font->Color = clRed;
    }
    v_Rect = Rect;
    Canvas->FillRect(v_Rect);
    v_Rect = Rect;
    int seek = 0;
    Canvas->TextOut(Rect.Left + 2, Rect.Top, Item->Caption);
    for (int i = 0; i < Item->SubItems->Count; i++)
    {
        seek = seek + Sender->Column[i]->Width;
        v_Rect.Left = seek;
        Canvas->TextRect(v_Rect, v_Rect.Left + 2, v_Rect.Top,
                    Item->SubItems->Strings[i]);
    }
}


Это сообщение отредактировал(а) neoarey - 28.5.2013, 07:50
PM MAIL   Вверх
Dem_max
Дата 28.5.2013, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



используй не менее RAD 2010


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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