Promotic
WikipediaLinkedInYoutubeTwitterFacebook

W jaki sposób pracować z oknami modalnymi

Rozdział ten opisuje jak wytwarzać oraz stosować w systemie PROMOTIC okna modalne.
 
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 i PmiWEdit oraz posiada dwa przyciski sterowania PmiButton (OK i 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 graficznych elementó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 (PmiButton), który wywoła okno modalne. Poniżej zamieszczono przykład zalecanego rozwiązania jak przy pomocy obiektów PmMap i 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 i 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