Italian Domanda per programmatori

Sagenut

Expert
Licensed User
Longtime User
Ciap @Sagenut diciamo così così....
Ho fatto qualche modifica, qualcuna la sto ancora cercando di fare....
Qualcuna mi è uscita e qualcuna no....😓😓
Sto andando un po a tentaivi e qualcosa la sto cercando...
Fare tentativi, copiando parti di codice senza comprendere cosa sono e cosa fanno ti porteranno poco lontano.
Di domande ne avrei una miriade...
E se sono domande mirate su piccoli argomenti forse sarebbe il caso di farle per iniziare a sciogliere i nodi.
Ma le domande non dovrebbero essere richieste di pezzi di codice per fare già qualcosa di specifico.
Dalla lista che creo, dopo aver inserito gli oggetti, se ne volessi cancellare solo uno come dovrei fare?
Non ho problemi a farti una versione ampliata dell'esempio............ma sarebbe nuovo codice da provare e capire mentre magari ci sono ancora dubbi su quello che hai adesso.
Vorrei portarti invece a discutere in generale degli oggetti, in questo caso la XCLV (e già abbiamo saltato una foresta), per capire come funziona......e quello poi ti porterebbe a fare tutte le altre cose.
Ti faccio un esempio:
per aggiungere oggetti complessi (grafica e altro) alla XCLV devi aggiungere dei Pannelli con sopra il contenuto.
Avevi capito questo dall'esempio?
Quindi prima di questo: hai appreso come si crea un Pannello? Come si crea un oggetto aggiuntivo e lo si aggiunge al Pannello?
Hai appreso come si aggiunge un oggetto dal Designer di Layout? E dopo aver creato un Layout con degli oggetti riesci ad interagire con questi oggetti da codice?
In un esempio già fatto purtroppo tutte queste cose sono già avvenute.
Sono queste le domande che speravo che il mio esempio, o qualunque altro, ti portasse a fare.
Se stai facendo modifiche al codice che ti ho dato posta il tuo progetto modificato e parliamo di quello.
Compitino:
Partendo da zero, e senza prendere parti di codice già fatte, crea un progetto con 4 Button (che abbiano il testo SCRIVI, CANCELLA, COLORE, COPIA) e 2 Label:
SCRIVI deve scrivere "La Label di Dragonblu19" nella prima Label
CANCELLA deve cancellare il contenuto di tutte e due le Label
COLORE deve impostare un colore alle 2 Label (2 colori diversi a tua scelta)
COPIA deve copiare il contenuto della Label1 nella Label2 (copiare il contenuto.....non scrivere qualcosa direttamente nella Label2)
Non ti stò prendendo per stupido, anzi, ma devi davvero farlo da zero.
Nel caso chiedi volta per volta la cosa che ti stà bloccando.

In alto nell'IDE sotto ai menù vedrai una icona a forma di pacco regalo.
Apri il tuo progetto e poi clicca su quella icona.
Ti farà creare uno zip completo del tuo progetto che poi potrai allegare quì in modo che possiamo provarlo anche noi per poterne discutere.
E comunque è meglio se apri una nuova discussione per chiedere cose riguardo il tuo progetto.
Ormai questa discussione è un minestrone e sarebbe faticoso sfogliarla di nuovo tutte le volte per trovare i post dove magari c'era qualche informazione utile/importante.
 

dragonblu19

Member
Licensed User
Fare tentativi, copiando parti di codice senza comprendere cosa sono e cosa fanno ti porteranno poco lontano.
Ecco appunto era quello che volevo evitare di fare...

