Autore Topic: [RISOLTO] click su gruppo di controlli  (Letto 697 volte)

Offline Cocirio

  • Grande Gambero
  • ***
  • Post: 126
  • Sba(di)gliando s'impapera :-).
    • Mostra profilo
[RISOLTO] click su gruppo di controlli
« il: 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.
« Ultima modifica: 12 Giugno 2015, 17:03:39 da Cocirio »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: click su gruppo di controlli
« Risposta #1 il: 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
« 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.244
  • Tonno verde
    • Mostra profilo
Re: click su gruppo di controlli
« Risposta #2 il: 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
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: click su gruppo di controlli
« Risposta #3 il: 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.
« 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.244
  • Tonno verde
    • Mostra profilo
Re: click su gruppo di controlli
« Risposta #4 il: 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:
« Ultima modifica: 12 Giugno 2015, 00:42:30 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: click su gruppo di controlli
« Risposta #5 il: 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.
« 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 Cocirio

  • Grande Gambero
  • ***
  • Post: 126
  • Sba(di)gliando s'impapera :-).
    • Mostra profilo
Re: click su gruppo di controlli
« Risposta #6 il: 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à.

Offline Cocirio

  • Grande Gambero
  • ***
  • Post: 126
  • Sba(di)gliando s'impapera :-).
    • Mostra profilo
Re: click su gruppo di controlli
« Risposta #7 il: 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