![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Закрашивание строк в 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