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

Da Gambas-it.org - Wikipedia.
Riga 11: Riga 11:
 
        
 
        
 
  '''End'''
 
  '''End'''
 
 
   
 
   
 
  '''Public''' Sub Button1_MouseDrag()
 
  '''Public''' Sub Button1_MouseDrag()
Riga 19: Riga 18:
 
   
 
   
 
  '''End'''
 
  '''End'''
 
 
   
 
   
 
  '''Public''' Sub Panel1_DragMove()
 
  '''Public''' Sub Panel1_DragMove()
Riga 34: Riga 32:
 
Durante lo spostamento di un Oggetto può essere utile che il puntatore del mouse resti nel punto dell'Oggetto ove si è cliccato.
 
Durante lo spostamento di un Oggetto può essere utile che il puntatore del mouse resti nel punto dell'Oggetto ove si è cliccato.
  
Mostriamo un possibile codice:
+
Mostriamo un possibile codice, nel quale si porrà sul ''Form'' un ''Panel'', e al di sopra del ''Panel'' si porrà una ''Label'':
 
  Private x As Short
 
  Private x As Short
 
  Private y As Short
 
  Private y As Short

Versione delle 09:22, 27 nov 2022

Di seguito abbiamo due paragrafi per mostrare rispettivamente come spostare uno e due o più oggetti oggetti all'interno di un contenitore mediante l'uso del Drag 'n Drop.

Otterremo lo spostamento concreto ed effettivo dell'oggetto sfruttando le proprietà Drag.X e Drag.Y della Classe Drag .

Spostare un solo Oggetto

L'esempio pratico, che mostriamo di seguito, prevede la presenza di un "Button" all'interno di un contenitore genitore "Panel". Tale Button verrà spostato all'interno del suo contenitore genitore mediante gli eventi del Drag 'n Drop:

Public Sub Form_Open()

' Attiviamo la capacità del contenitore "Panel1" di ricevere con il "_Drop()" il testo trascinato:
  Panel1.Drop = True
     
End

Public Sub Button1_MouseDrag()

' Per poter trascinare l'oggetto "Button1", dobbiamo almeno fittiziamente trascinare un elemento che faccia riferimento ad una falsa stringa:
  Button1.Drag("")

End

Public Sub Panel1_DragMove()

' L'oggetto "Button1" - durante lo spostamento del mouse nel contenitore "Panel1" - assume le coordinate del mouse medesimo:
  With Button1
    .X = Drag.X
    .Y = Drag.Y
  End With
  
End

Spostare un Oggetto facendo restare il puntatore del mouse dove si è cliccato

Durante lo spostamento di un Oggetto può essere utile che il puntatore del mouse resti nel punto dell'Oggetto ove si è cliccato.

Mostriamo un possibile codice, nel quale si porrà sul Form un Panel, e al di sopra del Panel si porrà una Label:

Private x As Short
Private y As Short


Public Sub Form_Open()
 
 Label1.Background = Color.Red

 Panel1.Drop = True
    
End

Public Sub Label1_MouseDown()
 
 x = Mouse.X
 y = Mouse.Y
  
End

Public Sub Label1_MouseDrag()
 
 Label1.Drag("")
  
End

Public Sub Panel1_DragMove()

' Fa sì che durante lo spostamento della "Label" il puntatore del mouse resti nel punto della "Label" ove si è cliccato:
 With Label1
   .X = Drag.X - x
   .Y = Drag.Y - y
 End With
   
End


Spostare un Oggetto fra molti

Nell'esempio che segue saranno creati dinamicamente più "Button", che potranno essere spostati liberamente dall'utente.

Private Panel1 As Panel
Private bt As Button


Public Sub Form_Open()

 With Panel1 = New Panel(Me) As "Panel1"
   .X = 0
   .Y = 0
   .W = Me.W
   .H = Me.H
   .Background = Color.Lighter(Color.Yellow)
 End With
 For b As Byte = 1 To 10
   With bt = New Button(Panel1) As "Tasto"
     .W = 20.
     .H = 20
     .X = 10 * (b + b)
     .Y = 10 * b
     .Name = CStr(b)
     .Text = CStr(b)
     .Background = Color.Orange
   End With
 Next

 Panel1.Drop = True

End

Public Sub Tasto_MouseDrag()

 bt = Last

 Last.Drag("")

End

Public Sub Panel1_DragMove()

 With bt
   .X = Drag.X
   .Y = Drag.Y
 End With

End

Public Sub Tasto_MouseDown()

 Me.Title = "Premuto tasto n. " & Last.Name

End