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

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

TListView - разноцветные строки - как? [D6, Win2k]


tovSuhov ©   (2002-06-18 12:59:00) 

Господа! Добрый день!
TListView в режиме vsReport. Никак не могу понять - как можно регулировать фон строки, т.е. одни строки я хочу одним цветом, другие другим...
Не подскажете?
С уважением, tovSuhov.


Егоров Николай   (2002-06-18 13:45:00) [1]

Как говаривают америкосы u welcome... :)


tovSuhov   (2002-06-18 13:39:00) [2]

Ага! Спасибо!


Егоров Николай   (2002-06-18 13:36:00) [3]

Поправочка:

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;


Егоров Николай   (2002-06-18 13:34:00) [4]

Всё оч. просто:
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-се. Причём, как видно из примера, можно указывать ещё и фонт...


Наверх

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