Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Il metodo Drag, la proprietà DragIcon e la proprietà DragMode (Tutorial completo)

Attraverso il metodo Drag è possibile trascinare rimanendo sull'area della form, un qualsiasi controllo ad eccezione di quelli definiti appunto 'non trascinabili' ossia i controlli Line, Menu, Shape, Timer e CommonDialog.
Drag, se naturalmente supportato dal controllo, permette inoltre di impostare una determinata azione sempre in riferimento al trascinamento.
Come si vedrà infatti nella tabella che viene di seguito le tre azioni fondamentali che possono essere compiute sono: inizio del trascinamento, cancellazione ed annullamento dell'operazione di trascinamento e termine del trascinamento.
Con l'interazione in diversi momenti di queste tre azioni si possono ricreare certamente gli effetti desiderati.
La sintassi con la quale fare riferimento al metodo è la seguente:

Ogetto.Drag(Azione)

dove naturalmente Oggetto indica il particolare controllo al quale applicare l'operazione di trascinamento. Se ad esempio si intende trascinare un controllo PictureBox sulla form, basterà indicare come oggetto Picture1.
Azione identifica invece una delle tre possibilità appena esposte. Ridefinendole con un maggiore grado di dettaglio, possiamo notare che:

vbCancel corrisponde al valore numerico 0 e permette di annullare un'operazione di trascinamento che era stata iniziata o impostata in precedenza;
vbBeginDrag corrisponde al valore 1 e permette di iniziare il procedimento di trascinamento del controllo;
vbEndDrag associata al valore 2, termina definitivamente il procedimento di trascinamento iniziato;

Ancora qualche dettaglio prima di vedere un esempio.
Innanzitutto L'utilizzo del metodo Drag per il controllo di un'operazione di trascinamento è necessario soltanto quando la proprietà DragMode dell'oggetto è impostata su 0 cioè vbManual che corrisponde al controllo manuale del trascinamento.
La proprietà DragMode può essere impostata al momento dello sviluppo attraverso la finestra Proprietà del controllo a cui si applica il metodo Drag oppure in fase di esecuzione e quindi da codice, impostando:

Oggetto.DragMode = vbManual

Inoltre, nel caso si voglia modificare il puntatore durante la pendenza della fase di trascinamento si può utilizzare la proprietà DragIcon, se supportata dall'oggetto.
Si vedrà meglio anche questa possibilità all'interno dell'esempio.
Per quanto riguarda invece le modalità di esecuzione del codice, bisogna necessariamente tenere conto al momento dello sviluppo che il metodo Drag funziona in genere in modalità sincrona, nel caso

Oggetto.DragMode = vbAutomatic

ovvero le istruzioni successive vengono eseguite solo al termine del completamento dell'operazione di trascinamento.
Se si utilizza però un metodo di trascinamento manuale (vbManual) il metodo funzionerà in modalità asincrona, permettendo quindi di compiere ulteriori operazioni separate anche al momento del trascinamento.
Questo rappresenta la grande differenza tra le due modalità di trascinamento previste.
Ecco per concludere l'esempio. Si vuole che un controllo PictureBox possa essere spostato manualmente alla pressione di un tasto del mouse su di esso e che con il rilascio di detto tasto il trascinamento s'interrompa. La PictureBox si sposterà poi in base alla posizione di rilascio del mouse. Bisogna tenere conto però che la posizione non potrà essere esatta al pixel in quanto sarebbe necessario un ulteriore calcolo della posizione in cui si è cliccato sul controllo, cosa che va al di là di questo articolo.
Alla pressione del tasto del mouse su Picture1 comincerà dunque il trascinamento la cui modalità è impostata su vbManual:

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture1.DragMode = vbAutomatic
Picture1.Drag (vbBeginDrag)
End Sub

Controlliamo quindi la posizione del puntatore sulla form una volta terminata l'operazione e spostiamo il controllo Picture1 in base alle coordinate X ed Y:

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Picture1.Left = X
Picture1.Top = Y
End Sub



Archivio:ndexed
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it