如题
   我想设置(1,5),(5,5) 等一些单元格为红色的背景,但是其他的不能改变,
  
    如果我先设置里(1,1) 为红色,下一次我可以设置(1,3)为黑色,但是(1,1)还是为红色,该怎么处理啊?   我知道也许要修改onDrawCell事件,但是我处理不了,请高手帮忙了!
   谢谢了

解决方案 »

  1.   

    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
     Rect: TRect; State: TGridDrawState); 
    var
     s: String; 
     R: TRect;
    begin
      with StringGrid1 do
      begin
        case (ARow Mod 4) of //不同行不同的背景色,4种颜色间隔
          0: Canvas.Brush.Color := clGreen;
          1: Canvas.Brush.Color := clRed;
          2: Canvas.Brush.Color := clYellow;
          3: Canvas.Brush.Color := clBlue;
        end;
        Canvas.FillRect(Rect);
        S := Cells[ACol,ARow];
        R := Rect;
        DrawText(Canvas.Handle,PChar(s),Length(s),r,DT_CENTER or DT_SINGLELINE or DT_VCENTER);  //文字居中
      end;
    end;
      

  2.   

    StringGrid1DrawCel函数能不能主动调用它啊,怎么调用啊,请给个例子好吗我第一次处理类似的事情,以前没有注意过界面的处理问题 谢谢了
      

  3.   

    要不就自己写个函数drawcolor(row,col:integer;colortype:integer)怎么写啊 谢谢了,
      

  4.   

    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
     Rect: TRect; State: TGridDrawState); 你在StringGird1的OnDrawCell事件后面的空格里面双击一下就自动添加了