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

Well-Known Member
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