Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Type ButtonData (ClickCount As Int, Column As Int, Row As Int)
Private buttons As List
Private Const GRID_SIZE As Int = 10
Private xui As XUI
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.Show
CreateGrid(GRID_SIZE, GRID_SIZE)
End Sub
Sub CreateGrid (NumberOfColumns As Int, NumberOfRows As Int)
buttons.Initialize
Dim gap As Int = 2dip
Dim BtnWidth As Int = MainForm.RootPane.Width / NumberOfColumns - gap
Dim BtnHeight As Int = MainForm.RootPane.Height / NumberOfRows - gap
For x = 0 To NumberOfColumns - 1
Dim Column As List
Column.Initialize
buttons.Add(Column)
For y = 0 To NumberOfRows - 1
Dim btn As Button
btn.Initialize("btn")
Dim bd As ButtonData
bd.Initialize
btn.Tag = bd
bd.Column = x
bd.Row = y
MainForm.RootPane.AddNode(btn, x * (BtnWidth + gap), y * (BtnHeight + gap), BtnWidth, BtnHeight)
Column.Add(btn)
Next
Next
End Sub
Sub GetButton(Column As Int, Row As Int) As Button
Dim columnList As List = buttons.Get(Column)
Return columnList.Get(Row)
End Sub
Sub btn_Click
Dim btn As Button = Sender
Dim bd As ButtonData = btn.Tag
bd.ClickCount = bd.ClickCount + 1
btn.Text = "Click: " & bd.ClickCount
For i = 0 To GRID_SIZE - 1
Dim xview As B4XView = GetButton((bd.Column + i) Mod GRID_SIZE, bd.Row)
xview.SetColorAnimated(500, xui.Color_White, xui.Color_Green)
xview = GetButton(bd.Column, (bd.Row + i) Mod GRID_SIZE)
xview.SetColorAnimated(500, xui.Color_White, xui.Color_Red)
Sleep(100)
Next
End Sub