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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2011, 16:59   #1
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию Закрасить строки DBGrideh

Есть DBGrideh со столбцом color в котором находится любой текст с днями недели. Если день недели ячейки color совпадает с текущим днем недели то окрасить строку в желтый цвет.
вот мой код
Код:
 if TDBGrideh(Sender).DataSource.DataSet.FieldByName('color').AsString =FormatDateTime('DDDD', Now) then
  begin
    TDBGrideh(Sender).Canvas.Font.Color:=clBlue;
    TDBGrideh(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
    TDBGrideh(Sender).Canvas.Font.Style:=[fsBold];
    TDBGrideh(Sender).Canvas.Brush.Color:=clYellow;
    TDBGrideh(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
  end;
Но он работает если в ячейке текст формата Например: понедельник,
а мне нужно если понедельник, среда. Т.е Какой-то текст и день недели.
Как это сделать без query

Код:
 with Adoquery2 do begin
       Close;
       SQL.Clear;
       SQL.Add('SELECT* FROM refbook');
       SQL.Add('WHERE NAME LIKE'+quotedstr('%'+FormatDateTime('DDDD', Now)+'%'));
       Open;
end;
Aleksandr вне форума Ответить с цитированием
Старый 31.05.2011, 20:09   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если я не ошибаюсь и правильно понял то, что Вам надо,
то:
в DBGridEh есть событие OnGetCellParams
на него вешаете примерно такой код:
Код:
procedure TForm1.MyGrid1GetCellParams(Sender: TObject;
  Column: TColumnEh; AFont: TFont; var Background: TColor;
  State: TGridDrawState);
begin
 if  AdoQuery1.FieldByName('s_nominal_voltage_id').AsFloat = rVoltage35_ID then
   AFont.Color := clGreen
 else
     AFont.Color := clBlue;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.05.2011, 20:56   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Добавлю свои три копейки.
1. if (ActiveControl=Sender) and (gdSelected in State) - то это текущая ячейка грида с фокусом ввода, у неё цветовая схема отличается от других ячеек, это желательно учитывать при перекраске.
2. Если свойства AFont-а и Background в обработчике не менять, то используются умолчания грида.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 31.05.2011 в 21:10.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить высоту строки DbGridEH Aleksandr БД в Delphi 1 28.04.2011 21:09
Закрасить область badaladanbad Win Api 3 20.04.2011 17:05
DBGridEh: показать только нужные строки new player Компоненты Delphi 10 07.10.2010 22:40
DBGridEh: перенос строки в полях String М_Виктор Компоненты Delphi 2 23.03.2010 14:04
Закрасить кнопку artemavd Общие вопросы Delphi 9 12.07.2008 15:37