Field definition for Dynamic Dialogs

Dynamic dialog creation methods require field definitions in a dynamic array with a predefined structure.

Dynamic dialog creation methods such as ui.Dialog.createInputByName() require a dynamic array as parameter, to define the list of fields that the dialog will control.

This parameter must be defined as a DYNAMIC ARRAY OF RECORD, with name and type members declared as STRING:
DEFINE fields DYNAMIC ARRAY OF RECORD
                        name STRING,
                        type STRING
              END RECORD
The names provided in the field definition list must identify form fields of the current form.
For example, if the current form file defines the following fields:
LAYOUT
...
END
TABLES
customer
END
ATTRIBUTES
EDIT f1 = customer.cust_id;
EDIT f2 = customer.cust_name;
...
END
The field names provided in the dynamic array must be:
LET fields[1].name = "customer.cust_id"
LET fields[2].name = "customer.cust_name"
...

The types provided in the field definition list will identify the data type to be used for data input and display.

Possible values for types are the string equivalents of the Genero BDL built-in types, for example:
  • "INTEGER"
  • "VARCHAR(50)"
  • "DATE"
  • "DECIMAL(10,2)"
  • "DATETIME YEAR TO FRACTION(5)"
Note: The type used to define form fields can be the returning value of a base.SqlHandle.getResultType() method.

For example:

DEFINE fields DYNAMIC ARRAY OF RECORD
                        name STRING,
                        type STRING
              END RECORD
DEFINE d ui.Dialog

OPEN FORM f1 FROM "custform"
DISPLAY FORM f1

LET fields[1].name = "customer.cust_id"
LET fields[1].type = "INTEGER"

LET fields[2].name = "customer.cust_name"
LET fields[2].type = "VARCHAR(50)"
...
LET d = ui.Dialog.createInputByName(fields)
...