读书人

一个关于cxgrid列背景色的有关问题

发布时间: 2012-03-19 22:03:05 作者: rapoo

一个关于cxgrid列背景色的问题
cxgrid 怎么更改某一列的背景颜色呢?比如,某列背景色设置为红色,运行时,就算cxgrid中一条数据都没有,该列还是显示红色。网上找来找去,问来问去都是根据内容来变色的,要是cxgrid中没记录,那背景就一片白色了


[解决办法]

Delphi(Pascal) code
var  clmStyle: TCxStyle;begin  clmStyle:=tcxstyle.Create(Self);  clmStyle.Color:=clRed;  View1.Columns[0].Styles.Content:=clmStyle;  View1.Columns[0].Styles.Header:=clmStyle;end;
[解决办法]
探讨

Delphi(Pascal) code
var
clmStyle: TCxStyle;
begin
clmStyle:=tcxstyle.Create(Self);
clmStyle.Color:=clRed;
View1.Columns[0].Styles.Content:=clmStyle;
View1.Columns[0].Styles.Header:=clmStyl……

[解决办法]
Delphi(Pascal) code
//OnCustomDrawCell事件procedure TForm1.cxGrid1TableView1CustomDrawCell(  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);begin  if SameText(Aviewinfo.Item.Name,cxGrid1TableView1.Columns[1].Name) then //指定你想要变色的列  begin    Aviewinfo.Focused;    ACanvas.Canvas.Brush.Color := clRed;  end;end;
[解决办法]
我是3楼,楼主没试过我的方法吧?这样不就指定了两列了?
Delphi(Pascal) code
procedure TForm1.cxGrid1TableView1CustomDrawCell(  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);begin  if (SameText(Aviewinfo.Item.Name,cxGrid1TableView1.Columns[0].Name))   or(SameText(Aviewinfo.Item.Name,cxGrid1TableView1.Columns[2].Name)) then //指定你想要变色的列  begin    Aviewinfo.Focused;    ACanvas.Canvas.Brush.Color := clRed;  end;end;
[解决办法]
直接设置该列的Style就可以了
[解决办法]
楼主想要的效果估计用CxGrid实现不了吧。。设置Style也是一样,填充单元格的背景颜色而已,如果连单元格都没有,自然没有办法填充颜色了。
[解决办法]
计算出你想要填充颜色的区域,然后重绘咯。。。俺能想到的只有这个了。。。
[解决办法]
如果一行数据都没有,那只好设置标题的背景色了。要么就要自己手动画上去!

读书人网 >.NET

热点推荐