Differenze tra le versioni di "Spostare con il mouse un Controllo grafico generato in una DrawingArea"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Il codice necessario per creare e per spostare all'interno di una ''DrawingArea'' un proprio Oggetto grafico "''figlio''" è abbastanza semplice. <SUP>[[[#Note|nota 1]]&#...")
 
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Il codice necessario per creare e per spostare all'interno di una ''DrawingArea'' un proprio Oggetto grafico "''figlio''" è abbastanza semplice. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
+
Il seguente codice ci consente di creare e di spostare all'interno di una ''DrawingArea'' un proprio Oggetto grafico ''Figlio''. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
 
  Private DrawingArea1 As DrawingArea
 
  Private DrawingArea1 As DrawingArea
 
  Private lb As Label
 
  Private lb As Label
 
  Private i As Integer
 
  Private i As Integer
Private spx As Short
 
Private spy As Short
 
 
   
 
   
 
   
 
   
Riga 20: Riga 18:
 
  End
 
  End
 
   
 
   
  Public Sub DrawingArea1_MouseDown()
+
 +
  Public Sub DrawingArea1_MouseUp()
 
   
 
   
 
  <FONT Color=gray>' ''Se non si è cliccato con il tasto sinistro del mouse, si esce dalla routine:''</font>
 
  <FONT Color=gray>' ''Se non si è cliccato con il tasto sinistro del mouse, si esce dalla routine:''</font>
Riga 26: Riga 25:
 
   
 
   
 
   Inc i
 
   Inc i
 
+
 
  <FONT Color=gray>' ''Genera e imposta una "Label", assegnadola come "figlia" alla "DrawingArea":''</font>
 
  <FONT Color=gray>' ''Genera e imposta una "Label", assegnadola come "figlia" alla "DrawingArea":''</font>
 
   With lb = New Label(DrawingArea1) As "Etichetta"
 
   With lb = New Label(DrawingArea1) As "Etichetta"
    .X = Mouse.X
 
    .Background = Color.SoftOrange
 
    .Border = Border.Raised
 
 
     .Text = " Label " & CStr(i)
 
     .Text = " Label " & CStr(i)
  End With
 
   
 
End
 
 
Public Sub DrawingArea1_MouseMove() 
 
 
 
<FONT Color=gray>' ''Se non si è cliccato con il tasto sinistro del mouse, si esce dalla routine:''</font>
 
  If Not Mouse.Left Then Return
 
 
  DrawingArea1.Mouse = 18
 
  lb.X = Mouse.X
 
  lb.Y = Mouse.Y
 
 
 
End
 
 
Public Sub DrawingArea1_MouseUp()
 
 
<FONT Color=gray>' ''Se non si è cliccato con il tasto sinistro del mouse, si esce dalla routine:''</font>
 
  If Not Mouse.Left Then Return
 
 
  DrawingArea1.Mouse = Mouse.Default
 
 
 
  With lb
 
 
     .W = .Font.TextWidth(.Text) + 5
 
     .W = .Font.TextWidth(.Text) + 5
 
     .H = .Font.TextHeight(.Text)
 
     .H = .Font.TextHeight(.Text)
 +
    .X = Mouse.X
 
     .Y = Mouse.Y - .H
 
     .Y = Mouse.Y - .H
 +
    .Background = Color.SoftOrange
 +
    .Border = Border.Raised
 
   End With
 
   End With
 
      
 
      
  End  
+
  End
 
   
 
   
Public Sub Etichetta_MouseDown()
 
 
 
  Select Case Mouse.Button
 
    Case 1
 
      spx = Mouse.X
 
      spy = Mouse.Y
 
    Case 2          <FONT Color=gray>' ''Se si clicca con il tasto destro del mouse, la "Label" '''puntata''' viene distrutta''</font>
 
      Last.Delete
 
  End Select
 
 
 
End
 
 
   
 
   
 
  Public Sub Etichetta_MouseMove()
 
  Public Sub Etichetta_MouseMove()
Riga 79: Riga 44:
 
   Last.Mouse = 18
 
   Last.Mouse = 18
 
   With Last
 
   With Last
     .X = .X + Mouse.X - spx
+
     .X = .X + Mouse.X - Mouse.StartX
     .Y = .Y + Mouse.Y - spy
+
     .Y = .Y + Mouse.Y - Mouse.StartY
 
   End With
 
   End With
 
    
 
    
 
  End
 
  End
 +
 
   
 
   
 
  Public Sub Etichetta_MouseUp()
 
  Public Sub Etichetta_MouseUp()
Riga 94: Riga 60:
  
 
=Note=
 
=Note=
[1] Si rimanda più in generale sugli Oggetti grafici alla seguente pagina: [[Spostare oggetti con il mouse all'interno di un contenitore senza Drag & Drop]].
+
[1] Vedere anche le seguenti pagine:
 +
* [[Spostare oggetti con il mouse all'interno di un contenitore senza Drag & Drop]].
 +
* [[Creare e distruggere un Controllo grafico in una DrawingArea‎]]

Versione attuale delle 14:52, 27 giu 2024

Il seguente codice ci consente di creare e di spostare all'interno di una DrawingArea un proprio Oggetto grafico Figlio. [nota 1]

Private DrawingArea1 As DrawingArea
Private lb As Label
Private i As Integer


Public Sub _new()

 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With
 With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
   .Background = Color.White
 End With

End


Public Sub DrawingArea1_MouseUp()

' Se non si è cliccato con il tasto sinistro del mouse, si esce dalla routine:
 If Not Mouse.Left Then Return

 Inc i

' Genera e imposta una "Label", assegnadola come "figlia" alla "DrawingArea":
 With lb = New Label(DrawingArea1) As "Etichetta"
   .Text = " Label " & CStr(i)
   .W = .Font.TextWidth(.Text) + 5
   .H = .Font.TextHeight(.Text)
   .X = Mouse.X
   .Y = Mouse.Y - .H
   .Background = Color.SoftOrange
   .Border = Border.Raised
 End With
   
End


Public Sub Etichetta_MouseMove()
 
 Last.Mouse = 18
 With Last
   .X = .X + Mouse.X - Mouse.StartX
   .Y = .Y + Mouse.Y - Mouse.StartY
 End With
 
End


Public Sub Etichetta_MouseUp()
 
 Last.Mouse = Mouse.Default
 
End


Note

[1] Vedere anche le seguenti pagine: