Spostare con il mouse un Controllo grafico generato in una DrawingArea
Da Gambas-it.org - Wikipedia.
Versione del 7 giu 2023 alle 05:44 di Vuott (Discussione | contributi) (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]]&#...")
Il codice necessario per creare e per spostare all'interno di una DrawingArea un proprio Oggetto grafico "figlio" è abbastanza semplice. [nota 1]
Private DrawingArea1 As DrawingArea Private lb As Label Private i As Integer Private spx As Short Private spy As Short 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_MouseDown() ' 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" .X = Mouse.X .Background = Color.SoftOrange .Border = Border.Raised .Text = " Label " & CStr(i) End With End Public Sub DrawingArea1_MouseMove() ' Se non si è cliccato con il tasto sinistro del mouse, si esce dalla routine: If Not Mouse.Left Then Return DrawingArea1.Mouse = 18 lb.X = Mouse.X lb.Y = Mouse.Y 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 DrawingArea1.Mouse = Mouse.Default With lb .W = .Font.TextWidth(.Text) + 5 .H = .Font.TextHeight(.Text) .Y = Mouse.Y - .H End With End Public Sub Etichetta_MouseDown() Select Case Mouse.Button Case 1 spx = Mouse.X spy = Mouse.Y Case 2 ' Se si clicca con il tasto destro del mouse, la "Label" puntata viene distrutta Last.Delete End Select End Public Sub Etichetta_MouseMove() Last.Mouse = 18 With Last .X = .X + Mouse.X - spx .Y = .Y + Mouse.Y - spy End With End Public Sub Etichetta_MouseUp() Last.Mouse = Mouse.Default End
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.