Форум: "Основная";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];
ВнизTListView - разноцветные строки - как? Найти похожие ветки
← →
tovSuhov (2002-06-18 12:59) [0]Господа! Добрый день!
TListView в режиме vsReport. Никак не могу понять - как можно регулировать фон строки, т.е. одни строки я хочу одним цветом, другие другим...
Не подскажете?
С уважением, tovSuhov.
← →
Егоров Николай (2002-06-18 13:34) [1]Всё оч. просто:
1) ListView1.OwnerDraw := False;
2) Пишешь 3 обработчика:
procedure TForm1.ListView1CustomDraw(Sender: TCustomListView; const ARect: TRect;
var DefaultDraw: Boolean);
begin
// Теперь ListView1 будет зелёного(баксового :)) цвета;
with LW.Canvas do begin
Brush.Color := clMoneyGreen;
FillRect(ARect);
end;
end;
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
//Если капшн итема "Green" то район итема будет зелёным и текст темно-зелёным иначе - красным и тёмно-красным соотв.
with Sender.Canvas do begin
if Item.Caption = "Green" then begin
Brush.Color := clMoneyGreen;
Font.Name := "MS Sans Serif";
Font.Style := [];
Font.Color := clGreen;
end
else begin
Brush.Color := $00D9D9FF;
Font.Name := "MS Sans Serif";
Font.Style := [];
Font.Color := clRed;
end;
end;
end;
procedure TForm1.Listview1CustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
begin
// Тоже самое только для сабитемсов...
with Sender.Canvas do begin
if Item.Caption = "Green" then begin
Brush.Color := clMoneyGreen;
Font.Name := "MS Sans Serif";
Font.Style := [];
Font.Color := clGreen;
end
else begin
Brush.Color := $00D9D9FF;
Font.Name := "MS Sans Serif";
Font.Style := [];
Font.Color := clRed;
end;
end;
end;
Это так, для примера - разный цвет строк зависящий от Item.Caption, но т.к. обычно на Item.Data "цепляют" данные то цвет строк можно выбирать исходя из каких-либо данных, висящих на Item-се. Причём, как видно из примера, можно указывать ещё и фонт...
← →
Егоров Николай (2002-06-18 13:36) [2]Поправочка:
procedure TForm1.ListView1CustomDraw(Sender: TCustomListView; const ARect: TRect;
var DefaultDraw: Boolean);
begin
// Теперь ListView1 будет зелёного(баксового :)) цвета;
with ListView1.Canvas do begin
Brush.Color := clMoneyGreen;
FillRect(ARect);
end;
end;
← →
tovSuhov (2002-06-18 13:39) [3]Ага! Спасибо!
← →
Егоров Николай (2002-06-18 13:45) [4]Как говаривают америкосы u welcome... :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c