Autore Topic: Come istanziare più oggetti con eventi diversi?  (Letto 714 volte)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Come istanziare più oggetti con eventi diversi?
« il: 08 Gennaio 2016, 11:07:26 »
 :ciao:
Come posso creare una serie di oggetti simili ma che rispondano a eventi diversi? Mi spiego meglio.
Ho creato:
Codice: [Seleziona]
' 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
ma è in attesa di riempimento :)

 :ciao:
« Ultima modifica: 08 Gennaio 2016, 11:08:10 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.317
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #1 il: 08 Gennaio 2016, 11:32:55 »
Io non ho capito cosa vuoi dire con: "Pulsanti che rispondano ad eventi diversi".    ???
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #2 il: 08 Gennaio 2016, 11:38:50 »
Se intendi sapere quale pulsante è stato premuto devi usare Last

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #3 il: 08 Gennaio 2016, 11:45:13 »
Questa recente discussione forse potrebbe ispirarti.

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #4 il: 08 Gennaio 2016, 11:49:27 »
 :ciao: a tutti e due, premendo il pulsante Button1, creo un nuovo pulsante che poi posso draggare e droppare(!) sulla picturebox1.
Quel nuovo pulsante può generare  eventi Bottone1 (Bottone1_xxx ecc).
Ora, se lo premo una seconda volta, mi genera un nuovo bottone ma questo nuovo elemento genera sempre eventi Bottone1, vorrei che generasse eventi Buttone2 ecc. in modo da usare i due nuovi Bottoni separatamente.
 :)
« Ultima modifica: 08 Gennaio 2016, 11:50:06 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.317
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #5 il: 08 Gennaio 2016, 11:58:56 »
un nuovo pulsante che poi posso draggare e droppare(!) sulla picturebox1.
A me 'sta cosa non funziona.    ???
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #6 il: 08 Gennaio 2016, 12:01:54 »
 :P..a me si!

Ti allego "tutto" il progetto! ;D
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.317
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #7 il: 08 Gennaio 2016, 12:16:50 »
..a me si!
Ah, lo spostamento del bottone stando all'interno della PictureBox. Sì, provando il tuo esempio, funziona.

Dunque, per quel che riguarda il problema che hai posto, se ho capito bene, mi pare che tu voglia sostanzialmente che ogni nuovo Bottone sia attribuito ad un Gruppo degli eventi diverso.
Questa circostanza però ti impone la presenza nel codice di sub-routine preesistenti con i nomi di ciascun Gruppo che eventualmente andrai a creare.... ma come fai a sapere a priori  :-\ quanti nuovi Bottoni, e dunque quanti eventi, saranno creati ?   

Ritengo che il suggerimento di Gianluigi sia il più adeguato.
« Ultima modifica: 08 Gennaio 2016, 12:18:34 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #8 il: 08 Gennaio 2016, 12:27:54 »
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:
Codice: [Seleziona]
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:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #9 il: 08 Gennaio 2016, 12:28:31 »
Citazione
Ah, lo spostamento del bottone stando all'interno della PictureBox. Sì, provando il tuo esempio, funziona.
probabilmente non hai attivato il drop nella Picturebox.
Citazione
ma come fai a sapere a priori quanti nuovi Bottoni
... allora non ero fuori strada (anch'io ero arrivato a questa constatazione) speravo che con un ciclo FOR si potesse
scrivere una roba tipo

FOR i =0 To 3
 With But = New Button(Me) As ("Bottone" & i)
NEXT

lo so non funziona!
 :hard:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.317
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #10 il: 08 Gennaio 2016, 12:30:01 »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #11 il: 08 Gennaio 2016, 12:37:53 »
Grazie Gianluigi, anch'io sono prossimo a riempire la panza!
Poi ci provo!

Buompetito :)
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.317
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #12 il: 08 Gennaio 2016, 12:38:14 »
probabilmente non hai attivato il drop nella Picturebox.
Sì, hai ragione.   :-[    ;D


speravo che
Puoi più semplicemente fare:
Codice: [Seleziona]
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.
« Ultima modifica: 08 Gennaio 2016, 12:43:10 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #13 il: 08 Gennaio 2016, 13:53:33 »
Scusate ho inserito involontariamente un errore:
NO:
Codice: [Seleziona]
Dim But As Control
SI:
Codice: [Seleziona]
Private But As Control

 :ciao:

Dimenticavo: Inc va all'interno di If
« Ultima modifica: 08 Gennaio 2016, 14:07:38 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Come istanziare più oggetti con eventi diversi?
« Risposta #14 il: 09 Gennaio 2016, 09:34:55 »
 :ciao:
@Vuott
Citazione
...però non capisco il codice che ha scritto.   :-\
intendi lo scopo di produrre pulsanti (Bottoni) differenti?
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)