E se sono domande mirate su piccoli argomenti forse sarebbe il caso di farle per iniziare a sciogliere i nodi.
Ma le domande non dovrebbero essere richieste di pezzi di codice per fare già qualcosa di specifico.
Non vorrei fare domande su pezzi di codici, ma pensandoci bene, credo che forse non so nemmeno quali domande siano "giuste".....
Non ho problemi a farti una versione ampliata dell'esempio
Non voglio che mi fai questo, voglio capire come arrivare a farlo io da solo.....
Compitino:
Partendo da zero, e senza prendere parti di codice già fatte, crea un progetto con 4 Button (che abbiano il testo SCRIVI, CANCELLA, COLORE, COPIA) e 2 Label:
SCRIVI deve scrivere "La Label di Dragonblu19" nella prima Label
CANCELLA deve cancellare il contenuto di tutte e due le Label
COLORE deve impostare un colore alle 2 Label (2 colori diversi a tua scelta)
COPIA deve copiare il contenuto della Label1 nella Label2 (copiare il contenuto.....non scrivere qualcosa direttamente nella Label2)
Questo è quello che "cercavo".... Che mi aiutaste a capire come crescere da solo MA guidato da qualcuno....
Non ti stò prendendo per stupido, anzi, ma devi davvero farlo da zero.
Nel caso chiedi volta per volta la cosa che ti stà bloccando.
Questo non vuol dire prendermi per stupido, vuol dire prendermi per ignorante, ma io sono stato il primo a dirlo che lo sono, ma almeno ci siamo arrivati.
Un bambino in prima elementare non credo sia stupido, ma va per imparare....
E comunque è meglio se apri una nuova discussione per chiedere cose riguardo il tuo progetto.
Ormai questa discussione è un minestrone e sarebbe faticoso sfogliarla di nuovo tutte le volte per trovare i post dove magari c'era qualche informazione utile/importante.
Se dovessi aprire un'altra discussione, temo che si andrebbe a ricreare lo stesso minestrone. Qui bene o male anche se un minestrone abbiamo trovato una linea...
Se non è un problema continuerei qui...

Grazie @Sagenut
 

dragonblu19

Member
Licensed User
@Sagenut @ivanomonti

Ragazzi scusate, ma dopo aver visto la lezione di @ivanomonti ho capito che non avevo capito niente.
SCRIVI deve scrivere "La Label di Dragonblu19" nella prima Label
Avevo capito che la scritta doveva apparire cliccando il bottone...
COLORE deve impostare un colore alle 2 Label (2 colori diversi a tua scelta)
Avevo capito che dovevo colore la label, invece era la scritta...


Adesso provo a rifare tutto da solo e vi allego il file.....
 

dragonblu19

Member
Licensed User
Ciao ragazzi, ho riprovato da solo e mi è uscito questo. Che ne dite?
 

Attachments

  • lezione1.zip
    10.5 KB · Views: 186

Sagenut

Expert
Licensed User
Longtime User
Avevo capito che la scritta doveva apparire cliccando il bottone...
Non posso vedere l'esempio di @ivanomonti perché sono al lavoro.
I 4 comandi dovevano essere distribuiti sui 4 button per capire cosa erano.
Avevo capito che dovevo colore la label, invece era la scritta...
Avevi capito benissimo.
Comunque colorare la scritta o la Label cambia poco.
Anzi ti dimostra che lo stesso concetto funziona per più cose.
 

Sagenut

Expert
Licensed User
Longtime User
Io posso guardarci solo verso le 23......o forse domani.
 

ivanomonti

Expert
Licensed User
Longtime User
@dragonblu19 ti allego altre 3 lezioni sempre sulla base colora, questi esempi ti fa solo capire come poi ottenere le cose che desideri, se conosci gli object e un bene altrimenti ci giri attorno, io al momento con B4J E NON B4A non ho voglia di configurarlo, ma la sintassi non cambia
 

Attachments

  • Lezione 4.zip
    26.4 KB · Views: 190
  • Lezione 3.zip
    25.4 KB · Views: 180
  • Lezione 2.zip
    23.3 KB · Views: 200

Sagenut

Expert
Licensed User
Longtime User
@dragonblu19 un pò di teoria dopo la pratica.
Intanto bravo per il risultato.
Le View possono essere create dal Designer o da codice.
Quelle create dal Designer sono già Inizializzate mentre quelle che aggiungi da codice vanno preparate con il loro comando Initialize.
Nella maggior parte dei casi il comando Initialize richiede come parametro l'EventName per quella View.
Cosa è l'EventName? E' il prefisso da usare per intercettare un Evento scatenato da una View.
Gli Eventi sono ad esempio il Click e il LongClick.
Quando crei una View nel Designer puoi vedere che il NAME e l'EVENTNAME sono sempre uguali. Questo non è Obbligatorio.
Nel tuo codice ad esempio hai un button che si chiama cancButton e che ha lo stesso EventName.
Il suo evento Click infatti è
B4X:
Sub cancButton_Click
   
End Sub
Anche nel Designer puoi cambiare l'EventName. Puoi chiamare il button cancButton e dargli l'EventName Pippo.
Quindi poi avresti
B4X:
Sub Pippo_Click

