我想以不同的颜色显示来自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;
Run Code Online (Sandbox Code Playgroud)
在上面的代码中我使用了tcxgrid的cxGrid1DBTableView1CustomDrawCell事件.提前致谢.
如果您正在使用 a data-aware view(看起来),您需要使用 theDataController而不是 theViewData来获取记录。
如 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;
Run Code Online (Sandbox Code Playgroud)
通常,像这样的东西最简单的路径是cxStyles.删除表单上的样式存储库,向其添加一个或多个样式,并在对象检查器或事件处理程序(OnGetContentStyle等)中分配它们.
相对于自定义绘图的一个优点是,样式被考虑用于各种计算,而所有者绘制的单元格不是专门处理的,有时不能正确自动化等.