Promotic
WikipediaLinkedInYoutubeTwitterFacebook

W jaki sposób 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 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, dlatego należy z rozsądkiem stosować okna modalne tylko dla potrzeby szybkiego wprowadzania lub sterowania tek, by okno modalne nie musiało być długo otwarte.

 

W jaki sposób 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 znacznikem "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;
}
 

W jaki sposób otworzyć okno modalne a po jego zamknięciu opracować jego wartości

Zakładamy, że w panelu rodzica znajduje się przycisk (PmgButton), który wywoła okno modalne. Poniżej zamieszczony przykład przedstawia w jaki sposób przekazać a następnie odczytać wartość z okna modalnego.
- przy pomocy metody Pm.CreateView zostanie ustawiony obiekt PmViewCreator
- do właściwości Arguments zostanie ustawiona wartość wstępna 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.CreatePmArray().Array1(2, -1, "Promotic");

var oCreator = Pm.CreateView(pMe.PmPanel, "/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 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.


Historia:
Pm8.03.06: Wytworzono
Navigacja:
 
 
- okno modalne
 
 
- SVG
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice