Italian assegnare nomi ad oggeti con tag tramite cicli for/if

iz1kbp

Member
Giannimaione...grazie comunque,io non copio ed incollo...specialmente le citazioni.

Sagenut...La strada l'aveo gia provata prima di iniziare questa discussione.
Come puoi vedere dal codice, l'ide è gia creato, come da indicazioni nei tutorial di erel.
Comunque grazie per il supporto...vedo di smazzarmi il problema.
Mario
 

Sagenut

Expert
Licensed User
Longtime User
Quella è un'altra cosa.
Quì aveva specificatamente chiesto come gestire n View uguali tramite un ciclo.
E credo di avergli fornito la risposta a tale domanda.
 

Sagenut

Expert
Licensed User
Longtime User
Leggendo bene forse vuole dare come nome il numero ad ogni Button.
Quindi
B4X:
for x = 0 to 23
   arbuttons(x).text = x                   'Assegna i numeri da 0 a 23
   arbuttons(x).text = x+1                 'Assegna i numeri da 1 a 24
   arbuttons(x).text = "Pulsante " & (x+1) 'Assegna il testo Pulsante 1, Pulsante 2, Pulsante 3..........
next
Ovviamente scegli solo una delle 3 opzioni o crea quella a te più ideale. ;)
 

Sagenut

Expert
Licensed User
Longtime User
Se vuoi una corrispondenza esatta tra i numeri e i nomi dei Button per il ciclo allora devi creare anche il Button25 nel Designer, togliere lo spunta da Visible in modo che non si veda (perchè a te non servirà), creare il riferimento con il Generate Members come illustrato prima e poi devi dichiarare l'Array in questo modo
B4X:
arbuttons = array as button (Button25, Button1, Button2, Button3......)
In questo modo la posizione 0 verrà assegnata al Button25 che non utilizzi e quindi potrai gestire il ciclo così
B4X:
for x = 1 to 24
    arbuttons(x).text = "Pulsante " & x
next
Così non devi nemmeno impazzire a pensare di tenere le variabili a -1 rispetto al nome del Button nel Designer.
 

giannimaione

Well-Known Member
Licensed User
Longtime User
in allegato un piccolo esempio di come creare e manipolare i bottoni senza utilizzare layout e designer;
ho letto diverse volte il post #1 , ma continuo a non capire qual'è l'esigenza di mario;

vogliamo aiutarti, ma cerca di farci capire cosa vuoi ottenere
 

Attachments

  • Esempio1.zip
    8.4 KB · Views: 176

Sagenut

Expert
Licensed User
Longtime User
Bene gli esempi di @giannimaione che così mostrano a @iz1kbp anche come gestire il click sui vari Button con una sola SUB.
La differenza tra il FOR EACH e il creare un vero ARRAY è che il FOR EACH ti obbliga ad agire sempre su tutti i Button ogni volta, mentre con l'ARRAY potresti anche decidere di lavorare su piccoli gruppi tipo dal 1 al 5, dal 10 al 20 e via dicendo.
Questa valutazione la farai tu a seconda dello scopo che avrà la tua app.
 

iz1kbp

Member
scusate ma c' è un problema nella gestione dei post. Vedo ora che il mio post (era il terzo) in cui spiegavo, con esempio di codice vb6 e b4a, non è piu presente nella cronologia.come mai?
grazie
 

LucaMs

Expert
Licensed User
Longtime User
Sono iscritto su alcuni forum su vb6, è mia abitudine, nel caso intervenga come "consigliere" per chi pone la domanda scrivere un codice che prelevo direttamente dall'IDE di vb6 e che provo direttamente.
Se poi addirittura postavano il codice, ovvio se di dimensioni ragionevoli, lo scaricavo e ci guardavo dentro .
In caso chiedevo lumi sul codice indicando numero riga/procedura.Andare a tastoni so cosa vuol dire....perdere tempo. nulla piu.In Vb6 quello che devo fare sono 4 istruzioni in croce, ci impiego 1 un minuto.
Non si tratta di non conscere la struttura della programazione, sono nu po di anni che uso vb6,si tratta solo che non c'è una bibliografia sulle varie funzioni e sintassi base e con esempi esplicativi, come su MSND di vb6....per esempio.
Per esempio, hanno postato un codice con scritto...B4XView..cosa è?
Lancio l'Help e mi rimanda ad un form di gente che utilizza il sistema da anni.
Per uno come me che sta iniziando cosa capisce? poco...se non dopo domande , domande con risposte, per molti scontate...ma per un "novello"...non certo.
Scusate lo sfogo...ma dai tempi di qbasic per dos, ho passato un po di IDE.
Grazie comunque e buon proseguimento
Mario
Su questo forum (in generale, non solo su quello italiano) trovi e troverai sempre tanta gente disposta ad aiutare, come è stato anche adesso con te; a volte il problema è capirsi.

E poi un membro italiano con un nome bello come il tuo, dovrà per forza essere sempre accolto nel modo migliore ;)


P.S. Premesso che non ho niente contro i gay (anzi, di solito sono persone più sensibili), sarà meglio che io chiarisca la mia frase preDecente: quello è il mio vero nome ☺
 

LucaMs

