0

我需要沿 X 轴移动图像,当它到达定义的边界时,停止移动(我正在制作自己的轨迹栏)。我不知道如何定义边界。当我的代码到达边界时,它卡在那里并且无法移动。这是代码

var 
  PinCurrentPosition,PinStartingPosition:integer; 
  move:boolean;

procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered := True;
Image5.Picture.LoadFromFile('Untitled2.bmp');
PinStartingPosition:=Image5.Left;
end;

procedure TForm1.Image5MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if (button <> mbLeft) then move:=false
  else
  begin
    move:=true;
    PinCurrentPosition:=x;
  end;
end;

procedure TForm1.Image5MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if move and ((PinStartingPosition-75)<Image5.Left) 
 and ((PinStartingPosition+75)>Image5.Left) then
 Image5.Left:=Image5.Left+x-PinCurrentPosition;
end;

procedure TForm1.Image5MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
move:=false;
end;
4

1 回答 1

0

如果图像位于可移动区域之外,则应将 Else 添加到 Image5MouseMove 过程以更正图像位置:

procedure TForm1.Image5MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
    if 
      move and 
      (Image5.Left>(PinStartingPosition-75)) and
      (Image5.Left<(PinStartingPosition+75)) 
    then
      Image5.Left:=Image5.Left+x-PinCurrentPosition;
    else if Image5.Left<=(PinStartingPosition-75) then
      Image5.Left:= PinStartingPosition-75+1
    else if Image5.Left>=(PinStartingPosition+75) then
      Image5.Left:= PinStartingPosition+75-1; 
end;
于 2014-05-08T06:38:19.410 回答