
We start by making our construct.per file:
DATABASE FORMONLY
SCREEN
{
First Name: [mx1 ]
Last Name: [mx2 ]
E-Mail: [mx3 ]
}
ATTRIBUTES
mx1 = FORMONLY.fname;
mx2 = FORMONLY.lname;
mx3 = FORMONLY.mail;
We also compile this .per file with “fcompile -xml construct.per” and create a new file “construct.4gl” to make our window.
MAIN
DEFINE string STRING,
fname CHAR(50),
lname CHAR(50),
mail CHAR(255)
CLOSE WINDOW screen
CALL ui.Interface.LoadStyles(”default”)
CALL ui.Interface.loadActionDefaults(”default”)
OPEN WINDOW construct WITH FORM “m_construct”
OPTIONS INPUT WRAP
CONSTRUCT string
ON fname,
lname,
mail
FROM fname,
lname,
mail
BEFORE CONSTRUCT
DISPLAY “Your Name” TO fname
DISPLAY “Your last Name” TO lname
DISPLAY “Your E-Mail” TO mail
BEFORE FIELD fname
AFTER FIELD fname
MESSAGE “AFTER FIELD fname”
BEFORE FIELD lname
AFTER FIELD lname
MESSAGE “AFTER FIELD lname”
BEFORE FIELD mail
AFTER FIELD mail
MESSAGE “AFTER FIELD mail”
AFTER CONSTRUCT
DISPLAY “AFTER CONSTRUCT”
ON KEY (ESC)
RETURN 0
END CONSTRUCT
CALL cdialog(string)
END MAIN
FUNCTION cdialog(string)
DEFINE string STRING
LET string = “CONSTRUCT STRING:\n\n”, string CLIPPED
MENU “CONSTRUCT DIALOG”
ATTRIBUTE (STYLE = “dialog”,
COMMENT = string CLIPPED)
COMMAND “Ok”
EXIT MENU
RUN “fglgo construct.4ae”
END MENU
END FUNCTION
“CONSTRUCT … ON … “ creates a string from our form fields.
“BEFORE CONSTRUCT” creates in our examples the input fields.
“AFTER FIELD …” displays a message in the messageline after each row.
“END CONSTRUCT” calls our function cdialog to display the string in a new window and with
“RUN fglgo … “ you can load the program again or another one.
With cdialog() we display the “string” which has created the construct into our dialogbox.

You have now finished the “CONSTRUCT” example.
If you compile this program with “4glpc construct.4gl -o construct.4ae” you can see the result:





