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

Da Gambas-it.org - Wikipedia.
Riga 4: Riga 4:
  
 
Otterremo lo spostamento concreto ed effettivo dell'oggetto sfruttando le proprietà ''Drag.X'' e ''Drag.Y'' della Classe ''Drag'' .
 
Otterremo lo spostamento concreto ed effettivo dell'oggetto sfruttando le proprietà ''Drag.X'' e ''Drag.Y'' della Classe ''Drag'' .
 
  
 
==Spostare un solo Oggetto==
 
==Spostare un solo Oggetto==
Riga 32: Riga 31:
 
   End With
 
   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:
 +
Private x As Short
 +
Private y As Short
 +
 +
 +
'''Public''' Sub Form_Open()
 +
 
 +
  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()
 +
 +
<FONT Color=gray>' ''Fa sì che durante lo spostamento della "Label" il puntatore del mouse resti nel punto della "Label" ove si è cliccato:''</font>
 +
  With Label1
 +
    .X = Drag.X - x
 +
    .Y = Drag.Y - y
 +
  End With
 +
   
 
  '''End'''
 
  '''End'''
  
  
==Spostare due o più Oggetti==
+
==Spostare un Oggetto fra molti==
 
Nell'esempio che segue saranno creati dinamicamente più "''Button''", che potranno essere spostati liberamente dall'utente.
 
Nell'esempio che segue saranno creati dinamicamente più "''Button''", che potranno essere spostati liberamente dall'utente.
 
  Private bt As Button
 
  Private bt As Button

Versione delle 16:33, 4 ott 2020

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.

In vero, non trascineremo con tali eventi del Drag 'n Drop l'oggetto in quanto tale, un elemento legato ad una sua proprietà, come ad esempio del testo (anche se realmente assente) oppure una immagine (ovviamente anche trasparente) posta in una Picture .

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:

Private x As Short
Private y As Short


Public Sub Form_Open()
 
 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 bt As Button
Private i As Integer


Public Sub Button1_Click()
 
  Inc i
  
  With bt = New Button(PictureBox1) As "Tasto"
    .X = 10 + i * 25
    .Y = 10 + i * 25
    .W = 20.
    .H = 20
    .Name = CStr(i)
    .Text = CStr(i)
    .Background = Color.Orange
  End With
  
End


Public Sub Tasto_MouseDrag()
  
  bt = Last
  
  Last.Drag("")
  
End


Public Sub PictureBox1_DragMove()
  
  With bt
    .X = Drag.X
    .Y = Drag.Y
  End With
  
End
 
 
Public Sub Button2_Click()
  
  Me.close
  
End