This is achieveable by using GWC, and not the GDC, so maybe perceived as a GDC issue, rather than a FGL issue, even though deep down it needs FGL change to be implemented properly.
The need for it in a GWC application is if you think of the shopping basket icon on each line of a list of products, click to add this line to your order. Similarly a link or button on each line of the array that needs to trigger a 4gl-action. In each instance clicking of the link or button needs to determine and set the current row and trigger an action.
For those interested, in the GWC, add a label to a column in the array, and set the presentation style attribute textFormat to html.
Display the result of the following function to the label field in the array ...
FUNCTION actionUrl_image(action, i, image)
DEFINE action STRING -- action to trigger
DEFINE i INTEGER -- row of array
DEFINE image STRING -- image to click on
RETURN SFMT("<img gwc:attributes=\"src '%3' ? ImageURI('%3') : ImageURI('1x1')\" onclick=\"gwc.capi.SessionVar('row_index','%2');gwc.capi.Action(gwc.core.state.ActionDidByName('%1')); return false;\" ></img>", action, i USING "<<<", image)
END FUNCTION
In the label field it will render an image, if you click on it it will set a session variable to indicate the row, and then trigger the action. So in your 4gl code you have...
ON ACTION image
CALL ui.Interface.FrontCall("session","getvar","row_index", row_index)
MESSAGE SFMT("Image clicked on row %1", row_index)
CALL fgl_set_arr_curr(row_index)
... to retreive the current row from the session variable and set it.
For buttons or links it is something similar except using a <a> tag or a <button> tag instead.
Of course being able to have an IMAGE or BUTTON in a TABLE and specifying an action to execute when clicking on the IMAGE or BUTTON in the TABLE would be preferable.