Font for a cell in StringGrid

How can have the text in a specific cell in a different color ?
Thanks
sylouxAsked:
Who is Participating?
 
CesarioCommented:
Hi syloux,

Use the "OnDrawCell"-event to make your StringGrids colorful! The following Code shows how to give your Grid a red background color. The second column will be colored with green background.


procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);

Const   //define your color here. Of course you
        //can use default colors too.
  clPaleGreen = TColor($CCFFCC);
  clPaleRed =   TColor($CCCCFF);

begin

//Does the cell have the focus you have to paint it with other colors
if (gdFocused in State) then begin    
   StringGrid1.Canvas.Brush.Color := clBlack;
   StringGrid1.Canvas.Font.Color := clWhite;
end
else  //Does the cell have NOT the focus you can use
       //your personal colors here

   if ACol = 2   //the second Column should be
                 //green, the other cells red
    then StringGrid1.Canvas.Brush.color := clPaleGreen
    else StringGrid1.canvas.brush.Color := clPaleRed;

//Now Paint the cells, but only, if the cell isn't the Title- Row/Column
//This of course depends whether you have title-Row/Columns or not.

If (ACol > 0) and (ARow>0) then
  begin
      //Painting the Background
    StringGrid1.canvas.fillRect(Rect);

      //Painting the Text. Here you can improve the code with
      // using alignment and so on.
    StringGrid1.canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);
  end;
end;
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.