End Sub
che si scatena quando clicchi cancButton.
Diverse View possono avere lo STESSO EVENTNAME.
Se dai lo stesso EventName a tutti e 4 i Button avrai una sola Sub Pippo_Click che viene eseguita sempre qualunque dei 4 button è stato cliccato.
Questa cosa serve per creare Sub riutilizzabili senza il bisogno di dover creare 4 o 10 volte la stessa Sub solo con nomi diversi.
Ti allego poi un esempio per farti capire meglio la cosa.
Consiglio per i nomi delle View:
per rendere più comodo e logico gestire le varie View può essere utile assegnare uno stesso prefisso a seconda del tipo di View (btn per i Button, lbl per le Label, iv per le ImageView e via dicendo) seguito da qualcosa di logico che indichi a cosa serve.
Nel tuo esempio sarebbe stato comodo chiamare i 4 button così:
btnScrivi
btnCancella
btnColora
btnCopia
In questo modo quando dovrai digitare il nome di qualche View nel codice filtrerai la scelta ai soli oggetti di quel tipo e sarà più facile trovarli.
Non è obbligatorio ma è una ottima prassi.
Ti lascio al piccolo esempio per capire meglio l'EventName.
 

Attachments

  • EventName.zip
    10 KB · Views: 175

dragonblu19

Member
Licensed User
@Sagenut ho "ricorretto" il tuo esempio... Nel senso che vedendo come mi avevi detto, ho reimpostato tutti e 8 i bottoni con un solo comando. Sembra che funzioni.

Te lo mando così se voui vedere se è "giusto" 😀...
 

Sagenut

Expert
Licensed User
Longtime User
Perfetto.
Ovviamente non è sempre possibile applicare questo metodo, si può applicare solo per funzioni ripetitive e uguali.
Però oltre al EventName hai anche già visto che si possono creare delle Sub riutilizzabili.
 

Sagenut

Expert
Licensed User
Longtime User
Oggi puoi andare avanti con le Lezioni di @ivanomonti.
Per provare a mixare un pò le nuove cose che stai imparando io ti propongo di:
modificare l'esempio EventName facendo in modo che gli 8 Button vengano creati da codice e non caricando un Layout.
I Button devono essere aggiunti alla Activity (che è il corpo principale della APP).
Gli 8 Button devono avere come TEXT da Nuovo Pulsante 1 a Nuovo Pulsante 8.
Per fare questa cosa devi tornare a prendere spunto dall'esempio della XCLV. :)
 

Sagenut

Expert
Licensed User
Longtime User
Intendi dire senza usare il Designer?
Esattamente
Questo non so come farlo, o forse non ho capito.
Se guardi l'esempio della XCLV che ti ho mandato la prima volta trovi tutte le istruzioni per riuscire nell'impresa.
Però mi viene da dire che forse non hai analizzato/capito bene quell'esempio e comunque non hai fatto domande al riguardo (nonostante te lo abbia ripetuto in continuazione! Mannaggia).
Questo è un estratto di quell'esempio
B4X:
'Crea una View che gestisce le immagini
Dim iv1 As ImageView
   
'Inizializza l'oggetto e gli assegna un EventName (quì nullo)
iv1.Initialize("")
   
'Definisce le dimensioni dell'oggetto
iv1.SetLayout(0, 0, 60dip, 60dip)
   
'Aggiungiamo fisicamente l'oggetto al Pannello
p.AddView(iv1, 0, 0, iv1.Width, iv1.Height)
Con un pò di spirito di iniziativa, e domande quando ti blocchi o non ti è chiaro qualcosa, hai già tutto quello che ti serve per riuscire nell'impresa.
Non dico che sia facile così al primo colpo ma secondo me puoi riuscirci bene.
Il codice che ho postato ha bisogno di piccole modifiche che puoi capire leggendo bene cosa ti ho chiesto di fare.
E comunque siamo quì. ;)
 

LucaMs

Expert
Licensed User
Longtime User
Mi scuso se mi intrometto senza aver letto ("boccaccia mia statti zitta") ma se gli stai spiegando come creare delle custom view, partire dalla xCustomListView non è l'ideale, perché è alquanto complessa.

Ma tanto al 99% non era questo l'argomento 😄 (è solo che sto cercando qualunque cosa mi distragga da ciò che dovrei fare)
 

Sagenut

Expert
Licensed User
Longtime User
No tranquillo, la richiesta è di creare 8 Button.
Passando da piccoli errori per poi mostrare come farlo meglio (che detto da me.....).
All'inizio gli ho fatto un mini esempio di una XCLV perchè era molto attivo riguardo al come fare liste/tabelle e volevo solo fargli vedere che prima servono altre basi per poi riuscire a gestire gli oggetti in maniera generica e non pensando subito ad un obiettivo finale complesso.
 
Top