Sub Class_Globals
Private Root As B4XView
Type SalesItem (Id As Int, Item_Name As String, Item_Unit As Int, Item_Price As Double, Item_Amount As Double)
End Sub
Public Sub Initialize
End Sub
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
Root.LoadLayout("1")
ShowExample
End Sub
Sub ShowExample
Dim Item001 As SalesItem
Item001.Initialize
Item001 = CreateSalesItem(1, "Item 001", 1, 10, 10)
Log ( $"Item ${Item001.Id}, ${Item001.Item_Name}, ${Item001.Item_Amount}"$ )
Log ( "=========================================================================")
Dim Item002 As SalesItem = Item001 ' <- Direct assignment
Item002.Id = 2
Item002.Item_Name = "Item 002"
Item002.Item_Unit = 2
Item002.Item_Amount = Item002.Item_Unit * Item002.Item_Price
Log ( $"Item ${Item002.Id}, ${Item002.Item_Name}, ${Item002.Item_Amount}"$ )
Log ( $"Item ${Item001.Id}, ${Item001.Item_Name}, ${Item001.Item_Amount} <- Item 001 changed"$ ) ' <- Item 001 changed
Log ( "=========================================================================")
Dim Item003 As SalesItem = CopyObject(Item002) ' <- CopyObject
Item003.Id = 3
Item003.Item_Name = "Item 003"
Item003.Item_Price = 30
Item003.Item_Amount = Item003.Item_Unit * Item003.Item_Price
Log ( $"Item ${Item003.Id}, ${Item003.Item_Name}, ${Item003.Item_Amount}"$ )
Log ( $"Item ${Item002.Id}, ${Item002.Item_Name}, ${Item002.Item_Amount} <- Item 002 not changed"$ ) ' <- Item 002 not changed
End Sub
Public Sub CopyObject (obj As Object) As Object
Dim ser As B4XSerializator ' RandomAccessFile library
Return ser.ConvertBytesToObject(ser.ConvertObjectToBytes(obj))
End Sub
Public Sub CreateSalesItem (Id As Int, Item_Name As String, Item_Unit As Int, Item_Price As Double, Item_Amount As Double) As SalesItem
Dim t1 As SalesItem
t1.Initialize
t1.Id = Id
t1.Item_Name = Item_Name
t1.Item_Unit = Item_Unit
t1.Item_Price = Item_Price
t1.Item_Amount = Item_Amount
Return t1
End Sub