Expert
Licensed User
Longtime User
Se vuoi una corrispondenza esatta tra i numeri e i nomi dei Button per il ciclo allora devi creare anche il Button25 nel Designer, togliere lo spunta da Visible in modo che non si veda (perchè a te non servirà), creare il riferimento con il Generate Members come illustrato prima e poi devi dichiarare l'Array in questo modo
B4X:
arbuttons = array as button (Button25, Button1, Button2, Button3......)
In questo modo la posizione 0 verrà assegnata al Button25 che non utilizzi e quindi potrai gestire il ciclo così
B4X:
for x = 1 to 24
    arbuttons(x).text = "Pulsante " & x
next
Così non devi nemmeno impazzire a pensare di tenere le variabili a -1 rispetto al nome del Button nel Designer.
Benché sia molto meglio abituarsi ad avere array con base 0 (non vedo il problema), si potrebbe anche mettere un bel Null in quella posizione.
B4X:
arbuttons = array as button (Null, Button1, Button2, Button3......)
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Giannimaione...grazie comunque,io non copio ed incollo...specialmente le citazioni.

Sagenut...La strada l'aveo gia provata prima di iniziare questa discussione.
Come puoi vedere dal codice, l'ide è gia creato, come da indicazioni nei tutorial di erel.
Comunque grazie per il supporto...vedo di smazzarmi il problema.
Mario

Hai provato la correzione che ti ha suggerito Erel ???
 

sirjo66

Well-Known Member
Licensed User
Longtime User
ci deve essere qualcosa che ci sfugge.
Ad esempio, nella schermata di errore si parla di ListView, come mai ???
Sei sicuro che nel Panel1 ci siano solo Button ??
Riesci a preparare un mini-progetto con i 24 button e postarlo qui ???
 

LucaMs

Expert
Licensed User
Longtime User
Tralasciando il fatto che il mio primo post di risposta era già ampiamente esplicativo, chiaro... praticamente perfetto, come sempre :cool:😄...

il punto è che non sappiamo esattamente cosa voglia ottenere; non è detto che sia indispensabile usare i tag.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
eccoti il codice che dovrebbe funzionare (almeno da me funziona perfettamente)
B4X:
    For Each obj As View In Panel1.GetAllViewsRecursive 
        If obj Is Button Then
            Dim btn As Button = obj
            btn.Text = btn.Tag
        End If
    Next
Praticamente non puoi fare "As Button" nel ciclo for, perchè non trova solo bottoni, ma anche altri oggetti.
Devi quindi aggiungere poi la riga che controlla effettivamente che il "View" trovato sia un bottone.
Poi però per poterlo gestire come bottone devi assegnarlo ad un oggetto bottone (praticamente fa un DirectCast come il VB.NET)
Dimmi se così funziona

Sergio
 

iz1kbp

Member
Apprezzo le parole di Luca,io non voglio insegnare a nessuno...ma le citazioni tirate fuori perché uno è bravo (può essere..forse...forse)mentre io sto imparando..possono tranquillamente essere messe in altri posti. Comunque resta il fatto che il post in cui spiegavo il problema,era presente il mio codice e le mie necessità, non e più presente nella discussione...perché? Tnx
 

Sagenut

Expert
Licensed User
Longtime User
Nella prima pagina c'è uno screenshot del tuo codice ed è ancora presente.
Per postare del codice devi copiarlo e poi qui nella finestra per rispondere scegli CODE dal menù con i 3 puntini e lo incolli.
 

Sagenut

Expert
Licensed User
Longtime User
Ancora meglio, quando possibile, postare il file zip del progetto in modo che altri lo possano provare ed eventualmente correggere.
Quando non puoi postare il tuo progetto, perché giustamente non lo vuoi divulgare, dovresti cercare di fare un mini progetto a parte con la parte di codice che dà errore e distribuire quello.
Nelle icone dell'IDE sotto al menù vedrai che c'è una icona a forma di regalo.
Quelle serve per creare lo zip del progetto che vuoi postare.
 

iz1kbp

Member
Ciao, grazie per la pazienza...questa mattina approfittando della quarantena ho riscritto tutto secondo i vs consigli.
allego lo zip del progetto.
dalla riga 111 alla 124 c'e una procudura che dovrebbe fare cosi ed è quella che ora mi da errore
la stringa che arriva, via UDP, è una serie di 0 ed 1 (24) piu una scritta di controllo di 5 caratteri
Se il controllo soddisfa una opzione (select) eseguo delle operazioni
Se il controllo è "stato" faccio una serie di operazioni:
eseguo la scansione della stringa ed estraggo ad uno ad uno i valori presenti nella stringa da una certa posizione a zero
Il valore letto (1 oppure 0) lo immagazzino nella matrice attivo(24) (il ciclo è al contrario perche il programma manda la stringa, che arriva da arduino, che devo leggere dalla fine all'inizio....cosi è ma non è un problema)
fatto questo, faccio una scansione della matrice attivo(24) e leggo i singolo valore (esempio attivo(1) risulta 0, attivo(2) risulta 1 e cosi via).
Se , ad esmepio,attivo(1) riulta = 1 allora dovrei cambiare il colore del tasto 1 presente nel pannello e farlo diventare rosso. se invece risulta 0 diventa verde.
In generale se attivo(N) risulta 1 devo cambiare il colore del tasto N in rosso oppure in verde (se 0)
Ho provato con il codice che è presente nelle linee indicata ma mi restituisce errore. Error occurred on line: 117 (Main)
Non riesco a capire come comandare il colore del pulsante tramite quella procedura.
MI potete illumiare?
Mario
 

Attachments

  • prova.zip
    12.3 KB · Views: 178
Top