EDSPFLD_METHOD
WSupported on Windows
|
USupported on Unix
|
VSupported on OpenVMS
|
NSupported in Synergy .NET
|
subroutine EDSPFLD_METHOD a_input ,a a_type ,a a_text ,a a_window ,n a_fldnum ,n a_dest ,a a_attr ,n a_color ,n a_inpinfo ,a
Arguments
a_input
The contents of the input field. (a)
a_type
The user_type string specified in the .FIELD USER qualifier. (a)
a_text
(optional) The user_text string specified in the .FIELD USER qualifier. (a)
a_window
The ID of the input window being processed. (n)
a_fldnum
Contains the internal field number of the current display field. (n)
a_dest
(optional) The data area in which to store the displayed data. If it is present, EDSPFLD_METHOD must load a_dest in storage format. (a)
a_attr
The attribute to apply to the display. (n)
a_color
The color to apply to the display. (n)
a_inpinfo
The structure of input information. (a)
EDSPFLD_METHOD is a subroutine that you write and name. The name of your subroutine is registered with UI Toolkit using the E_METHOD subroutine.
We recommend using an input field display method (%IDISPLAY_METHOD) instead of EDSPFLD_METHOD. Unlike EDSPFLD_METHOD, your %IDISPLAY_METHOD adds to Toolkit functionality rather than replaces it. %IDISPLAY_METHOD also provides access to the structure defined in inpinf.def and to the 20 optional arguments passed to I_INPUT and L_INPUT. See %IDISPLAY_METHOD for more information. EDSPFLD_METHOD cannot populate a field that has a view length that’s shorter than the display length. |
The UI Toolkit input subroutine calls your EDSPFLD_METHOD subroutine to display the contents of the current input field. It is also called after the ECHKFLD_METHOD subroutine validates the user-defined input to display the validated data in the specified format. It is only called if the field definition uses the user_type argument in the .FIELD USER qualifier.
You will never call EDSPFLD_METHOD directly; it is called only by UI Toolkit.
The inpinf.def file defines a_inpinfo. See IARRIVE_METHOD for information.
S/DE Repository enables you to specify a subtype (or class) for user-defined fields. The default subtype is alpha, but you can also specify numeric or date. To access this subtype within the Toolkit user-defined processing routines, use the window ID and field number contained within the inputinfo structure (the a_inpinfo argument). Pass these two values to the I_FLDINF subroutine to retrieve the gs_inpfld structure (the controls argument) which contains the gs_class (user subtype) value. For user-defined alpha fields; gs_class = 0; for user-defined numeric fields, gs_class = 1; for user-defined date fields, gs_class = 2.
To display the user-defined input in a special format, you must call the Synergy DBL subroutine W_FLDS. The subroutine call can look like this:
xcall w_flds(a_window, WF_PUT, a_fldnum, display_text, WF_ATTR, a_fldnum, a_attr, WF_COLOR, a_fldnum, a_color)
where display_text is the specially formatted input to display in the input field.
EDSPFLD_METHOD works in conjunction with the ECHKFLD_METHOD and EEDTDSP_METHOD subroutines. The following steps occur for a user-defined field:
For example, if you have written EDSPFLD_METHOD so that it formats all case “A” numbers with a dollar sign and a decimal point, it will display $350.00 when passed the stored data “350A.”
2. | When the user selects the field for editing, UI Toolkit calls EEDTDSP_METHOD and passes it the data in storage format. The supplied EEDTDSP_METHOD displays the editable data in the stored format. If you want the editable data to display differently, you must write your own version of EEDTDSP_METHOD. |
For example, once the user has selected the “350A” data for editing, your EEDTDSP_METHOD might re-display the data as “350.” If you used the supplied version of EEDTDSP_METHOD, the editable data would display as “350A.”
3. | After the user edits the data, UI Toolkit calls ECHKFLD_METHOD to validate the new data, determining if it meets all of your specified criteria. If ECHKFLD_METHOD validates the data, EDSPFLD_METHOD is called again to display the new data including the proper formatting. |
If the user has changed “350” to “150,” ECHKFLD_METHOD is called and checks to make sure “150” is an acceptable entry for that field. If it is, EDSPFLD_METHOD displays “$150.00” in the field.
See also
- I_DISPLAY routine for more information on specifying a display method for an input field
- Overloading UI Toolkit routines for more information on creating this subroutine
- Appendix D: Methods
The following example shows how you can use ECHKFLD_METHOD and EDSPFLD_METHOD to handle user-defined field types. See the ECHKFLD_METHOD Discussion for a sample window script that corresponds with this example.
See the ECHKFLD_METHOD Examples for an example that uses ECHKFLD_METHOD, EDSPFLD_METHOD, and EEDTSP_METHOD to validate and display a ZIP Code. |
; Description: Routines for handling user-defined field types ; ; Reprinted by permission of BancTec, Inc. ; ; Routines: ; ECHKFLD_METHOD - Validation of user-defined types ; EDSPFLD_METHOD - Display and storage of user-defined types ; subroutine ECHKFLD_METHOD ; Description: Validate user-defined data types ; Arguments: ; a_input ,a ;Text as input a_type ,a ;User-defined data type a_text ,a ;User text for field a_status ,n ;Returned status a_inpinfo ,a ;Input information .include "WND:tools.def" .align record sts ,i4 ;Decoding status yr ,i4 mo ,i4 da ,i4 proc case a_type of begincase "MDYDATE ":call mdydate endcase else begin xcall u_message("Unrecognized user type "+a_type) end xreturn ; ; Description: Handle MM/DD/YY date format ; mdydate, xcall u_dcddat(sts, a_input, 3,, yr, mo, da) if (sts) then a_status = D_DATERR else begin clear a_status a_input = %string(mo, "XX")+%string(da, "XX")+%string(yr,"XX") end return endsubroutine subroutine EDSPFLD_METHOD ; ; Description: Handle display and storage of user-defined data types ; ; Arguments: a_input ,a ;Contents of field a_type ,a ;User-defined type a_text ,a ;User text a_window ,n ;Input window ID a_fldnm ,n ;Display field number a_dest ,a ;Destination (optional) a_attr ,n ;Display attribute a_color ,n ;Display color a_inpinfo ,a ;Input information ; .include "WND:tools.def" .include "WND:windows.def" ; record group yymmdd ,d yy ,d2 mm ,d2 dd ,d2 endgroup buf ,a8 ; proc case a_type of begincase "MDYDATE ":call mdydate endcase else begin xcall u_message("Unrecognized user type "+a_type) end xreturn ; ; Description: Display and store MM/DD/YY dates ; mdydate, yy = a_input(5:2) mm = a_input(1:2) dd = a_input(3:2) xcall u_fmtdat(3, buf, yy, mm, dd) xcall w_flds(a_window, WF_PUT, a_fldnm, buf, WF_ATTR, & a_fldnm, a_attr, WF_COLOR, a_fldnm, a_color) if (^passed(a_dest)) a_dest(1:6) = a_input ; To avoid clobbering following fields. Defined as d8, but stored as d6. return endsubroutine