AGB  ·  Datenschutz  ·  Impressum  







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

Scrollbox mit Mousemopve beeinflussen

Ein Thema von Prototypjack · begonnen am 8. Mai 2005 · letzter Beitrag vom 10. Mai 2005
Antwort Antwort
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#1

Scrollbox mit Mousemopve beeinflussen

  Alt 8. Mai 2005, 14:50
Hallo,
Ich habe in einer Scrollbox ein Bild das dei Scrollbox überschreitet.
ICh will jetzt per Onmousemove auf dem Image die Scrollbars der Scrollbox beeinflussen
Mein bisheriger Code funzt aber nicht so richtig:
Delphi-Quellcode:
if (X <> MoveX) then
    scrollbox1.horzScrollBar.Position :=scrollbox1.horzScrollBar.Position+ (X - StartX);
if (Y <> MoveY) then
    scrollbox1.VertScrollBar.Position :=scrollbox1.VertScrollBar.Position+ (Y - StartY);
Könnt Ihr mir irgendwie unter die Arme greifen?
Danke schonmal,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Scrollbox mit Mousemopve beeinflussen

  Alt 8. Mai 2005, 15:19
Ja, das ist mal wieder eine geniale Fehlerbeschreibung .
Was ist überhaupt MoveX?
Fragen über Fragen .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Scrollbox mit Mousemopve beeinflussen

  Alt 8. Mai 2005, 16:33
Hallo,
Erstmal Sry für die Ungenaue Beschreibung
X stellt den Punkt dar an dem die Maus gedrückt wurde und MoveX den Punkt zu dem die Maus bewegt wurde(Wegen der Berechnung der Differenz).
Mein Code funktioniert eigentlich schon aber man kann das Bild nicht ziehen sondern wenn man die Maus in eine Richtung bewegt scrollt es blitzschnell in die Richtung und nicht in dieser "Ziehgeschwindigkeit"
Kann mir wer helfen? ^^
Danke schonmal,
Proto
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Scrollbox mit Mousemopve beeinflussen

  Alt 8. Mai 2005, 17:27
Ich denke, das Problem ist, dass du auf das TImage.OnMouseMove reagierst und dadurch die Koordinaten relativ zum ganzen Image bekommst, du aber die relativ zum Ausschnitt brauchst. Du musst also die Image- in die Scrollbox-Koordinaten umrechnen:
Delphi-Quellcode:
X := X - Image1.Left;
Y := Y - Image1.Top;
Das ganze noch mit MoveX/Y und StartX/Y.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Scrollbox mit Mousemopve beeinflussen

  Alt 8. Mai 2005, 17:40
Hi, außerdem dürfte dabei auch wichtig sein, dass du dein X, nach einem jeweiligen Scrollen des Bildes, dann auch immer um einen entsprechenden Wert mitkorrigierst. Ansonsten würde dieses bis dato schon getätigte Scrollen ja auch gar nicht registriert und die Diff zwischen X und MoveX ggf. immer größer, obgleich du aber schon nachgescrollt hast.
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Scrollbox mit Mousemopve beeinflussen

  Alt 9. Mai 2005, 11:28
Hmm scheitn immer noch nicht richtig zu funktionieren
Hier einfach mal der gesamte "Bewegungs"-Code
Delphi-Quellcode:
procedure TPic_chldfrm.ImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    IsMoved := True;
    StartX := X;
    StartY := Y;
    MoveX := X;
    MoveY := Y;
    Scrollbox1.DoubleBuffered := True;
  end;
 cursor :=crhandpoint;
end;

procedure TPic_chldfrm.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if isMoved then
  begin
if (X <> MoveX) then
    scrollbox1.horzScrollBar.Position :=scrollbox1.horzScrollBar.Position+ round((X - StartX) div 2);
if (Y <> MoveY) then
    scrollbox1.VertScrollBar.Position :=scrollbox1.VertScrollBar.Position+ round((Y - StartY) div 2);

    //MoveX := X;
    //MoveY := Y;
    x :=MoveX;
    y :=MoveY;
  end;
end;

procedure TPic_chldfrm.ImageMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    IsMoved := False;
    Scrollbox1.DoubleBuffered := False;
  end;
  cursor :=crdefault;
end;
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Scrollbox mit Mousemopve beeinflussen

  Alt 9. Mai 2005, 16:10
Delphi-Quellcode:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if isMoved then
  begin

    if X <> StartX then begin
      scrollbox1.horzScrollBar.Position := scrollbox1.horzScrollBar.Position - (X-StartX);
    end;

    if Y <> StartY then
      scrollbox1.vertScrollBar.Position := scrollbox1.vertScrollBar.Position - (Y-StartY);

  end;
end;
Obiger Code in ImageMouseMove müsste eigentlich schon ausreichen. Start X brauche ich doch nicht jedesmal mitzukorrigieren, da ja beides auch Koordinaten (sowohl z.B. X als auch dann StartX) auf eben diesem Image selbst sind. Durch die Änderung von dann nur der ScrollBar.Position wird damit aber natürlich auch gleichzeitig das X immer wieder so lange mitverändert, bis diese aktuelle Mausposition dann eben auf dem Bild auch wieder auf der exakt gleichen Stelle herausgekommen ist, auf der du die Maus auch ursprünglich niedergedrückt hast (und dann ist eben wieder X = StartX und der Scrollvorgang damit zu Ende).
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Scrollbox mit Mousemopve beeinflussen

  Alt 10. Mai 2005, 13:15
Perfekt! So funktioniert es.
Danke an euch, für die Hilfe.
Gruß,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  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 16:23 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