Italian [B4XPages] Domande (sto passando tutto il progetto da B4A)

josejad

Expert
Licensed User
Longtime User
Ho dichiarato "Public language As String" in Class_Globals di B4XMainPage ma in B4XLoginPage quando la uso mi da errore dicendo che non è dichiarata
¿Cómo la usas en B4XLoginPage?
How are you calling it in B4XLoginPage?


(google translate)
Come si usa in B4XLoginPage?
è necessario utilizzare

B4X:
B4XPages.MainPage.language = "italiano"
 

3uowiS

Active Member
Licensed User
Ricorda che in ogni momento puoi convertire, magari temporaneamente, da B4XView a View "nativa" e viceversa. Ad esempio, hai delle EditText ma le dichiari come B4XView (va fatto); se in un certo punto del programma hai bisogno di usare una proprietà o metodo specifico della EditText - che probabilmente non esiste in B4i, non lo so perché non ho B4i, scriverai qualcosa di questo tipo:
B4X:
Private MiaEditText As B4XView ' questo di base; fallo generare al Designer - Generate members.

' Se qui avessi la necessità di usare una proprietà o metodo specifico delle EditText...
Dim et As EditText = MiaEditText
'uso et.[NomeProprietà]
'uso et.[NomeMetodo]

' MiaEditText rimarrà una B4XView; et sarà solo una variabile di comodo, temporanea (locale alla routine)
@LucaMs Impressionante, riesci ad anticiparmi anche le domande! 😄
Infatti ho scoperto che la EditText se dichiarata B4XView non gestisce la proprietà .PasswordMode quindi ho fatto come hai scritto sopra!
Questa cosa poi dovrò ricordarmi di cambiarla in B4i...
 

3uowiS

Active Member
Licensed User
¿Cómo la usas en B4XLoginPage?
How are you calling it in B4XLoginPage?


(google translate)
Come si usa in B4XLoginPage?
è necessario utilizzare

B4X:
B4XPages.MainPage.language = "italiano"

Ho risolto creando il modulo modGlobals con tutte le dichiarazioni delle variabili pubbliche e le ho richiamate da lì (modGlobals.language).

I solved by creating the modGlobals module with all statements of public variables and I called them from there (modGlobals.language).
 
Last edited:

3uowiS

Active Member
Licensed User
Problema: prima quando cambiavo lingua e passavo da login a register mi rimaneva la lingua selezionata perché richiamavo la sub in Activity_resume, qui però non c'è, quindi se vado in register e cambio lingua me la cambia in quella pagina ma non quando poi torno in login. Come risolvo?
 

3uowiS

Active Member
Licensed User
Problema: prima quando cambiavo lingua e passavo da login a register mi rimaneva la lingua selezionata perché richiamavo la sub in Activity_resume, qui però non c'è, quindi se vado in register e cambio lingua me la cambia in quella pagina ma non quando poi torno in login. Come risolvo?
Risolto, ho richiamato la routine in B4XPage_Appear e adesso si aggiorna la lingua. :)
 

3uowiS

Active Member
Licensed User
Con lo Spinner se dichiarato come B4XView come devo fare per popolarlo?
Quando era dichiarato come spinner usavo .Add() mi ora da errore...

Altra cosa:
in B4A avevo lo Starter con questo codice per far funzionare il database:
B4X:
Sub Process_Globals
    Dim sqlPlayers As SQL
End Sub

Sub Service_Create
    'Copio il Players DB da Assets a Internal
If File.Exists(File.DirInternal,"sqlPLAYERS")=False Then
    File.Copy(File.DirAssets,"PLAYERS.db",File.DirInternal,"sqlPLAYERS")
End If
    'Faccio la connessione con il file
    sqlPlayers.Initialize(File.DirInternal,"sqlPLAYERS",True)
End Sub
In B4XPages dove lo devo mettere?
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Con lo Spinner se dichiarato come B4XView come devo fare per popolarlo?
Quando era dichiarato come spinner usavo .Add() mi ora da errore...
Certo, perché B4XView è una specie di involucro che conterrà una View "nativa" (una Label, una EditText o un'altra qualsiasi View) ma proprio per questo non può avere i metodi, proprietà ed eventi di qualsiasi View.

In questi casi devi...
Infatti ho scoperto che la EditText se dichiarata B4XView non gestisce la proprietà .PasswordMode quindi ho fatto come hai scritto sopra!
Dim sp As Spinner = LaTuaB4XView
 

LucaMs

Expert
Licensed User
Longtime User
Ho dimenticato di scrivere una cosa importante, in previsione di un'eventuale versione iOS, come mi pare che tu avessi premesso.
Quando usi quel'espediente, chiamiamolo così, meglio che tu lo metta all'interno di un blocco #If.
B4X:
#If B4A
Dim sp As Spinner = LaTuaB4XView
'...
#Else If B4I
'...
#End If
In questo modo, quando svilupperai la versione iOS eventualmente aggiungerai il codice in quella "zona" (potresti farlo anche subito, conoscendo l'equivalente B4i dello Spinner B4A).

Questo in tutti i casi simili, ovviamente (come per la EditText della situazione precedente).
 

3uowiS

Active Member
Licensed User
Esatto! Questo @LucaMs, non ne sa proprio niente di programmazione e mi sta proprio antipatico!... 🤣 🤣 (non smetterò mai di ringraziarlo! 😉)

@Sabotto il mio nickname è un nome in codice: se lo provi a leggere sottosopra scoprirai che è semplicemente il mio nome (Simone).
Però adesso che sai questo segreto dovrò ucciderti! 😈
 

LucaMs

Expert
Licensed User
Longtime User
è semplicemente il mio nome (Simone).
"e so' Simone!"
1617969234744.png
 

3uowiS

Active Member
Licensed User
L'app l'ho finita di trasferire in B4XPage il giorno stesso che ho aperto questo thread, grazie agli aiuti e la disponibilità di @LucaMs è stato più semplice di quanto pensassi.
Ma andando avanti via via incontro qualche problemino relativo al diverso modo di programmare, va bene se continuo ad usare questo thread per le domande o meglio aprirne uno nuovo ogni volta?

In questo caso vorrei sapere come si gestisce il tasto Back sulle B4XPage visto che il seguente codice richiama l'activity, quindi ovviamente non funziona
B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
    If KeyCode = KeyCodes.KEYCODE_BACK Then
        '...
    End If
End Sub

Vorrei fare in modo che con il tasto back mi porti alla mainPage invece che alla pagina precedente.

Grazie in anticipo
 

3uowiS

Active Member
Licensed User
L'app l'ho finita di trasferire in B4XPage il giorno stesso che ho aperto questo thread, grazie agli aiuti e la disponibilità di @LucaMs è stato più semplice di quanto pensassi.
Ma andando avanti via via incontro qualche problemino relativo al diverso modo di programmare, va bene se continuo ad usare questo thread per le domande o meglio aprirne uno nuovo ogni volta?

In questo caso vorrei sapere come si gestisce il tasto Back sulle B4XPage visto che il seguente codice richiama l'activity, quindi ovviamente non funziona
B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
    If KeyCode = KeyCodes.KEYCODE_BACK Then
        '...
    End If
End Sub

Vorrei fare in modo che con il tasto back mi porti alla mainPage invece che alla pagina precedente.

Grazie in anticipo

@LucaMs sei in ritardo, non mi hai ancora risposto a questo! 🤣 🤣 🤣
Scherzo ovviamente!!! ;)😅
 
Top