Differenze tra le versioni di "Spostare oggetti con il mouse all'interno di un contenitore senza Drag & Drop"

Da Gambas-it.org - Wikipedia.
(Nuova pagina: Vedremo di seguito come spostare un oggetto all'interno di un contenitore <SPAN style="text-decoration:underline">senza</span> l'uso del ''Drag 'n Drop''. =Semplice spostamento= Il s...)
 
Riga 1: Riga 1:
 
Vedremo di seguito come spostare un oggetto all'interno di un contenitore <SPAN style="text-decoration:underline">senza</span> l'uso del ''Drag 'n Drop''.
 
Vedremo di seguito come spostare un oggetto all'interno di un contenitore <SPAN style="text-decoration:underline">senza</span> 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.
  
  

Versione delle 22:14, 12 mar 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.


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


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