我希望TImage的衍生物在点击时跟随Cursor,并在再次点击时停止跟踪。 为此,我创建了一个名为'Attached'的指针,指向TImage或衍生物。
var Attached: ^TImage;
我还设置了Timage的派生,在单击时调用过程ChangeAttachState。
现在,在ChangeAttachState过程中,我想更改它指向所单击图像的指针,或者在已附加图像时指向nil。在代码中:
procedure TForm1.ChangeAttachState(Sender:TObject);
begin
if Attached = nil then
Attached := @Sender
else
Attached := nil;
end;
但是,“Attached:= @Sender”这一行似乎不起作用,当我想使用指针即将图像向右移动时,会导致访问冲突。
我认为指针指向错误的位置。如何使指针指向正确的保存地址或使用其他方法使点击的图像跟随鼠标?
(我希望我使用正确的技术术语,因为英语不是我的母语)
答案 0 :(得分:6)
一个对象已经是一个指针,声明你的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;