ui.Dialog.insertRow
Inserts a new row in the specified list.
Syntax
insertRow(
name STRING,
index INTEGER )
- name is the name of the screen record, see Identifying screen-arrays in dialog methods.
- index is the index where the row must be inserted (starts at 1).
Usage
The insertRow()
method inserts a row in the list, at a given position.
ON ACTION
block. It must not be called in control blocks such as BEFORE
ROW
, AFTER ROW
, BEFORE INSERT
, AFTER
INSERT
, BEFORE DELETE
, or AFTER DELETE
.The method is similar to inserting a new element in the program array, except the internal
dialog registers are automatically updated (like the total number of rows returned by getArrayLength()
). If the list
is decorated with cell attributes, the
program array defining the attributes will also be synchronized. If multi-row selection is enabled, selection
flags of existing rows are kept. Selection information is synchronized (i.e., flags are shifted
down) for all rows after the new inserted row.
DISPLAY
ARRAY
dialog. Avoid using this method in INPUT ARRAY
. To allow the end
user to append, modify or delete rows in a DISPLAY ARRAY
, use list modification interaction blocks.After the method is called, a new row is created in the program
array, so you can assign values to the variables before the control goes back to the user.
The getArrayLength()
method will return the new row count.
The method does not set the current row and does not give the focus to the list; you need to call
setCurrentRow()
and execute NEXT
FIELD
to give the focus.
The insertRow()
method must not be used when controlling a tree view. Use the
insertNode()
method
instead.
This method does not execute any BEFORE ROW
, BEFORE INSERT
,
AFTER INSERT
or AFTER ROW
control blocks.
If the index is greater than the number of rows, a new row is appended at the end of the list.
This is the equivalent of calling the appendRow()
method.
If the list is empty, getCurrentRow()
returns zero. If zero is returned, use 1
to reference the first row, otherwise you can get a -1326 error when using the program
array.
Example
ON ACTION insert_some_rows
LET r = DIALOG.getCurrentRow("sa")
IF r == 0 THEN LET r = 1 END IF
FOR i = 10 TO 1 STEP -1
CALL DIALOG.insertRow("sa", r)
LET p_items[r].item_quantity = 1.00
END FOR