You can use the DrawCell event to draw the contents of the cell yourself.
procedure TForm1.GridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var S: string; RectForText: TRect; begin // Check for your cell here (in this case the cell in column 4 and row 2 will be colored) if (ACol = 4) and (ARow = 2) then begin S := Grid.Cells[ACol, ARow]; // Fill rectangle with colour Grid.Canvas.Brush.Color := clBlack; Grid.Canvas.FillRect(Rect); // Next, draw the text in the rectangle Grid.Canvas.Font.Color := clWhite; RectForText := Rect; // Make the rectangle where the text will be displayed a bit smaller than the cell // so the text is not "glued" to the grid lines InflateRect(RectForText, -2, -2); // Edit: using TextRect instead of TextOut to prevent overflowing of text Grid.Canvas.TextRect(RectForText, S); end; end;
(Inspired by this. )
source share