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;