Italian [RISOLTO] B4A - B4XLoadingIndicator mentre carica il database

udg

Expert
Licensed User
Longtime User
4 - me lo so' dimenticato
Ho provato con l'opzione #4, ma sembra non abbia funzionato
LucaMs: ma hai caricato il progetto?
Eh, me lo so' dimenticato 😀
 

3uowiS

Active Member
Licensed User
Eh ma hai tolto il B4XLoadingIndicator!
Si, lo avevo scritto che avevo risolto con una label... 😅
Tanto B4XLoadingIndicator come era messo non mi funzionava...

Dimenticavo, nel debug va selezionata la lingua (anche se poi nella Main non è ancora impostato il multilingua) e poi premere sulla freccia per l'accesso (non ho ancora impostato login e registrazione), poi andare su "Database".
 

LucaMs

Expert
Licensed User
Longtime User
Si, lo avevo scritto che avevo risolto con una label.
Certo, avevo letto che l'avevi tolto ma pensavo che ci "mandassi" l'app per risolvere quel problema.

Comunque, nell'Activity Database hai messo:

CallSubDelayed(Me, "Load")

ma poi ci sono altre righe di codice, che verrano eseguite PRIMA della routine Load, quindi anche dopo quella
StartActivity(Register).

Usando CallSubDelayed, la routine in questione viene eseguita al completamento di quella che contiene il comando.


MOLTO BELLA GRAFICAMENTE.
 

3uowiS

Active Member
Licensed User
Certo, avevo letto che l'avevi tolto ma pensavo che ci "mandassi" l'app per risolvere quel problema.

Comunque, nell'Activity Database hai messo:

CallSubDelayed(Me, "Load")

ma poi ci sono altre righe di codice, che verrano eseguite PRIMA della routine Load, quindi anche dopo quella
StartActivity(Register).

Usando CallSubDelayed, la routine in questione viene eseguita al completamento di quella che contiene il comando.

Quindi dovrei ordinare meglio i codici per farli meno contorti?

MOLTO BELLA GRAFICAMENTE.
Grazie del complimento! 🙏
La parte grafica infatti è quella che non mi preoccupa...il problema sono far funzionare tutti i codici e sono solo all'inizio...questa è la mia prima app e ci sono cose che ho in mente, ma non ho minimamente idea di come svilupparle...ma in qualche modo farò. 💪
 

LucaMs

Expert
Licensed User
Longtime User
Quindi dovrei ordinare meglio i codici per farli meno contorti?
No, volevo solo farti notare che se usi CallSubDelayed (non specificatamente in questo caso, in generale) l'esecuzione della routine "chiamata" avverrà solo al termine di quella "in corso", quella che contiene la Call; quindi tenerlo in considerazione.

C'è un errore nel caricamento della xclv. Quando crei il pannello p, devi subito impostare le sue dimensioni e solo dopo caricarci il layout:

p.SetLayoutAnimated(0,0,0,pnlPlayer.Width,pnlPlayer.Height)
p.LoadLayout("playerDb")

ma il problema è che tu non hai un pnlPlayer nel layout Database.
 

3uowiS

Active Member
Licensed User
No, volevo solo farti notare che se usi CallSubDelayed (non specificatamente in questo caso, in generale) l'esecuzione della routine "chiamata" avverrà solo al termine di quella "in corso", quella che contiene la Call; quindi tenerlo in considerazione.
Grazie mille! Ne terrò conto! ;)

C'è un errore nel caricamento della xclv. Quando crei il pannello p, devi subito impostare le sue dimensioni e solo dopo caricarci il layout:

p.SetLayoutAnimated(0,0,0,pnlPlayer.Width,pnlPlayer.Height)
p.LoadLayout("playerDb")

ma il problema è che tu non hai un pnlPlayer nel layout Database.
pnlPlayer è nel Layout playerDb, pensavo che prendesse riferimento comunque anche da "p.LoadLayout("playerDb")".
Se il riferimento lo prende solo da Database allora devo dargli un altro riferimento, solo che mi ricordo che inizialmente avessi preso riferimenti da "Database" ma non me lo adattava allo schermo, non so perché playerDb ma mi rimaneva più stretto...così provai ad usare pnlPlayer come riferimento per farlo adattare allo schermo e mi venne largo tutto lo schermo, quindi pensavo andasse bene.
 

LucaMs

