Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-948
Topten
2002-06-19 17:49
2002.07.01
TWebBrouser


7-1235
Ziv
2002-04-03 17:20
2002.07.01
Нужно послать факс по модему


1-938
besen-ok
2002-06-19 13:16
2002.07.01
Как мне симуликовать нажатие клавиши на клавиатуре ?


14-1143
~Sergius
2002-05-19 19:37
2002.07.01
ВНИМАНИЕ! СЕКРЕТНЫЕ ТЕХНОЛОГИИ!!!


8-1113
ZedZed
2002-02-19 19:13
2002.07.01
Аудио шкала!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский