Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Access, выделение цветом.

1.8K
12 апреля 2006 года
Azaze1
102 / / 08.01.2005
привет всем!
столкнулся с такой проблемой - можно ли в базе mdb отдельные ячейки или хотя бы строки выделять цветом? имеется ввиду, чтобы пользователь при работе с таблицей (отображение - DBGridEh), выделяет что-либо цветом (фон или текст в ячейках - не имеет значения) и это сохраняется в бд (база, как уже сказано, - mdb).
заранее спасибо.
246
13 апреля 2006 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Azaze1
привет всем!
столкнулся с такой проблемой - можно ли в базе mdb отдельные ячейки или хотя бы строки выделять цветом? имеется ввиду, чтобы пользователь при работе с таблицей (отображение - DBGridEh), выделяет что-либо цветом (фон или текст в ячейках - не имеет значения) и это сохраняется в бд (база, как уже сказано, - mdb).
заранее спасибо.


Можно, только "строки выделять цветом" это задача не базы Access, а визуальных компонентов типа TDBGrid.

1
13 апреля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Azaze1
привет всем!
столкнулся с такой проблемой - можно ли в базе mdb отдельные ячейки или хотя бы строки выделять цветом? имеется ввиду, чтобы пользователь при работе с таблицей (отображение - DBGridEh), выделяет что-либо цветом (фон или текст в ячейках - не имеет значения) и это сохраняется в бд (база, как уже сказано, - mdb).
заранее спасибо.


Можно.
Для этого у тебя в базе данных должна быть реализована структура таблиц, в которых будут хранится настройки цвета и т.д. для твоих ячеек(строк).
Или же каждое поле(строка) в таблице должно сопровождаться полем, в котором записан цвет ячейки.
Или должен быть параметр, в зависимости от которого, ячейки раскрашиваются.

246
13 апреля 2006 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by kot_
Можно.
Для этого у тебя в базе данных должна быть реализована структура таблиц, в которых будут хранится настройки цвета и т.д. для твоих ячеек(строк).
Или же каждое поле(строка) в таблице должно сопровождаться полем, в котором записан цвет ячейки.


Сааавсем заработался:)

Цитата:
Originally posted by kot_

Или должен быть параметр, в зависимости от которого, ячейки раскрашиваются.


Все есть в Builder-e, надо только приложить руки:

Код:
void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
        const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState
State)
{
  if (Column->FieldName=="Category")
  {
        dynamic_cast(Sender)->Canvas->Font->Color          
                                        = clRed;
        dynamic_cast(Sender)->Canvas->TextRect        
(Rect, Rect.Left + 2, Rect.Top + 2,
          Column->Field->AsString);
  }
}
1
13 апреля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by GIZMO
Сааавсем заработался:)



Ну почему заработался - как я понял, камраду надо выделять цветом ячейки произвольно - в этом случае ему необходимо гдето это хранить.

1.8K
14 апреля 2006 года
Azaze1
102 / / 08.01.2005
Цитата:
Originally posted by kot_
Ну почему заработался - как я понял, камраду надо выделять цветом ячейки произвольно - в этом случае ему необходимо гдето это хранить.


всем пасиб )) правда, Gizmo, ты dynamic_cast слегка не так написал, но это в принципе не важно - главное идея )) данные о цвете так и пришлось хранить в отдельном поле для каждой строки.

246
17 апреля 2006 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Azaze1
всем пасиб )) правда, Gizmo, ты dynamic_cast слегка не так написал, но это в принципе не важно - главное идея )) данные о цвете так и пришлось хранить в отдельном поле для каждой строки.


Правда зачем хранить значение цвета в таблице я так и не врубился. Почему нельзя красить строку в зависимости от значения какого-либо поля?

Код:
void __fastcall TForm1:DBGrid1DrawColumnCell(TObject *Sender,
        const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState
State)
{
  if (Table1->FieldByName("Category")->Value == 1)
  {
    DBGrid1->Brush->Color = clRed;
    ...
   }
   else if(Table1->FieldByName("Category")->Value == 2)
   {
   DBGrid1->Brush->Color = clBlue;
   ...
   }
   ...
1
17 апреля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by GIZMO
Правда зачем хранить значение цвета в таблице я так и не врубился. Почему нельзя красить строку в зависимости от значения какого-либо поля?
Код:
void __fastcall TForm1:DBGrid1DrawColumnCell(TObject *Sender,
        const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState
State)
{
  if (Table1->FieldByName("Category")->Value == 1)
  {
    DBGrid1->Brush->Color = clRed;
    ...
   }
   else if(Table1->FieldByName("Category")->Value == 2)
   {
   DBGrid1->Brush->Color = clBlue;
   ...
   }
   ...


Это все понятно - но что если цвет поля задается достаточно произвольно? Т.е. например юзер решил данную строку отметить выделением - и это выделение может находится в каком либо диапазоне - тебе все равно прийдется хранить значение. Если цвет связан с изменением статуса записи - тогда более правильно проверять значение - нефиг всякий мусор хранить в базе. А если это информативное выделение цветом - при этом статус объекта в базе не изменяется - тогда проще хранить цвет.
Хотя мне например кажется, что возможно, данная задача недостаточно тщательно спроектирована. Если пользователь что либо выделяет цветом - наверно это делается с какой нибудь целью. Т.е. возможно более "правильно" было бы введение т.н. "информационного статуса"+возможность для юзера назначать нужные цвета. А то так вполне можно получить весьма хрупкую базу, полную всякого мусора :). Или цветовые схемы - выносить ОТДЕЛЬНО от данных.

1.8K
17 апреля 2006 года
Azaze1
102 / / 08.01.2005
Цитата:
Originally posted by kot_
Хотя мне например кажется, что возможно, данная задача недостаточно тщательно спроектирована. Если пользователь что либо выделяет цветом - наверно это делается с какой нибудь целью. Т.е. возможно более "правильно" было бы введение т.н. "информационного статуса"+возможность для юзера назначать нужные цвета. А то так вполне можно получить весьма хрупкую базу, полную всякого мусора :). Или цветовые схемы - выносить ОТДЕЛЬНО от данных.


благо для данной задачи хватает одного цвета + выеделение надо делать именно по строкам. если вкратце - в таблице хранятся данные для объекта - например характеристики скважины по глубинам. На определённые глубины данных нет - они либо интерполируются (юзер пишет данные как среднее арифмет.) либо копирует из соседних объектов. Как раз такие данные (слои, глубины - как назовёшь)- и надо выделять. Самое просто что приходит на ум - хранить в отдельном поле либо флаг выделения, либо цвет (если всё-таки делать градацию по цвету)

1
18 апреля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Azaze1
благо для данной задачи хватает одного цвета + выеделение надо делать именно по строкам. если вкратце - в таблице хранятся данные для объекта - например характеристики скважины по глубинам. На определённые глубины данных нет - они либо интерполируются (юзер пишет данные как среднее арифмет.) либо копирует из соседних объектов. Как раз такие данные (слои, глубины - как назовёшь)- и надо выделять. Самое просто что приходит на ум - хранить в отдельном поле либо флаг выделения, либо цвет (если всё-таки делать градацию по цвету)


В таком случае - лучше устанавливать флаг. А его уже обрабатывать на клиенте как показано выше.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог