B4J Library [B4X] [XUI] SD FlexGrid (Table)

Discussion in 'B4J Libraries & Classes' started by Star-Dust, Dec 29, 2018.

  1. Star-Dust

    Star-Dust Expert Licensed User

    I created a new library to show a table (or grid) similar to the one in EXCEL.

    There are already excellent classes that allow many to accomplish things, such as xCustomListView by @Erel (B4X) and with the FlexibleTable by @klaus (B4A)

    I wanted to make something slightly different suited to my needs.

    Explanations:
    1. To get the calculation of the cells that contain a formula I have added Erel's B4XEval to my Library, but as soon as possible I will make it external so that everyone can modify it according to their needs.
    2. To select multiple cells, position yourself on the first cell of those to be selected (the one at the top left) click a shot and then click again and drag your finger to cover all the cells (or area) that you want to select
    3. It is still in beta version, presents problems in large grids.
    4. Now only for B4A and B4i


    SD_FlexGrid

    Author: Star-Dust
    Version: 0.05
    • Eval
      By Erel Uziel
      • Fields:
        • Error As Boolean
      • Functions:
        • Calculate (Expression As String) As Double
        • Class_Globals As String
        • Initialize (FG As FlexGrid) As String
        • IsInitialized As Boolean
          Verifica se l'oggetto sia stato inizializzato.
    • FlexGrid
      • Events:
        • CellClick (Row As Int, Col As Int)
        • CellLongClick (Row As Int, Col As Int)
        • HeadClick (Index As Int)
        • Modified (Row As Int, Col As Int)
      • Fields:
        • ActiveCheckBox As Boolean
        • TypeButton As Int
        • TypeCheck As Int
        • TypeDouble As Int
        • TypeFloat As Int
        • TypeImage As Int
        • TypeInt As Int
        • TypeString As Int
      • Functions:
        • AddRow (Cell As Object(), Refresh As Boolean) As String
          eg. Flexgrid.AddRow(Array As Object(i,B,"User ","Description " ,100.00), True)
        • AddRow2 (Cell As Object(), HeightRow As Int, Refresh As Boolean) As String
          eg. Flexgrid.AddRow(Array As Object(i,B,"User ","Description " ,100.00),40dip,True)
        • AddRowAt (index As Int, Cell As Object(), Refresh As Boolean) As String
          eg. Flexgrid.AddRow(2,Array As Object(i,B,"User ","Description " ,100.00), True)
        • AddToParent (Parent As B4XView, Left As Int, Top As Int, Width As Int, Height As Int, ColsNumber As Int) As String
          Parent is Panel to Add Grid
          eg. Flexgrid.AddToParent(Activity,0,0,100%x,100%y,5)
        • Class_Globals As String
        • ClearRow As String
        • ClearSelection As String
        • DesignerCreateView (Base As Object, Lbl As Label, Props As Map) As String
          Base type must be Object
        • EditCell (Row As Int, Col As Int) As String
          eg. Flexgrid.EditCell(1,1)
        • EditCellOnSite (Row As Int, Col As Int) As String
          eg. Flexgrid.EditCell(1,1)
        • GetCellCol (Col As Int) As Object()
          eg. Dim S() as String = Flexgrid.GetCellCol(1)
          eg. Dim B() as Boolean = Flexgrid.GetCellCol(2)
        • GetCellRow (Row As Int) As Object()
          eg Dim Row() as Object = Flexgrid.GetCellRow(1)
        • GetCellValue (Row As Int, col As Int) As Object
          eg. Dim I as int = Flexgrid.GetCellValue(1,1)
          eg. Dim S as String = FlexGrid.GetCellValue(2,2)
        • GetTypeCol (Col As Int) As Int
          eg. If Flexgrid.GetTypeCol(1)=Flexgrid.TypeInt Then .....
        • Initialize (Callback As Object, EventName As String) As String
        • Invalidate As String
        • IsInitialized As Boolean
          Verifica se l'oggetto sia stato inizializzato.
        • RemoveRow (Row As Int) As String
          Row (0...n-1)
          eg. Flexgrid.RemoveRow(1)
        • ResetCustomizeCell (Col As Int, Row As Int) As String
          eg. Flexgrid.ResetCustomizeCell(1,1)
        • SelectCell (Row As Int, Col As Int) As String
          eg. Flexgrid.SelectCell(1,1)
        • SelectCol (Col As Int) As String
          eg. Flexgrid.SelectCol(1)
        • SelectPanel_Touch (Action As Int, X As Float, Y As Float) As String
        • SelectRow (Row As Int) As String
          eg. Flexgrid.SelectRow(1)
        • SetCellCustomize (Row As Int, Col As Int, Text_Color As Int, Background_Color As Int, TextFont As B4XFont) As String
          eg. Flexgrid.SetCellCustomize(1,1,XUI.Color_Black,XUI.Color_White,XUi.CreateDefaultFont(12))
        • SetCellValue (Row As Int, Col As Int, Value As Object) As String
          eg. Flexgrid.SetCellValue(1,1)=True
          eg. Flexgrid.SetCellValue(2,2)="OK"
          eg. Flexgrid.SetCellValue(3,3)=3
        • SetColAlignment (ColumnIndex As Int, Alignment As String) As String
          Index (0..n-1)
          eg. SetColAlignment(0,"CENTER")
        • SetColCustomize (Col As Int, Text_Color As Int, Background_Color As Int, TextFont As B4XFont) As String
          eg. Flexgrid.SetColCistomize(1,XUI.Color_Black,XUI.Color_White,XUi.CreateDefaultFont(12))
        • SetColName (ColumnIndex As Int, Name As String) As String
          Index (0..n-1)
          eg. Flexgrid.SetColName(1,"Help")
        • SetColType (ColumnIndex As Int, Typ As Int) As String
          Index (0..n-1)
          eg. SetColType(0,FlexGrid.TypeInt)
        • SetColWidth (ColumnIndex As Int, Width As Int) As String
          Index (0..n-1)
          eg. SetColWidth(0,100dip)
        • SetRowCustomize (Row As Int, Text_Color As Int, Background_Color As Int, TextFont As B4XFont) As String
          eg. Flexgrid.SetRowCustomize(1,XUI.Color_Black,XUI.Color_White,XUi.CreateDefaultFont(12))
        • SetRowHeight (IndexRow As Int, Height As Int) As String
          IndexRow (0..Size-1)
          eg. setRowHeight(0,60dip)
      • Properties:
        • Base As B4XView [read only]
        • ColsAlignment
          eg. setColsAlignment(Array As String ("LEFT","CENTER","CENTER","RIGHT"))
        • ColsName
          eg. Flexgrid.ColName=array As String ("First","Second")
        • ColsType
          eg. ColsType=Array As Int(FlexGrid1.TypeInt,FlexGrid1.TypeCheck,FlexGrid1.TypeString,FlexGrid1.TypeString,FlexGrid1.TypeFloat)
        • ColsWidth
          eg. SetColsWìdth(Array As Int (100dip,50dip,100dip,100dip))
        • Font
          eg. Flexgrid.setFont(xui.CreateDefaultFont(12))
        • RowCount As Int [read only]
          Dim Size as int = Flexgrid.RowCount
        • ScrollToRow
          eg. Flexgrid.ScroolToRow=50
    • OrderData
      • Fields:
        • Added As Int
        • Index As Int
        • IsInitialized As Boolean
          Verifica se l'oggetto sia stato inizializzato.
        • Level As Int
      • Functions:
        • Initialize
          Inizializza i campi al loro valore predefinito.
    • ParsedNode
      • Fields:
        • IsInitialized As Boolean
          Verifica se l'oggetto sia stato inizializzato.
        • Left As ParsedNode
        • NodeType As Int
        • Operator As String
        • Right As ParsedNode
        • Value As Double
      • Functions:
        • Initialize
          Inizializza i campi al loro valore predefinito.
    Video1.gif Video2.gif Video4.gif
    Video5.gif Video6.gif Video3.gif

    For more details: https://www.b4x.com/android/forum/threads/xui-flexgrid.98686/
     

    Attached Files:

    Last edited: Jan 17, 2019
  2. Star-Dust

    Star-Dust Expert Licensed User

    I was hoping for feedback from those who used it to understand how to continue the develpe of the library (having the time)
     
  3. monki

    monki Active Member Licensed User

    Hallo star-Dust,
    great work but it not work with b4j 7.00?

    B4J Version: 7.00
    Java Version: 8
    Parsing code. (0.07s)
    Building folders structure. (0.03s)
    Compiling code. (0.10s)
    Compiling layouts code. (0.00s)
    Organizing libraries. (0.00s)
    Compiling generated Java code. Error
    Cannot find: D:\PRG\B4J 7.00\B4J\libraries\xui.jar

    monki
     
  4. Cableguy

    Cableguy Expert Licensed User

    You have to copy the XUI libs to the corresponding folders, and select it in the libs tab
     
  5. monki

    monki Active Member Licensed User

    Hallo cableguy,
    The Jxui lib is a intern lib und come with the Installation.
    The jxui lib is in the internal lib folder and jxui is selected in the libs tab.
    Die error Log say " Cannot find: D:\PRG\B4J 7.00\B4J\libraries\xui.jar"
    The xui.jar is the Name of the B4A xui lib.

    Monki
     
  6. Star-Dust

    Star-Dust Expert Licensed User

    I'm sorry, but as you have observed from the files I have not released the version for B4J yet, but only B4A and B4i.
    You are using the Android version on B4J
     
  7. DonManfred

    DonManfred Expert Licensed User

    You should not mark this thread as B4X then if it is only for B4A and B4I.
     
  8. Cableguy

    Cableguy Expert Licensed User

    Why not!? @Erel has realeased XUI libs that only target B4J and B4A, not b4i... He does however need to make this CLEAR in the release thread!
     
  9. DonManfred

    DonManfred Expert Licensed User

    really? Which one?

    btw XUI != B4X

    i would suggest the same
     
  10. Cableguy

    Cableguy Expert Licensed User

    Also, as stated In the release thread, this lib is BETA so it is not unusual for it to be... Not complete(ly) XUI
     
  11. Star-Dust

    Star-Dust Expert Licensed User

    True, for example, the B4X libraries were announced only for B4A and B4J but only after a few weeks we were able to use them in B4i. But the thread was marked B4X.

    There are other examples in this regard, but I do not want to prolong and i want to avoid controversy. I prefer to remove B4X and put it back when I add the B4J version.
     
    Last edited: Jan 17, 2019
    amaxco and inakigarm like this.
  12. Erel

    Erel Administrator Staff Member Licensed User

    As I see it, it is completely fine to mark a thread with [B4X] even if it only supports two platforms. You should explain it in the library instructions.

    [B4X] tag is important as the search engine treats such threads as multiplatform.
     
    inakigarm, klaus, DonManfred and 2 others like this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice