【问题标题】:Delphi 7:Attach Image to MouseDelphi 7:将图像附加到鼠标
【发布时间】:2012-10-13 16:40:42
【问题描述】:

我希望 TImage 的派生项在单击光标时跟随光标,并在再次单击光标时停止跟随。 为此,我创建了一个名为 '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' 行似乎不起作用,当我想使用指针将图像向右移动时会导致访问冲突。

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

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

【问题讨论】:

    标签: image delphi pointers sender


    【解决方案1】:

    一个对象已经是一个指针,将你的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;
    

    【讨论】:

    • 效果很好,谢谢!不知道这种可能性。
    猜你喜欢
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    相关资源
    最近更新 更多