JohnLM 14 Posted 5 hours ago I am having trouble figuring this one out. I have a form with a tscrollbox and an timage. In the image1MouseMove event of the timage I have the following code; procedure TForm2.im1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin scrollbox1.vertScrollBar.Position := x; scrollbox1.horzScrollBar.Position := y; end; But it is not what I'd expect. What I am trying to do: 1. Lets say I have screenshot of my desktop and inserted into the timage. 2. And I resize the app's form smaller 3. Using the mouse, I want to click on the image and drag (or pan) around inside the form's scrollbox area so that I can see other parts of the image. What am I doing wrong and how can I fix this? TIA Share this post Link to post
Lajos Juhász 283 Posted 16 minutes ago You would like to move the scrollbar by the ammount the user have move the mouse to do so you will need two variables (private fields) that stores the previous mouse coordinates: procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin fPRevX:=X; fPrevY:=Y; end; Now when the user moves the mouse while the left button is pressed we can calculate the new position for the scrollbars: procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then begin scrollbox1.vertScrollBar.Position := scrollbox1.vertScrollBar.Position+fPrevY-Y; scrollbox1.horzScrollBar.Position := scrollbox1.horzScrollBar.Position+fPRevX-X; fPrevX:=X; fPrevY:=y; end; end; Share this post Link to post