OnItemValidate picture event


Declaration
Global handler:
 ENTRY   OnItemValidate(IN INT _refId, INT _row, INT _col, IN TEXT _value, BOOL _bValid)
 ; script actions
 END  OnItemValidate

Special handler:
 ENTRY XXX_OnItemValidate(INT _row, INT _col, IN TEXT _value, BOOL _bValid) 
 ; script actions
 END XXX_OnItemValidate

Parameters
_refId Parameter of INT type (required for global handler).
XXX Name of Reference variable connected to graphic object (without the character "_").
_row, _col Row, column of the item, whose value must be validated.
_value New item value.
_bValidate Output parameter - value validity attribute.

Description
The picture event is being generated by the displayer of Browser type, if the user want to finish the editing of item. Item is defined by row (_row) and column (_col). Owing to the backward compatibility, the parameter _col does not represent the index of column in a structure, but the order of column (from left), as it is displayed. Edited column must be of Text type.

If the picture event handler sets the output parameter to the value @False, the user cannot carry out the change. If the picture event handler sets the output parameter to the value @True, the change will be accepted.
When using the picture event, it allows easy performing the input check.


Example
In the example below, the picture handler for the displayer of Browser type with the reference variable _browser checks whether a value entered by user is lower or equal to the number of the item row. If the input is OK, then user can edit the item placed bellow the current one. If the item is placed in last row, next item to edit will be in first row.

The Browser displays the structured variable _rec.


 
ENTRY browser_OnItemValidate(INT _row, INT _col, IN  TEXT _value, BOOL _bValid)
   IF _col = 1 THEN
     INT _val
     _val := %StrToI(_value)
 
     IF !_val\VLD THEN
       _bValid := @FALSE
     ELSIF _val > _row THEN
       _bValid := @FALSE
     ELSE
       _bValid := @TRUE
       _row := _row+1
       IF _row > _rec\DIM THEN
         _row := 1
       ENDIF
     ENDIF
   ELSE
     _bValid := @TRUE
   ENDIF
 END browser_OnItemValidate
 
 BEGIN
    REDIM  _rec[10]
  END

 
Global picture event handler:
 
ENTRY OnItemValidate(IN  INT _refId, INT _row, INT _col, IN  TEXT _value, BOOL _bValid)
 IF _refId = _browser THEN    ;test that determines the displayer in which the event occurred
   ; script actions
  ENDIF
 END OnItemValidate

Note
Since the version 10.0.37 and higher, the next item for editing cannot be defined by the parameters _row and _col. This functionality is replaced by calling the function %HI_EditItem (for example from ENTRY OnItemChange).
Napíšte komentár