Italian Circa i progetti B4XPages

LucaMs

Expert
Licensed User
Longtime User
Purtroppo senza vera voglia, motivazione, se non quella di suggerirvi di scegliere di creare ogni nuovo progetto come B4XPages, ho iniziato a scrivere un tutorial in italiano su questo tipo di progetto, senza un'idea precisa di come farlo.

Io non vedo motivi per averli in antipatia, anzi, esattamente il contrario.

La mia (ma credo di tutti) visione globale è più o meno:

"Ho un'unica Activity, il che mi crea meno problemi. Per ogni funzionalità del progetto creo una B4XPage, che "vedo" come niente altro che un pannello con associato del codice eseguibile. Root, il pannello, posso paragonarlo semplicemente al "contenitore" grafico delle Activity, per cui ci carico il layout. Visualizzerò una pagina o l'altra a seconda delle necessità.
Creando il progetto come B4XPages e con qualche attenzione, un domani potrò ottenerne un'app iOS con poche modifiche".

Tutto qui.

Avendo iniziato quel tutorial, però, chiedo a voi di scrivere qui qualunque dubbio (generale) abbiate sui progetti B4XPages, gli eventuali motivi per cui non vi piacciano, etc., in modo che poi io possa andare ad aggiungere cose (speriamo utili) a quel tutorial.

Grazie.
 

dragonblu19

Member
Licensed User
Ciao, ho una domanda (spero non sia stupida 😁).
Potresti caricare 2 progetti, uno con e uno senza B4XPages per capire in modo pratico la differenza?
Grazie.
 

LucaMs

Expert
Licensed User
Longtime User
Ciao, ho una domanda (spero non sia stupida 😁).
Potresti caricare 2 progetti, uno con e uno senza B4XPages per capire in modo pratico la differenza?
Grazie.
Stupida non è, ma dovrei mettermi a sviluppare un progetto da zero, realizzato nei due modi. Non che io abbia molto di meglio da fare, purtroppo :( 😄, ma nemmeno voglia di fare questo. E poi dipende anche dalle dimensioni del progetto; sarebbe davvero poco utile farne uno con solo due Activity (e l'altro con due B4XPage).
 

dragonblu19

Member
Licensed User
Intendevo qualcosa di semplice. O anche, se non progetti interi, qualche esempio di differenze tra i 2 progetti. Più che altro per capire meglio di cosa si sta parlando. Ovviamente sempre se puoi.
Grazie comunque.
 

LucaMs

Expert
Licensed User
Longtime User
Scrivo una mezza stupidaggine (senza concentrazione, col TV acceso... non vi dico sintonizzato su quale programma perché me ne vergogno moltissimo 😄 ), la prima che mi sia appena venuta in mente, prima ancora che leggessi il post di @dragonblu19 qui sopra.

Ancora con l'esempio ipotizzato nel tutorial, 3 "schermate": login, prodotti, prodotto (questa per modifica/aggiunta e forse eliminazione).

Probabilmente il metodo che userei per richiamare la "schermata" "prodotto" (dettagli di un prodotto) partendo da uno selezionato nella "schermata" "Prodotti", sarebbe passargli un oggetto "Prodotto" (avrei una classe clsProdotto etc).
Altro modo potrebbe essere passargli il campo chiave della eventuale tabella db "Prodotto" (meno "corretto", perché significherebbe che in quel punto si dovrebbero ottenere i dati dal db, mentre in seguito magari vorrei riceverli da Internet, ad esempio).

Giusto per ricordare uno dei vantaggi delle B4XPage (non certo il principale) che è quello di poter passare delle view (controlli) da una pagina all'altra, potrei fare in altro modo.
Immaginate di avere nella "schermata" "Prodotti" una CustomListView che appunto elenchi N prodotti. Potrei passare alla "schermata" "Dettagli prodotto" l'elemento (item) della CLV selezionato, il suo pannello base.
A quel punto nella "Dettagli prodotto" avrei tutte le view necessarie, anche già compilate (il nome, prezzo, etc. già nelle EditText).

Bene, questo sarebbe possibile (sconsigliabile, non mi piace affatto) con le B4XPage "Prodotti" e "Dettaglio-Prodotto" ma non lo sarebbe tra due Activity che avessero lo stesso scopo.

Ripeto: è solo un esempio per niente "pulito" per ricordare che è possibile passare oggetti grafici da una B4XPage ad un'altra mentre non è possibile farlo tra due Activity.
 
Last edited:

XorAndOr

Active Member
Licensed User
Longtime User
Ho una domanda sulle B4XPages
La B4XMainPage gestisce tutte le chiamate verso altre pagine, il classico Menù.
L'app in pratica dovrebbe fare:

1)Start App
2)Splash screen (logo) qualche secondo..
3)Controllo Utente (server online php mysql)
4)Se l'utente è registrato ---> B4XMainPage
5)Se l'utente è nuovo --------> Registrazione ---> B4XMainPage

Nelle Activity PreDecenti alle B4XPages facevo...
1Start App
2)Activity Splash Screen
3)Activity Controllo Utente --> Activity Menù
4)Activity Registrazione -----> Activity Menù
5)Activity Menù per le Funzioni

