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.
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 < MoveX) and ((Image1.Left + Image1.Width + 25) > Scrollbox1.Width) then Image1.Left := Image1.Left + (X - StartX);
if (X > MoveX) and (Image1.Left < 0) then Image1.Left := Image1.Left + (X - StartX);
if (Y < MoveY) and ((Image1.Top + Image1.Height + 25) > Scrollbox1.Height) then Image1.Top := Image1.Top + (Y - StartY);
if (Y > MoveY) and (Image1.Top < 0) 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;