Description
Calculates fields based on the control or cell (in an edit table) losing focus.
Syntax
bforward = CALCULATE (ctrlentID, ctrlclassID, ctrlcolumn)
Parameters
CALCULATE accepts arguments for the following parameters.
Parameter | Description |
---|---|
ctrlentID | Has the format WindowName.ControlName, where WindowName is the identifier of the window that contains the affected control, and ControlName is the identifier of the control. Notice that a period separates the two values. |
ctrlclassID | The type of control that recognizes the event. This event is applicable only to a control bound to a symbolic from the primary table. |
ctrlcolumn | The column number. |
Returns
True or false. If false, the program execution returns to the calling procedure. If true, the event processing goes to the next level.
See also
Dict_Depend, Calculate(), Braces Operator {}
Recalculating All Controls
/* code to recalculate all controls on a form, using the CTRLMAP property. After all controls are known, loop through and send the CALCULATE event to all the controls. */ declare subroutine send_event window_controls = @@window->ctrlmap window_controls_count = count(window_controls, @fm) + (window_controls # '') for i = 1 to window_controls_count send_event(window_controls<i>, "CALCULATE") next i
Recalculating a Data Bound Control Based on a Change in an Edit Table
Note: To enable a data bound control based on a symbolic field to recalculate if a value in an edit table changes, update the DEFPROP property (not the ARRAY property) of the edit table. Then send a CALCULATE event to the data bound control, as follows:
Stat = Send_Event( DataBoundControlName, "CALCULATE" )
Remarks
Occurs after a LOSTFOCUS event or POSCHANGED event (for an edit table). The CALCULATE event occurs when there is a relationship between two controls (or columns, in an edit table) based on a primary table. The CALCULATE event will only occur if there is a control that is based on a calculated field which is dependent on the control that is losing focus.