Il fatto che l'app parte su B4XMainPage mi confonde un pò
dato che sarebbe la mia Page Menù.

Domanda:
Come dovrei gestire (flow chart) le pagine?
Sarà nello stesso modo delle activity oppure dovrei cambiare qualcosa?
grazie
 

LucaMs

Expert
Licensed User
Longtime User
Potresti fare in mille modi diversi.

Io penso che farei:

1 MainPage splash-screen e check se già registrato
2 seconda pagina, valida sia per registrazione che per login
3 pagina per menu funzionalità (una per pagina)
 

XorAndOr

Active Member
Licensed User
Longtime User
1 MainPage splash-screen e check se già registrato
2 seconda pagina, valida sia per registrazione che per login
3 pagina per menu funzionalità (una per pagina)
quindi la B4XMainPage gestisce tutte le dichiarazioni delle pagine, variabili ecc..
ma per arrivare al menù, in mainpage dovrebbe far partire la pagina del menù.
 

giannimaione

Well-Known Member
Licensed User
Longtime User
senza giacca e cravatta,
ma potrebbe essere un suggerimento per le b4xpages
 

Attachments

  • demopages.zip
    7.6 KB · Views: 41

XorAndOr

Active Member
Licensed User
Longtime User
Intanto grazie dell'esempio @giannimaione .
Si la struttura è una cosa simile.
La mia difficoltà da superare in questo esempio che ancora non ho capito è:
1)start app
2)Splash Screen
3)Controllo
4)Menu
ho già la pagina splash-screen oppure solo codice che dopo 3/4 secondi scelgo cosa chiamare,
in questo caso la pagina controllo utente, poi Menù

Da quello che ho capito nella B4XPages è che parte sempre B4XMainPage
quindi sarebbe
1)Start app
2)B4XMainPage

Ora il problema è...dove inserisco lo splash screen?
prima di B4XMainPage non so dove si mette sta funzione/pagina
dopo... non avrebbe senso visto che è una presentazione dell'app.
(oppure sono io intontito...più probabile)
 

udg

Expert
Licensed User
Longtime User
Ciao a tutti.
Per la questione splash screen potresti avere un semplice pannello come parte del layout di MainPage che parte visualizzato e dopo un lasso di tempo o quando il resto è inizializzato con Hide lo nascondi e non lo consideri più. Sta a te decidere se mostrarlo ad ogni riavvio oppure solo dopo la prima esecuzione dell'app.

Per il discorso menù, se non ricordo male, avevo una classe che modificava ciò che veniva mostrato come elementi del menù in base al profilo (livello) dell'utente che si autenticava. In pratica la "sezione menù" era fissa e parte del layout (diciamo un panel) e poi veniva "riempita" in funzione dell'utente.

Se può essere utile provo a cercare, ma difficilmente oggi...sono stato precettato dalla moglie...brrrrrrrrrrrr

ps: sempre se non ricordo male, esiste un esempio "un po' complesso" di Erel proprio relativo allo splash screen/page. Probabilmente la Mainpage è lo splash e da quella vai a pgLogin oppure a pgPrimaVeraPagina in base a criteri che fanno parte dell'architettura dell'app stessa.
 

XorAndOr

Active Member
Licensed User
Longtime User
ps: sempre se non ricordo male, esiste un esempio "un po' complesso" di Erel proprio relativo allo splash screen/page. Probabilmente la Mainpage è lo splash e da quella vai a pgLogin
Sto guardando proprio ora l'esempio. Infatti erel usa la Main per lo splash screen
poi chiama la B4XMainPage
B4X:
CSSUtils.SetBackgroundImage(sp.RootPane, File.DirAssets, "logo.png")
    sp.Show
    sp.RootPane.Alpha = 0
    sp.RootPane.SetAlphaAnimated(500, 1)
    Wait For (sp.RootPane) sp_AnimationCompleted
    Sleep(3000)
    sp.RootPane.SetAlphaAnimated(1000, 0)
    Wait For (sp.RootPane) sp_AnimationCompleted
    sp.Close
    MainForm.Show ' <------qui
 

LucaMs

Expert
Licensed User
Longtime User
Per la questione splash screen potresti avere un semplice pannello come parte del layout di MainPage che parte visualizzato e dopo un lasso di tempo o quando il resto è inizializzato con Hide lo nascondi e non lo consideri più.
Se farai così, ricordati di scrivere la routine evento pnlSplash_Touch vuota, altrimenti il tocco passerà alle view sottostanti (imposta anche Elevation del panel su 4, per evitare problemi coi button).

Nessuno vieta di utilizzare la B4XMainPage anche solo come splash-screen; non è un certo grande spreco, però forse il panel è meglio.
 

dragonblu19

Member
Licensed User
Buongiorno. Qualcuno mi potrebbe dire perchè quando lo avvio mi esce la schermata di errore?
Grazie
 

Attachments

  • Ashampoo_Snap_sabato 18 novembre 2023_13h23m36s_001_Compila - Debug Rapido -Build- Default-.jpg
    Ashampoo_Snap_sabato 18 novembre 2023_13h23m36s_001_Compila - Debug Rapido -Build- Default-.jpg
    63.1 KB · Views: 41
Top