Italian [Risolto] [B4J] Non colora background B4XPages

Aldo's

Active Member
Licensed User
Ciao a tutti.
Io ho scritto questo codice:
B4X:
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?
 

ivanomonti

Expert
Licensed User
Longtime User
scusa cosa devi colorare!!!

colora il form parent dell'object imparentato:
Root.GetView(0).Parent.Color = xui.Color_ARGB(255,Rnd(0,255),Rnd(0,255),Rnd(0,255))
 

LucaMs

Expert
Licensed User
Longtime User
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.
 

LucaMs

Expert
Licensed User
Longtime User
B4X:
    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)
 
Last edited:

Aldo's

Active Member
Licensed User
B4X:
    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)
Mi piace anche a me... bello e funzionale.
Grazie
 
Top