Автор: Zioma
Дата сообщения: 08.04.2004 10:47
Если интересно, то я это делаю на Дельфях.
Но суть, впринципе, не меняется.
В обработчике OnCustomDrawCell пишешь код(пример моей процедуры):
procedure TfrmActs.ActsGridViewCustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
ARec : TRect;
ATextToDraw : String;
Val : integer;
IsImage : boolean;
Align : integer;
procedure SetTextToDraw;
begin
ATextToDraw := AViewInfo.GridRecord.DisplayTexts[AViewInfo.Item.Index];
end;
begin
SetTextToDraw;
ARec := AViewInfo.Bounds;
Val := VarAsType(AViewInfo.GridRecord.Values[ViewFlag.Index], varInteger);
ACanvas.Canvas.Brush.Color:=$00FAE6E6;
if AViewInfo.GridRecord.Selected then ACanvas.Canvas.Brush.Color:=clMoneyGreen;
ACanvas.Canvas.FillRect(ARec);
if (AViewInfo is TcxCustomGridCellViewInfo) and (AViewInfo.Item.Index=ViewFlag.Index) then
begin
ACanvas.Canvas.FillRect(ARec);
// Здесь в зависимости от Val рисуется картинка. Таким же образом можна раскрасить строчку
case Val of
1: ilMarker.Draw(ACanvas.Canvas, ARec.Left+3, ARec.Top, 2);
2: ilMarker.Draw(ACanvas.Canvas, ARec.Left+3, ARec.Top, 1);
3: ilMarker.Draw(ACanvas.Canvas, ARec.Left+3, ARec.Top, 0);
end;
ATextToDraw:='';
end;
.............................
ADone:=True;
................
if ADone then ACanvas.DrawText(ATextToDraw, AViewInfo.Bounds, Align);
.................
Если будут вопросы - обращайся.