Форум: "Основная";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизПроблемы с выделением колонок listview разным цветом Найти похожие ветки
← →
dreamse (2004-10-20 14:48) [0]Выделяю колонки listview разным цветом : вот код :
procedure TfmMainC.globallistCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
Sender.Canvas.Brush.Color := $009DFFFF;
end;
при этом колонка прорисовываеться не полностью а только часть её.
то есть нужно чтобы компонент listview обновился либо порисовался.
Помогает щелчёк мышью и после выделения строка прорисовываеться.
Как сделать чтобы она сразу прорисовывалась ? Если после кода Sender.Canvas.Brush.Color := $009DFFFF; поставить refresh то компонент жутко моргает :(
← →
-=SS=- © (2004-10-20 15:20) [1]Пррисовывается только те колонки которые добавлены. Либо надо разширять колонки чтобы занимали весь ЛистВиев. Либо уменьшить Лист. Или добавить еще одну колонку с большой шириной
← →
dreamse (2004-10-20 15:32) [2]Это всё понятно , но если я буду обновлять колонку , вносить в неё изменения то listview всё равно будет моргать то же самое что и с refresh
← →
-=SS=- © (2004-10-20 15:39) [3]А это пробывал использовать ????
ListView1.Items.BeginUpdate;
{............}
ListView1.Items.EndUpdate;
← →
Мирон © (2004-10-20 15:50) [4]Отрисовываем первый столбец нужным цветом
procedure TForm1.ListView1CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean);
var
R: Trect;
begin
R := Rect(0, 0, Sender.Column[0].Width, Sender.Height);
Sender.Canvas.Brush.Color := $009DFFFF;
Sender.Canvas.FillRect(R);
end;
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
R: TRect;
begin
if Item.Selected
then Sender.Canvas.Brush.Color := clHighlight
else Sender.Canvas.Brush.Color := $009DFFFF;
R := Item.DisplayRect(drBounds);
R.Right := Sender.Column[0].Width;
Sender.Canvas.FillRect(R);
Sender.Canvas.TextRect(R, R.Left + 2, R.Top, Item.Caption);
DefaultDraw := False;
end;
Дальше, надеюсь, сами разберетесь...
← →
dreamse (2004-10-21 08:56) [5]Решил проблему запуском refresh 1 раз в 15 сек.
Вроде работает , но всё равно мигания заметны. Как прорисовать listview без мигания компонента ?
← →
TUser © (2004-10-21 10:35) [6]
> Решил проблему запуском refresh 1 раз в 15 сек.
> Вроде работает , но всё равно мигания заметны. Как прорисовать
> listview без мигания компонента ?
Лучше все-таки переписать сам ListView, например смотреть в сторону процедуры TCustomListView.DrawItem
← →
-=SS=- © (2004-10-21 10:39) [7]>> Как прорисовать listview без мигания компонента ?
Если ListView Лежит на форме (не на панели или других компонентах) то это поможет.
В ФормОнПаинт
ListView1.ControlStyle:=ListView1.ControlStyle+[csOpaque];
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c