I can't run it as I don't have a library it contains, but another thought crossed my mind.
If the fields must be entered in the correct order, which it sounds like it does, you could add a panel covering the whole screen, then in the ontouch callback, test the fields in order and send it back from there with IME.Showkeyboard and return True from the onfocus to consume the event. If none fail return false from the ontouch and the click will pass through.
You'd have to setup the ontouch using Reflection to achieve this though.
Something like this:
Code:
'Add the ontouch listener in Activity create
Dim R As Reflector
R.Target = Panel1
R.SetOnTouchListener("Panel1_Touched")
'Then as the touch sub
Sub Panel1_Touched (viewtag As Object,action As Int,x As Float,y As Float, Mevent As Object) As Boolean
If edtOSGBGridRef1Valid = False The
'Message if required
IME.ShowKeyboard(edtOSGBGridRef1)
'Consume the touch event
Return True
End If
If edtOSGBGridRef2Valid = False Then
'Message if required
IME.ShowKeyboard(edtOSGBGridRef2)
'Consume the touch event
Return True
End If
' Test Them all
' .
' .
' .
' 'If they all pass then Return False to pass the touch through
Return False
End Sub
That should stop the focus or touch going anywhere else when validation fails. You can obviously add a pertinent message if you wish.
I've tested it with FieldOrder and it seems to work OK.
You would still need the inline validation as pressing next on the keyboard wouldn't go through the panel.