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

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

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

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

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

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

Здравствуйте уважаемые. Помогите подправить этот код, в нём всё устраивает, только нужно по времени выделять не одну строку dt а всю строку в DBGride, и ещё вопрос если мне надо не 1 день разница а к примеру 30 минут почему не работает 0.03, когда я задаю в условие :
Код:
procedure TForm1.DBGridEh3DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
var
  day, month, year : word;
begin
  if Column.Field.FieldName = 'dt' then begin
    DecodeDate( Column.Field.AsDateTime, year, month, day );
    if (Column.Field.AsDateTime < Now) and
      (DaysBetween(Now, EncodeDate( YearOf(Now), month, day )) = 1) then
    TDBGrid(Sender).Canvas.Brush.Color := $008080FF;
  end;
  TDBGrid(Sender).Canvas.FillRect(Rect);
  TDBGrid(Sender).Canvas.TextRect(Rect,Rect.Left+2,Rect.Top+2,Column.Field.Text);
end;
spotip вне форума Ответить с цитированием
Старый 30.04.2014, 15:23   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
только нужно по времени выделять не одну строку dt а всю строку в DBGride
Проверяй значение поля 'dt' в текущей записи набора данных.
Цитата:
если мне надо не 1 день разница а к примеру 30 минут почему не работает 0.03
А почему оно должно работать? DaysBetween возвращает целое количество дней между двумя датами.
northener вне форума Ответить с цитированием
Старый 05.05.2014, 13:35   #3
spotip
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 68
По умолчанию

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

примерно так:
Код:
var
  curDT : TDateTime;
begin
    curDT := (Sender as TDBGridEh).DataSource.DataSet.FieldByName('dt').AsDateTime;
    if (curDT < Now) and (MinutesBetween(Now, curDT)<=30) 
             {событие dt прошло и время от события dt до наст.времени прошло до 30 минут } 
          then begin ...
          end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.05.2014, 16:24   #5
spotip
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 68
По умолчанию

Serge_Bliznykov
Спасибо за помощь, всё получилось просто изменил:
Код:
if (curDT <> Now) and (MinutesBetween(Now, curDT)> 30)

Последний раз редактировалось spotip; 06.05.2014 в 13:27.
spotip вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цвет строки dbgrid из combobox undead92 БД в Delphi 8 27.02.2012 11:51
Цвет dbgrid aank10 C/C++ Базы данных 1 14.11.2011 00:07
Цвет ячейка и DBGrid M@riy@ Компоненты Delphi 3 14.11.2010 20:35
Цвет текущей строки в DBGrid reiftd C++ Builder 1 29.10.2009 11:10
Цвет полоски выделения DBGrid Хитрец БД в Delphi 12 19.04.2009 22:58