>>304
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 FPreMousePoint :=
  Point( (ScreenToClient(Mouse.CursorPos).X - TImage(Sender).Left),
      (ScreenToClient(Mouse.CursorPos).Y - TImage(Sender).Top) );
 if Button = mbLeft then
  SetCaptureControl(TImage(Sender));
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
 if GetCaptureControl = TImage(Sender) then
  if ssLeft in Shift then
  begin
   with TImage(Sender) do
    BoundsRect :=
     Bounds( Self.ScreenToClient(Mouse.CursorPos).X - FPreMousePoint.X,
        Self.ScreenToClient(Mouse.CursorPos).Y - FPreMousePoint.Y,
        Width, Height );
 end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if Button = mbLeft then
  if GetCaptureControl = TImage(Sender) then
   SetCaptureControl(nil);
end;