stringgrid隔行显示不同的底色。 代码怎么写?
有过隔行显示不同颜色的帖子,可是表格中的文字就看不到了,请诸位帮忙!辛苦啦

解决方案 »

  1.   

    参考如下代码:
    type
      TStringGridAccess = class(TStringGrid); //访问DrawCell()方法用procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    var
      vText: string;
    begin
      if (ACol <= 0) or (ARow <= 0) then Exit;
      if Odd(ARow) then
      begin
        TStringGrid(Sender).Canvas.Brush.Color := clSkyBlue;
        TStringGrid(Sender).Canvas.FillRect(Rect);
        TStringGrid(Sender).OnDrawCell := nil;
        try
          TStringGridAccess(Sender).DrawCell(ACol, ARow, Rect, State);
        finally
          TStringGrid(Sender).OnDrawCell := StringGrid1DrawCell;
        end;
      end;
    end;
      

  2.   


    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    var
      S: string;
    begin
      S := grdRssi.Cells[ACol, ARow];
      if (ARow mod 2) = 1 then
      begin
        StringGrid1.Canvas.Brush.Color := clred;
        StringGrid1.Canvas.FillRect(Rect);
      DrawText(StringGrid1.Canvas.Handle, PAnsiChar(S), Length(S),
        Rect, DT_CENTER or DT_VCENTER or DT_END_ELLIPSIS or DT_SINGLELINE );
      end;
    end;
      

  3.   

    http://blog.csdn.net/oushengfen/archive/2007/10/29/1854874.aspx