Viele Jahre später ....
ich habe gerade das gleiche Problem.
Ich habe eine TScrollbox und darauf ein TImage welches über die ganze Scrollbox gezogen wird.
Ich habe darin ein Bild was genauso breit wie die Scrollbox, aber höher als die Scrollbox ist.
Ich würde nun ebenfalls gern mit der Maus darin hoch/runter scrollen. Aber ich bekomme das Event nicht abgefangen.
Weder auf der Form, noch in der Scrollbox.
Leider hat TImage kein Event dazu.
Edit : Ok hab es hinbekommen, aber anders als hier beschrieben
Code:
procedure Tmyapp.FormMouseWheelDown(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
var vsb : TControlScrollbar;
lp,mp : TPoint;
mr : TRect;
begin
GetCursorPos(mp);
lp := Scrollbox1.ClientToScreen(Point(0,0));
mr := Rect(lp,Point(lp.x+scrollbox1.width,lp.y+scrollbox1.Height));
if PtInRect(mr, mp) then begin
vsb := Scrollbox1.VertScrollBar;
vsb.Position := vsb.Position + vsb.Increment;
Handled := true;
log.lines.add('Scrollrad Form down');
end;
end;
boundrect hat gar nicht funktioniert, weil boundrect mir 0,0 angab weil die Scrollbox auf einem Panel saß. D.h ich musste erst einmal die Punkte auf dem Screen ermitteln. und onMouseWheel reagiert bei mir gar nicht.
Sorry fürs pushen
Guten Rutsch allen.