XRT/field FAQ
How do I change the background/foreground color of the picklist?
Retrieve the picklist's widget ID using XmNxrtFldMenuList and then set XmNforeground / XmNbackground to the desired color.
How can I control the appearance of the scrollbar in the field widget?
Since there is no way to alter the size of a scrollBar in a XRT/field widget, you could create a Motif scrolled window with an XRT/field widget as a child of that scrolled window. The scrolled window will control the scrolling for the XRT/field widget. You can also obtain the widget ID of the scrollBars with a XtGetValues() function call. The following program shows how to do this:
#include <Xm/Xm.h>
#include <Xm/Text.h>
#include <Xm/RowColumn.h>
#include <Xm/XrtField.h>
#include <Xm/ScrolledW.h>
main(int argc, char *argv[])
{
XtAppContext app_context;
Widget toplevel, simple, vertbar;
Widget temp;
Widget sw;
toplevel = XtVaAppInitialize(&app_context, "Example", NULL, 0,
&argc, argv, NULL, NULL);
sw = XtVaCreateManagedWidget("scrolled window",
xmScrolledWindowWidgetClass, toplevel,
XmNscrollingPolicy, XmAUTOMATIC,
XmNwidth, 280,
XmNheight, 60,
NULL);
XtRealizeWidget(toplevel);
XtAppMainLoop(app_context);
}
Why isn't YYMMDD working as a FormatString in my datefield?
The year, month and day masks need to be separated. See page 80 of the XRT/field manual for examples.
How can I get the field to accept a blank?
Set XmNxrtFldAllowNull to True.
I just can't get my datefield to accept a blank... why?
Even if XmNxrtFldAllowNull is set to True, a datefield will register an error if you are using a FldMask. That is, if there are format characters such as " / / " or " : ", the field is not NULL. You can override the error by adding the following:
XtAddCallback(field, XmNxrtFldErrorCallback, errorCB, NULL);
...
void errorCB(Widget w, XtPointer client_data, XrtFldErrorCallbackStruct *ecs)
{
if (strcmp(ecs->text->ptr, " / / :") == 0 )
ecs->error = XRTFLD_ERROR_NONE; /* turn the error off */
}