Ovaj kod sam ja koristio za pomeranje slike mišem, kao i za pomeranje pomoću scrollbar-ova.
Prvo u "private" sekciji definišeš promenljive:
Code:
private
Dragging : BOOLEAN;
StartPressPoint : TPoint;
StartBitmapPoint: TPoint;
{ Private declarations }
Na formu postaviš panel, a na njega TImage, kao i dve TScrollBar komponente (van panela).
Evo ti primer mog koda, pa pokusaj!
Code:
procedure TForm5.ScrollBarHorizontalChange(Sender: TObject);
begin
Image1.Left := -ScrollBarHorizontal.Position;
end;
procedure TForm5.ScrollBarVerticalChange(Sender: TObject);
begin
Image1.Top := -ScrollBarVertical.Position;
end;
procedure TForm5.FormCreate(Sender: TObject);
begin
Dragging := False;
end;
procedure TForm5.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Dragging := TRUE;
StartPressPoint := Point(X,Y);
Image1.Cursor := CrSizeAll;
end;
procedure TForm5.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Dragging := FALSE;
Image1.Cursor := CrDefault;
end;
procedure TForm5.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
VAR
xDelta: INTEGER;
yDelta: INTEGER;
begin
IF Dragging
THEN BEGIN
IF ScrollBarHorizontal.Visible
THEN BEGIN
xDelta := X - StartPressPoint.X;
Image1.Left :=
Max(-Image1.Width + Panel1.Width, Min(0, StartBitmapPoint.X + xDelta));
ScrollBarHorizontal.Position := -Image1.Left;
StartBitmapPoint.X := Image1.Left;
END;
IF ScrollBarVertical.Visible
THEN BEGIN
yDelta := Y - StartPressPoint.Y;
Image1.Top := Max(-Image1.Height + Panel1.Height, Min(0, StartBitmapPoint.Y + yDelta));
ScrollBarVertical.Position := -Image1.Top;
StartBitmapPoint.Y := Image1.Top
END;
END;
end;