Promotic

onAppStopBegin - zdarzenie obiektu PmaRoot

Opis:
Zdarzenie zostanie wywołane po poleceniu do zatrzymania aplikacji.
Parametry:
pMe(Object) Odniesienie do PmaRoot obiektu, w którym dane zdarzenie powstaje.
pEvent(Object) Odniesienie do obiektu zawierającego ściślejsze informacje o danym zdarzeniu.
pEvent.Type - (String) [do odczytu] Typ zatrzymania aplikacji.
"Stop" - Normalne zatrzymanie aplikacji wywołane metodą Pm.AppStop(0) lub zamknięciem głównego okna aplikacji. Ten sposób zatrzymania aplikacji można uwarunkować oknem potwierdzającym lub w zdarzeniu PmaRoot.onAppStopBegin.
"HardStop" - Zatrzymanie aplikacji wołane metodą Pm.AppStop(1) lub awarią elementu wewnętrznego lub licencji. Taki sposób zatrzymania aplikacji nie można uwarunkować oknem potwierdzającym lub w zdarzeniu PmaRoot.onAppStopBegin.
"Logoff" - Wylogowanie użytkownika zalogowanego do SO Windows, patrz Pm.ShutDown(0, false) Zatrzymywane aplikacje zostaną zapytane, czy zakończyć ich działanie.
"HardLogoff" - Wylogowanie użytkownika zalogowanego do SO Windows, patrz Pm.ShutDown(0, true) Zatrzymywane aplikacje zostaną bezwarunkowo zakończone (może dojść do utraty danych).
"Reboot" - Restart (reboot) komputera z SO Windows, patrz Pm.ShutDown(1, false) Zatrzymywane aplikacje zostaną zapytane, czy zakończyć ich działanie.
"HardReboot" - Restart (reboot) komputera z SO Windows, patrz Pm.ShutDown(1, true) Zatrzymywane aplikacje zostaną bezwarunkowo zakończone (może dojść do utraty danych).
"Shutdown" - Wyłaczenie komputera z SO Windows, patrz Pm.ShutDown(2, false) Zatrzymywane aplikacje zostaną zapytane, czy zakończyć ich działanie.
"HardShutdown" - Wyłaczenie komputera z SO Windows, patrz Pm.ShutDown(2, true) Zatrzymywane aplikacje zostaną bezwarunkowo zakończone (może dojść do utraty danych).
pEvent.Error - (Long) [do odczytu] Jeżeli wartość parametru jest 0, wtedy aplikacja jest zatrzymywana przez polecenie użytkownika (projektanta) - tzn. przez wywołanie metody Pm.AppStop.
W innym przypadku (wartość jest różna od 0) aplikacja jest zatrzymywana z powodu błędu niektórego z komponentów (np. ActiveX obiektu, itd.).
pEvent.Enabled - (Boolean) [do odczytu] Zezwolenie/zakaz normalnego zatrzymania aplikacji. Wartość tego parametru jest wstępnie ustawiona na true. Jeżeli wartość właściwości jest true, wtedy jest zezwolone normalne zatrzymanie aplikacji. Jeżeli wartość właściwości jest false, wtedy nie jest zezwolone normalne zatrzymanie aplikacji. W ten sposób można na przykład zezwolić/zabronić normalne zatrzymanie aplikacji na podstawie dowolnego warunku lub wykonać opóźnione zatrzymanie aplikacji itd.
Notatka:
Po tym zdarzeniu są kolejno usuwane Pma obiekty (zostanie wywołane zdarzenie onStop tych obiektów) i w końcu zostanie wywołane zdarzenie onAppStopEnd.

Zakaz zakończenia aplikacji można ustawić przy pomocy uprawnienia PmaRoot > Uprawnienia > AppStop.
Patrz również:
- Pm.AppStop (metoda)
- Pm.ShutDown (metoda)
- PmaRoot.onAppStopEnd (zdarzenie)
- PmaRoot.onAppStartEnd (zdarzenie)
Przykład1:
Wstrzyma zatrzymanie aplikacji, by metoda projektanta "SaveConfigApp" mogła wykonać wszystko konieczne przed zakończeniem.
JavaScriptWybierz oraz skopiuj do schowka

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
}
Przykład2:
Otworzy okno "PmForm" z odliczaniem czasu zakończenia aplikacji, z możliwością natychmiastowego zakończenia aplikacji.
JavaScriptWybierz oraz skopiuj do schowka

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.