A list box allows the user to select one or more string items from a scrolling list. A list box is either a single-selection control (if an item is selected, the previous selection is removed) or a multiple-selection control (clicking an item toggles the item on or off independently of other selections).
Whenever the user changes the selection in a list box, the list box's callback procedure is called. A callback procedure is provided as an initialization argument when each list box is created.
List box items are indexed from 0.
See also choice%.
If label is not #f, it is used as the list box label. Otherwise, the list box will not display its label.
If an ampersand (``&'') occurs in label, it is specially parsed; under Windows and X, the character following an ampersand is underlined in the displayed control to indicate a keyboard mnemonic. (Under MacOS, mnemonic underlines are not shown.) The underlined mnemonic character must be a letter or a digit. The user can move the keyboard focus to the list box by typing the mnemonic when the control's top-level-window contains the keyboard focus. The user must also hold down the Meta or Alt key if the keyboard focus is currently in a control that handles normal alphanumeric input. The ampersand itself is removed from label before it is displayed for the control; a double-ampersand in label is converted to a single ampersand (with no mnemonic underlining). Mnemonic keyboard events are handled by on-traverse-char (but not under MacOS).
The choices list specifies the initial list of items to appear in the list box.
The callback procedure is called when the user changes the list box selection, by either selecting, re-selecting, deselecting, or double-clicking an item. The type of the even provided to the callback is 'list-box-dclick when the user double-clicks on an item, or 'list-box otherwise.
The style specification must include exactly one of the following:
In addition to the selection style, the style list can include one or more of the following: