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
END
During 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
text
isNULL
,name
will be displayed. - To clear the list of all values
CALL cb.clear()
- To remove an item from the list; provide the
name
CALL 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;