谢谢各位

解决方案 »

  1.   

    在StringGrid的OnDrawCell事件中重绘
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol,
      ARow: Integer; Rect: TRect; State: TGridDrawState);
    var Mysg:TStringGrid;
    begin
      Mysg := TStringGrid(Sender);
      if (ACol=3)and(ARow>0) then begin //重绘第 4 列及第 2 行以后
      if (Mysg.Cells[3,ARow] = '从未订阅') then begin
        Mysg.Canvas.Brush.Color:=TColor($0090A0AF);
      end else if (Mysg.Cells[3,ARow] = '已订阅未审核') then begin
        Mysg.Canvas.Brush.Color:=clBlue;
      end else if (Mysg.Cells[3,ARow] = '失效(超期)') then begin
        Mysg.Canvas.Brush.Color:=clRed;
      end else if (Mysg.Cells[3,ARow] = '已审核') then begin
        Mysg.Canvas.Brush.Color:=clGreen;
      end else if (Mysg.Cells[3,ARow] = '未知') then
        Mysg.Canvas.Brush.Color:=clRed;
      Mysg.Canvas.Font.Color := clWhite;
      Mysg.Canvas.FillRect(Rect);
      Mysg.Canvas.TextOut(Rect.Left,Rect.Top,Mysg.Cells[ACol,ARow]);
      end;
    end;