Italian programmare con b4xpages

MroBurk

Member
Licensed User
Salve, una curiosità se io programmassi una app multipiattaforma utilizzando b4xpages, le linee di codice presentano importanti differenze tra B4A e B4J? se si su quali "Oggetti" differiscono?
 

LucaMs

Expert
Licensed User
Longtime User
Un paio di premesse:

1 - le B4XPages sono molto più utili se devi sviluppare con B4A e B4I, piuttosto che per uno dei due e B4J, per l'evidente motivo che i primi due sono per dispositivi mobile mentre il terzo è per desktop;

2 - per sviluppare per più piattaforme, in particolare come nel tuo caso, non è indispensabile che il progetto sia di tipo B4XPages; è importante che utilizzi B4XView e XUI.

Le linee di codice sorgente in pratica non cambiano, nel senso che parole-chiave, operatori, etc. sono identici, è lo stesso linguaggio.
Per la grafica, appunto anziché usare le View native, specifiche di B4A o B4J, userai come tipo base B4XView e, quando necessario, lo convertirai temporaneamente nel tipo nativo.

Per cose particolari e specifiche di un linguaggio rispetto all'altro, si usa la compilazione condizionale:
B4X:
#IF B4A
' compila questo...
'
#ELSE IF B4J
' compila quest'altro...
'
#ELSE ' evidentemente è B4I
' compila quest'altro ancora
'
#END IF
 
Last edited:

Elric

Well-Known Member
Licensed User
Per la grafica, appunto anziché usare le View native, specifiche di B4A o B4J, userai come tipo base B4XView e, quando necessario, lo convertirai temporaneamente nel tipo nativo.
Ecco, questa è una cosa che ancora mi sfugge: in pratica se uso delle label le devo definire
B4X:
Label1 as B4XView
anziché
B4X:
Label1 as Label
?
 

LucaMs

Expert
Licensed User
Longtime User
Ecco, questa è una cosa che ancora mi sfugge: in pratica se uso delle label le devo definire
B4X:
Label1 as B4XView
anziché
B4X:
Label1 as Label
?
Non è che "devi", ma sarebbe meglio, perché in quel modo il sorgente sarebbe compatibile con tutti e tre gli ambienti.

In quel modo, poi, potresti sfruttare caratteristiche delle B4XView non presenti in tutte le view native. Ad esempio, B4XView ha la proprietà Rotation che nessuna view ha e così potresti ruotare la Label molto facilmente.

In ogni "momento" (punto del sorgente) puoi sempre convertire la B4XView nel suo tipo nativo (Label, nel tuo esempio), assegnandola ad una variabile di quel tipo:
B4X:
Dim xLabel As B4XView
'
Dim lbl As Label = xLabel
'
oppure usando la funzione AS:
B4X:
Dim xLabel As B4XView
'
xLabel.AS(Label).Padding = Array As Int (30dip, 10dip, 10dip, 10dip)
'
 
Last edited:
Top