AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bild in Scrollbox mit Maus verschieben

Ein Thema von BlueStarHH · begonnen am 15. Mai 2009 · letzter Beitrag vom 14. Feb 2013
Antwort Antwort
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
849 Beiträge
 
Delphi 11 Alexandria
 
#1

Bild in Scrollbox mit Maus verschieben

  Alt 15. Mai 2009, 19:57
Hallo,

ich habe eine TScrollbox, die ein TImage enthält. Das TImage ist größer als die Scrollbox. Wird nun mit der linken Maustatste auf das Bild geklickt, die Maustaste gedrück gehalten und die Maus bewegt, soll die Scrollbox in die Richtung der Mausbewegung scrollen. Also ein verschieben des Bildes mit der Maus. In OnMouseDown vom Bild könnte man sich dazu den ersten geklickten Punkt merken und in OnMouseMove dann irgendwie mit der aktuellen Mausposition verrechnen. Nur wie? Danke!
  Mit Zitat antworten Zitat
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, 20: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
Spectre

Registriert seit: 29. Jan 2013
Ort: Hamburg
65 Beiträge
 
Delphi XE2 Architect
 
#3

AW: Bild in Scrollbox mit Maus verschieben

  Alt 14. Feb 2013, 14:25
bei diesem code aktualisieren sich die scrollbars nicht bevor ich nicht mit der maus über eben diese gehe.

scrollbar.refresh, realign, repaint funktioniert nicht. interessanterweise funktioniert es wenn ich scollbar.refresh in einem knopf habe, in einem timer funktioniert das jedoch nicht, sogar wenn ich den timer den knopf klicken lasse oO

häckchen bei tracking setzen geht auch nicht wirklich ...ich benutze alphaskins, falls das wichtig ist
danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz