Graphic Delphi

Title: move a TImage in a scrollbox with the mouse?
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Platzieren Sie auf einer TForm eine TScrollBox. F gen Sie dann in
die TScrollBox ein TImage ein und setzen Sie bei "Left" und "Top"
jeweils den Wert 0 sowie "Autosize" auf True.
Weisen Sie dem TImage ein Bild, dessen Ma e die der ScrollBox
berschreiten, zu.
Hinweis: Beim sehr schnellen Bewegen des Bildes treten allerdings
noch Fehler auf!
Tipp: Setzen Sie bei der TScrollBox unter "HorzScrollBar" und
"VertScrollBar" jeweils das "Tracking" auf True.
Um ein Bildflackern w hrend des Verschiebens zu vermeiden,
sollte w hrend dieser Aktion bei der TScrollBox "DoubleBuffered"
eingeschaltet sein.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

(( The extent of the Bitmap in the TImage should be larger than
the extent of the ScrollBox ))

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
var
StartX,
StartY,
MoveX,
MoveY: Integer;
IsMoved: Boolean;
implementation
procedure TForm1.Image1MouseDown(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;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if isMoved then
begin
if (X and
((Image1.Left + Image1.Width + 25) Scrollbox1.Width) then
Image1.Left := Image1.Left + (X - StartX);
if (X MoveX) and (Image1.Left then
Image1.Left := Image1.Left + (X - StartX);
if (Y and
((Image1.Top + Image1.Height + 25) Scrollbox1.Height) then
Image1.Top := Image1.Top + (Y - StartY);
if (Y MoveY) and (Image1.Top then
Image1.Top := Image1.Top + (Y - StartY);
MoveX := X;
MoveY := Y;
end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
tr1, tr2: TRect;
begin
if Button = mbLeft then
begin
IsMoved := False;
Scrollbox1.DoubleBuffered := False;
end;
end;