Private Sub B4XPage_Appear
Dim fx As JFX
B4XPages.GetNativeParent(Me).Title="PIPPO"
B4XPages.GetNativeParent(Me).WindowHeight=400
B4XPages.GetNativeParent(Me).WindowWidth=400
B4XPages.GetNativeParent(Me).Resizable=False
SQL1.InitializeSQLite(Main.DbDir,Main.DbFile,False)
RS1=SQL1.ExecQuery("SELECT * FROM pippo WHERE ID = " & Main.iID & "")
Do While RS1.NextRow
Dim iCol As Int=RS1.GetInt("colore")
If iCol = 1 Then
B4XPages.getnativeparent(Me).BackColor=fx.Colors.Yellow
else if iCol = 2 Then
B4XPages.GetNativeParent(Me).BackColor=fx.Colors.ARGB(255,169,255,169)
Else If iCol = 3 Then
B4XPages.GetNativeParent(Me).BackColor=fx.Colors.ARGB(255,169,255,250)
End If
lblTitolo.As(Label).Text=RS1.GetString("titolo")
lblTesto.As(Label).Text=RS1.GetString("testo")
Loop
End Sub
al variare del valore contenuto nel campo "colore" dovrebbe colorare lo sfondo della pagina...ma non lo fa.
Dove sbaglio?
Non devi lavorare così tanto sul form, ma sulla pagina che, dal punto di vista grafico, è Root, un Pane grande quanto il Form.
Delle prime 4 righe con GetNative... vanno bene 2,3,4 ma per il titolo dovresti usare B4XPages.SetTitle(Me, "PIPPO"), è solo più corretto.
Tutte le altre non c'entrano, devi colorare Root, che è il vero sfondo della pagina.
SQL1.InitializeSQLite(Main.DbDir,Main.DbFile,False)
RS1=SQL1.ExecQuery("SELECT * FROM pippo WHERE ID = " & Main.iID & "")
Do While RS1.NextRow
Dim iCol As Int=RS1.GetInt("colore")
If iCol = 1 Then
B4XPages.getnativeparent(Me).BackColor=fx.Colors.Yellow
else if iCol = 2 Then
B4XPages.GetNativeParent(Me).BackColor=fx.Colors.ARGB(255,169,255,169)
Else If iCol = 3 Then
B4XPages.GetNativeParent(Me).BackColor=fx.Colors.ARGB(255,169,255,250)
End If
A me piacerebbe di più così (oltre al colorare Root):
B4X:
Dim MyColors(3) As Int = Array As Int(xui.Color_Yellow, xui.Color_ARGB(255,169,255,169), xui.Color_ARGB(255,169,255,250))
SQL1.InitializeSQLite(Main.DbDir,Main.DbFile,False)
RS1=SQL1.ExecQuery("SELECT * FROM pippo WHERE ID = " & Main.iID & "")
Do While RS1.NextRow
Dim iCol As Int = RS1.GetInt("colore") - 1
Root.Color = MyColors(iCol)
SQL1.InitializeSQLite(Main.DbDir,Main.DbFile,False)
RS1=SQL1.ExecQuery("SELECT * FROM pippo WHERE ID = " & Main.iID & "")
Do While RS1.NextRow
Dim iCol As Int=RS1.GetInt("colore")
If iCol = 1 Then
B4XPages.getnativeparent(Me).BackColor=fx.Colors.Yellow
else if iCol = 2 Then
B4XPages.GetNativeParent(Me).BackColor=fx.Colors.ARGB(255,169,255,169)
Else If iCol = 3 Then
B4XPages.GetNativeParent(Me).BackColor=fx.Colors.ARGB(255,169,255,250)
End If
A me piacerebbe di più così (oltre al colorare Root):
B4X:
Dim MyColors(3) As Int = Array As Int(xui.Color_Yellow, xui.Color_ARGB(255,169,255,169), xui.Color_ARGB(255,169,255,250))
SQL1.InitializeSQLite(Main.DbDir,Main.DbFile,False)
RS1=SQL1.ExecQuery("SELECT * FROM pippo WHERE ID = " & Main.iID & "")
Do While RS1.NextRow
Dim iCol As Int = RS1.GetInt("colore") - 1
Root.Color = MyColors(iCol)