Gambas-it

Gambas3 => Programmazione => Topic aperto da: Cocirio - 11 Giugno 2015, 18:39:58

Titolo: [RISOLTO] click su gruppo di controlli
Inserito da: Cocirio - 11 Giugno 2015, 18:39:58
Salve. Ho visto che una serie di controlli si può raccogliere in un unico gruppo e che, a runtime o in fase di debug, qualunque sia il controllo cliccato viene provocato un evento riferito al gruppo. Ma è possibile riconoscere in qualche modo quale dei controlli sia stato cliccato?
Grazie.
Titolo: Re: click su gruppo di controlli
Inserito da: vuott - 11 Giugno 2015, 20:44:56
...usando Last.

Nell'esempio che segue, poniamo su un Form quattro oggetti (un Button, un ToggleButton, un CheckBox ed un RadioButton) e li accomuniamo ad un identico Gruppo di eventi:
Codice: gambas [Seleziona]
Public Sub Form_Open()

   Object.Attach(Button1, Me, "gruppo")
   Object.Attach(ToggleButton1, Me, "gruppo")
   Object.Attach(CheckBox1, Me, "gruppo")
   Object.Attach(RadioButton1, Me, "gruppo")

End


Public Sub gruppo_Click()
  
  Print Last.Name
  
End
Titolo: Re: click su gruppo di controlli
Inserito da: Gianluigi - 11 Giugno 2015, 21:20:23
L'esempio di vuott è più bello (molto più bello), ma siccome so già che ti lamenterai perché l'esempio dell'help su Last non funziona te lo allego completato in modo che funzioni  ;D

Codice: gambas [Seleziona]
Private hButton[4] As Button

Public Sub form_Open()  

 Dim i As Integer

  Me.Center
  For i = 1 To 3
    hButton[i] = New Button(Me) As "MioBottone"    
    With hButton[i]
      .X = i * 50
      .Y = 50
      .Width = 40
      .Height = 40      
      .Text = i      
    End With
  Next
  
End

Public Sub MioBottone_Click()

  Print Last.Text

End
Titolo: Re: click su gruppo di controlli
Inserito da: vuott - 12 Giugno 2015, 00:03:02
L'esempio di vuott è più bello
Nel mio gli oggetti erano posti manualmente dall'IDE, nel tuo vengono creati via codice.
Nulla di strano.   :-\

...in vero, va fatto notare che mentre nel mio, essendo quattro oggetti diversi, è più semplice l'identificazione del tipo di oggetto che ha sollevato l'evento; nel tuo, essendo  gli oggetti tutti appartenenti alla medesima Classe (Button), l'identificazione del Button, che ha sollevato l'evento, va effettuata utilizzando una sua proprietà (come il tuo esempio riporta) contenente un dato distintivo ed esclusivo rispetto agli altri.
Titolo: Re: click su gruppo di controlli
Inserito da: Gianluigi - 12 Giugno 2015, 00:28:29
Nel mio gli oggetti erano posti manualmente dall'IDE, nel tuo vengono creati via codice.
Nulla di strano.   :-\

...in vero, va fatto notare che mentre nel mio, essendo quattro oggetti diversi, è più semplice l'identificazione del tipo di oggetto che ha sollevato l'evento; nel tuo, essendo  gli oggetti tutti appartenenti alla medesima Classe (Button), l'identificazione del Button, che ha sollevato l'evento, va effettuata utilizzando una sua proprietà (come il tuo esempio riporta) contenente un dato distintivo ed esclusivo rispetto agli altri.

Già è vero, non l'avevo notato e come si dovrebbe fare per distinguerli se nel tuo esempio  avessimo due oggetti dello stesso tipo?

Non farci/fateci caso... è il caldo almeno spero. La domanda scema la lascio come monito a me stesso: Prima di parlare e scrivere occorre accendere il cervello  :donkey:
Titolo: Re: click su gruppo di controlli
Inserito da: vuott - 12 Giugno 2015, 00:52:09
come si dovrebbe fare per distinguerli se nel tuo esempio  avessimo due oggetti dello stesso tipo?


Non cambia niente sostanzialmente: una proprietà che li distingue è senz'altro il nome, che viene assegnato automaticamente quando gli oggetti vengono posizionati sul Form:
Codice: gambas [Seleziona]
    Public Sub Form_Open()  
      
      Object.Attach(Button1, Me, "gruppo")  
      Object.Attach(Button2, Me, "gruppo")  
      Object.Attach(Button3, Me, "gruppo")  
      Object.Attach(Button4, Me, "gruppo")  
      
    End  
      
      
    Public Sub gruppo_Click()  
      
     Print Last.Name  
      
    End  




Non farci/fateci caso... è il caldo almeno spero. La domanda scema la lascio come monito a me stesso: Prima di parlare e scrivere occorre accendere il cervello
Hai deciso di far fare tutto a me !  :violent:
Il tuo dubbio avresti potuto eliminarlo agevolmente da te facendo le prove.
Titolo: Re: click su gruppo di controlli
Inserito da: Cocirio - 12 Giugno 2015, 15:51:37
Uno alla volta, per carità! E non litigate o chiamo il preside! ;D
Ora lasciate sul mio banco i vostri elaborati, io li provo e domani vi metto un voto.
Largo al factotum del forum gaaambas. Tralalà, tralalà, tralalà.
Titolo: Re: click su gruppo di controlli
Inserito da: Cocirio - 12 Giugno 2015, 17:02:15
Ok, professori, avete fatto un buon lavoro. Come vedete il lavoro di gruppo dà i suoi frutti :).
Il preside sarà contento e vi promuoverà al vostro prossimo grado possibile (che c'è più di senatore? e più di gran maestro?).
Beh, torno serio. Ringrazio molto entrambi, perché ora il gioco che sto progettando, sarà più facile.
Intanto anche questa discussione si è conclusa bene. Risolto!
Ciao