Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2014, 13:00   #1
spotip
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 68
По умолчанию DBGrid цвет текста в ячейке

подскажите как определить цвет текста по значению в нескольких столбцах, т.е если в 1 столбце по значению у меня получается а если делаю для 2 ух столбцов то выделяет текст по 1 столбцу:
Код:
begin
if DataModule2.Turb_Query1.FieldByName('act').AsCurrency >= 301 then
begin
Form1.DBGridEH2.Canvas.Font.Color:= clRed;
end;                                                                
if DataCol = 4 then Form1.DBGridEH2.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;
begin
if DataModule2.Turb_Query1.FieldByName('cvd').AsCurrency >= 80 then
begin
Form1.DBGridEH2.Canvas.Font.Color:= clRed;
end;                                                                
if DataCol = 5 then Form1.DBGridEH2.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;
end;
spotip вне форума Ответить с цитированием
Старый 08.05.2014, 13:50   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не очень понимаю ваш код (при чём здесь DataCol=4 или DatCol=5), поэтому могу со своим советом попасть пальцем в небо!

попробуйте так написать:
Код:
  if (DataModule2.Turb_Query1.FieldByName('act').AsCurrency >= 301) or
       (DataModule2.Turb_Query1.FieldByName('cvd').AsCurrency >= 80)
  then
    Form1.DBGridEH2.Canvas.Font.Color := clRed;
  if (DataCol = 4) or (DataCol = 5)  then Form1.DBGridEH2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
или даже так:
Код:
  if (DataModule2.Turb_Query1.FieldByName('act').AsCurrency >= 301) or
       (DataModule2.Turb_Query1.FieldByName('cvd').AsCurrency >= 80)
  then begin
    Form1.DBGridEH2.Canvas.Font.Color := clRed;
    if (DataCol = 4) or (DataCol = 5)  then Form1.DBGridEH2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.05.2014, 14:20   #3
spotip
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 68
По умолчанию

[QUOTE=Serge_Bliznykov;1373958]не очень понимаю ваш код (при чём здесь DataCol=4 или DatCol=5), поэтому могу со своим советом попасть пальцем в небо!

act и cvd - название столбца
DataCol = 4 columns act, DataCol = 5 columns cvd 4,5- номера столбцов,
когда я делаю так:
Код:
begin
if DataModule2.Turb_Query1.FieldByName('act').AsCurrency >= 301 then
begin
Form1.DBGridEH2.Canvas.Font.Color:= clRed;
end;                                                                
if DataCol = 4 then Form1.DBGridEH2.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;
то при >= 301 данная ячейка в столбце act красится красным,
мне нужно так же но с другим значением >= 80 сделать но для второго столбца cvd. Если я делаю по вашим примерам то после значения >= 301 красится столбец act и за ним cvd хотя в cvd столбце значение не привысило >= 80.

Последний раз редактировалось spotip; 08.05.2014 в 14:22.
spotip вне форума Ответить с цитированием
Старый 08.05.2014, 14:28   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а если так написать, то что происходит?

Код:
  if ((DataModule2.Turb_Query1.FieldByName('act').AsCurrency >= 301) and (DataCol = 4))  or
       ((DataModule2.Turb_Query1.FieldByName('cvd').AsCurrency >= 80) and (DataCol = 5))
  then begin
    Form1.DBGridEH2.Canvas.Font.Color := clRed;
    Form1.DBGridEH2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.05.2014, 14:35   #5
spotip
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 68
По умолчанию

спасибо всё получилось.
spotip вне форума Ответить с цитированием
Старый 08.05.2014, 14:52   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

всегда пожалуйста!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.05.2014, 15:01   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
а если делаю для 2 ух столбцов то выделяет текст по 1 столбцу:
Явно избыточное количество begin/end-ов в коде мешает тебе самому понять почему это было так.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Окрасить ячейку в цвет аналогичный другой ячейке FoxRiver Microsoft Office Excel 4 04.11.2013 21:22
Изменить цвет числа в ячейке RUBEY Microsoft Office Excel 8 18.09.2013 12:14
Фильтрация в ячейке DBGrid yaapelsinko БД в Delphi 9 04.02.2012 19:43
Цвет dbgrid aank10 C/C++ Базы данных 1 14.11.2011 00:07
Цвет шрифта в ячейке kzld Microsoft Office Excel 16 07.12.2009 17:17