TAdvStringGrid shift-wheel horizontal scroll

I wanted to have Shift-MouseWheel scroll horizontally rather than vertically in the TAdvStringGrid. There is no built-in support for this. Here is the code that I'm using, which appears to be working properly. I'm posting in case someone else can use it, and so that Bruno can comment if it is incorrect.

procedure TDLabComparison.gdCompareMouseWheelDown(Sender: TObject; Shift:
    TShiftState; MousePos: TPoint; var Handled: Boolean);
var
  AGrid: TAdvStringGrid;
begin
  if ssShift in Shift then
  begin
    AGrid := TAdvStringGrid(Sender);

    if AGrid.Col < AGrid.ColCount - 1 then
    begin
      AGrid.Col := AGrid.Col + 1;
      TLinkObservers.PositionLinkPosChanged(AGrid.Observers);

      if (AGrid.Col - AGrid.LeftCol > AGrid.VisibleColCount ) and
         (AGrid.Col < AGrid.ColCount - 1) then
        AGrid.LeftCol := AGrid.LeftCol + 1;
    end;

    Handled := True;
  end;
end;

procedure TDLabComparison.gdCompareMouseWheelUp(Sender: TObject; Shift:
    TShiftState; MousePos: TPoint; var Handled: Boolean);
var
  AGrid: TAdvStringGrid;
begin
  if ssShift in Shift then
  begin
    AGrid := TAdvStringGrid(Sender);

    if AGrid.Col > AGrid.FixedCols then
    begin
      AGrid.Col := AGrid.Col - 1;
      TLinkObservers.PositionLinkPosChanged(AGrid.Observers);
    end;
    Handled := True;
  end;
end;

That is indeed a possible application level implementation.