了解拖動操作

To"拖動"在鼠標(biāo)移動時按住計算機鼠標(biāo)按鈕,然后釋放按鈕以放下對象。Delphi可以輕松編程拖動和丟棄到應(yīng)用程序中。

您可以在您喜歡的任何地方拖動,例如從一種形式到另一種形式,或者從Windows Explorer到應(yīng)用程序。

拖動示例

啟動一個新項目并在一個表單上放置一個圖像控制。使用對象檢查器加載圖片(圖片屬性),然后將DragMode屬性設(shè)置為dmManual。我們'將創(chuàng)建一個程序,允許使用拖動技術(shù)移動TImage控制運行時。

DragMode

組件允許兩種類型的拖動:自動和手動。Delphi使用DragMode屬性來控制用戶何時能夠拖動控件。默認(rèn)值此屬性為dmManual,這意味著不允許在應(yīng)用程序周圍拖動組件,除非在特殊情況下我們必須為其編寫適當(dāng)?shù)拇a。無論DragMode屬性的設(shè)置如何,只有在寫入正確的代碼重新定位它時,組件才會移動。

OnDragDrop

識別拖動的事件稱為OnDragDrop事件。我們使用它來指定當(dāng)用戶丟棄對象時我們想要發(fā)生的事情。因此,如果我們想將組件(圖像)移動到表單上的新位置,我們必須為表單's OnDragDrop事件處理器編寫代碼。

OnDragDrop事件的源參數(shù)是正在丟棄的對象。源參數(shù)的類型是主題。要訪問其屬性,我們必須將其轉(zhuǎn)換為正確的組件類型,在此示例中為TImage。

接受

我們必須使用表格's OnDragOver event來表明表格可以接受TImage控制我們想放在它上。盡管Accept參數(shù)默認(rèn)為True,但如果未提供OnDragOver事件處理程序,則控件將拒絕拖動的對象(就好像Accept參數(shù)更改為False一樣)。

運行您的項目,然后嘗試拖動圖像。請注意,拖動鼠標(biāo)指針移動時,圖像在其原始位置保持可見。在拖動發(fā)生時,我們不能使用OnDragDrop過程來使組件不可見,因為只有在用戶丟棄對象(如果有的話)之后才調(diào)用此過程。

DragCursor

如果要更改拖動控件時顯示的光標(biāo)圖像,請使用DragCursor屬性。DragCursor屬性的可能值與光標(biāo)屬性的值相同。您可以使用動畫光標(biāo)或任何您喜歡的,如BMP圖像文件或CUR光標(biāo)文件。

BeginDrag

如果DragMode是dmAutomatic,則當(dāng)我們在控件上按下光標(biāo)時,拖動會自動開始。如果您've將TImage's DragMode屬性的值保留為dmManual的默認(rèn)值,則必須使用BeginDrag/EndDrag方法來拖動組件。拖動的更常見方法是將拖動模式設(shè)置為dmManual,并通過處理鼠標(biāo)放下事件來開始拖動。

現(xiàn)在,我們'將使用Ctrl+MouseDown鍵盤組合來進行拖動。將TImage's DragMode設(shè)置回dmManual,并像這樣編寫MouseDown事件處理程序:

BeginDrag采用布爾參數(shù)。如果我們通過True(如本代碼),則拖動立即開始;如果為False,則不開始'直到我們將鼠標(biāo)移動短距離。請記住,它需要Ctrl鍵。