Android Question Formatting B4XTable column numbers. Works with B4J but not with B4A

Sabotto

Active Member
Licensed User
I want to format the numeric columns of a B4xTable with two decimals and thousands separating point.
This code works fine in B4J but doesn't work in B4A!!! Why? If needed I can post a small example in B4J and B4A where the differences are highlighted.

B4X:
Sub SetB4XTable

    B4XTable1.DefaultDataFormatter = CreateDefaultFormatter

    B4XTable1.AddColumn("ID", B4XTable1.COLUMN_TYPE_TEXT)
    B4XTable1.AddColumn("Data", B4XTable1.COLUMN_TYPE_TEXT)
    B4XTable1.AddColumn("Km", B4XTable1.COLUMN_TYPE_TEXT)
    B4XTable1.AddColumn("Importo", B4XTable1.COLUMN_TYPE_TEXT)
    B4XTable1.AddColumn("Litri", B4XTable1.COLUMN_TYPE_TEXT)
    
    CreateCustomFormat(B4XTable1.GetColumn("Km"))
    Sleep(100)
    
End Sub


Private Sub CreateDefaultFormatter As B4XFormatter
    Dim formatter As B4XFormatter
    formatter.Initialize
    
    Dim DefaultFormat As B4XFormatData = formatter.GetDefaultFormat
    DefaultFormat.MaximumFractions = 2
    DefaultFormat.MinimumFractions = 2
    DefaultFormat.DecimalPoint = ","
    DefaultFormat.GroupingCharacter = "."
    Return formatter
End Sub

Private Sub CreateCustomFormat (xTableColumn As B4XTableColumn)
    Dim formatter As B4XFormatter
    formatter.Initialize
    xTableColumn.Formatter = formatter
    Dim NewFormatData As B4XFormatData = xTableColumn.Formatter.NewFormatData
    NewFormatData.DecimalPoint = ","
    NewFormatData.GroupingCharacter = "."
    NewFormatData.MaximumFractions = 0
    NewFormatData.TextColor = xui.Color_Blue
    xTableColumn.Formatter.AddFormatData(NewFormatData, formatter.MIN_VALUE, formatter.MAX_VALUE, True)
End Sub
 

Sabotto

Active Member
Licensed User
RESOLVED!!! When adding the columns with the B4A version I had not typed them as COLUMN_TYPE_NUMBERS, unlike what I did with B4J!
 
Last edited:
Upvote 0

Mahares

Expert
Licensed User
Longtime User
I had not typed them as COLUMN_TYPE_NUMBERS,
You could have also left it as B4XTable1.COLUMN_TYPE_TEXT and added one line of code to your sub. See below:
B4X:
Private Sub CreateCustomFormat (xTableColumn As B4XTableColumn)
    xTableColumn.ColumnType = 2   'represents NUMBERS    'Add this line to the sub
    Dim formatter As B4XFormatter
'rest of your code
 
Upvote 0
Top