Promotic

onAppStopBegin - událost objektu PmaRoot

Popis:
Událost je vyvolána po pokynu k zastavení aplikace.
Parametry:
pMe(Object) Reference na PmaRoot objekt, ve kterém daná událost vzniká.
pEvent(Object) Reference na objekt, který popisuje informace o dané události.
pEvent.Type - (String) [pro čtení] Typ zastavení aplikace.
"Stop" - Normální zastavení aplikace vyvolané metodou Pm.AppStop(0) nebo zavřením hlavního okna aplikace. Toto normální zastavení aplikace se ještě dá potlačit potvrzovacím oknem nebo v události PmaRoot.onAppStopBegin.
"HardStop" - Zastavení aplikace voláním metody Pm.AppStop(1) nebo selháním vnitřní komponenty nebo licence. Toto zastavení aplikace se už nedá potlačit potvrzovacím oknem nebo v události PmaRoot.onAppStopBegin.
"Logoff" - Odhlášení uživatele přihlášeného do OS Windows, viz Pm.ShutDown(0, false) Zastavované aplikace jsou dotazovány, zda ukončit jejich činnost.
"HardLogoff" - Odhlášení uživatele přihlášeného do OS Windows, viz Pm.ShutDown(0, true) Zastavované aplikace budou ukončeny násilně bez dotazu (může dojít ke ztrátě dat).
"Reboot" - Restart (reboot) počítače s OS Windows, viz Pm.ShutDown(1, false) Zastavované aplikace jsou dotazovány, zda ukončit jejich činnost.
"HardReboot" - Restart (reboot) počítače s OS Windows, viz Pm.ShutDown(1, true) Zastavované aplikace budou ukončeny násilně bez dotazu (může dojít ke ztrátě dat).
"Shutdown" - Vypnutí počítače s OS Windows, viz Pm.ShutDown(2, false) Zastavované aplikace jsou dotazovány, zda ukončit jejich činnost.
"HardShutdown" - Vypnutí počítače s OS Windows, viz Pm.ShutDown(2, true) Zastavované aplikace budou ukončeny násilně bez dotazu (může dojít ke ztrátě dat).
pEvent.Error - (Long) [pro čtení] Pokud hodnota parametru je 0, pak aplikace je ukončována pokynem uživatele (projektanta) - tzn. voláním metody Pm.AppStop.
V jiném případě (hodnota je nenula) je aplikace ukončena z důvodu selhání některé komponenty (např. ActiveX objektu, atd.).
pEvent.Enabled - (Boolean) [pro čtení] Povolení/zákaz normálního zastavení aplikace. Hodnota tohoto parametru je přednastavena na true. Pokud hodnota vlastnosti je true, pak je povoleno normální zastavení aplikace. Pokud hodnota vlastnosti je false, pak není povoleno normální zastavení aplikace. Tímto způsobem lze například povolit/zakázat normální zastavení aplikace na základě nějaké podmínky nebo provést zpožděné zastavení aplikace atd.
Poznámka:
Po této události jsou postupně rušeny Pma objekty (je vyvolána událost onStop těchto objektů) a nakonec je vyvolána událost onAppStopEnd.

Zákazat ukončení aplikace lze nastavit pomocí oprávnění "PmaRoot > Oprávnění > AppStop".
Viz také:
- Pm.AppStop (metoda)
- Pm.ShutDown (metoda)
Příklad1:
Pozdrží zastavení aplikace, aby metoda projektanta "SaveConfigApp" mohla provést vše potřebné před ukončením
JavaScriptVyber a zkopíruj do schránky

function onTimeOut()
{
Pm.AppStop(1);   // will by called "onAppStopBegin" with pEvent.Type == "HardStop"
}

if (pEvent.Type == "Stop")
{
pEvent.Enabled = false;
pMe.Root.AddEventTimer(5000, 1, pMe.GetPathName(), onTimeOut);
pMe.Methods.SaveConfigApp();   // user method
}
Příklad2:
Otevře okno "PmForm" s odpočtem času ukončení aplikace, s možností potvrzení které aplikaci ukončí ihned.
JavaScriptVyber a zkopíruj do schránky

var nSecStop = 15;   // number of seconds until the application stops
var oPmfTimeout;

function onTimeOut()
{
if (nSecStop <= 0)
{
Pm.AppStop(1);   // will by called "onAppStopBegin" with pEvent.Type == "HardStop"
}

oPmfTimeout.Value = "Application stops in " + nSecStop + " seconds";
nSecStop--;
}

function onViewClose(ev)
{
if (ev.CloseReason == "ok")
{
nSecStop = 0;
}
else
{
pMe.Root.RemoveEventTimer("StopOut", 0);
}
}

function onViewLoad(ev)
{
var oForm = ev.Form;
oForm.Title = "Application stop";

oForm.CreateItem("separ", "separ", "", "Subtype:space;TitlePos:no;BodyHeightIni:1;");

oPmfTimeout = oForm.CreateItem("string", "msg", "", "Subtype:static;TitlePos:no;Multiline:1;ValueHorzAlign:center;");
oPmfTimeout.Value = "Application stops in " + nSecStop + " seconds";
}

if (pEvent.Type == "Stop")
{
pEvent.Enabled = false;
pMe.Root.AddEventTimer(1000, 0, "StopOut", onTimeOut);

var oCreator = Pm.CreateView(pMe.PmPanel, "/#glob/form", "", "target:_blank;modal:1;");
oCreator.View.onLoad = onViewLoad;
oCreator.View.onClose = onViewClose;
oCreator.Open();
pMe.Methods.SaveConfigApp();   // user method
}
© MICROSYS, spol. s r.o.