Hallo himitsu,
vielen Dank für die schnelle Antwort.
Wenn ich Dich richtig verstanden habe, sollte mein Code jetzt so aussehen:
Delphi-Quellcode:
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var ZoomFaktorAlt: Extended;
Point,PointMouse: TPoint;
e: Extended;
begin
PointMouse:= Mouse.CursorPos;
if (Shift=[ssCtrl]) and
PtInRect(PSpielplan.ClientRect,PSpielplan.ScreenToClient(PointMouse)) then begin
// alter Zoomfaktor sichern
ZoomFaktorAlt:= PlanZoomFaktor;
// Mouserad auswerten
if WheelDelta<>0 then begin
if WheelDelta>0 then PlanResize(CBPlanZoom.Tag+10)
else PlanResize(CBPlanZoom.Tag-10);
// Änderungsfaktor berechnen und auf Panelposition anwenden
e:= PlanZoomFaktor/ZoomFaktorAlt;
Point.X:= MousePos.X-Round(MousePos.X*e);
Point.Y:= MousePos.Y-Round(MousePos.Y*e);
// Scrollbalken an Mouseposition anpasen
SBSpielplan.HorzScrollBar.Position:= SBSpielplan.HorzScrollBar.Position+Point.X;
SBSpielplan.VertScrollBar.Position:= SBSpielplan.VertScrollBar.Position+Point.Y;
end;
Handled:= True;
end;
end;
Jetzt springt der Bildausschnitt unter dem Cursor aber immer noch. Bei Hineinscrollen nach rechts unten, beim Herausscrollen nach links oben.
Oder habe ich da was falsch verstanden?
PS: Danke für den Hinweis!
Gruß
e-gon