如何更改tcxgrid行的颜色

时间:2014-04-02 14:16:15

标签: delphi delphi-7

我想以不同的颜色显示来自tcxgrid的一些行(取决于列值)。

我对它做了更改,但在运行我的项目后没有反映在网格上。

procedure TfrmMessaging.cxGrid1DBTableView1CustomDrawCell(..);
Var
  i : Integer;
begin
  For i := 0 To cxGrid1DBTableView1.ViewData.RowCount - 1 Do
  Begin
    If cxGrid1DBTableView1.ViewData.Rows[i].Values[4] = '1' Then
    Begin
      cxGrid1.Canvas.Brush.Color := clRed;          
    End;
  End;
end;

在上面的代码中我使用了tcxgrid的cxGrid1DBTableView1CustomDrawCell事件。     提前谢谢。

3 个答案:

答案 0 :(得分:5)

通常,像这样的东西的最简单的路径是cxStyles。删除表单上的样式存储库,向其添加一个或多个样式,并在对象检查器或事件处理程序(OnGetContentStyle等)中分配它们。

相对于自定义绘图的一个优点是样式被考虑用于各种计算,而所有者绘制的单元格没有被特殊处理,有时也没有正确自动化等。

答案 1 :(得分:4)

如果您使用data-aware view(看似似乎),则需要使用DataController代替ViewData来获取记录。

正如DevExpress对TcxGridDBTableView的帮助所述(粗体格式是我的):

  

TcxGridDBTableView对象表示网格表视图的数据感知版本。它继承了其祖先的所有功能,除了数据绑定设置。 TcxGridDBTableView的DataController.DataSource属性提供了View与TDataSet或其后代之间的连接。

除此之外,每个单元格都会触发OnCustomDrawCell事件,因此您无需迭代行。

以下代码可以帮助您:

procedure TfrmMessaging.cxGrid1DBTableView1CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
  if Sender.DataController.GetValue(AViewInfo.GridRecord.RecordIndex, 4) = '1' then
    ACanvas.Brush.Color := clRed;
end;

答案 2 :(得分:1)

我如何更改网格的颜色

procedure TfrmNewOffer.GrdOffDetailViewRemarkCustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
  backgroundColorCode: Variant;
  textColorCode: Variant;
begin
  inherited;
  if assigned(AViewInfo) and assigned(AViewInfo.GridRecord) then
  begin
    backgroundColorCode := AViewInfo.GridRecord.Values[GrdOffDetailViewBackColorCode.Index];
    textColorCode := AViewInfo.GridRecord.Values[GrdOffDetailViewTextColorCode.Index];

   if not VarIsNull(backgroundColorCode) then
   begin
     ACanvas.Brush.Color := backgroundColorCode;
   end;

   if not VarIsNull(textColorCode) then
   begin
     ACanvas.Font.Color := textColorCode;
   end;
 end;

端;