希望有隔行变色,然后红色字,但现在只能选其一
另外字体如何加粗?
DBGrid2DrawColumnCell 里面procedure TForm2.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if dbgrid2.DataSource.DataSet.RecNo mod 2=0 then
 dbgrid2.canvas.Brush.color:=$FFFFF0
 else
dbgrid2.Canvas.Font.Color :=  clRed;  //------加了这行,下行没反应该
dbgrid2.canvas.Brush.color:=$FFFFFF;
dbgrid2.DefaultDrawColumnCell(rect,datacol,column,state);
end;

解决方案 »

  1.   

    用 第三方的GRID吧,TMS的GRID, cxGrid, EhGrid
      

  2.   

    dbgrid2.DefaultDrawColumnCell会用以前的参数绘制,跟dbgrid2.canvas.Brush.color:=$FFFFFF冲突了,看那DefaultDrawColumnCell名字就知道了。
      

  3.   

    是不是这样?procedure TForm2.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    if dbgrid2.DataSource.DataSet.RecNo mod 2=0 then
     dbgrid2.canvas.Brush.color:=$FFFFF0
     else
    dbgrid2.canvas.Brush.color:=$FFFFFF;
    dbgrid2.Canvas.Font.Color :=  clRed;  //------加了这行,下行没反应该
    dbgrid2.DefaultDrawColumnCell(rect,datacol,column,state);
    end;
      

  4.   

    procedure TForm2.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    if dbgrid2.DataSource.DataSet.RecNo mod 2=0 then
    begin
     dbgrid2.canvas.Brush.color:=$FFFFF0;
    dbgrid2.Canvas.Font.Color :=  clBlack; 
    end  else
    begin
    dbgrid2.canvas.Brush.color:=$FFFFFF;
    dbgrid2.Canvas.Font.Color :=  clRed; 
    dbgrid2.Canvas.Font.Style:= dbgrid2.Canvas.Font.Style + [fsbold]; //加粗,这是xe10上的写法
    end;dbgrid2.DefaultDrawColumnCell(rect,datacol,column,state);
    end;