im MouseDown weißt du ihm ja schon die Position zu.
GetCursorPos(oldPos)
Aber den Wert hat er noch nicht wenn du bloß mit der Maus auf dem Image bist - allerdings noch nicht geklickt hast.
Du könntest einfach in deiner OnMouseMove Methode überprüfen ob eine Taste gedrückt wurde:
Delphi-Quellcode:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
const
minWidth = 20;
minHeight = 20;
var
newPos: TPoint;
frmPoint : TPoint;
begin
if ssLeft in Shift // würde die Linke Taste gedrückt? (oder welche auch immer du drücken möchtest)
then with TImage(Sender) do
begin
GetCursorPos(newPos);
//Screen.Cursor := crSize;
Left := Left - oldPos.X + newPos.X;
Top := Top - oldPos.Y + newPos.Y;
oldPos := newPos;
end;
end;