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 RECORDThe names provided in the field definition list must identify
form fields of the current form. The field names can be specified with or without prefix. When a
field prefix is used, it must match one of the screen record definitions in the form file. If no
SCREEN RECORD is explicitely defined for these fields in form file source, a
default screen record with the name of the database table (or "formonly") is available.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;
...
ENDThe field names can be defined as follows:
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)
...