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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2017, 20:50   #1
anechik
 
Регистрация: 27.05.2017
Сообщений: 6
Восклицание Раскрашивание ячеек в DBGrid

Всем доброго времени суток. Прошу помощи у вас,ребят. В таблице DBGrid есть два столбца с названиями(Дата исполнения и Дата сдачи). Так вот,нужно,чтобы дата сдачи сверялась с сегодняшней датой,и если дата сдачи ,к примеру ,22.01.2017,а сейчас 23.01.2017,строка должна выделяться красным цветом. Использую ADOQuery
anechik вне форума Ответить с цитированием
Старый 27.05.2017, 21:19   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Не понял как Вы собрались там строки выделять, если я только 2 цвета нашел:
1) белый - цвет фона;
2) серый - цвет прямоугольничков, слева столбик и сверху полоска.
По-моему там нельзя строки чем-то выделять(ну если только текстом в отдельно столбце), хотя отчаиваться не стоит - в программировании возможно все.
Cuprum5 вне форума Ответить с цитированием
Старый 27.05.2017, 21:50   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
procedure DrawGridCheckBox(Canvas: TCanvas; Rect: TRect; Checked: boolean);
var
DrawFlags: Integer;
begin
Canvas.TextRect(Rect, Rect.Left + 1, Rect.Top + 1, ' ');
DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_ADJUSTRECT);
DrawFlags := DFCS_BUTTONCHECK or DFCS_ADJUSTRECT;// DFCS_BUTTONCHECK
if Checked then
DrawFlags := DrawFlags or DFCS_CHECKED;
DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DrawFlags);
end;



На событие OnDrawColumnCell повесьте вызов процедуры DrawGridCheckBox():



Код:
procedure TForm1.DBGrid1DrawColumnCell(Sender : TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.FieldName = 'WEIGHT' then // Модифицируйте под себя
if Column.Field.AsInteger > 10 then
DrawGridCheckBox(DBGrid1.Canvas, Rect, true)
else
DrawGridCheckBox(DBGrid1.Canvas, Rect, false)
end;



Кроме этого, для скрытия текста в ячейках с CheckBox-ом от отображения значения при вводе с клавиатуры определите реакцию на событие OnColumnEnter:



Код:
procedure TfrmMain.DBGrid1ColEnter(Sender: TObject);
begin
with TDBGrid(Sender) do
if SelectedField.FieldName = 'Weight' then // Модифицируйте под себя
Options := Options - [dgEditing]
else
Options := Options + [dgEditing]
end;
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 27.05.2017, 22:29   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Забыл упомянуть: это пример, как работать с рисованием ячеек в Дельфи. Адаптируйте под свой случай.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 27.05.2017 в 22:32.
Sciv вне форума Ответить с цитированием
Старый 28.05.2017, 14:27   #5
anechik
 
Регистрация: 27.05.2017
Сообщений: 6
По умолчанию

Нужно,чтобы было как на втором изображении,дата сдачи была просрочена,поэтому выделена красным цветом. Помоги с этимсправиться,а то голову уже пять суток ломаю
Изображения
Тип файла: jpg Безымянный.jpg (96.7 Кб, 150 просмотров)
anechik вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Умножения ячеек dbgrid vVladislav БД в Delphi 11 22.01.2017 19:40
Раскрашивание строк в DBGrid по нечетным числам - Delphi S_007 БД в Delphi 28 14.05.2015 09:43
объеденение ячеек dbgrid glebast Помощь студентам 4 14.03.2014 19:55
Раскрашивание отдельных ячеек StringGrid через разные функции dubailand Компоненты Delphi 7 04.09.2011 16:02
И по поводу раскрашивание ячеек от даты Wasily Microsoft Office Excel 9 18.06.2008 08:38