[英]How to change color of all columns in cxGrid if column name contains specific text
我正在使用 SQL 在 cxGrid2DBTableView 中根据用户选择的开始日期和结束日期水平创建日历表。 因为列名总是不同的,如下图所示:
我想更改非工作日值的颜色,这意味着我必须标记所有包含 %Sub% 或 %Ned% 的列并更改它们的 colors。
这是我知道列名时使用的代码示例:
procedure TForm1.cxGrid1DBTableView1VremeCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
ACanvas.Font.Color := clBlack;
ACanvas.Brush.Color := clMoneyGreen;
end;
您可以将 GridView 的OnCustomDrawCell
事件处理程序与AViewInfo.Item.Name
一起使用。
procedure TForm1.cxGrid1DBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
if(Pos('Sub', AViewInfo.Item.Name) <> 0) or (Pos('Ned', AViewInfo.Item.Name) <> 0) then
begin
ACanvas.Font.Color := clBlack;
ACanvas.Brush.Color := clMoneyGreen;
end;
end;
如果您更喜欢使用字幕,则可以使用AViewInfo.Item.Caption
而不是AViewInfo.Item.Name
。 无论如何,我建议您永远不要使用字幕,因为它们可能会在多语言应用程序中发生变化。
如果要绘制列的 header,可以使用 GridView 的OnCustomDrawColumnHeader
事件处理程序:
procedure TForm1.cxGrid1DBTableView1CustomDrawColumnHeader(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
begin
if(Pos('Sub', AViewInfo.Column.Name) <> 0) or (Pos('Ned', AViewInfo.Column.Name) <> 0) then
begin
ACanvas.Font.Color := clBlack;
ACanvas.Brush.Color := clMoneyGreen;
end;
end;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.