![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ExpressQuantumGrid 5 .. доступ к ячейке [D7]
barakuda © (2007-07-21 23:23:00)Уважаемые мастера
как в ExpressQuantumGrid 5 закрасить другим цветом ячейку по условью?
например чтобы все ячейки со словом "резерв" были зелёные
заранее благодарен...
barakuda (2007-07-25 22:43:00) [1]Lacmus, спасибо - ОЧЕНЬ помогло
ari_9 (2007-07-25 21:16:00) [2]спасибо, помогло
Lacmus (2007-07-25 17:50:00) [3]
procedure TForm2.cxGrid1DBTableView1FIRST_NAMECustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
if aViewInfo.GridRecord.Values[cxGrid1DBTableView1FIRST_NAME.Index] = 'Debra' then
ACanvas.Brush.Color := clRed
end;
turbouser (2007-07-25 17:04:00) [4]
> ari_9 (25.07.07 16:07) [5]
>
> хорошо, тогда поставим вопрос иначе
Не проверял, но должно подойти:
TcxDataController(Sender.Controller).Values[AViewInfo.GridRecord.RecordIndex,_ин декс_скрытой_ячейки_];
т.е. это и будет значение поля в скрытой ячейке
ari_9 (2007-07-25 16:07:00) [5]хорошо, тогда поставим вопрос иначе
в cxGridDBTableView есть поле B, которое не отображается (Visible = False). в зависимости от его значения должен меняться стиль соответствующей ячейки поля А. как это возможно сделать ?
turbouser (2007-07-25 15:56:00) [6]
> ari_9 (25.07.07 15:33) [2]
И, к стати, ...Field.DataSet.FieldByName('***ДРУ ГОЕ ПОЛЕ***').Value
выдаст неправильное значение, т.к. не обязательно текущая запись
прорисовывается.
turbouser (2007-07-25 15:52:00) [7]
> ari_9 (25.07.07 15:33) [2]
Вот так:
AViewInfo.GridRecord.DisplayTexts[index]
только index колонки надо будет вычислять, т.к.
при перемещении ее юзером индекс изменится.
ari_9 (2007-07-25 15:33:00) [8]подниму этот вопрос
есть ли более "прямой" способ при отрисовке ExpressQuantumGrid обратиться к значению не того поля таблицы, которое в данной ячейке, а другого, недели этот:
cxGridDBColumn(ACellViewInfo.Item).DataBinding.Field.DataSet.FieldByName('***ДРУ ГОЕ ПОЛЕ***').Value
?
turbouser (2007-07-22 18:46:00) [9]У колонки есть событие OnCustomDrawCell его и надо обрабатывать.
Выглядеть это будет примерно так:
procedure TForm1._Column_For_Draw_CustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: boolean);
begin
ADone := True;
// Если имя поля = "а" и текст в текущей ячейке = "резерв" то закрашиваем
with TcxGridDBColumn(AViewInfo.Item).DataBinding.Field do
begin
if (FieldName = 'a') and (AViewInfo.Text = 'резерв') then
ACanvas.Brush.Color := clGreen;
ACanvas.FillRect(AViewInfo.ClientBounds);
ACanvas.DrawText(AViewInfo.Text,
AViewInfo.TextAreaBounds, cxAlignHCenter);
end;
end;