Right now, there is no simple way to place the scroll bar in a text field. Doing the table approach is likely to be your easiest mechanism. Using the w.scrollselection will cause the table to automatically scroll to the selected row.
Here's an example of how it might work:
<abs contexttype="opengear">
<meta>
<params>
<param access="1" maxlength="0" name="Column 1" oid="params.col1" precision="0" type="STRING_ARRAY" widget="default">
<value>Element 1</value>
<value>Element 2</value>
</param>
<param access="1" constrainttype="STRING_CHOICE" name="Table" oid="params.table" precision="0" type="INT16" value="1" widget="table">
<constraint>params.col1</constraint>
</param>
</params>
</meta>
<param expand="true" height="411" left="11" oid="params.table" showlabel="false" top="16" width="434">
<config key="w.rowheight">50</config>
<config key="w.scrollselection">true</config>
</param>
<button buttontype="push" height="49" left="455" name="Insert" top="14" width="162">
<task tasktype="ogscript">var eCount = params.getElementCount('params.col1');
params.setValue('params.col1', eCount, 'Element ' + (eCount + 1));
params.setValue('params.table', 0, eCount);</task>
</button>
</abs>#DashBoard