Schau doch mal nach, was PScrollBox.ClientRect und AScrollBox.ClientRect jeweils zurückgeben - dann sollte es dir klar werden, was da schief geht.
Aber warum so kompliziert?
Delphi-Quellcode:
procedure TForm162.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
vsb: TControlScrollbar;
ctrl: TControl;
begin
ctrl := ControlAtPos(ScreenToClient(MousePos), false, true, true);
while (ctrl <> nil) and not (ctrl is TScrollBox) do begin
ctrl := ctrl.Parent;
end;
if ctrl is TScrollBox then begin
vsb := TScrollBox(ctrl).VertScrollBar;
vsb.Position := vsb.Position - Sign(WheelDelta)*vsb.Increment;
Handled := true;
end;
end;
Ich habe eine Form1 + Panel1 als Parent. Dann öffne ich eine Form2 mit Scrollbox auf dem Form1.Panel1.Parent. Ab dann funktioniert der Code nicht mehr. Muss ich da noch über Findcomponent exakt den Control zuweisen?