Promotic
WikipediaLinkedInYoutubeTwitterFacebook

onItemBeforeWrite - událost objektu PmData

Popis:
Událost je vyvolána před zápisem do (změnou) hodnoty jedné proměnné definované v záložce Data.
Parametry:
pMe(Object) Reference na PROMOTIC objekt, ve kterém daná událost vzniká.
pEvent(Object) Reference na objekt popisující podrobněji informace o dané události.
pEvent.Item - (Object) Objekt Var obsahující informace o proměnné, ve které dojde k zápisu (ke změně)
pEvent.NewVal - (Variant) Nová hodnota proměnné. Tuto hodnotu proměnná bude mít po ukončení této události.
Poznámka:

Aby došlo k volání této události pro určitou proměnnou, musí se toto volání v této proměnné explicitně povolit (viz konfigurátor "ExtWriteAction > Konfigurace datového rozšíření: ExtWriteAction > Událost "onItemBeforeWrite""). Tam se také definuje, zda se událost bude volat před každým zápisem nebo před každou změnou hodnoty.

Pokud se toto volání povolí pro každou proměnnou a dojde k zápisu do (změně) všech proměnných najednou, pak se vyvolá tato událost pro každou proměnnou zvlášť!

Využití této události je vhodné například pro filtrování zapisovaných hodnot. Parametr pEvent.NewVal je určen pro čtení a zápis. Pokud se do tohoto parametru zapíše nová hodnota, pak do proměnné objektu se ve skutečnosti zapíše (po ukončení této události) hodnota, která je v tomto parametru.

 
Upozornění 1:

Doporučuje se využívat tuto událost pouze pro speciální nezbytně nutné případy. Při povolení této události se pak totiž zápis hodnoty provádí asynchronně, tzn. vyvolání této události a skutečný zápis do proměnné se neprovede ihned ale později až po ukončení aktivního skriptu.

 
Upozornění 2:

Událost je vyvolána jen pokud se provede skutečný zápis (např. objekt.Item(0)=3) do proměnné - označme ji proměnná A. Pokud ale v proměnné A je datová vazba (při čtení) na jinou proměnnou B (v jiném objektu) a provede se zápis do proměnné B, pak se proměnná A o této změně nedozví a událost se tedy nevyvolá (proměnná A se o změně dozví teprve, až ji bude někdo číst - tehdy se "provede" datová vazba - ale opět se nevyvolá událost !).

Viz také:
Příklad:
Následující skript v události onItemBeforeWrite vypíše do položky Debug_info INFO systému informace o zapisované hodnotě - vypíše název proměnné do které se bude zapisovat, index této proměnné a starou a novou hodnotu této proměnné.
Pm.Debug "OldValue:" & pEvent.Item.Value
Pm.Debug "NewValue:" & pEvent.NewVal
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice