单元格里的文字如果是'是',就用黑色表示.如果是'否',就用红色表示.希望可以简洁一点,因为我的一张图上有好多的表?Testringgrid可以不可以也象这样改变?

解决方案 »

  1.   

    type
      TStringGridEx = class(TStringGrid)
      end;procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
      if TStringGridEx(Sender).Cells[ACol, ARow] = '否' then
      begin
        TStringGridEx(Sender).OnDrawCell := nil;
        try
          TStringGrid(Sender).Canvas.Font.Color := clRed;
          TStringGridEx(Sender).DrawCell(ACol, ARow, Rect, State);
        finally
          TStringGridEx(Sender).OnDrawCell := StringGrid1DrawCell;
        end;
      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;