在类似于cxgrid的控件中,怎么样使数据单数行显示为红色,双数行显示为黑色?即第1.3.5.7.9.11...的记录显示为红色,2.4.6.8.10....的记录显示为黑色
我在dbgrid里是这样写的
procedure TFM_SENDWAY.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if ((datamod.TB_SENDWAY.RecNo mod 2)=0) then
    begin
      dbgrid1.Canvas.Brush.Color:=rgb(247,251,255);
      dbgrid1.Canvas.Pen.Mode:=pmmask;
      dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
    end
    else
    begin
      dbgrid1.Canvas.Brush.Color:=rgb(239,235,222);
      dbgrid1.Canvas.Pen.Mode:=pmmask;
      dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
    end;
end;
但不知在cxgird里是如何完成的?各位高手,请教 了

解决方案 »

  1.   

    好像没有看到CustomDrawCell事件,可以考虑设置每一格的Canvas
    procedure TForm1.cxGrid1TableView2CustomDrawCell(
      Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
      AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
    begin
      //根据AViewInfo.Item.Index来设ACanvas看看,其中AViewInfo.Item是响应事件的那一行
    end;
      

  2.   

    说错了,应该是没有看到CustomDrawColumnCell事件,呵呵
      

  3.   

    试了一下,好像不行嘛,aviewinfo。item好像是指的列吧
      

  4.   

    这样可以实现的:
    在它的CustomDrawCell中
    var
       StateFlag:string;
    begin
       State_Flag:=Trim(VarAsType(AViewInfo.GridRecord.DisplayTexts[2{派单状态}],varString));
       if StateFlag='紧急' then
       begin
          ACanvas.Canvas.Font.Color:=clRed;
          ACanvas.Canvas.Font.Style:=[fsBlod];
          SetBkMode(ACanvas.Handle,TRANSPARENT);
       end;
    end;
      

  5.   

    补充一点,你可以根据记录的Index来设置单行双行颜色