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

解决方案 »

  1.   

    var
      clmStyle: TCxStyle;
    begin
      clmStyle:=tcxstyle.Create(Self);
      clmStyle.Color:=clRed;
      View1.Columns[0].Styles.Content:=clmStyle;
      View1.Columns[0].Styles.Header:=clmStyle;
    end;
      

  2.   


    //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.   

    我是3楼,楼主没试过我的方法吧?这样不就指定了两列了?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;
      

  4.   

    你这种效果不是我要的效果,你这种效果根本就不需要写代码,用style设置一些就行了。你还没理解我的问题,看清楚点哦,我要的效果图是,不管有没有数据,那个颜色都是存在的),而你的效果是,没记录就没颜色。用DBGridEH加个Footer后可以实现类似的,但我想用cxGrid实现,虽然没实现,还是先谢谢你的热心回答
      

  5.   

    总的来说就是用cxgrid实现类似于DBGridEh的背景色
      

  6.   

    直接设置该列的Style就可以了
      

  7.   

    楼主想要的效果估计用CxGrid实现不了吧。。设置Style也是一样,填充单元格的背景颜色而已,如果连单元格都没有,自然没有办法填充颜色了。