比如让后面的背景色为灰色,但是前面用户填的Grid的颜色是白色。横边和纵边上的第一个Grid还是为原来的颜色?应该怎样设置呢?谢谢

解决方案 »

  1.   

    //对表格进行绘制
    Procedure DrawColumnCell(DrawDbg: TDBGrid;DrawCds:TClientDataSet;
    const Rect: TRect; DataCol: Integer; Column: TColumn;
    State: TGridDrawState);
    var
    FRect:TRect;
    begin
    //如果处于选择状态则绘制另外一种颜色
    if GdSelected in State then
    begin
    exit;
    end;
    With DrawDbg do
    begin
    //判断是否为偶数行,以便相邻的行用不同的颜色绘制
    if DrawCds.RecNo mod 2=0 then
    Canvas.Brush.Color:=ClInfoBk
    else
    //DBGStock.Canvas.Brush.Color:=Rgb(191,255,223);
    Canvas.Brush.Color:=$00FEF8F1;
    //设置表格画布画笔的颜色,采用RGB函数据设置
    DefaultDrawColumnCell(Rect, DataCol, Column, State);
    Canvas.Pen.Color:=$00FBE1C8;
    Canvas.MoveTo(Rect.Left,Rect.Bottom);
    Canvas.LineTo(Rect.Right,Rect.Bottom);
    Canvas.MoveTo(Rect.Right,Rect.Top);
    Canvas.LineTo(Rect.Right,Rect.Bottom);
    Canvas.Brush.Color:=$00825320;
    //绘制数据区的上边框
    FRect.Left:=Rect.Left-1;
    FRect.Right:=Rect.Right;
    Frect.Top:=-1;
    Frect.Bottom:=16;
    Canvas.FrameRect(FRect);
    //绘制数据区的左边框
    FRect.Left:=-1;
    FRect.Right:=11;
    Frect.Top:=Rect.Top-1;
    Frect.Bottom:=Rect.Bottom;
    Canvas.FrameRect(FRect);
    //绘制数据区的表格边框
    FRect.Bottom:=Rect.Bottom;
    FRect.Top:=Rect.Top-1;
    FRect.Left:=Rect.Left-1;
    FRect.Right:=Rect.Right;
    Canvas.FrameRect(FRect);
    //对表格进行绘制
    end;
    end; 
      

  2.   

    procedure TForm_Main.DrowColorOnCell(stringgrid:Tstringgrid;ACol, ARow: Integer;  Rect: TRect);
    begin
      with stringgrid do
      begin
        if (ACol > 0) and (ARow > 0) then
        begin
          if (ARow mod 2=0) then
          Canvas.Brush.Color := clskyblue
          else
          Canvas.Brush.Color:=$00EBDDD3;
          Canvas.FillRect(Rect);
          Canvas.Font.Name := 'Courier New';
          Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]);
        end;
      end;
    end;