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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2012, 17:28   #1
city32
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 48
По умолчанию Закрашивание строки dbgrid

Здравствуйте. Подскажите следующий момент.Есть таблица в которой есть колонка с датой.
С помощью такого кода вычисляю разницу между датой в колонке и сегодняшней
Код вычисляется с помощью таймера через определенные промежутки времени
Код:
procedure Tgl_form.Timer_sertifTimer(Sender: TObject);
.......
form_sert.table_sert.First;
while not(form_sert.table_sert.Eof) do
  begin
SD:=form_sert.table_sert.FieldByName('okon_sertif').AsDateTime;
i:=DaysBetween(SD,today);
......
if i<30) then
begin
ShowMessage(...
end;
 form_sert.table_sert.Next;
Как теперь в цикле сделать что если выполняется условие и i<30 то строка dbgrida меняла свой цвет.
city32 вне форума Ответить с цитированием
Старый 12.05.2012, 18:07   #2
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Как-то так (закрасит все ячейки в красный цвет):
Код:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  with TDBGrid(Sender).canvas do
  begin
    Brush.Color := clRed;
    FillRect(Rect);
  end;
end;
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 12.05.2012, 18:10   #3
city32
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 48
По умолчанию

мне не надо чтобы все были закрашены а только те на которых выполняется условие, т.е. открыл я форму а красным цветом выделены те строки где разница между сегодняшней датой и датой в таблице была меньше чем 30 дней.
Как закрасить с помощью DBGrid1DrawDataCell я знаю а как это применить в цикле в таймере не могу докумекать.
city32 вне форума Ответить с цитированием
Старый 12.05.2012, 18:43   #4
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от city32 Посмотреть сообщение
мне не надо чтобы все были закрашены а только те на которых выполняется условие, т.е. открыл я форму а красным цветом выделены те строки где разница между сегодняшней датой и датой в таблице была меньше чем 30 дней.
Как закрасить с помощью DBGrid1DrawDataCell я знаю а как это применить в цикле в таймере не могу докумекать.
ну так:
Код:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  if <ваше условие> then
  with TDBGrid(Sender).canvas do
  begin
    Brush.Color := clRed;
    FillRect(Rect);
  end;
end;
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 13.05.2012, 11:04   #5
city32
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 48
По умолчанию

Как мне совместить мой код, который приведен в первом посте с твоим?
city32 вне форума Ответить с цитированием
Старый 13.05.2012, 20:37   #6
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

как-то так

Код:
if LowerCase(Field.FieldName) = 'okon_sertif' then
begin
  i := DaysBetween(Field.AsDateTime,today);
  if i<30 then
  with TDBGrid(Sender).canvas do
  begin
    Brush.Color := clRed;
    FillRect(Rect);
  end;
end;
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки в DBGrid IgoreKMaN БД в Delphi 0 05.05.2012 22:12
Закрашивание ячеек в DBGRID jimmi З Помощь студентам 2 05.05.2011 06:38
строки в dbgrid tela БД в Delphi 2 24.02.2010 14:16
Нестандартное закрашивание DBGrid Kisma БД в Delphi 4 16.02.2010 21:26
DBGrid (Строки и заголовок) chingiz Компоненты Delphi 3 06.10.2007 14:49