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 PmPanel), który zawiera jeden element edycji PmiWCombo, PmiWCheck oraz PmiWEdit oraz posiada dwa przyciski sterowania PmiButton (OK oraz Cofnij).
 
1) W zdarzeniu onPanelStartEnd obiektu PmiRoot można odczytać właściwość Arguments oraz wyświetlić ją w graficznych elementach 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 PmiRoot przy pomocy właściwości ReturnValue zostanie zwrotnie wysłana wartość odczytana z elementów graficznych 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 (PmiButton), który wywoła okno modalne. Poniżej zamieszczono przykład zalecanego rozwiązania jak przy pomocy obiektów PmMap oraz PmAction przekazać a następnie odczytać wartość z okna modalnego.

Wytwórz zmienną oExtra, która będzie obiektem 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 należy wytworzyć nową metodę "ClosePanel" z parametrem 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 do Webu, wtedy niektóre przeglądarki (Chrome, Opera) nie wspierają takiego rozwiązania.

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