:ciao:
Come posso creare una serie di oggetti simili ma che rispondano a eventi diversi? Mi spiego meglio.
Ho creato:
' Gambas class file
Public But As Button
Public Sub PictureBox1_Drop()
'VUOTO PER RICEVERE
End
Public Sub Button1_MouseDown()
With But = New Button(Me) As "Bottone1"
.H = 50
.W = 50
.X = 150
.Y = 150
End With
Print But.name 'per controllo
End
Public Sub Bottone1_MouseDrag()
But.Drag("")
End
Public Sub PictureBox1_DragMove()
With But
.X = Drag.X
.Y = Drag.Y
End With
End
che ovviamente prevede una PictureBox1 e un Button1 nel form relativo.
Quando premo Button1 creo un nuovo pulsante se premo di nuovo, un'altro, ma rispondono tutti e due allo stesso evento (Button1).
Come faccio a creare una sequenza di Pulsanti che rispondano ad eventi diversi?
Spero di essere stato chiaro!
Nel wiki ho trovato un capitolo che forse vorrebbe spiegare questo caso:
http://www.gambas-it.org/wiki/index.php?title=Creare_pi%C3%B9_oggetti_del_medesimo_tipo (http://www.gambas-it.org/wiki/index.php?title=Creare_pi%C3%B9_oggetti_del_medesimo_tipo)
ma è in attesa di riempimento :)
:ciao:
Non so se questo ti può aiutare, devi scrivere "bottone" in group del button1 ma non l'ho provato sul tuo progetto perché devo andare a mangiare:
Private i As Integer
Public Sub bottone_Click()
Dim But As Control
Inc i
If Last.Name = "Button1" Then
With But = New Button(Me) As "bottone"
.H = 50
.W = 50
.X = 150
.Y = 150
.Name = "Button" & i
End With
Endif
Print But.name 'per controllo
End
:ciao:
probabilmente non hai attivato il drop nella Picturebox.
Sì, hai ragione. :-[ ;D
speravo che
Puoi più semplicemente fare:
Private n As Integer
.....
.....
Public Sub Button1_MouseDown()
With But = New Button(Me) As "Bottone" & CStr(n)
.....
Resta però il problema delle sotto-procedure degii eventi: vanno scritte preliminamente. Quindi salta tutta l'idea iniziale.
La soluzione è quella di Gianluigi... pre-pasti :D
Unico Gruppo per gli eventi, e distingui ciascun bottone con la parola chiave Last.
...però non capisco il codice che ha scritto. :-\
Io porrei Last nella sottoprocedura dell'Evento sollevato; evento comune all'unico Gruppo al quale appartengono i soli nuovi Bottoni creati da Button1.
Secondo me l'uso di DnD per questo non serve, puoi spostare soltanto senza dover trascinare
' Gambas class file
'
Private But As Control
Private i As Integer = 1
Private s As String
Private px As Integer
Private py As Integer
Public Sub bottone_Click()
If Last.Name = "Button1" Then
Inc i
With But = New Button(Me) As "bottone"
.H = 50
.W = 50
.X = 150
.Y = 150
.Name = "Button" & i
.Text = i - 1
End With
Endif
Print Last.Name 'per controllo'
End
Public Sub bottone_MouseMove()
If Mouse.Right Then Return
If s <> "Button1" Then
With But
.X += Mouse.X - px
.Y += Mouse.Y - py
End With
Endif
End
Public Sub bottone_MouseDown()
Dim c As Control
If Mouse.Right Then Return
s = Last.Name
For Each c In Me.Controls
If c.Name = s Then
But = c
Break
Endif
Next
px = Mouse.X
py = Mouse.Y
If s <> "Button1" Then But.Mouse = Mouse.SizeAll
End
Public Sub bottone_MouseUp()
If Mouse.Right Then Return
But.Mouse = Mouse.Default
End
:ciao: