A major difference of data forms compared to the underlying row set is the that forms are loaded, and provide an interface to manipulate this state.
XLoadable xLoad = (XLoadable)FLTools.getParent(aControlModel, XLoadable.class); xLoad.reload();
Loading is the same as executing the underlying row set, that is, invoking the <idlml>com.sun.star.sdbc.XRowSet:execute</idlml>() method. The com.sun.star.form.XLoadable is designed to fit the needs of a form document, for example, it a unloads an already loaded form.
The example above shows how to reload a form. Reloading is executing the row set again. Using
reload instead of
execute has the advantage of advanced listener mechanisms:
Look at the com.sun.star.form.XLoadable interface. You can add a com.sun.star.form.XLoadListener. This listener not only tells you when load-related events have occurred that is achieved by the com.sun.star.sdbc.XRowSetListener, but also when they are about to happen. In a complex scenario where different listeners are added to different aspects of a form, you use the <idlml>com.sun.star.form.XLoadable:reload</idlml>() call to disable all other listeners temporarily. Re-executing a row set is a complex process, thus it triggers a lot of events that are only an after effect of the re-execution.
|Though all the functionality provided by com.sun.star.form.XLoadable can be simulated using the com.sun.star.sdbc.XRowSet interface, you should always use the former. Due to the above-mentioned, more sophisticated listener mechanisms, implementations have a chance to do loading, reloading and unloading much smoother then.|
An additional difference between loading and executing is the positioning of the row set: When using <idlml>com.sun.star.sdbc.XRowSet:execute</idlml>(), the set is positioned before the first record. When you use <idlml>com.sun.star.form.XLoadable:load</idlml>(), the set is positioned on the first record, as you would expect from a form.
|Content on this page is licensed under the Public Documentation License (PDL).|