TStringGrid选中某行时改变字色彩和背景色,支持鼠标右键

TStringGrid选中某行时改变字颜色和背景色,支持鼠标右键
goRangeSelect := false ; //不允许选择多行

goRowSelect := true ; //选择行

procedure Tfm_main.Grid2DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
 s: String;
 R: TRect;
begin
  if ARow = Grid2.Row then
  begin
    TStringGrid(Sender).Canvas.Brush.Color := clmoneygreen;
    S := TStringGrid(Sender).Cells[ACol, ARow];
    R := TStringGrid(Sender).CellRect(ACol, ARow);
    TStringGrid(Sender).Canvas.FillRect(R);
    TStringGrid(Sender).Canvas.Font.Color := clTeal ;
    TStringGrid(Sender).Canvas.TextOut(R.Left, R.Top, S);
   end;
end;


procedure Tfm_main.Grid2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Cell: TGridCoord;
begin
  try
    if (Button = mbRight) then
    begin
      Cell := Grid2.MouseCoord(X,Y);
      if (Cell.X >= 0) and (Cell.Y >= 1) then
      begin
        Grid2.Col := Cell.X;
        Grid2.Row := Cell.Y;
      end;
    end;
  except
  end;
end;