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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2017, 08:08   #1
dimok5
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 51
По умолчанию Закрасить ячейку DBGrid по нажатию на кнопку

Здравствуйте!
Как закрасить текущую ячейку DBGrid, на которой стоит курсор, (например, в красный цвет) по нажатию на Button1. Цвет при этом должен оставаться на этой ячейке даже после перезапуска проекта.
Код:
void __fastcall TForm1:: DBGrid1DrawColumnCell(TObject *Sender,
      const TRect &Rect, int DataCol, TColumn *Column,
      TGridDrawState State)
{
TDataSet *dataset = Column->Field->DataSet;
 
 
   if (State.Contains(gdFocused))
 
 
    {
        TDBGrid *dbg = (TDBGrid*)Sender;
                dbg->Canvas->Brush->Color = clRed;
                dbg->Canvas->FillRect(Rect);
                dbg->DefaultDrawColumnCell(Rect, DataCol, Column, State);
    }
 
    DBGrid1->DefaultDrawColumnCell(Rect, DataCol, Column, State);
}
Так окрашивает по событию DBGrid1DrawColumnCell, но только ту ячейку на которой стоит курсор, сбрасывая цвет на дефолт с предыдущей. А как сохранить цвет на ячейке?
dimok5 вне форума Ответить с цитированием
Старый 24.03.2017, 08:45   #2
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от dimok5 Посмотреть сообщение
А как сохранить цвет на ячейке?
Цитата:
Цвет при этом должен оставаться на этой ячейке даже после перезапуска проекта.
1) Делать в таблице дополнительное поля "MyColor" и это поля НЕ буду отображать DBGrid-е
2) Когда требуется что "сохранить цвет на ячейке при нажатие Button1" ! Напишу что при нажатие Button1 в полей "MyColor" сохранил любую число , на пример "1"
3) При открытое программа должен проверят ! если "MyColor" == "1" and .... тогда поставит "красный цвет"
xxbesoxx вне форума Ответить с цитированием
Старый 24.03.2017, 08:56   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Другими словами информация текущей записи датасета должна быть самодостаточной для принятия решения какую ячейку в какой цвет красить. Самый оптимальный вариант - вся она в ней. Сложней и менее эффективный - информация хранится например в неком массиве, к элементу которого можно добраться по RecNo записи или еще каким-то способом
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.03.2017, 09:02   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
информация хранится например в неком массиве,
Очень хороши вариант ! Если заранее известное (что пользователь будить хранить и что хочет закрасить)
xxbesoxx вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается закрасить ячейку StringGrid с++ Builder Mat Bourn Помощь студентам 13 16.04.2019 13:46
Как закрасить активную ячейку StringGrid demiancz Общие вопросы Delphi 1 05.05.2013 16:51
Как закрасить в WORD ячейку не полностью chilist Microsoft Office Word 3 24.03.2011 11:55
Задача StringGrid, требуется закрасить ячейку по координатам Mir@cle Помощь студентам 0 13.12.2010 19:50
Закрасить кнопку artemavd Общие вопросы Delphi 9 12.07.2008 15:37