Differenze tra le versioni di "Spostare oggetti con il mouse all'interno di un contenitore senza Drag & Drop"
Riga 32: | Riga 32: | ||
'''End''' | '''End''' | ||
+ | |||
+ | Se vogliamo che il puntatore del mouse capiti durante lo spostamento esattamente al centro dell'oggetto, allora scriveremo così: | ||
+ | '''Public''' Sub TextLabel1_MouseMove() | ||
+ | |||
+ | With TextLabel1 | ||
+ | .X = (Mouse.X + TextLabel1.X) - TextLabel1.W <FONT color=#B22222>/ 2</font> | ||
+ | .Y = (Mouse.Y + TextLabel1.Y) - TextLabel1.H <FONT color=#B22222>/ 2</font> | ||
+ | End With | ||
+ | |||
+ | '''End''' | ||
Versione delle 15:37, 28 mag 2013
Vedremo di seguito come spostare un oggetto all'interno di un contenitore senza l'uso del Drag 'n Drop.
Per effettuare lo spostamento dell'oggetto useremo l'evento _MouseMove() che viene sollevato quando il mouse, stando all'interno dell'oggetto, viene spostato, mentre un tasto del mouse è tenuto premuto.
Indice
Semplice spostamento
Il semplice spostamento può far riferimento alle posizioni assolute orizzontale e verticale del cursore del mouse all'interno dello schermo, ossia alle proprietà .ScreenX e .ScreenY della Classe Mouse; oppure può far riferimento alla posizione del cursore del mouse rispetto al contenitore genitore dell'oggetto da spostare.
Spostamento con riferimento alle proprietà .ScreenX e .ScreenY
Poniamo il caso di voler spostare con il mouse un Button all'interno di un Form:
Public Sub Button1_MouseMove() Button1.X = (Mouse.ScreenX - Me.ScreenX) - (Button1.W / 2) Button1.Y = (Mouse.ScreenY - Me.ScreenY) - (Button1.H / 1.2) End
Spostamento con riferimento alla posizione del cursore del mouse rispetto al contenitore
Poniamo il caso di voler spostare con il mouse una TextLabel all'interno di una ScrollView:
Public Sub TextLabel1_MouseMove() ' La "TextLabel" sarà posizionata in questo caso, rispetto al cursore del Mouse, ' alle coordinate come appresso determinate: With TextLabel1 .X = (Mouse.X + TextLabel1.X) - TextLabel1.W .Y = (Mouse.Y + TextLabel1.Y) - TextLabel1.H End With End
Se vogliamo che il puntatore del mouse capiti durante lo spostamento esattamente al centro dell'oggetto, allora scriveremo così:
Public Sub TextLabel1_MouseMove() With TextLabel1 .X = (Mouse.X + TextLabel1.X) - TextLabel1.W / 2 .Y = (Mouse.Y + TextLabel1.Y) - TextLabel1.H / 2 End With End
Spostamento in altro contenitore e modifica della proprietà Parent
Il caso che segue prevede lo spostamento di un oggetto (nell'esempio: un Button) dal Form in un Panel con conseguente modifica della sua proprietà Parent:
Public Sub Button1_MouseDown() With Button1 ' Solo per curiosità vediamo il contenitore Padre attuale dell'oggetto: Print .Parent.Name End With End Public Sub Button1_MouseMove() Button1.X = (Mouse.ScreenX - Me.ScreenX) - (Button1.W / 2) Button1.Y = (Mouse.ScreenY - Me.ScreenY) - (Button1.H / 1.2) End Public Sub Button1_MouseUp() With Button1 ' Si effettua la modifica del contenitore genitore dell'oggetto: ' il contenitore "Panel1" diventa il nuovo "Padre" dell'oggetto: .Reparent(Panel1, Mouse.X - Panel1.X) End With With Button1 Print .Parent.Name End With End