New in 4D v19! You can associate collections with pop-up menus/drop-down lists. See developer.4d.com.
Pop-up menus and drop-down lists are objects that allow the user to select from a list. You manage the items displayed in the pop-up menu using an array, a choice list, or a standard action.
The names “Pop-up menu” and “Drop-down list” refer to the same objects; “Pop-up menu” is part of Mac terminology and “Drop-down list” is part of Windows.
As the following example shows, the appearance of these objects differs slightly according to the platform:
Windows
macOS
An array is a list of values in memory that is referenced by the name of the array (see CLOSE DOCUMENT). A pop-up menu/drop-down list displays an array as a list of values when you click on it.
You initialize pop-up menu/drop-down list objects by loading a list of values into an array. You can do this in several ways:
- Enter a list of default values in the object properties. To do this, click on the Edit... button in the “Data Source” theme of the Property List. For more information, see Default lists of values. The default values are loaded into an array automatically. You can refer to the array using the name of the variable associated with the object.
- Before the object is displayed, execute code that assigns values to the array elements. For example:
ARRAY TEXT(aCities;6)
aCities{1}:="Philadelphia"
aCities{2}:="Pittsburg"
aCities{3}:="Grand Blanc"
aCities{4}:="Bad Axe"
aCities{5}:="Frostbite Falls"
aCities{6}:="Green Bay"
In this case, the name of the variable associated with the object in the form must be aCities.
This code could be placed in the form method and be executed when the On Load form event runs. - Before the object is displayed, load the values of a list into the array using the command. For example:
LIST TO ARRAY("Cities";aCities)
In this case also, the name of the variable associated with the object in the form must be aCities.
This code would be run in place of the assignment statements shown above.
If you need to save the user’s choice into a field, you would use an assignment statement that runs after the record is accepted. The code might look like this:
Case of
:(Form event code=On Load)
LIST TO ARRAY("Cities";aCities)
If(Record number([People])<0)
aCities:=3
Else
aCities:=Find in array(aCities;City)
End if
:(Form event code=On Clicked)
City:=aCities{aCities}
:(Form event code=On Validate)
City:=aCities{aCities}
:(Form event code=On Unload)
CLEAR VARIABLE(aCities)
End case
In the Events section of the Property List window, you must select each event that you test for in your Case statement.
Arrays always contain a finite number of items. The list of items is dynamic and can be changed by a method. Items in an array can be modified, sorted, and added to.
For information about creating and using an array, refer to the In break chapter in the 4D Language Reference manual.
If you want to use a pop-up menu/drop-down list to manage the values of a listed field or variable, 4D lets you reference the field or variable directly as the object's data source. This makes it easier to manage listed fields/variables.
Note: If you use a hierarchical list, only the first level is displayed and can be selected.
For example, in the case of a "Color" field that can only contain the values "White", "Blue", "Green" or "Red", it is now possible to create a list containing these values and associate it with a pop-up menu object that references the 4D "Color" field. 4D then automatically takes care of managing the input and display of the current value in the form.
To associate a pop-up menu/drop-down list or a combo box with a field or variable, you can just enter the name of the field or variable directly in the Variable Name area of the object:

When the form is executed, 4D automatically manages the pop-up menu or combo box during input or display: when a user chooses a value, it is saved in the field; this field value is shown in the pop-up menu when the form is displayed:

Note: It is not possible to combine this principle with using an array to initialize the object. If you enter a field name in the Variable Name area, then you must use a choice list.
When you have associated a pop-up menu/drop-down list with a choice list and with a field, you can use the Save as Value/Reference option available in the "Data Source" theme of the Property List.
This option lets you optimize the size of the data saved. For more information, refer to Save as Value or Reference.
You can assign a standard action to a pop-up menu/drop-down list (“Action” theme of the Property List). Only actions that display a sublist of items (except the goto page action) are supported by this object. For example, if you select the "backgroundColor" standard action, at runtime the object will display an automatic list of background colors. You can can override this automatic list by assigning in addition a Choice list in which each item has been assigned a custom standard action.
For more information, please refer to the Standard actions section.