Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Bild in Scrollbox mit Maus verschieben

  Alt 15. Mai 2009, 19:46
Hallo,

so schwierig ist das gar nicht:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    :
  private
    FMouseAnchor : TPoint;
    FPanning : Boolean;
  end;

procedure TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  FMouseAnchor := Mouse.CursorPos; // absolute Position des Mauszeigers merken
  FPanning := True; // Verschieben wurde eingeleitet
end;

procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  CursorPos : TPoint;
  dx, dy : Integer;
begin
  if (not FPanning) then Exit; // Inhalt der Scrollbox nur bei gedrückter Maustaste bewegen

  CursorPos := Mouse.CursorPos;

  dx := CursorPos.X - FMouseAnchor.X; // Verschiebung in x-Richtung
  dy := CursorPos.Y - FMouseAnchor.Y; // Verschiebung in y-Richtung

  // horizontale/vertikale Scrollbar aktualisieren
  ScrollBox.HorzScrollBar.Position := ScrollBox.HorzScrollBar.Position - dx;
  ScrollBox.VertScrollBar.Position := ScrollBox.VertScrollBar.Position - dy;

  // "Schmieren" des Bildes vermeiden
  ScrollBox.Repaint;

  // absolute Position des Mauszeigers für nächsten Vergleich merken
  FMouseAnchor := CursorPos;
end;

procedure TForm1.ImageMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // Verschieben ist beendet
  FPanning := False;
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat