# Eto Children of radiobuttonlist

**URL:** <https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157>\
**Category:** Scripting e Programmazione\
**Created:** [4 Maggio 2023, 5:14pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157 "2023-05-04T17:14:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [4 Maggio 2023, 5:14pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/1 "2023-05-04T17:14:36Z")

</div>

sto utilizzando un codice per gestire i radiobuttonlist in RCommon/Eto

```auto
items_to_disable = ["Mild steel", "4140"]

for rb in self.radiobuttonlist.Children:
    if isinstance(rb, Eto.Forms.RadioButton):
        if rb.Text in items_to_disable:
            rb.Enabled = False

```

preciso che per ciò che mi serve ho già modificato il tutto ed è funzionante  
ma questa parte linkata non comprendo al 100% il suo funzionamento

il ciclo va a prendere tutti gli elementi Children da radiobuttonlist  
poi usa **isinstance** e questa parte mi sfugge l’utilizzo  
(in pratica cosa fa compara rb con Eto.Forms.RadioButton?)

stavo tentando “senza il ciclo” di disabilitare un solo elemento radiobuttonlist tramite indici ecc ma nulla. . .

debbo passare obbligatoriamente per **isinstance** tramite il ciclo?

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [4 Maggio 2023, 5:56pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/2 "2023-05-04T17:56:57Z")

</div>

Scusa Salvio, si puo’ vedere qualcosa di piu’ dello script, se possibile ?  
( Non conosco Eto … ho trovato la documentazione della API.  
Sarebbe interessante capirci qualcosa di piu’ … Forse vedendo lo script …  
O forse no, non so. 😊 😄)

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [4 Maggio 2023, 6:56pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/3 "2023-05-04T18:56:02Z")

</div>

sempre a disposizione mr. Emilio 😉

> **[Is it possible to disable radiobuttons in an ETO form?](https://discourse.mcneel.com/t/is-it-possible-to-disable-radiobuttons-in-an-eto-form/129612)**
>
> I would like to disable certain radiobuttons based off of other selections. Is this possible? Something like this: Thanks, Dan

il file postato nel link da Clement, dove spiega anche qualcosa sul funzionamento  
quello che ha spiegato l’ho compreso, infatti l’avevo riscontrato nell’esecuzione  
ma ciò che non riesco a fare (se possibile) saltare il ciclo e le due condizioni

avevo provato con gl’indici ma non so se sia corretta come strada  
ps c’é quel `isinstance` che secondo me è la chiave di tutto  
ma non so come fuziona è la prima volta che lo vedo.

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [4 Maggio 2023, 7:56pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/4 "2023-05-04T19:56:41Z")

</div>

> [@0904](#):
>
> `isinstance`

isinstance verifica il tipo di un valore.  
[https://www.andreaminini.com/python/funzione-isinstance-python](https://www.andreaminini.com/python/funzione-isinstance-python)

Grazie per il link.  
Provo a capirci qualcosa. 🙂

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [4 Maggio 2023, 9:40pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/5 "2023-05-04T21:40:10Z")

</div>

> [@0904](#):
>
> ma ciò che non riesco a fare (se possibile) saltare il ciclo e le due condizioni

Questo non lo so …  
Ma ho provato a capire come funziona adesso.

Aggiungendo un **print** al ciclo, possiamo vedere quali sono i vari **Children**

```python
        for rb in self.radiobuttonlist.Children:
            print( 'Child => ' + str( rb ) )
            if isinstance(rb, Eto.Forms.RadioButton):
                if rb.Text in items_to_disable:
                    rb.Enabled = False

```

L’output e’ questo:

> Child =\> Eto.Forms.DynamicLayout  
> Child =\> Eto.Forms.RadioButton  
> Child =\> Eto.Forms.RadioButton  
> Child =\> Eto.Forms.RadioButton

Si vede che tra i Children e’ compreso anche un DynamicLayout.  
Per quello Clement ha aggiunto la verifica tramite **isinstance** :  
per lavorare solo sui Button.

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [4 Maggio 2023, 11:02pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/6 "2023-05-04T23:02:22Z")

</div>

> [@emilio](#):
>
> Aggiungendo un **print** al ciclo, possiamo vedere quali sono i vari **Children**

> [@emilio](#):
>
> Si vede che tra i Children e’ compreso anche un DynamicLayout.  
> Per quello Clement ha aggiunto la verifica tramite **isinstance** :  
> per lavorare solo sui Button.

esatto la prova col print l’avevo fatta anch’io

> [@0904](#):
>
> (in pratica cosa fa compara rb con Eto.Forms.RadioButton?)

e anche qui mi confermi la mia prima ipotesi quindi 👍

> [@emilio](#):
>
> [[Python] La funzione isinstance - Andrea Minini](https://www.andreaminini.com/python/funzione-isinstance-python)

questo ero fuori strada, nel senso, credevo che **isinstance** facesse parte di RCommon  
e quindi ero andato a controllare in quella guida, non credevo che facesse parte di Python

per questo poi successivamente avevo ipotizzare che oltre a comparare, avesse anche un’altra funzione.

ricapitolando a questo punto, il ciclo è semplice:  
si va a prendere tutti gli elementi Children in radiobuttonlist  
poi usa isinstance per prendere solo determinati elementi  
ed in fine con Text filtra i valori dalla lista per disabilitarli.

quindi non vedo il perché non sono riuscito ad escludere il ciclo

ps avevo anche provato ad mettere rb.Enabled = False dopo il for escludendo i due if  
i radiobuttonlist vengono tutti disabilitati come nell’esempio del codice, ma credo che  
in questo caso venga disabilitato tutto radiobuttonlist e non ogni singola opzione.

mah non vorrei che centrasse l’istanza della parola **self**. . .

edit:

oppure l’arcano si nasconde in **Children**

questo è quello che mi restituisce il print di **radiobuttonlist.Children** :

```auto
<Eto.Forms.Container+<get_Children>d__10 object at 0x000000000000002C [Eto.Forms.Container+<get_Children>d__10]>

```

e questo invece è il print di **radiobuttonlist.Properties**

```auto
Dictionary[object, object]({'Control.MouseDown.Instance' : True, 'Control.MouseUp.Instance' : True, <object object at 0x000000000000002D> : <Eto.Forms.DynamicLayout object at 0x000000000000002E [Eto.Forms.DynamicLayout]>, <object object at 0x000000000000002F> : <System.EventHandler`1[[System.EventArgs, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] object at 0x0000000000000030 [System.EventHandler`1[System.EventArgs]]>})

```

ri-edit:  
in Eto.Forms c’é proprio una classe Container che ha la proprietà **Children** dove spiega questo:

> Gets an enumeration of all contained child controls, including controls within child containers
> 
> Get: Children(self: Container) → IEnumerable[Control]

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [5 Maggio 2023, 5:54pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/7 "2023-05-05T17:54:02Z")

</div>

> [@0904](#):
>
> credevo che **isinstance** facesse parte di RCommon

RhinoCommon e’ una libreria di classi ( in C# credo ci sia poca scelta … 😉 )  
Non ci sono funzioni ‘libere’. Ci sono solo metodi appartenenti a qualche classe.  
Se prima del nome della funzione (isinstance) non c’e’ almeno un nome e un punto, non puo’ appartenere a RhinoCommon.  
Inoltre tutti i nomi di RhinoCommon iniziano con una maiuscola.

( Poi un ‘vecchio’ pythonista come te dovrebbe proprio conoscerla **isinstance** … 😉 )

> [@0904](#):
>
> quindi non vedo il perché non sono riuscito ad escludere il ciclo

Scusa, perche’ vorresti escluderlo ?.  
A me quanto fatto da Clement (che tra parentesi e’ molto in gamba) sembra un’ottima soluzione.  
Come dicevo, non sono esperto di Eto, ma dando un’occhiata alla documentazione non ho trovato nessun modo per fare quella operazione escludendo il ciclo.  
Ripeto: secondo me, se Clement ha fatto cosi’, vuol dire che e’ il modo migliore … o l’unico. 😉

> [@0904](#):
>
> in Eto.Forms c’é proprio una classe Container che ha la proprietà **Children**

Per forza, visto che lo script funziona … 😉 😄

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [5 Maggio 2023, 8:21pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/8 "2023-05-05T20:21:46Z")

</div>

> [@emilio](#):
>
> Inoltre tutti i nomi di RhinoCommon iniziano con una maiuscola.
> 
> ( Poi un ‘vecchio’ pythonista come te dovrebbe proprio conoscerla **isinstance** … 😉 )

in effetti sul fatto della libreria è vero, mi sarò fatto trascinare da una similitudine nella guida

![immagine](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/2X/7/7323afecc4e2ff19a37aea7c6e5620e7cb05ba80.png)

“vecchio pythonista” nel senso che mi farò vecchio prima di capirci qualcosa di buono. . . ahahaha  
lo sai che è giusto da quando ho iniziato a giocare con RCommon (inizio anno), che sto utilizzando  
i metodi e un pochino le classi, prima usavo Py come VBS in modo per così dire procedurale  
e come VBS i miei script in Py alla fine si basavano sulle semplici fubzioni tra cicli e if ecc

per il resto per carità, mi va bene anche che il metodo migliore o anche l’unico sia quello esposto,  
anche se fosse così, volevo capire del perché, nel senso, con che tipo di oggetto sto avendo a che fare,  
come posso gestirlo, e quali mezzi ho a disposizione per interagire con quest’oggetto?

ps e secondo me, questo dipende dal fatto che essendo all’inizio in questo tipo di programmazione,  
ancora debbo comprendere bene il funzionamento delle Classi e come si intreccia il tutto.  
infatti per ora riesco a trovare le soluzioni tra la guida (che per lo meno sto riuscendo a sfogliare)  
e qualche esempio che scovo in rete, ma purtroppo ancora non so il funzionamento che c’é dietro.

come dire, es: mi interessava sapere che ciò che volevo fare, gestire quell’oggetto con gl’indici  
come delle liste, in quel caso essendo che si trattava di altr’oggetto non lo si può gestire come una lista  
perché non ha gl’indici ma ha altre proprietà/metodi ecc ma chissà col tempo poi lo capirò 😉

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [5 Maggio 2023, 11:08pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/9 "2023-05-05T23:08:47Z")

</div>

> [@0904](#):
>
> non so il funzionamento che c’é dietro.
> 
> es: mi interessava sapere che ciò che volevo fare, gestire quell’oggetto con gl’indici  
> come delle liste, in quel caso essendo che si trattava di altr’oggetto non lo si può gestire come una lista  
> perché non ha gl’indici ma ha altre proprietà/metodi ecc ma chissà col tempo poi lo capirò

Se vuoi dire che vorresti capire perche’ la RadioButtonList funziona cosi’ …  
Non so se sia una cosa semplice.  
E lo stesso discorso vale per le altre classi di RhinoCommon e di Eto.  
Non e’ detto che ci sia una logica particolare dietro.  
Io piu’ che del perche’ mi interesserei del come.  
Come utilizzare queste classi, ma senza cercare chissa’ quale filosofia dietro ai metodi.  
E’ il modo che ha scelto McNeel per fare queste operazioni.  
Va bene cosi’.

E in effetti RadioButtonList ha dei metodi che usano gli indici, ad esempio SelectedIndex che ci da’ l’indice del Button selezionato, almeno credo …  
Ma poi non trovo nessun modo di utilizzarlo quell’indice … Va be’, non importa.  
Forse sono io che non capisco certi metodi, o forse certe cose sono ancora in via di sviluppo.  
Fa lo stesso. Utilizziamo quello che c’e’, e che sappiamo come utilizzare, anche se questo richiede un ciclo. 😀

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [5 Maggio 2023, 11:35pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/10 "2023-05-05T23:35:51Z")

</div>

> [@emilio](#):
>
> Non so se sia una cosa semplice.

semplice non credo o per lo meno, non lo è perché viene usato una metodo inusuale (se si conoscesce)

> [@emilio](#):
>
> Non e’ detto che ci sia una logica particolare dietro.

della logica che li ha portati ad impostarlo in questo modo non’é che mi interessa  
ma di come è strutturato quello si, poi del perché avranno avuto i loro buoni motivi  
(oppure come spesso mi capita, per eseguire due azioni simili, uso metodi diversi giusto per imparare)

> [@emilio](#):
>
> E in effetti RadioButtonList ha dei metodi che usano gli indici

si di sicuro usa gl’indici, ma come ho già detto ieri, e da poco me ne sono maggiormente convinto,  
che l’indice se lo va a prendere tramite il nome che gli si va ad impostare in fase di creazione

in pratica il ciclo si va a prendere tutti gli elementi **Children** del **radiobuttonlist**  
poi il secondo passaggio, verifica se fa parte della classe **RadioButton**  
(essendo che come primo elemento ha anche un **DynamicLayout** )  
escludendo il **DynamicLayout** si va a prendere il **Text** di ogni elemento  
che corrisponde ai nomi dati con **DataStore** che facendo parte di un dizionario  
credo che venga usato come parola **Key** si va a recuperare il valore **Indice**  
preso l’indice il gioco è fatto, si va ad impostare la proprietà **Enable = False**

ci sto girando in torno da un bel po di tempo ma non riesco a trovare il modo corretto  
a meno che non sia proprio fattibile oppure come hai detto (cosa che ho notato anch’io)  
il problema è che il tutto è ancora in fase di sviluppo e quindi ci sono molti punti vuoti

che testaccia dura che mi ritrovo 😡

edit:  
infatti ad avallare la mia tesi c’é la Property **Items** del **radiobuttonlist**

> **[RadioButtonList.Items Property](http://pages.picoe.ca/docs/api/html/P_Eto_Forms_RadioButtonList_Items.htm)**
>
> Gets the item collection, when adding items programatically.

che ha come **Type** una **ListItemCollection**

> **[ListItemCollection Class](http://pages.picoe.ca/docs/api/html/T_Eto_Forms_ListItemCollection.htm)**
>
> A collection of objects for use with objects

che a sua volta ha un costruttore **ListItemCollection Constructor (IEnumerable)**

quindi dovrebbe usare gli **Enum** che già abbiamo avuto modo di parlarne tempo fa  
il quale non mi erano chiare alcune cose, e ovviamente si vede che nemmeno adesso lo sono  
😅 😅

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [6 Maggio 2023, 7:11am UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/11 "2023-05-06T07:11:53Z")

</div>

Premesso che per ora non ci ho capito molto, soprattutto i vari **Bindings** …

> [@0904](#):
>
> facendo parte di un dizionario

Quale dizionario ?  
Non lo vedo …

> [@0904](#):
>
> che venga usato come parola **Key**

Se parli del testo, verifica solo che sia incluso nella lista **items\_to\_disable**

> [@0904](#):
>
> si va a recuperare il valore **Indice**

Anche qui non vedo nessun indice.

Se trova il testo tra quelli elencati, setta **Enable** come **False** per quel **Control**

> [@0904](#):
>
> che a sua volta ha un costruttore **ListItemCollection Constructor (IEnumerable)**
> 
> quindi dovrebbe usare gli **Enum**

Il fatto che un costruttore usi una enumeration vuol dire solo che puoi costruire uno di quegli oggetti tramite una enumeration di **IListItem**.  
Non ci da’ altre informazioni su ListItemCollection

E gli unici metodi presenti servono ad aggiungere degli item tramite delle stringhe.  
Non vedo traccia di **Enum**.

… E per finire coi soliti brontolii … 😄

> [@0904](#):
>
> di come è strutturato quello si’

Indagare per capire come e’ strutturato va benissimo, credo sia la cosa giusta da fare. 😀

… Ma inventarsi delle cose che nello script non ci sono (dizionario, indice, enum …) secondo me non serve a niente, se non a farti perdere tempo …

Poi ovviamente forse tu ti trovi bene cosi’ e riesci a capire, allora fai bene … non so … 😕 😄

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [6 Maggio 2023, 2:52pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/12 "2023-05-06T14:52:51Z")

</div>

> [@emilio](#):
>
> Premesso che per ora non ci ho capito molto, soprattutto i vari **Bindings** …

condivido in pieno, anch’io non ho idea di cosa sono e a cosa servono e non solo per gli **Bindings**

comunque ho riproposto la domanda all’altro forum, vediamo se qualcuno risponde. . .

```auto
items_to_disable = ["Mild steel", "4140"]

for rb in self.radiobuttonlist.Children:
    if isinstance(rb, Eto.Forms.RadioButton):
        if rb.Text in items_to_disable:
            rb.Enabled = False

```

una cosa che non capisco proprio, e come mai se **rb** è associata agli elementi **self.radiobuttonlist.Children** ed essendo che **Children** da come vedo è una proprietà della classe **radiobuttonlist** quando nel codice vediamo **rb.Text** e **rb.Enabled** se non erro sono sempre due proprietà che si vanno ad accodare a **Children**

(mi scuso per le cose non corrette che ci sono)

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [6 Maggio 2023, 5:58pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/13 "2023-05-06T17:58:39Z")

</div>

> [@0904](#):
>
> una cosa che non capisco proprio, e come mai se **rb** è associata agli elementi **self.radiobuttonlist.Children** ed essendo che **Children** da come vedo è una proprietà della classe **radiobuttonlist** quando nel codice vediamo **rb.Text** e **rb.Enabled** se non erro sono sempre due proprietà che si vanno ad accodare a **Children**

Non capisco cosa vuoi dire … e quindi quale sia il problema. 😊

Posso solo dire velocemente cosa capisco io …

> [@0904](#):
>
> `for rb in self.radiobuttonlist.Children:`

Children e’ una proprieta’ di **Container** , che viene quindi ereditata da **RadioButtonList**  
Questa proprieta’ restituisce una **IEnumerable\<Control\>** cioe’ una enumerazione di oggetti **Control**.  
In questo caso, come spiegato da Clement, gli oggetti sono in realta’ dei **RadioButton** , classe che discende da **Control**.  
Il loop cicla su questi oggetti, usando la variabile **rb**. Quindi **rb** e’ un **RadioButton**

> [@0904](#):
>
> `rb.Text`

**Text** e’ una proprieta’ di **TextControl** , da cui discende **RadioButton**

> [@0904](#):
>
> `rb.Enabled`

**Enabled** e’ una proprieta’ di **Control** , da cui di nuovo discende **RadioButton**

… OOP in piena azione ! 😀 …

😉 😄

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [6 Maggio 2023, 6:20pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/14 "2023-05-06T18:20:18Z")

</div>

> [@emilio](#):
>
> … OOP in piena azione ! 😀 …
> 
> 😉 😄

eeeeh essendo un bel po complicato, lo sto imparando piano piano  
insieme a RCommon e Eto che a dirla tutta nemmeno loro sono semplici 🤯 🤯

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [6 Maggio 2023, 11:00pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/15 "2023-05-06T23:00:00Z")

</div>

> [@0904](#):
>
> comunque ho riproposto la domanda all’altro forum, vediamo se qualcuno risponde. . .

Ho visto. 😀

… E ci ho messo un’ora a capire come funziona … 🙄  
Eh, la vecchiaia ( come alibi va sempre bene … 😄)

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [7 Maggio 2023, 9:00pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/16 "2023-05-07T21:00:19Z")

</div>

> [@emilio](#):
>
> Ho visto. 😀
> 
> … E ci ho messo un’ora a capire come funziona … 🙄

mi fa piacere Emilio che ci sei riuscito a capire qualcosa,  
(se e quando vuoi, lo sai sono sempre pronto ad ascoltare)  
io non ero in grado nemmeno di avviare un evento in init ahahahah

> [@emilio](#):
>
> Eh, la vecchiaia ( come alibi va sempre bene … 😄)

eeee io chissà, posso utilizzare qualche altra scusante. . . 😉

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [7 Maggio 2023, 11:46pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/17 "2023-05-07T23:46:24Z")

</div>

> [@0904](#):
>
> sei riuscito a capire qualcosa

Niente di particolare.  
Non capivo a cosa si riferiva quell’ **IndexOf**.  
Bisogna farci un po’ l’abitudine a Eto … 😉  
( Forse piu’ alla OOP … 😕 😕 😉 )

> [@0904](#):
>
> sono sempre pronto ad ascoltare

Tu dimmi qual’e’ il dubbio e proviamo a ragionarci.

> [@0904](#):
>
> avviare un evento

Direi piu’ “settare un event handler” … o una cosa simile.

Poi, fatta salva l’elegante e robusta soluzione di Clement,  
perche’ non hai semplicemente chiamato **DisableRadioButtonListItems** dopo il costruttore ?  
… O dopo **ShowModal** , nal caso prima dia errore … 🙂

EDIT

Credo che in questo caso i parametri **sender** ed **e** andrebbero eliminati in quanto non lo richiami piu’ da un pulsante.

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [9 Maggio 2023, 3:53pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/18 "2023-05-09T15:53:31Z")

</div>

> [@emilio](#):
>
> perche’ non hai semplicemente chiamato **DisableRadioButtonListItems** dopo il costruttore ?  
> … O dopo **ShowModal** , nal caso prima dia errore … 🙂

è stata la prima cosa che ho fatto, ma in entrambi i casi, o non ha nessun effetto, oppure torna un errore.

> [@emilio](#):
>
> Tu dimmi qual’e’ il dubbio e proviamo a ragionarci.

Emilio secondo me, da quello che sto vedendo, per quanto mi riguarda,  
per capirci qualcosina si dovrebbe iniziare come coi bambini, da un disegnino

un bel disegno che tracci i collegamenti tra istanze parametri e quant’altro  
cosa crea, cosa richiamano ecc dopo aver capito bene tutto questo  
allora forse si potrebbe iniziare a ragionarci sopra ahahahah

ps lo dissi che le cose le imparo visivamente (il mio grande fardello)  
prima le debbo fare, poi dopo che ho memorizzato tutti i passaggi  
e quindi le riesco a ripercorrere passo passo nella mia mente  
allora posso fare i ragionamenti, oppure quando leggo quei  
argomenti riesco a fare i collegamenti necessari ecc ecc  
altrimenti tutte le letture vanno a vuoto non rimane nulla

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [9 Maggio 2023, 6:31pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/19 "2023-05-09T18:31:32Z")

</div>

> [@0904](#):
>
> è stata la prima cosa che ho fatto, ma in entrambi i casi, o non ha nessun effetto, oppure torna un errore.

Hai ragione. Ho detto una cavolata. 😕  
Non so perche’, ma e’ cosi’.  
Sembra che sia prima che dopo **ShowModal** il dialogo non sia accessibile.  
E **dopo** posso capire, perche’ essendo modale (pessima cosa secondo me 😄), lo script dovrebbe bloccarsi fin quando il dialogo non si chiude.  
Ma **prima** non so perche’ … devono esserci dei meccanismi per cui il dialogo non e’ ancora completo, o raggiungibile … o che ne so.  
Sto imparando da te Salvio … faccio ipotesi completamente a caso …  
😉 😄

Brutte bestie le interfacce grafiche, almeno alcune … 😕 😉

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [9 Maggio 2023, 10:26pm UTC](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157/20 "2023-05-09T22:26:30Z")

</div>

> [@0904](#):
>
> per capirci qualcosina si dovrebbe iniziare come coi bambini, da un disegnino  
> […]  
> allora forse si potrebbe iniziare a ragionarci sopra ahahahah

Non c’e’ niente di male o di strano.  
Ad esempio moltissimi preferiscono i programmi ‘grafici’ di GH agli script tradizionali.  
E’ questione di preferenze personali. 🙂

Possiamo anche provare a fare degli schemini.  
Pero’ bisogna decidere **cosa** schematizzare.  
Concentrarsi su una cosa per volta, su un problema o un aspetto o una operazione particolare.  
Gia’ capire a cosa servono i vari parametri di un singolo metodo a volte non e’ semplice (per un insulso scriptomane come il sottoscritto … ). 😄  
Se cerchi uno schema per tutta RhinoCommon o per tutta Eto … io mi ritiro in buon ordine. 😉 😄

[Pagina seguente](https://it.discourse.mcneel.com/t/eto-children-of-radiobuttonlist/5157.md?page=2)
