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)
...