Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Закрашивание строк в ListView [D7, WinXP]


Phoenix ©   (2005-10-19 10:17:00) 

Необходимо чтобы при выборе строки в LivtView она закрашивалась в другой цвет. Как это сделать?


Phoenix   (2005-10-19 14:08:00) [1]

Всё что вами описанно выше получилось и весьма не плохо, за что большое спасибо. А вот сабитемы не видно, попробую сейчас этим способом :о)
З.Ы. Всё получилос., ещё раз огромное спасибо


Tonich   (2005-10-19 13:43:00) [2]

нет ну что подробнее? что не понятно именно ? что вообще уже получилось?

Если у тебя есть SubItems'ы , ну там какой-то SubItems 'бла бла бла'
то что бы его было видно в строке его придется выводить так же как и Caption то есть

SubTransList.Canvas.TextOut(Rect.Left+Shift,Rect.Top,Item.SubItems[Number]);


где Number - это номер твоего   SubItems
а Shift - это сдвижка с которой он будит отображен на канве.

и опять же это только текст , а если у тебя там картинки....


Phoenix   (2005-10-19 13:26:00) [3]

А с момента про SubItems'ы можно поподробнее?


Tonich   (2005-10-19 11:17:00) [4]

а да забыл, что бы все это было действительным поставь свойство листа
OwnerDraw = True


Tonich   (2005-10-19 11:15:00) [5]

ну а если все неподходит то можно например вот так описать обработчик


 if (odSelected in State) then
   begin
     LsvtView.Canvas.Brush.Color := clTeal;
     LsvtView.Canvas.Font.Color := clWhite;
   end;

  LsvtView.Canvas.FillRect(Rect);
  LsvtView.Canvas.TextOut(Rect.Left,Rect.Top,Item.Caption);
end;

только вот если у тебя есть еще и SubItem-ы то их строки придется также выводить

ListView.Canvas.TextOut(Rect.Left,Rect.Top,Item.Caption);
вот. Короче теперь все внутри Листа тебе придется рисовать самому, а оно тебе надо? ))


Tonich   (2005-10-19 11:05:00) [6]

а погодь ты попробу поставь
RowSelect := Trueможет тебе этого вполне достаточно будет


Phoenix   (2005-10-19 10:42:00) [7]

Каким образом? Пример можно?


Tonich   (2005-10-19 10:36:00) [8]

тебе придется писать обработчик события OnDrawItem


Наверх

Титульная страница Поиск, карта сайта Написать письмо