Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.01;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
1-1008
Lina
2002-06-20 11:53
2002.07.01
Как создать виртуальный диск ?


1-943
ZG
2002-06-19 16:10
2002.07.01
Здарово!!! не подскажите как в Турбо Паскале использовать метод р


14-1164
Bj
2002-05-29 14:01
2002.07.01
Требуется написать програмку, кот печатает квитанции клиентам...


14-1189
Independence
2002-05-31 11:18
2002.07.01
Подскажите, как перекомпиллировать библиотеку?


3-911
NNH
2002-06-06 21:36
2002.07.01
DBTChart