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

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Vedremo di seguito come spostare un oggetto all'interno di un contenitore mediante l'uso del ''Drag 'n Drop''. In vero, non trascineremo con tali eventi del ''Drag 'n Drop'' ...')
 
 
(16 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Vedremo di seguito come spostare un oggetto all'interno di un contenitore mediante l'uso del ''Drag 'n Drop''.
+
Di seguito abbiamo due paragrafi per mostrare rispettivamente come spostare uno e due o più Controlli 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 del Controllo sfruttando le Proprietà ".X" e ".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==
 
+
L'esempio pratico, che mostriamo di seguito, prevede la presenza di un ''Button'' <SPAN Style="text-decoration:underline">all'interno di un Contenitore "Genitore" ''Panel''</span>. Tale ''Button'' verrà spostato all'interno del suo Contenitore ''Genitore'' mediante gli Eventi del ''Drag 'n Drop'':
 
+
  Public Sub Form_Open()
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()
 
 
   
 
   
 
  <FONT Color=gray>' ''Attiviamo la capacità del contenitore "Panel1" di ricevere con il "_Drop()" il testo trascinato:''</font>
 
  <FONT Color=gray>' ''Attiviamo la capacità del contenitore "Panel1" di ricevere con il "_Drop()" il testo trascinato:''</font>
  Panel1.Drop = True
+
  Panel1.Drop = True
 
        
 
        
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_MouseDrag()
+
  Public Sub Button1_MouseDrag()
 
   
 
   
 
  <FONT Color=gray>' ''Per poter trascinare l'oggetto "Button1", dobbiamo almeno fittiziamente trascinare un elemento che faccia riferimento ad una falsa stringa:''</font>
 
  <FONT Color=gray>' ''Per poter trascinare l'oggetto "Button1", dobbiamo almeno fittiziamente trascinare un elemento che faccia riferimento ad una falsa stringa:''</font>
  Button1.Drag("")
+
  Button1.Drag("")
 +
 +
End
 +
 +
 +
Public Sub Panel1_DragMove()
 +
 +
<FONT Color=gray>' ''L'oggetto "Button1" - durante lo spostamento del mouse nel Contenitore "Panel1" - assume le coordinate del mouse medesimo:''</font>
 +
  With Button1
 +
    .X = Drag.X
 +
    .Y = Drag.Y
 +
  End With
 +
 +
End
 +
 
 +
===Spostare un Oggetto facendo restare il puntatore del mouse nel punto dell'Oggetto dove si è cliccato===
 +
Durante lo spostamento di un Oggetto grafico 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'':
 +
Public Sub Form_Open()
 +
 +
  Label1.Background = Color.Red
 +
 +
  Panel1.Drop = True
 +
   
 +
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 - Mouse.StartX
 +
    .Y = Drag.Y - Mouse.StartY
 +
  End With
 +
 +
End
 +
 
 +
==Spostare un Oggetto grafico fra molti==
 +
Nell'esempio che segue saranno creati dinamicamente più ''Button'' <SPAN Style="text-decoration:underline">all'interno di un Contenitore "Genitore" ''Panel''</span>, 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
 +
 
   
 
   
  '''End'''
+
  Public Sub Panel1_DragMove()
 
   
 
   
 +
  With bt
 +
    .X = Drag.X
 +
    .Y = Drag.Y
 +
  End With
 
   
 
   
  '''Public''' Sub Panel1_Drop()
+
  End
 
   
 
   
<FONT Color=gray>' ''L'evento "_Drop" deve essere comunque presente, anche senza alcuna istruzione all'interno della suo sub-routine,''
 
' ''per consentire regolarmente il rilascio dell'oggetto "Button1" all'interno del contenitore "Panel1".''</font> 
 
'''End'''
 
 
   
 
   
 +
Public Sub Tasto_MouseDown()
 
   
 
   
'''Public''' Sub Panel1_DragMove()
+
  Me.Title = "Premuto tasto n. " & Last.Name
 
   
 
   
  <FONT Color=gray>' ''L'oggetto "Button1" - durante lo spostamento del mouse nel contenitore "Panel1" - assume le coordinate del mouse medesimo:''</font>
+
  End
  With Button1
 
    .X = Drag.X
 
    .Y = Drag.Y
 
  End With
 
 
 
'''End'''
 

Versione attuale delle 06:54, 5 dic 2023

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

Otterremo lo spostamento concreto ed effettivo del Controllo sfruttando le Proprietà ".X" e ".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 nel punto dell'Oggetto dove si è cliccato

Durante lo spostamento di un Oggetto grafico 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:

Public Sub Form_Open()

 Label1.Background = Color.Red

 Panel1.Drop = True
   
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 - Mouse.StartX
   .Y = Drag.Y - Mouse.StartY
 End With

End

Spostare un Oggetto grafico fra molti

Nell'esempio che segue saranno creati dinamicamente più Button all'interno di un Contenitore "Genitore" Panel, 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