I received a request from a customer for faster data entry. They asked if they could navigate the portal using arrow keys.
But, there was a twist! They wanted to move up/down from a specific field.
As a rule, any given order can have upwards of 10+ of the same item. They would start by creating x number of portal rows.
Then populate the Style # for each entry followed by color for each entry then size and qty.
This function returns a string that contains the characters typed that activated an OnObjectKeystroke or OnLayoutKeystroke script trigger.
Get ( TriggerKeystroke ) need to be combined with Code() function to evaluate the keystroke.
Code () - returns the Unicode for the keystroke typed. There is a table of common keys in FM Pro documentation.
As this is going to be triggered from a field OnObjectKeystroke is the only choice.
I also wanted to make the script modular. The user would be start in the field so I used Get ( ActiveFieldName ) as the script Parameter.
The field needs an object name so I used the name returned by Get ( ActiveFieldName).
Set Variable [ $$Prow; Value: Get ( ActivePortalRowNumber )]
If [ Code ( Get ( TriggerKeystroke )) = 29 //code for up arrow]
If [ Get ( ActivePortalRow ) = 1 //if first portal row don’t go up]
Exit Script[]
End If
Go To Portal Row [ Select; Previous ]
Go To Object [ Object Name: Get (ScriptParameter )]
Else If [ Code ( Get ( TriggerKeystroke )) = 31 //code for arrow down]
If [ $$Prow = Count ( Orders_OrderLI|OrderID::zConstant1 ) //if last portal row don't go down]
Exit Script[]
End If
Go To Portal Row [ Select; Next ]
Go To Object [ Object Name: Get (ScriptParameter )]
End If
To use this script for the next field all I had to do was setup the Script Trigger and send Get ( ActiveFieldName ) as the parameter. Done!!
Demo DB