A radio-box% control allows the user to select one of
number of mutually exclusive items. The items are displayed as a
vertical column or horizontal row of labelled radio
buttons. Unlike a list-control<%>, the set of items in a
radio-box% cannot be changed dynamically.
Whenever the user changes the selected radio button, the radio box’s
callback procedure is invoked. A callback procedure is provided as an
initialization argument when each radio box is created.
Creates a radio button set with string or bitmap labels. The
choices list specifies the radio button labels; the list of
choices must be homogeneous, either all strings or all bitmaps.
If & occurs in label, it
is specially parsed as for button%.
Each string in choices can also contain a &, which
creates a mnemonic for clicking the corresponding radio button. As
for label, a && is converted to a &.
If choices is a list of bitmaps, then the bitmaps
must be valid (see ok? in bitmap%) and not installed
in a bitmap-dc% object; otherwise, an exn:fail:contract exception is raised. If the
bitmap has a mask (see get-loaded-mask in bitmap%)
that is the same size as the bitmap, then the mask is used for the
label; furthermore, in contrast to the limitations of
draw-bitmap in dc<%>, non-monochrome label masks work
consistently on all platforms.
If label is a string, it is used as the label for the radio
box. Otherwise, the radio box does not display its
label.
The callback procedure is called (with the event type
'radio-box) when the user changes the radio button
selection.
The style argument must include either 'vertical for a
collection of radio buttons vertically arranged, or
'horizontal for a horizontal arrangement.
If style includes 'vertical-label, then the radio box is
created with a label above the control; if style does not include
'vertical-label (and optionally includes 'horizontal-label), then the
label is created to the left of the radio box. If style includes 'deleted, then the radio box is created as hidden,
and it does not affect its parent’s geometry; the radio box can be made active later by calling
parent’s add-child method.
By default, the first radio button is initially selected. If
selection is positive or #f, it is passed to
set-selection to set the initial radio button
selection.
The font argument determines the font for the control. For information about the enabled argument, see window<%>. For information about the horiz-margin and vert-margin
arguments, see subarea<%>. For information about the
min-width, min-height, stretchable-width, and
stretchable-height arguments, see area<%>.
If a single argument is provided, the entire radio box is enabled or disabled.
If two arguments are provided, then if enable? is
#f, the nth radio button is disabled, otherwise it
is enabled (assuming the entire radio box is enabled). Radio buttons
are numbered from 0. If n is equal to or larger
than the number of radio buttons in the radio box, an exn:fail:contract exception is raised.
Gets the label of a radio button by position. Radio buttons are
numbered from 0. If n is equal to or larger than
the number of radio buttons in the radio box, an exn:fail:contract exception is raised.
Like
get-item-label, except that the label must be
a string and
&s in the label are removed.
Returns the number of radio buttons in the radio box.
Gets the position of the selected radio button, returning #f
if no button is selected. Radio buttons are numbered from 0.
If no arguments are provided, the enable state of the entire radio box
is reported.
Otherwise, returns #f if nth radio button is
disabled (independent of disabling the entire radio box), #t
otherwise. Radio buttons are numbered from 0. If n
is equal to or larger than the number of radio buttons in the radio
box, an exn:fail:contract exception is raised.
Sets the selected radio button by position, or deselects all radio
buttons if n is #f. (The control’s callback
procedure is not invoked.) Radio buttons are numbered from
0. If n is equal to or larger than the number of
radio buttons in the radio box, an exn:fail:contract exception is raised.
A radio box’s selection can be changed
by the user clicking the control, and such changes do not go through this method; use the control callback procedure (provided as an initialization argument) to
monitor selection changes.