XTREE enhancement: A new optional parameter, xinfo, may be specified to allow XTREE to return additional information:
xcall XTREE, srow, scol, answer, array, cnt, coldef, exitcode, erow, ecol, flags, file, mmoclr, xtrctl, filidx, xinfo
xinfo must be mapped as a string (fixed or dynamic). Note that if not using filidx, you may specify "" as a placeholder for it.
Currently, the only information returned in xinfo is a list of multiple exitcodes that apply to the tree just exited (primarily useful in trees where a single event might logically be associated with more than one exitcode). The format is as follows:
0,exitcode1,exitcode2,exitcode3,...,exitcodeN
e.g.
0,-48,-902
The first byte ("0" in the above case) indicates the format of the remainder of the string. So in order to allow programs to avoid confusion when the format of this string gets updated in the future, it should do something like this:
if xinfo[1,1] = "0" then
<process list of exitcodes>
else
<report error: unsupported xinfo format>
endif
To give an example of where multiple exitcodes might be handy, consider the case of an editable tree that also contains PopupMenu exitcodes. While editing a cell, the user may decide to right-click to see the popup menu, and then select one of the options that generates an exitcode. In this case, you may effectively have two exitcodes: one for cell validation (-48) and one for the PopupMenu selection. In this case, the validation exitcode would probably take precedence as the one returned in the main exitcode parameter. Previously, the other events would have gone without notice. Now, if the xinfo parameter is specified, the other exiticode(s) will be passed back in it, allowing the application to respond appropriately to the multiple events.