Example 1: Simple INPUT with fglrichtext
Form definition file
simple_richtext.per:
LAYOUT (TEXT="Rich Text",MINWIDTH=80,MINHEIGHT=20)
GRID
{
[rt ]
[ ]
[ ]
[ ]
[info ]
}
END
END
ATTRIBUTES
WEBCOMPONENT rt = FORMONLY.richtext,
COMPONENTTYPE = "fglrichtext",
PROPERTIES = (
toolbar = "bold|italic|underline|undo|redo",
spellcheck = "browser",
autoflush = "savetext",
autoflush_interval = 30
),
SIZEPOLICY = FIXED,
SCROLLBARS = NONE,
STRETCH = BOTH;
EDIT info = FORMONLY.info, SCROLL;
END
Program file
simple_richtext.4gl:
MAIN
DEFINE rec RECORD
richtext STRING,
info STRING
END RECORD
OPTIONS INPUT WRAP, FIELD ORDER FORM
OPEN FORM f1 FROM "simple_richtext"
DISPLAY FORM f1
INPUT BY NAME rec.*
ATTRIBUTES(UNBUFFERED, WITHOUT DEFAULTS)
ON ACTION get_cont ATTRIBUTES(TEXT="Get content")
LET rec.info = rec.richtext
ON ACTION set_cont ATTRIBUTES(TEXT="Set content")
LET rec.richtext = SFMT( "<html><body>%1</body></html>",
"<p>This is new text " || current || "</p>" )
LET rec.info = "Text reloaded."
ON ACTION CLEAR ATTRIBUTES(TEXT="Clear")
LET rec.richtext = NULL
LET rec.info = "Text cleared."
ON ACTION set_focus_to_wc ATTRIBUTES(TEXT="Focus to RichText")
NEXT FIELD richtext
ON ACTION set_focus_to_info ATTRIBUTES(TEXT="Focus to info")
NEXT FIELD info
ON ACTION savetext ATTRIBUTES(DEFAULTVIEW=NO)
LET rec.info = "Autoflush occurred at:", CURRENT HOUR TO SECOND
DISPLAY rec.info
END INPUT
END MAIN