Next: Grouping Objects, Previous: ValSliders, Up: Part I Defining Forms [Contents][Index]
It is often required to obtain textual input from the user, e.g., a file name, some fields in a database, etc. To this end input fields exist in the Forms Library. An input field is a field that can be edited by the user using the keyboard. To add an input field to a form use
FL_OBJECT *fl_add_input(int type, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h, const char *label);
The main type of input field available is FL_NORMAL_INPUT
. The
input field normally looks like an FL_DOWN_BOX
. This can be
changed using the routine fl_set_object_boxtype()
to be
described in Changing Attributes.
Whenever the user presses the mouse inside an input field a cursor will
appear in it (and it will change color). Further input will appear
inside this field. Full emacs(1) style editing is supported. When the
user presses <Return>
or <Tab>
the input field is returned
to the application program and further input is directed to the next
input field. (The <Return>
key only works if there are no default
buttons in the form. See the overview of object classes. The
<Tab>
key always works.)
The user can use the mouse to select parts of the input field which will be removed when the user types the erase character or replaced by any new input the user types in. Also the location of the cursor can be moved in the input field using the mouse.
The input field is fully integrated with the X Selection mechanism. Use the left button to cut from and the middle button to paste into an input field.
The application program can direct the focus to a particular object using the call
void fl_set_focus_object(FL_FORM *form, FL_OBJECT *obj);
It puts the input focus in the form form onto object obj
. To
obtain the focus object, the following routine is available
FL_OBJECT *fl_get_focus_object(FL_FORM *form);
Note that the label is not the default text in the input field. The label is (by default) placed in front of the input field. To set the contents of the input field use the routines
void fl_set_input(FL_OBJECT *obj, const char *str); void fl_set_input_f(FL_OBJECT *obj, const char *fmt, ...);
To change the color of the input text or the cursor use
void fl_set_input_color(FL_OBJECT *obj, int tcol, int ccol);
Here tcol
indicates the color of the text
and ccol
is the color of the cursor. To obtain the
string in the field (when the user has changed it) use:
const char *fl_get_input(FL_OBJECT *obj);
See the program demo06.c for an example of the use of input fields.
Next: Grouping Objects, Previous: ValSliders, Up: Part I Defining Forms [Contents][Index]