Access, выделение цветом.
столкнулся с такой проблемой - можно ли в базе mdb отдельные ячейки или хотя бы строки выделять цветом? имеется ввиду, чтобы пользователь при работе с таблицей (отображение - DBGridEh), выделяет что-либо цветом (фон или текст в ячейках - не имеет значения) и это сохраняется в бд (база, как уже сказано, - mdb).
заранее спасибо.
привет всем!
столкнулся с такой проблемой - можно ли в базе mdb отдельные ячейки или хотя бы строки выделять цветом? имеется ввиду, чтобы пользователь при работе с таблицей (отображение - DBGridEh), выделяет что-либо цветом (фон или текст в ячейках - не имеет значения) и это сохраняется в бд (база, как уже сказано, - mdb).
заранее спасибо.
Можно, только "строки выделять цветом" это задача не базы Access, а визуальных компонентов типа TDBGrid.
привет всем!
столкнулся с такой проблемой - можно ли в базе mdb отдельные ячейки или хотя бы строки выделять цветом? имеется ввиду, чтобы пользователь при работе с таблицей (отображение - DBGridEh), выделяет что-либо цветом (фон или текст в ячейках - не имеет значения) и это сохраняется в бд (база, как уже сказано, - mdb).
заранее спасибо.
Можно.
Для этого у тебя в базе данных должна быть реализована структура таблиц, в которых будут хранится настройки цвета и т.д. для твоих ячеек(строк).
Или же каждое поле(строка) в таблице должно сопровождаться полем, в котором записан цвет ячейки.
Или должен быть параметр, в зависимости от которого, ячейки раскрашиваются.
Можно.
Для этого у тебя в базе данных должна быть реализована структура таблиц, в которых будут хранится настройки цвета и т.д. для твоих ячеек(строк).
Или же каждое поле(строка) в таблице должно сопровождаться полем, в котором записан цвет ячейки.
Сааавсем заработался:)
Или должен быть параметр, в зависимости от которого, ячейки раскрашиваются.
Все есть в Builder-e, надо только приложить руки:
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);
}
}
Сааавсем заработался:)
Ну почему заработался - как я понял, камраду надо выделять цветом ячейки произвольно - в этом случае ему необходимо гдето это хранить.
Ну почему заработался - как я понял, камраду надо выделять цветом ячейки произвольно - в этом случае ему необходимо гдето это хранить.
всем пасиб )) правда, Gizmo, ты dynamic_cast слегка не так написал, но это в принципе не важно - главное идея )) данные о цвете так и пришлось хранить в отдельном поле для каждой строки.
всем пасиб )) правда, Gizmo, ты dynamic_cast слегка не так написал, но это в принципе не важно - главное идея )) данные о цвете так и пришлось хранить в отдельном поле для каждой строки.
Правда зачем хранить значение цвета в таблице я так и не врубился. Почему нельзя красить строку в зависимости от значения какого-либо поля?
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;
...
}
...
Правда зачем хранить значение цвета в таблице я так и не врубился. Почему нельзя красить строку в зависимости от значения какого-либо поля?
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;
...
}
...
Это все понятно - но что если цвет поля задается достаточно произвольно? Т.е. например юзер решил данную строку отметить выделением - и это выделение может находится в каком либо диапазоне - тебе все равно прийдется хранить значение. Если цвет связан с изменением статуса записи - тогда более правильно проверять значение - нефиг всякий мусор хранить в базе. А если это информативное выделение цветом - при этом статус объекта в базе не изменяется - тогда проще хранить цвет.
Хотя мне например кажется, что возможно, данная задача недостаточно тщательно спроектирована. Если пользователь что либо выделяет цветом - наверно это делается с какой нибудь целью. Т.е. возможно более "правильно" было бы введение т.н. "информационного статуса"+возможность для юзера назначать нужные цвета. А то так вполне можно получить весьма хрупкую базу, полную всякого мусора :). Или цветовые схемы - выносить ОТДЕЛЬНО от данных.
Хотя мне например кажется, что возможно, данная задача недостаточно тщательно спроектирована. Если пользователь что либо выделяет цветом - наверно это делается с какой нибудь целью. Т.е. возможно более "правильно" было бы введение т.н. "информационного статуса"+возможность для юзера назначать нужные цвета. А то так вполне можно получить весьма хрупкую базу, полную всякого мусора :). Или цветовые схемы - выносить ОТДЕЛЬНО от данных.
благо для данной задачи хватает одного цвета + выеделение надо делать именно по строкам. если вкратце - в таблице хранятся данные для объекта - например характеристики скважины по глубинам. На определённые глубины данных нет - они либо интерполируются (юзер пишет данные как среднее арифмет.) либо копирует из соседних объектов. Как раз такие данные (слои, глубины - как назовёшь)- и надо выделять. Самое просто что приходит на ум - хранить в отдельном поле либо флаг выделения, либо цвет (если всё-таки делать градацию по цвету)
благо для данной задачи хватает одного цвета + выеделение надо делать именно по строкам. если вкратце - в таблице хранятся данные для объекта - например характеристики скважины по глубинам. На определённые глубины данных нет - они либо интерполируются (юзер пишет данные как среднее арифмет.) либо копирует из соседних объектов. Как раз такие данные (слои, глубины - как назовёшь)- и надо выделять. Самое просто что приходит на ум - хранить в отдельном поле либо флаг выделения, либо цвет (если всё-таки делать градацию по цвету)
В таком случае - лучше устанавливать флаг. А его уже обрабатывать на клиенте как показано выше.