Udalosť OnItemValidate


Deklarácia
Globálna obsluha:
 ENTRY OnItemValidate(IN INT _refId, INT _row, INT _col, IN TEXT _value, BOOL _bValid)
 ; akcie
 END OnItemValidate 

Špeciálna obsluha:
 ENTRY XXX_OnItemValidate(INT _row, INT _col, IN TEXT _value, BOOL _bValid)
 ; akcie
 END XXX_OnItemValidate 

Parametre
_refId Pre globálnu obsluhu - povinný vstupný parameter typu Int.
XXX Meno Referenčnej premennej pripojenej ku grafickému objektu bez úvodného znaku "_".
_row, _col Riadok, stĺpec políčka, ktorému je potrebné odsúhlasiť hodnotu.
_value Nová hodnota políčka.
_bValidate Výstupný parameter - príznak platnosti hodnoty.

Popis
Udalosť je generovaná zobrazovačom tyou Browser, ak užívateľ chce ukončiť zmenu políčka. Políčko je identifikované jeho riadkom (_row) a stĺpcom (_col). Z dôvodu spätnej kompatiblity parameter _col nereprezentuje index stĺpca v štruktúre, ale poradie stĺpca (z ľava) tak, ako je zobrazený. Editovaný stĺpec musí byť typu Text.

Ak obsluha udalosti nastaví výstupný parameter _bValid na hodnotu @FALSE, užívateľovi nebude povolené ukončiť zmenu.
Ak obsluha udalosti nastaví výstupný parameter _bValid na hodnotu @TRUE, bude zmena políčka akceptovaná.

Využitím udalosti je možné jednoducho vykonať kontrolu vstupu.
Príklad
V príklade obsluha udalosti zobrazovača typu Browser s pridelenou referenčnou premennou _browser kontroluje, či užívateľom zadaná hodnota je menšia alebo rovná číslu riadka, na ktorom sa menené políčko nachádza.
Ak je vstup v poriadku, užívateľovi bude ponúknuté políčko pod aktuálne meneným. Pri políčku na poslednom riadku sa vykoná prechod na prvý riadok.

Zobrazovač v príklade zobrazuje štruktúrovanú premennú _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 

 
Globálna obsluha udalosti podobne:
 
 ENTRY OnItemValidate(IN INT _refId, INT _row, INT _col, IN TEXT _value, BOOL _bValid)
   IF _refId = _browser THEN      ;test určujúci, v ktorom zobrazovači došlo k udalosti
    ; akcie
   ENDIF
 END OnItemValidate 

Poznámka
Od verzie 10.0.37 a vyššej nie je možné nastaviť ďalšie políčko na editáciu nastavením premenných _row a _col. Túto funkcionalitu je možné dosiahnuť volaním funkcie %HI_EditItem (napr. z ENTRY OnItemChange).