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 na 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 atrybutem "ok".
JavaScriptVBScriptWybierz oraz skopiuj do schowka

pMe.Root.Close("ok");
 
3) W zdarzeniu onButtonUp przycisku Cofnij zamknąć okno bez atrybutu.
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 zamieszczono przykład zalecanego rozwiązania jak przy pomocy obiektu PmMap przekazać a następnie odczytać wartość z okna modalnego.

Wytwórz zmienną oExtra, która będzie obiekt typu PmMap oraz:

- do właściwości oExtra.Arguments ustaw wejściową wartość okna modalnego.
- do właściwości oExtra.onClose ustaw akcję, która po zamknięciu okna wywoła metodę projektanta "ClosePanel"

Następnie zostanie wywołane okno modalne. Po jego zamknięciu wartość powrotna zostanie opracowana w metodzie "ClosePanel".

 
1) Skrypt w zdarzeniu onButtonUp przycisku:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

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

oExtra.Arguments = arr;
oExtra.onClose = Pm.CreatePmAction(1, pMe, "ClosePanel");
pMe.PmPanel.OpenView("/ModalDlg", "target:_blank;modal:1;", "", oExtra);
 
2) W przycisku w zakładce "Methods" jest konieczne wytworzyć nową metodę "ClosePanel" z parametrami oSystem oraz oPrivate. Metoda będzie w skrypcie zawierać:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var aVal = oSystem.ReturnValue;
if (Pm.IsValid(aVal))
{
var val0 = aVal.GetItem(0);
var val1 = aVal.GetItem(1);
var val2 = aVal.GetItem(2);
Pm.Debug("val0=" + val0 + ", val1=" + val1 + ", val2=" + val2);
}
 
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