Expert
Licensed User
Longtime User
Grazie mille! Ne terrò conto! ;)


pnlPlayer è nel Layout playerDb, pensavo che prendesse riferimento comunque anche da "p.LoadLayout("playerDb")".
Se il riferimento lo prende solo da Database allora devo dargli un altro riferimento, solo che mi ricordo che inizialmente avessi preso riferimenti da "Database" ma non me lo adattava allo schermo, non so perché playerDb ma mi rimaneva più stretto...così provai ad usare pnlPlayer come riferimento per farlo adattare allo schermo e mi venne largo tutto lo schermo, quindi pensavo andasse bene.
[In generale] Dovresti "ancorare" la CLV al suo contenitore (che sia l'Activity o un panel) e quando crei gli elementi, usare come larghezza xclv.AsView.Width.
 

3uowiS

Active Member
Licensed User
[In generale] Dovresti "ancorare" la CLV al suo contenitore (che sia l'Activity o un panel) e quando crei gli elementi, usare come larghezza xclv.AsView.Width.
Avevo provato così, ma con lo script invece degli ancoraggi e non me lo prendeva.
Proverò con gli ancoraggi visto che nel vecchio thread mi avevi detto che era meglio, tanto in quel layout non ci sono immagini. ;)
A proposito, ma perché gli ancoraggi sono migliori? Con gli ancoraggi come faccio a far rispettare delle proporzioni? Come hai visto nella grafica della mia app ci sono immagini che non possono essere deformate, con gli ancoraggi, adattandosi al dispositivo non si deformano?
Ad esempio, un' immagine che deve rimanere al centro ma proporzionata, se la fisso a sinistra su alcuni dispositivi non risulta nel mezzo, se la fisso destra-sinistra la stira per adattarla e perde la proporzione. Per questo avevo usato lo script, perché con le percentuali facevo tornare le cose esattamente come le vorrei. Ma la controindicazione quale è?
 

LucaMs

Expert
Licensed User
Longtime User
Infatti dipende da quali view e in quale posizione debbano stare.

Usare gli ancoraggi non significa non dover usare anche lo script e viceversa.
 

3uowiS

Active Member
Licensed User
Infatti dipende da quali view e in quale posizione debbano stare.

Usare gli ancoraggi non significa non dover usare anche lo script e viceversa.
Ottimo! Quindi questo vuol dire che posso usare entrambi anche all'interno dello stesso layout, giusto? Per alcune cose uso gli ancoraggi e per altre gli script...
 

Sagenut

Well-Known Member
Licensed User
Longtime User
Prova questo
MyBasket with Loading Indicator
Attento che non ho rinominato la cartella, quindi non sovrascrivere i tuoi dati per ora. ;)
C'è qualche commento nelle linee che ho modificato (solo nella Activity Database) e ho modificato un pò lo Script del Layout PlayerDB.
Ma forse si potrebbe sistemare ancora.
 
Last edited:

3uowiS

Active Member
Licensed User
@Sagenut prima che finisca l'app a te e @LucaMs vi farò un monumento! Siete fantastici! ;)
L'animazione adesso funziona solo che ci mette molto di più a caricare...forse non riesce a gestire sia l'animazione che i molti dati da caricare.
I commenti sono utilissimi per farmi capire i meccanismi! Grazie davvero!!! 🙏
 

Sagenut

Well-Known Member
Licensed User
Longtime User
L'animazione adesso funziona solo che ci mette molto di più a caricare...forse non riesce a gestire sia l'animazione che i molti dati da caricare.
Probabile anche che mi sia perso qualcosa e si debba sistemare altro.
 

LucaMs

Expert
Licensed User
Longtime User
@Sagenut prima che finisca l'app a te e @LucaMs vi farò un monumento! Siete fantastici! ;)
L'animazione adesso funziona solo che ci mette molto di più a caricare...forse non riesce a gestire sia l'animazione che i molti dati da caricare.
I commenti sono utilissimi per farmi capire i meccanismi! Grazie davvero!!! 🙏
Grazie per il monumento ma... non dovresti aspettare che @Sagenut sia morto? 😄
 

Sagenut

Well-Known Member
Licensed User
Longtime User
non dovresti aspettare che @Sagenut sia morto? 😄
Lo accetto anche adesso.
Poi prometto che un giorno provvederò a fare quanto dovuto. 🤣
 
Top