Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Как раскрасить DBGrid по условию ?  [new]
Sensor230
Member

Откуда:
Сообщений: 12
Может я чего не правильно сказал или неправильно был понят, но раз тема не закрывается попробую еще раз написать "хотелки" (хотелки - не могут быть ТЗ, т.к. ТЗ для программистов должно писаться программистом).
Так вот...
ДАНО:
Сетевой диск, на нем БД MS Access, несколько компов привязаны к ней ADOConneck+ADOQuery, Кто то из пользователей создает задачу/заявку, которая добавляется в таблицу и видна всем другим. При создании, в зависимости от категории создаваемой задачи, при помощи incDay(ДатаСоздания, +Х) устанавливается срок "+Х" до которого создаваемая задача должна быть выполнена/решена. Дата создания и дата выполнения записаны в таблицу. Для понтов таблица раскрашивается пастэльными тонами в зависимости от категории (жалобы-синие, благодарности - зеленые и т.д.)
НУНО (хотца):
Чтоб строки в таблице окаршивались как и было, но за 5 дней до истечения срока выполнения становились желтыми , за 3 для до окончания срока оранжевыми, а за 1 день или при просрочке - красными.

Вот как то так.
13 сен 18, 21:01    [21674194]     Ответить | Цитировать Сообщить модератору
 Re: Как раскрасить DBGrid по условию ?  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59003
1. Топики не закрываются без необходимости (нарушения правил и пр.).
Получение автором кода/ответа на вопрос необходимостью не является.

2. Воздержитесь от коверкания, пожалуйста.

Posted via ActualForum NNTP Server 1.5

13 сен 18, 21:10    [21674200]     Ответить | Цитировать Сообщить модератору
 Re: Как раскрасить DBGrid по условию ?  [new]
Это же так просто
Guest
Sensor230
Чтоб строки в таблице окаршивались как и было, но за 5 дней до истечения срока выполнения становились желтыми , за 3 для до окончания срока оранжевыми, а за 1 день или при просрочке - красными.

S := ADOQuery1['Статус'];
with DBGrid1.Canvas.Brush do
  if (d2 - d1) < 1 then Color:=clRed else // за 1 день и просроченные
  if (d2 - d1) < 3 then Color:=clOrange else // за 3 дня
  if (d2 - d1) < 5 then Color:=clYellow else // за 5 дней
// раскраска по категориям
  if S = 'В работе' then Color:=clLime else
  if S = 'В очередь' then Color:=clSilver else Color := clWhite;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left,Rect.Top,Column.Field.AsString);
13 сен 18, 22:04    [21674229]     Ответить | Цитировать Сообщить модератору
 Re: Как раскрасить DBGrid по условию ?  [new]
Sensor230
Member

Откуда:
Сообщений: 12
Это же так просто, Почему то красит всю таблицу в один цвет. Что за один день до окончания срока, что за месяц, полностью вся таблица красная. Может у меня что в настройках не так? и так работают все предложенные варианты. Разноцвета не получается...
13 сен 18, 22:41    [21674260]     Ответить | Цитировать Сообщить модератору
 Re: Как раскрасить DBGrid по условию ?  [new]
Это же так просто
Guest
Sensor230
Это же так просто, Почему то красит всю таблицу в один цвет. Что за один день до окончания срока, что за месяц, полностью вся таблица красная. Может у меня что в настройках не так? и так работают все предложенные варианты. Разноцвета не получается...

Значит d1 и d2 перепутаны
13 сен 18, 22:44    [21674266]     Ответить | Цитировать Сообщить модератору
 Re: Как раскрасить DBGrid по условию ?  [new]
Sensor230
Member

Откуда:
Сообщений: 12
Это же так просто
Sensor230
Это же так просто, Почему то красит всю таблицу в один цвет. Что за один день до окончания срока, что за месяц, полностью вся таблица красная. Может у меня что в настройках не так? и так работают все предложенные варианты. Разноцвета не получается...

Значит d1 и d2 перепутаны


"Значит d1 и d2 перепутаны" - вот так просто раз и все!!!
Будешь в Ногинске позвони! С меня рюмка чаю! Оказалось (замыленная) проблема в том, что d1:=(Сегодня), а d2 вместо (СрокИсполнения) присваивалось (Дата) что одно и тоже с разницей в несколько секунд, в итоге получалось что всегда d1-d2=всегда чуть меньше "0".
УРА!!! УРА!!! УРА!!! Теперь буду раскрашеным гридом всем в глазах рябить)))))

кстати а оренжевого цвета в палитре нет ))))
13 сен 18, 23:16    [21674279]     Ответить | Цитировать Сообщить модератору
 Re: Как раскрасить DBGrid по условию ?  [new]
Gator
Member

Откуда: Москва
Сообщений: 13866
Sensor230,

ты невнятно задаешь вопрос, требуешь float и сравниваешь с целым...
и кстати, в " палитре" ЕСТЬ все цвета. Учись
13 сен 18, 23:30    [21674282]     Ответить | Цитировать Сообщить модератору
 Re: Как раскрасить DBGrid по условию ?  [new]
zinpub
Member

Откуда:
Сообщений: 214
Sensor230

кстати а оренжевого цвета в палитре нет ))))


function GetMixColor(c1, c2: TColor): TColor;
begin
  Result := RGB(
    (GetRValue(c1) + GetRValue(c2)) div 2,
    (GetGValue(c1) + GetGValue(c2)) div 2,
    (GetBValue(c1) + GetBValue(c2)) div 2
    );
end;

GetMixColor(clRed, clYellow);



:-)
14 сен 18, 08:46    [21674344]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Delphi Ответить