![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Здравствуйте, подскажите пожалуйста можно ли каким-то образом изменять цвет текста, который выводится в ListView? Например: Есть следующая конструкция ListView с ViewStyle = vsReport; Название элемента | Значение 1 | Значение 2 | ------------------------------------------------ Элемент 1 | 0,0005 | 0,005 | Элемент 2 | 0,4 | 0,66 | ............ | ......... | ........ | Нужно зделать так: 1) ЕСЛИ Значение 2 больше Значения 1 ТО цвет_текста = clRed; 2) ЕСЛИ Значение 2 меньше Значения 1 ТО цвет_текста = clBlue; 3) ЕСЛИ Значение 2 равно Значению 1 ТО цвет_текста = clGreen; Подскажите пожалуйста как это можно реализовать средствами Delphi? Заранее большое Вам спасибо! |
#2
|
|||
|
|||
![]() OwnerDraw итема спасет отца русской демократии.
|
#3
|
||||
|
||||
![]() Я не знаю как это сделать. Впервые работаю с этим компонентом. Вы бы не могли детальнее написать как выглядит строка, которая будет изменять значение цвета текста, например в ListView.Items[0].SubItems[0] по событию нажатия на Button. Это нужно для того, чтобы юзер обратил внимание именно на то место в ListView.
Нашел только такое решение: procedure TMAIN_FORM.ListViewCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin with ListView.Canvas.Brush do begin case Item.Index of 0: Color := clYellow; 1: Color := clGreen; 2: Color := clRed; end; end; end; Но оно мне совсем не подходит. ![]() |
#4
|
||||
|
||||
![]() Так устроит?
Код:
procedure TForm33.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin if not Assigned(Item) then Exit; if StrToFloat(Item.SubItems.Strings[0]) < StrToFloat(Item.SubItems.Strings[1]) then Sender.Canvas.Font.Color := clRed; if StrToFloat(Item.SubItems.Strings[0]) > StrToFloat(Item.SubItems.Strings[1]) then Sender.Canvas.Font.Color := clBlue; if StrToFloat(Item.SubItems.Strings[0]) = StrToFloat(Item.SubItems.Strings[1]) then Sender.Canvas.Font.Color := clGreen; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
![]() Да, это именно то, что нужно!!! Спасибо тебе огромное!
![]() |