Главная страница
    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-975
tovSuhov
2002-06-20 10:19
2002.07.01
Люди! Как юзать Splitter?


1-1033
PTE
2002-06-17 20:57
2002.07.01
Как объеденить одинаковые свойства для всех edit?


14-1201
vopros
2002-05-28 12:32
2002.07.01
Вот загадки прислали:


3-904
igorsh
2002-06-07 14:40
2002.07.01
Сохранение JPeg в Oracle


3-908
Chuk
2002-06-07 12:52
2002.07.01
Использование баз данных Paradox в локальной сети





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский