Comprensione delle operazioni di trascinamento della selezione

"Trascinare e rilasciare" significa tenere premuto il pulsante del mouse del computer mentre il mouse viene spostato, quindi rilasciare il pulsante per rilasciare l'oggetto. Delphi semplifica la programmazione del trascinamento della selezione nelle applicazioni.

Puoi davvero trascinare e rilasciare da / verso dove vuoi, come da un modulo all'altro, o da Esplora risorse all'applicazione.

Esempio di trascinamento della selezione

Avviare un nuovo progetto e inserire un controllo immagine in un modulo. Utilizzare la finestra di ispezione oggetto per caricare un'immagine (proprietà Picture), quindi impostare DragMode proprietà a dmManual. Creeremo un programma che consentirà di spostare un runtime di controllo TImage utilizzando la tecnica di trascinamento della selezione.

DragMode

I componenti consentono due tipi di trascinamento: automatico e manuale. Delphi utilizza la proprietà DragMode per controllare quando l'utente è in grado di trascinare il controllo. Il valore predefinito questa proprietà è dmManual, il che significa che non è consentito trascinare i componenti all'interno dell'applicazione, tranne in circostanze speciali, per le quali è necessario scrivere il codice appropriato. Indipendentemente dall'impostazione per la proprietà DragMode, il componente si sposterà solo se viene scritto il codice corretto per riposizionarlo.

OnDragDrop

L'evento che riconosce il trascinamento della selezione viene chiamato evento OnDragDrop. Lo usiamo per specificare cosa vogliamo che accada quando l'utente rilascia un oggetto. Pertanto, se vogliamo spostare un componente (immagine) in una nuova posizione in un modulo, dobbiamo scrivere il codice per il gestore eventi OnDragDrop del modulo.

Il parametro Source dell'evento OnDragDrop è l'oggetto da eliminare. Il tipo del parametro source è TObject. Per accedere alle sue proprietà, dobbiamo eseguirne il cast sul tipo di componente corretto, che in questo esempio è TImage.

Accettare

Dobbiamo utilizzare l'evento OnDragOver del modulo per segnalare che il modulo può accettare il controllo TImage che vogliamo rilasciare su di esso. Sebbene il parametro Accept sia impostato su True, se non viene fornito un gestore eventi OnDragOver, il controllo rifiuta l'oggetto trascinato (come se il parametro Accept fosse cambiato su False).

Esegui il tuo progetto e prova a trascinare e rilasciare la tua immagine. Si noti che l'immagine rimane visibile nella sua posizione originale mentre si sposta il puntatore del mouse. Non è possibile utilizzare la procedura OnDragDrop per rendere invisibile il componente durante il trascinamento poiché questa procedura viene chiamata solo dopo che l'utente rilascia l'oggetto (se non del tutto).

DragCursor

Se si desidera modificare l'immagine del cursore presentata durante il trascinamento del controllo, utilizzare la proprietà DragCursor. I valori possibili per la proprietà DragCursor sono gli stessi di quelli per la proprietà Cursor. Puoi usare i cursori animati o quello che preferisci, come un file immagine BMP o un file cursore CUR.

beginDrag

Se DragMode è automatico, il trascinamento inizia automaticamente quando si preme un pulsante del mouse con il cursore sul controllo. Se hai lasciato il valore della proprietà DragMode di TImage sul valore predefinito di dmManual, devi utilizzare i metodi BeginDrag / EndDrag per consentire il trascinamento del componente. Un modo più comune di trascinare la selezione è impostare DragMode su dmManual e avviare il trascinamento gestendo gli eventi del mouse verso il basso.

Ora useremo il Ctrl + MouseDown combinazione di tasti per consentire il trascinamento. Impostare DragMode di TImage su dmManual e scrivere il gestore eventi MouseDown in questo modo:

BeginDrag accetta un parametro booleano. Se passiamo True (come in questo codice), il trascinamento inizia immediatamente; se False, non si avvia finché non spostiamo il mouse a breve distanza. Ricorda che richiede il tasto Ctrl.