2012-10-23 39 views
6

我想要TImage的衍生物在點擊時遵循光標,並在再次點擊時停止跟隨。 爲此,我創建了一個名爲'Attached'的指針,指向TImage或派生類。德爾福7:將圖像附加到鼠標

var Attached: ^TImage; 

我還設置了Timage的派生參數,以在其單擊時調用過程ChangeAttachState。

現在,在ChangeAttachState過程中,我想更改它指向單擊的圖像上的指針,或者指向已添加圖像時的nil。在代碼:

procedure TForm1.ChangeAttachState(Sender:TObject); 
begin 
    if Attached = nil then 
    Attached := @Sender 
    else 
    Attached := nil; 
end; 

但是,行「附:= @Sender」似乎並沒有工作,導致訪問衝突時,我想用指針即移動右圖。

我認爲指針指向錯誤的位置。如何使指針指向正確的保存地址或使點擊的圖像跟其他方法一起跟隨鼠標?

(我希望我用正確的技術術語,英語不是我的母語)

回答

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; 
+2

完美的作品,謝謝!不知道這種可能性。 – restcoser