Per "trascinare e rilasciare" è necessario tenere premuto il tasto mouse del computer mentre si sposta il mouse, 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 usando il 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 trascinare i componenti attorno a l'applicazione non è consentita, tranne in circostanze speciali, per cui dobbiamo 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. Anche se accetta parametro il valore predefinito è True, se non viene fornito un gestore eventi OnDragOver, il controllo rifiuta l'oggetto trascinato (come se il parametro Accept fosse cambiato in False).
Esegui il tuo progetto e prova a trascinare e rilasciare la tua immagine. Si noti che l'immagine rimane visibile nella posizione originale durante il trascinamento il puntatore del mouse si sposta. 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 usare 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.
Ora useremo il Ctrl + MouseDown combinazione di tasti per consentire il trascinamento. Impostato TImageDragMode torna a dmManual e scrivi 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.