我希望TImage的衍生版本在被单击时跟随游标,并在再次被单击时停止跟随。
为此,我创建了一个名为“附加”的指针,该指针指向TImage或派生对象。

var Attached: ^TImage;

我还将Timage的派生对象设置为在单击过程ChangeAttachState时调用它。

现在,在ChangeAttachState过程中,我想更改它在单击的Image上指向的指针,或在已经附加Image时指向nil的指针。在代码中:
procedure TForm1.ChangeAttachState(Sender:TObject);
begin
  if Attached = nil then
    Attached := @Sender
  else
    Attached := nil;
end;

但是,行'Attached:= @Sender'似乎不起作用,当我想使用指向指针的图像即向右移动图像时会导致访问冲突。

我认为指针指向错误的位置。如何使指针指向正确的保存地址或使单击的图像通过其他方法跟随鼠标?

(我希望我使用正确的技术术语,因为英语不是我的母语)

最佳答案

一个对象已经是一个指针,将Attached声明为TImage(与^TImage相对),然后可以像在“ChangeAttachedState”(而不是Attached := Sender as TImage)中的Attached := @Sender一样为其分配它。

然后,您可以在表单上附加一个鼠标移动处理程序,如下所示:

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Assigned(Attached) then begin
    Attached.Left := X;
    Attached.Top := Y;
  end;
end;

关于image - Delphi 7 :Attach Image to Mouse,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13035693/

10-09 10:09