Einzelnen Beitrag anzeigen

e-gon

Registriert seit: 7. Jul 2003
Ort: Stuttgart
165 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: Zoom mit Mausrad

  Alt Heute, 12:48
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
  Mit Zitat antworten Zitat