title: Setting background color of selected row on TStringGrid
body: <p>I have a TStringGrid where the selected row (max 1, no multi-select) should always have a different background colo(u)r.</p>
  
  <p>I set the DefaultDrawing property to false, and provide a method for the OnDrawCell event, shown below - but it is not working. I can't even describe exactly how it is not working; I supect that if I could I would already have solved the problem. Suffice it to say that instead of having complete rows all with the same background colour it is a mish-mash. Muliple rows have some cells of the "Selected" colour and not all cells of the cselected row have the selected colour.</p>
  
  <p>Note that I compare the cell's row with the strnggrid's row; I can't check the cell state for selected since only cell of the selected row is selected.   </p>
  
  <pre><code>procedure TForm1.DatabaseNamesStringGridDrawCell(Sender: TObject;
                                                   ACol, ARow: Integer;
                                                   Rect: TRect;
                                                   State: TGridDrawState);
  
    var cellText :String;
  begin
     if gdFixed in State then
        DatabaseNamesStringGrid.Canvas.Brush.Color := clBtnFace
     else
     if ARow = DatabaseNamesStringGrid.Row then
        DatabaseNamesStringGrid.Canvas.Brush.Color := clAqua
     else
        DatabaseNamesStringGrid.Canvas.Brush.Color := clWhite;
  
     DatabaseNamesStringGrid.Canvas.FillRect(Rect);
     cellText := DatabaseNamesStringGrid.Cells[ACol, ARow];
     DatabaseNamesStringGrid.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, cellText);
  end;
  </code></pre>