A
text-field% object is an editable text field with an
optional label displayed in front of it. There are two text field
styles:
A single line of text is visible, and a special control event
is generated when the user presses Return or Enter (when the text field has the
focus) and the event is not handled by the text field’s frame or
dialog (see on-traverse-char in top-level-window<%> ).
Multiple lines of text are visible, and Enter is not handled
specially.
Whenever the user changes the content of a text field, its callback
procedure is invoked. A callback procedure is provided as an
initialization argument when each text field is created.
The text field is implemented using a text% editor (with an
inaccessible display). Thus, whereas text-field% provides
only get-value and set-value to manipulate the text in a text field, the
get-editor returns the field’s editor, which
provides a vast collection of methods for more sophisticated
operations on the text.
The keymap for the text field’s editor is initialized by calling the
current keymap initializer procedure, which is determined by the
current-text-keymap-initializer parameter.
(new text-field% | | [label label] | | | | [parent parent] | | | [ | [callback callback] | | | | [init-value init-value] | | | | [style style] | | | | [font font] | | | | [enabled enabled] | | | | [vert-margin vert-margin] | | | | [horiz-margin horiz-margin] | | | | [min-width min-width] | | | | [min-height min-height] | | | | [stretchable-width stretchable-width] | | | | [stretchable-height stretchable-height]]) | |
|
→ (is-a?/c text-field%) |
label : (or/c label-string? false/c) |
|
|
init-value : string? = "" |
| style | | : | | (listof (one-of/c 'single 'multiple 'hscroll 'password | 'vertical-label 'horizontal-label | 'deleted)) |
| | | | = | | '(single) |
|
font : (is-a?/c font%) = normal-control-font |
enabled : any/c = #t |
vert-margin : (integer-in 0 1000) = 2 |
horiz-margin : (integer-in 0 1000) = 2 |
min-width : (integer-in 0 10000) = graphical-minimum-width |
min-height : (integer-in 0 10000) = graphical-minimum-height |
stretchable-width : any/c = #t |
stretchable-height : any/c = (memq 'multiple style) |
If label is not #f, it is used as the text field
label. Otherwise, the text field does not display its label.
If & occurs in label, it
is specially parsed as for button%.
The callback procedure is called when the user changes the
text in the text field or presses the Enter key (and Enter is not
handled by the text field’s frame or dialog; see
on-traverse-char in top-level-window<%>). If the user presses
Enter, the type of event passed to the callback is
'text-field-enter, otherwise it is
'text-field.
If init-value is not "", the minimum width of the
text item is made wide enough to show init-value. Otherwise,
a built-in default width is selected. For a text field in single-line
mode, the minimum height is set to show one line and only the
control’s width is stretchable. For a multiple-line text field, the
minimum height shows three lines of text and is stretchable in both
directions.
The style must contain exactly one of 'single or
'multiple; the former specifies a single-line field and the
latter specifies a multiple-line field. The 'hscroll style
applies only to multiple-line fields; when 'hscroll is
specified, the field has a horizontal scrollbar and autowrapping is
disabled; otherwise, the field has no horizontal scrollbar and
autowrapping is enabled. A multiple-line text field always has a
vertical scrollbar. The 'password style indicates that the
field should draw each character of its content using a generic
symbol instead of the actual character. If style includes 'vertical-label, then the text field 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 text field.
If style includes 'deleted, then the text field is created as hidden,
and it does not affect its parent’s geometry; the text field can be made active later by calling
parent’s add-child method..
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<%>.
Returns the editor used to implement the text field.
For a text field, the most useful methods of a
text% object
are the following:
(send a-text get-text) returns
the current text of the editor.
(send a-text erase) deletes all text from
the editor.
(send a-text insert str) inserts
str into the editor at the current caret position.
Gets the background color of the field’s editable area.
Returns the text currently in the text field.
Sets the background color of the field’s editable area.
Sets the text currently in the text field. (The control’s callback
procedure is not invoked.)
A text field’s value can be changed
by the user typing into the control, and such changes do not go through this method; use the control callback procedure (provided as an initialization argument) to
monitor value changes.