Italian panel e button

giannimaione

Well-Known Member
Licensed User
Longtime User
ho un Panel1 con un numero DEFINITO di button. Ogni button ha la propietà Parent "Panel1"
Come posso "manipolare" i button.
In pratica, in modo RANDOM, devo cambiare alcuni attributi/propietà dei button. Esempio Width, Visible, Text, ecc.

Esiste un modo per "scorrere" ,"creare" una lista , mappa , del contenuto di un Panel o conunque dei Button presenti?
 

LucaMs

Expert
Licensed User
Longtime User
Si, soprattutto se devi pescarne uno a caso :).

Ci sono due modi:

Panel1.GetAllViewsRecursive
Panel1.GetView(Index)

Per usare il secondo, devi conoscere l'indice della view (oppure scorrerle tutte in un ciclo).

Con il primo le ottieni tutte insieme in una List.

Come nell'esempio dell'IDE:
B4X:
For Each V as View in Panel1.GetAllViewsRecursive
  If V is Button
      Private Btn as Button = V
      Btn.Text = ...
      Btn.Left = ...
  End If
Next


Con il codice sopra, però, gestiresti i Button sempre nello stesso ordine.
Potresti invece aggiungerli in una List (o una Map), così poi per sceglierne uno a caso, "randomizzi" un indice.
B4X:
Private lstButtons as List
lstButtons.Initialize

For Each V as View in Panel1.GetAllViewsRecursive
  If V is Button
      Private Btn as Button = V
      lstButtons.Add(Btn)
  End If
Next



E' chiaro che se nel pannello ci sono solo Buttons, non serve la "If V... End If"
 
Top