Promotic
WikipediaLinkedInYoutubeTwitterFacebook

onItemBeforeWrite - událost objektu PmData

Popis:
Událost je vyvolána před zápisem do (změnou) hodnoty 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, vyvolá se 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 se vyvolá 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