Italian Matrice di Pulsanti

Roberto Tsolakis

Member
Licensed User
Longtime User
Lo so che Tic Tac Toe è il programma di riferimento per un button array ...
Ma veramente, veramente non riesco a comprenderlo!
E se una cosa non riesco a comprenderla, mi tocca scopiazzarla ... e la cosa non mi piace!

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout1")
Dim Pulsante(1 To 10) As Button
Log("Inizializzazione")

B4X:
  For a = 1 To 10
    Dim p As Button                   ' Perchè devo ridimensionare una button quando ce l'avevo in Pulsante() ?
    p.Initialize(Pulsante)             ' a che serve ? A creare l'evento Pulsante ?
    p.Text="Pulsante " & a
    p.Tag=a
    Activity.AddView(p,0%x,(a-1)*100,100%x,10%y)
    Next
End Sub



B4X:
Sub Pulsante_click
Dim p As Int                         ' Non funziona ... ma in qualsiasi caso come sopra perchè ?
p=Sender
End Sub


Tecnicamente mi sembrerebbe chiaro:
- Creare la matrice di pulsanti con DIM PULSANTE(X) AS BUTTON
- CREARE IL NOME DEL'EVENTO, DOVE RECUPERARE IL RISULTATO
- INIZIALIZZARE OGNI PULSANTE CON CICLO FOR NEXT
- POSIZIONARLO

LA PROCEDURA ATTUALE MI SEMBRA TROPPO COMPLICATA!
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Quando definisci un array di button non crei i Button, gli prepari uno spazio in memoria.

E' la stessa cosa di quando crei una qualunque View da codice anziché usando il Designer:

Dim EditText1 As View
EditText1.Initialize("edit")
Activity.AddView(EditText1...)


Per usare l'evento Pulsante_Click per tutti i pulsanti dell'Array devi inizializzare tutti i pulsanti con lo stesso nome evento:
For i = 1 to 10
dim p as button
p.initialize("Pulsante")
...


Ma nell'evento, con Sender ottieni non un numero ma la View che ha scatenato l'evento:
Sub Pulsante_Click
dim B As Button = Sender

Per ottenere un numero potresti usare la proprietà Tag del pulsante (che può contenere anche oggetti, non solo numeri o stringhe, comunque)
For i = 1 to 10
dim p as button
p.initialize("Pulsante")
p.Tag = i
...

Sub Pulsante_Click
dim B As Button = Sender
Dim Indice As Int = B.Tag
...
 

Roberto Tsolakis

Member
Licensed User
Longtime User
Grazie Luca,
Per comprenderle queste cose dovrei studiarmi qualcosa di propedeutico ..... qualche indicazione ?


Un diagramma di flusso .... sarebbe ideale :)
 

LucaMs

Expert
Licensed User
Longtime User
Ho visto che carichi un Layout.

in questo caso, se i button sono già nel layout e vuoi usare un Array, hai due possibilità:

1) scrivere i Tag (che saranno gli indici) direttamente nel Designer
2) scriverli da codice

in entrambi i casi, per ottenere l'array dovrai mettere tutti i pulsanti in un Panel (chiamiamolo pnlButtons) e poi:

Dim Indice As Int = 0
For Each B As Button In pnlButtons
Indice = Indice + 1 ' sarebbe meglio partire da 0
B.Tag = Indice
Pulsante(Indice) = B
Next

Questo può dare problemi perché i button sono restitituiti nell'ordine in cui li hai creati nel layout (problemi di indice soltanto).
 

Roberto Tsolakis

Member
Licensed User
Longtime User
Già ...
Cmq mi piacerebbe che Erel prima di creare esempi complessi, facesse cose dirette e solo dopo un programmino semplice!
Lo so sarà super impegnato ... ma più le cose sono semplici ... più ci sarà gente che vorrà imparare.
Io non mi ritengo proprio un newbie della programmazione ... ma B4A è veramente complesso in certe procedure.
 

Roberto Tsolakis

Member
Licensed User
Longtime User
E per questo ti ringrazio!

Su FB qualcuno dice che preferisce usare direttamente Java ... sarà pure ... ma ho comprato un compilatore ... DEVO imparare ad usarlo!
Non tanto per vendere delle APP che, sinceramente, non credo riuscirò mai a fare dei guadagni ... quanto per avere delle app utili quando mi servono.
 

LucaMs

Expert
Licensed User
Longtime User
Non so quanto sia meglio usare direttamente Java. Penso che la velocità di sviluppo ottenibile usando b4a sia superiore.

Vendere app... se ti capita l'ideona, la realizzi bene, la pubblicizzi bene, puoi fare un bel po' di soldi; ma, nella stragrande maggioranza dei casi, converrebbe andare a pescare :p

App utili a te stesso... penso che ormai ci siano talmente tante app per qualunque "necessità"...!

In genere sono pessimista; parlando di app... pure :D
 
Top