Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 3

Изменить цвет определенных ячеек

07.03.2017, 13:18. Показов 4226. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня!
Как можно изменить цвет определенных ячеек в listview? (скрин во вложение)
Нужно проверить в каком столбце число больше.

первый > второй = первый столбик зеленым, второй красным
первый < второй = первый красный, второй зеленый
первый = второй = оба красные
Изображения
 
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.03.2017, 13:18
Ответы с готовыми решениями:

StringGrid Цвет фона пустых ячеек и ячеек с текстом
Доброго дня.. Задачка следующая: Ячейки в StringGrid'e заполняются по блоку из Timer. В StringGrid1DrawCell блок анализа...

Задать разную ширину ячеек и избавиться от стандартного синего выделения ячеек, заменив его на белый цвет
Всем доброго времени суток! Сейчас в срочном порядке разбираюсь с таким интересным компонентом как StringGrid. В целом всё понятно, но...

Проверка определенных ячеек StringGrid
Помогите с проверкой 2ух ячеек StringGrid (проверка на корректный ввод даты, что бы не было такого, что вводим &quot;1&quot; или...

4
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
07.03.2017, 18:41
У вас TListView::Report или TSrtringGrid? Версия Делфи, VCL? И корректнее "цвет фона" или "заливка".
0
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 3
07.03.2017, 20:15  [ТС]
Цитата Сообщение от GoodWeather Посмотреть сообщение
У вас TListView::Report
Да
Цитата Сообщение от GoodWeather Посмотреть сообщение
Версия Делфи
XE10
Цитата Сообщение от GoodWeather Посмотреть сообщение
И корректнее "цвет фона" или "заливка".
Заливка наверное, не знаю как правильно сказать, покажу на примере лучше, я пробовал делать примерно так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm2.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  ListView1.Canvas.Brush.Color := clWhite;
  if (Item.Index = 1) and (SubItem = 3) then
  begin
    ListView1.Canvas.Brush.Color := clBlue;
  end;
    if (Item.Index = 1) and (SubItem = 1) then
  begin
    ListView1.Canvas.Brush.Color := clGreen;
  end;
    if (Item.Index = 0) and (SubItem = 2) then
  begin
    ListView1.Canvas.Brush.Color := clRed;
  end;
end;
Но проблема в том что заполняется первый и второй столбик не одновременно, нужно с начало проверить заполнены ли оба столбца, а потом проверять и менять цвет.
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
08.03.2017, 01:11
Держи многострадальный
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm2.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  TListView(Sender).Canvas.Brush.Color := clWhite;
  if (Item.Caption <> '') and (Item.SubItems[0] <> '') then begin
    If StrToInt(Item.Caption) <= StrToInt(Item.SubItems[0]) then
      TListView(Sender).Canvas.Brush.Color := clRed
    else TListView(Sender).Canvas.Brush.Color := clGreen;
  end;
end;
 
procedure TForm2.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  TListView(Sender).Canvas.Brush.Color := clWhite;
  if SubItem = 1 then begin
    if (Item.Caption <> '') and (Item.SubItems[0] <> '') then begin
      If StrToInt(Item.Caption) >= StrToInt(Item.SubItems[0]) then
        TListView(Sender).Canvas.Brush.Color := clRed
      else TListView(Sender).Canvas.Brush.Color := clGreen;
    end;
  end;
end;
В моем примере раскрашиваются только две первые колонки ListView::Report. Если их больше, надеюсь дополните код сами.

Не по теме:

P.S. В первый раз столкнулся с раскраской ListView и страшно удивился что параметр SubItem нумеруется с 1, а не с 0.

0
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 3
08.03.2017, 09:33  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Держи многострадальный
Извиняюсь, я наверное, не правильно объяснил... Под первыми 2 столбиками, я имел ввиду SubItems[0] и SubItems[1], а не Caption.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  TListView(Sender).Canvas.Brush.Color := clWhite;
  if (Item.SubItems[0] <> '') and (Item.SubItems[1] <> '') then
  begin
    if StrToInt(Item.SubItems[0]) <= StrToInt(Item.SubItems[1]) then
      TListView(Sender).Canvas.Brush.Color := clRed
    else
      TListView(Sender).Canvas.Brush.Color := clGreen;
  end;
end;
 
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  TListView(Sender).Canvas.Brush.Color := clWhite;
  if SubItem = 1 then
  begin
    if (Item.SubItems[0] <> '') and (Item.SubItems[1] <> '') then
    begin
      if StrToInt(Item.SubItems[0]) >= StrToInt(Item.SubItems[1]) then
        TListView(Sender).Canvas.Brush.Color := clRed
      else
        TListView(Sender).Canvas.Brush.Color := clGreen;
    end;
  end;
end;
Если сделать так - то работать не будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.03.2017, 09:33
Помогаю со студенческими работами здесь

Сумма значений определенных ячеек TStringGrid
Всем добрый День!!! Я снова прошу помощи, т.к. никогда с подобным не сталкивался. У меня есть заполненная таблица Stringgrid, и в ней...

Запрет на редактирование определенных ячеек в stringgrid
Делаю игру судоку, используя StringGrid. Ячейки заполняются из файла, т.е. определенные заполнены цифрами, другие же пробелами. Нужно...

RichEdit1 цвет определенных слов
Здравствуйте, помогите пожалуйста, мне ну чтобы в RichEdit1 когда пишешь какое-то слова, допустим Привет (Слово привет сразу...

Как выделить границы определённых ячеек в stringgrid?
Как выделить границы определённых ячеек в stringgrid?

StringGrid - цвет ячеек
Добрый вечер. Суть проблемы такова: Есть программа, которая выполняет определенные действия и записывает полученные данные в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru