Loading a ComboBox List
customer.state:01 SCHEMA custdemo
02 LAYOUT
03 GRID
04 {
05 Store #:[a0 ]
06 Name:[a1 ]
07 State:[a5 ]
08 }
09 END -- GRID
10 END
11 TABLES customer
12 ATTRIBUTES
13 EDIT a0=customer.store_num;
14 EDIT a1=customer.store_name;
15 COMBOBOX a5=customer.state;
16 ENDDuring an INPUT, INPUT ARRAY or CONSTRUCT
statement the ComboBox is active, and the user can select a value from the dropdown
list. The value selected will be stored in the formfield named
customer.state.
Getting a reference to the object
The ComboBox class contains methods that manage the values for a ComboBox. In
order to use these methods you must first obtain a reference to the ComboBox
object:
- Define a variable for the reference to the ComboBox object. The data type for the variables is
the class identifier (
ui.ComboBox):DEFINE cb ui.ComboBox - Open a form that contains a ComboBox using
OPEN WINDOW ... WITH FORM:OPEN WINDOW w1 WITH FORM ("testcb") - Next, get a reference to the ComboBox object using the method provided. As a class method, this
method is called using the class identifier. Provide the name of the formfield to the
method:
LET cb = ui.ComboBox.forName("customer.state")
Once you have a reference to the ComboBox object, you can call any of the methods defined in the class as object methods:
- To add an item to a ComboBox list
You can instruct the ComboBox to store a code (the
name) in the formfield that the ComboBox represents, but to display the description (thetext) in the list to help the user make his selection. For example, to store the value "IL" (name) in the formfield, but to display "Illinois" (text) to the user:CALL cb.additem("IL", "Illinois")If
textisNULL,namewill be displayed. - To clear the list of all values
CALL cb.clear() - To remove an item from the list; provide the
nameCALL cb.removeitem("IL")
See the The ComboBox class documentation in the Genero Business Development Language User Guide for a complete list of the methods.
Adding values to the ComboBox from a Database Table
An example in Tutorial Chapter 5 GUI
Options loads a ComboBox with static values. The following example
retrieves the valid list of values from a database table (state)
instead:
Example 6
01 SCHEMA custdemo
02 MAIN
03 DEFINE cb ui.ComboBox
04 CONNECT TO "custdemo"
05 OPEN WINDOW w1 WITH FORM "testcb"
06 LET cb = ui.ComboBox.forName("customer.state")
07 IF cb IS NOT NULL THEN
08 CALL loadcb(cb)
09 END IF
10 ...
11 END MAIN
12
13 FUNCTION loadcb(cb)
12 DEFINE cb ui.ComboBox,
13 l_state_code LIKE state.state_code,
14 l_state_name LIKE state.state_name
15
18 DECLARE mycurs CURSOR FOR
19 SELECT state_code, state_name FROM state
20 CALL cb.clear()
21 FOREACH mycurs INTO l_state_code, l_state_name
22 -- provide name and text for the ComboBox item
23 CALL cb.addItem(l_state_code,l_state_name)
24 END FOREACH
26 END FUNCTION

As an alternative to calling the loadcb function in your BDL program, this
function can be specified as the initializer function for the ComboBox in the form
specification file. When the form is opened, The initializer function is called
automatically and a reference to the ComboBox object is passed to it. Provide the
name of the initializer function in lowercase:
ATTRIBUTES
COMBOBOX a5=customer.state, INITIALIZER = loadcb;