EDSPFLD_METHOD
|
WTSupported in traditional Synergy on Windows
|
WNSupported in Synergy .NET on Windows
|
USupported on UNIX
|
VSupported on OpenVMS
|
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
