Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];
ВнизListView.Canvas Найти похожие ветки
← →
Yegorchic © (2006-07-04 20:47) [0]Здравствуйте! Объясните пожалуйста, почему когда я что-то рисую на ListView"е, то у меня выделяются жирным Item"ы разные и по-разному. Вот например:
http://www.harmony-school.fatal.ru/images/form1.gif (7.9kb)
Так же, хотелось бы узнать, как правильно использовать ListView.Canvas.Brush.Color, т.к. когда я хочу просто нрисовать прямоугольник закрышенный, то у меня закрашевается весь Item (на картинке тоже показано). Почему?
На время рисования этого прямоугольника я ставлю ListView.Canvas.Brush.Color:=clRed, а сразу после clWhite. Но почему у меня весь Item закрашевается?
Рисую я во время выполнения event"а CustomDrawSubItem, сообственно, на нужном Item"е.
P.S: На картике изображена попытка реализовать свой ProgressBar на Item"е ListView. Всё получилось, кроме закрашевания области нужной...
← →
Жуков Олег (2006-07-04 21:48) [1]Помогает после ListView.Canvas.Brush.Color:= ... сделать ListView.Canvas.Refresh.
(А так же после изменения других свойств Canvas.Brush...., Canvas.Pen..., Canvas.Font...). Почему - не знаю, такое поведение наблюдал только у TreeView и ListView. Надо бы исходники посмотреть, чтобы понять что там происходит, но сейчас нет их под рукой.
← →
Yegorchic © (2006-07-04 23:17) [2]
> Помогает после ListView.Canvas.Brush.Color:= ... сделать
> ListView.Canvas.Refresh.
А это опасно :-) Просто тогда будет опять происходить событие CustomDrawSubItem, которое повлечёт за собой ListView.Canvas.Refresh и так далее... т.е. будет ежемилесекундное обновление ListView. Я так уже пробовал. Т.е. не получается так...
← →
Жуков Олег (2006-07-04 23:42) [3]
> Просто тогда будет опять происходить событие CustomDrawSubItem,
> которое повлечёт за собой ListView.Canvas.Refresh и так далее...
- не будет.
> а время рисования этого прямоугольника я ставлю ListView.
> Canvas.Brush.Color:=clRed, а сразу после clWhite. Но почему
> у меня весь Item закрашевается?
Попробовал. Ошибка не воспроизводится:ListView_GetSubItemRect(ListView1.Handle, Item.Indent, SubItem, LVIR_BOUNDS, @Rect);
ListView1.Canvas.Brush.Color := clRed;
ListView1.Canvas.FillRect(Rect);
ListView1.Canvas.Brush.Color := clGreen;
Rect.Right := (Rect.Right + Rect.Left) div 2;
ListView1.Canvas.FillRect(Rect);
ListView1.Canvas.Brush.Color := ListView1.Color;
Этот код рисует на SubItem красный прямоугольник, потом половину его закрашивает зелёным, и потом восстанавливает Canvas-у нормальный цвет.
Если убрать последнюю строчку, то получается примерно как у тебя.
← →
Yegorchic © (2006-07-05 00:14) [4]Всё! Я разобрался с Вашей помощью! Спасибо!
Всё работает!
И на Refresh в самом деле всё нормально реагирует. Это я, значит, с ListView.Repaint перепутал!
Спасибо ещё раз!
Только у меня вопрос: а что это за процедураListView_GetSubItemRect(ListView1.Handle, Item.Indent, SubItem, LVIR_BOUNDS, @Rect);
?
← →
Yegorchic © (2006-07-05 00:27) [5]Ай, всё-таки ещё вопрос есть:
http://www.harmony-school.fatal.ru/images/form1_.gif (7.8kb)
Почему некоторые Item"ы выделяются жирным?
← →
Жуков Олег (2006-07-05 11:05) [6]Сорри, опечатка вкралась.
ВместоListView_GetSubItemRect(ListView1.Handle, Item.Indent>, SubItem, LVIR_BOUNDS, @Rect)
читатьListView_GetSubItemRect(ListView1.Handle, Item.Indeх, SubItem, LVIR_BOUNDS, @Rect)
← →
Yegorchic © (2006-07-05 13:02) [7]
> ListView_GetSubItemRect
А что это такое вообще?
И как быть с
> Yegorchic © (05.07.06 00:27) [5]
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c