Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо