有两点:
1。 MouseMove得到的是鼠标在Image上面的坐标,而你需要定位的是Image在Panel(form?)的坐标,这可能会造成你的Image超出可视区域。
2。 最好还加上一个MouseUp

解决方案 »

  1.   

    我将Image放在一个Panel上,并设定TImage 控 件 的AutoSize属性 True,Left 属性为0,Top属性为0。因此Image和Panel的坐标应该是一样的呀1
      

  2.   

    MoveEn:boolean;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if Button=mbLeft then
        begin
          iX0:=X;
          iY0:=Y;
          MoveEn:=true;
        end;
    end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    begin
      if (ssLeft in Shift)and(MoveEn) then
        begin
          Image1.Left:=Image1.Left+(X - iX0);
          Image1.Top:=Image1.Top+(Y- iY0);
        end;
    end;procedure TForm1.Image1MouseUp(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      MoveEn:=false;
    end;