- How to?
- Configuring the control
- Event "Adding additional elements"
- Customization of the window or Page of patience
Infinite Table and Looper controls
There are two methods to populate Table and Looper controls programmatically:
- Populating the entire control: The entire data found in the control is loaded when initializing the control.
Benefit: All the values are found in the control. You have the ability to perform searches or sorts on the elements found in the control.
Drawback: The control and its data can use a lot of memory. For the mobile applications, the full load may consume bandwidth and slow down the display.
- Populating the control if necessary (infinite Table and Looper): Only the data visible to the user is loaded in memory. The additional data is loaded upon request (when using the scrollbar for example).
Benefit: Low memory usage. For the mobile applications, increased display speed and reduced bandwidth consumption.
Drawback: No sort and no search as long as the entire data is not available.
Configuring the control
To enable the mechanism for filling the control if necessary (Infinite table/Infinite looper):
- Open the control description window.
- In the "Content" tab, in the "Infinite table"/"Infinite looper" section:
- Check "Call the process for adding additional elements at the end of scroll".
- Select the internal patience window (or the internal patience Page) displayed when loading additional lines. It is possible to:
- Use the internal window/page of patience by Default,
- Use the pre-defined window/Page. If this option is selected, the WDAAF internal component is immediately added to the current project. Depending on the platform, the corresponding element is automatically associated to the functionality.
Remark: If the Component WDFAA already exists, only the internal window (or the internal page) is added to the Component.
- the internal window is called "FI_AddElementSuppl_WD.
- In WINDEV Mobile, the internal window is named "IW_AddAdditionalElement_WM".
- In WEBDEV, the internal Page is called "PI_AjoutElemSuppl".
- Use an internal window/Page of your project.
- Specify the maximum number of rows: This number corresponds to the maximum number of rows that can be added to the control. When this number is reached, the "Adding additional elements" event will not be called anymore.
- Validate the control description window.
The Table control or Infinite Repeat Zone setting added:
- In WINDEV and WINDEV Mobile: the event "Addition of extra elements" in the control events.
- IN WEBDEV: the following events in the control events:
- Adding additional elements (browser).
- Adding additional elements (server).
- AJAX return after adding additional elements (browser).
Remark: This option is not available for:
- Looper controls based on a data file, horizontal Looper controls and multi-column Looper controls.
- the Table controls based on a data file.
Event "Adding additional elements"
The event "Adding additional elements" must contain the code for refreshing data in the control. By default, the internal wait window is displayed while running this code. At the end of code execution, the internal wait window will be automatically hidden.
Remark: This event is automatically called:
- when initializing the window, if the control is empty.
- after the window initialization, if all the control rows are visible
- once the control was enlarged, if all the control rows are visible (while they were not visible before the enlargement).
- after a scroll to the bottom, if the last control row is visible.
: If the default internal window is selected
, a progress bar (wait window) is displayed while running the "Adding additional elements" event. This progress bar will be displayed only if the main thread can be run while running the "Adding additional elements" event.
To see the progress bar, you must perform the long refresh process (HTTP request or HFSQL browse for example) in a thread run from the "Adding additional elements" event. In this case, the progress bar must be managed by TableAddInProgress
Code example for the "Adding additional elements" event: Filling a Table control with the last unread emails:
IdSession is int
EmailLu is Email
// Charge les derniers messages non lus
EmailReadFirst(IdSession, EmailLu, emailUnread)
WHILE NOT Email.Out
// Traitement du message
TableAddLine(TABLE_Email, EmailLu.Sender, EmailLu.ReceiveDate, EmailLu.MessageID)
Remark: If the event "Add additional elements" returns False:
- the internal wait window is not displayed anymore,
- the "Adding additional elements" event is not run anymore.
The operation is identical.
Customization of the window or Page of patience
The gauge displayed during loading is contained in an internal window or an internal Page.
A standard internal window is used by default but it can be included in the project for customization. The progress bar is automatically managed. The internal window used must contain a single infinite Progress Bar control.
By Default , a standard internal Page is used, but it can be integrated into the project for customization. The progress bar is automatically managed.
This page is also available for…