Promotic

Jak pracować z oknami modalnymi

Rozdział ten opisuje jak wytwarzać oraz stosować okna modalne w systemie PROMOTIC.

Okno modalne to okno, które podczas otwierania zabroni sterowanie resztą okien aplikacji a użytkownik może sterować tylko tym oknem. Po zamknięciu tego okna sterowanie zostanie zwolnione oknu, z którego zostało okno modalne otwarte.
Okno modalne zazwyczaj jest przeznaczone do wprowadzania (edycji) wartości. Użytkownik powinien wprowadzić dane oraz zamknąć okno a w trakcie wprowadzania nie powinien "opuścić tego okna".
W trakcie otwierania okna modalnego nie można sterować resztą aplikacji i dlatego jest konieczne z rozsądkiem stosować okna modalne tylko dla potrzeby szybkiego wprowadzania lub sterowania tak, żeby okno modalne nie musiało być długo otwarte.

Jak stworzyć okno modalne

Zakładamy, że został wytworzony panel (obiekt PmaPanel), który zawiera jeden obiekt edycji PmgWCombo, PmgWCheck oraz PmgWEdit oraz posiada dwa przyciski sterowania PmgButton (OK oraz Cofnij).

1) W zdarzeniu onPanelStartEnd obiektu PmgRoot można odczytać właściwość Arguments oraz wyświetlić ją w Pmg obiektach edycji:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var aArg = pMe.Arguments;
pMe.Items("/WCombo").SelectedIndex = aArg.GetItem(0);
pMe.Items("/WCheck").Value = aArg.GetItem(1);
pMe.Items("/WEdit").Value = aArg.GetItem(2);


2) W zdarzeniu onButtonUp przycisku OK zamknąć okno z znacznikiem ok.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

pMe.Root.Close("ok");


3) W zdarzeniu onButtonUp przycisku Cofnij zamknąć okno bez znaczniku.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

pMe.Root.Close("");


4) W zdarzeniu onPanelStopEnd obiektu PmgRoot przy pomocy właściwości ReturnValue zostanie zwrotnie wysłana wartość odczytana z Pmg obiektów edycji.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

if (pEvent.Reason == "ok")
{
var aVal = Pm.CreatePmArray().Create(3);
var v1 = pMe.Items("/WCombo").SelectedIndex;
var v2 = pMe.Items("/WCheck").Value;
var v3 = pMe.Items("/WEdit").Value;

aVal.SetItem(v1, 0);
aVal.SetItem(v2 = v2 ? -1 : 0, 1);
aVal.SetItem(v3, 2);

pMe.ReturnValue = aVal;
}


Jak otworzyć okno modalne a po jego zamknięciu opracować jego wartości

Zakładamy, że w panelu rodzica znajduje się przycisk (obiekt PmgButton), który wywoła okno modalne. Poniżej zamieszczony przykład przedstawia w jaki sposób przekazać a następnie odczytać wartości z okna modalnego.
- przy pomocy metody Pm.CreateView zostanie ustawiony obiekt PmViewCreator
- do właściwości Arguments zostanie ustawiona wartość wejściowa okna modalnego.
- do właściwości onClose zostanie ustawiona nazwa funkcji, która zostanie wywołana podczas zamknięcia okna.

Następnie zostanie otwarte okno modalne. Po jego zamknięciu wartość zwrotna zostanie opracowana w funkcji "onClose".

Skrypt w zdarzeniu onButtonUp przycisku:
JavaScriptWybierz oraz skopiuj do schowka

function onClose(ev)
{
if (ev.CloseReason == "ok")
{
var val0 = arr.GetItem(0);
var val1 = arr.GetItem(1);
var val2 = arr.GetItem(2);
Pm.Debug("val0=" + val0 + ", val1=" + val1 + ", val2=" + val2);
}
}

var arr = Pm.Array1(2, -1, "Promotic");

var oCreator = Pm.CreateView(null, "/PanelModal", "", "target:_blank;dependent:1;pos:100,100;size:panel;modal:1;");
oCreator.View.Arguments = arr;
oCreator.View.onClose = onClose;
oCreator.Open();


Notatka
Otwieranie okna modalnego przy pomocy metody OpenViewModal jest przestarzałe oraz niepolecane. Wtedy okno jest w skrypcie wołane synchronicznie i czeka na zamknięcie okna przez użytkownika. Jeżeli okno jest udostępnione dla Webu, wtedy niektóre przeglądarki (Chrome, Opera) nie wspierają takiego rozwiązania.
Nawigacja:
 
 
- Okno modalne
 
 
- SVG
© MICROSYS, spol. s r.o.