Actions bound to the current row
Actions can be configured with the ROWBOUND attribute depending on
whether there is a current row.
When using a DISPLAY ARRAY or INPUT ARRAY dialog to control
a table view, actions can get the ROWBOUND attribute in order to make the action only available when there
is a current row in the list.
The ROWBOUND attribute is typically used with TABLE and
TREE containers, but can also by used with SCROLLGRID and static
lists in GRID containers (however in last case there will be no row-specific
decoration of the action views)
ROWBOUND attribute is to have
the corresponding action enabled and disabled automatically by the runtime system, depending on the
existence of a row. The default decoration of such action is front-end platform driven and is the
consequence of using the ROWBOUND action attribute. A DISPLAY
ARRAY or INPUT ARRAY can be used with a plain form that show a single row
at a time. The rowbound actions can also be used in such case, using form buttons as action views
for example. These buttons will be automatically enabled/disabled according to the list
content.In DISPLAY ARRAY, the actions created from modification triggers ON UPDATE
and ON DELETE are automatically defined as rowbound actions. Actions for ON
INSERT and ON APPEND are not considered as specific to a row.
On a mobile device, the actions defined with the ROWBOUND attribute will be
available by selecting the three-dot button on the right of a table row. For more details, see Binding action views to a table row.
DISPLAY ARRAY dialog implements three
actions:- The "refresh" action is not "rowbound", and will always be available (active/visible), even if the list is empty.
 - The "check" action is rowbound, and will only be available if there is a (current) row in the list.
 - The "delete" action created by the 
ON DELETEmodification trigger is implicitly "rowbounded". 
DISPLAY ARRAY a_orders TO sr.* ATTRIBUTES(UNBUFFERED)
   ...
   ON ACTION refresh -- not rowbound
      CALL fetch_orders()
   ON ACTION check ATTRIBUTES(ROWBOUND)
      CALL check_order(arr_curr())
   ON DELETE -- implicitly rowbound
      CALL delete_order(arr_curr())
   ...
END DISPLAY