Promotic

Jak pracovat s modálními okny

Tato kapitola popisuje jak vytvářet a používat modální okna v systému PROMOTIC.

Modální okno je okno, které při svém otevření zakáže ovládat všechna ostatní okna aplikace a uživatel může ovládat pouze toto okno. Po zavření tohoto okna se pak ovládání vrátí oknu, ze kterého bylo modální okno otevřeno.
Modální okno je obvykle určeno pro zadání (editaci) údajů. Uživatel by měl zadat údaje a zavřít okno a v době zadávání by se neměl "dostat nikam jinam".
Během otevření modálního okna nelze ovládat zbytek aplikace a proto je nutno modální okna používat s rozumem pouze pro na rychlé zadávání nebo ovládání tak, aby modální okno nemuselo být dlouho otevřeno.

Jak vytvořit modální okno

Předpokládejme, že je vytvořen obraz (objekt PmaPanel), který obsahuje jeden editační objekt PmgWCombo, PmgWCheck a PmgWEdit a má dvě ovládací tlačítka PmgButton (OK a Storno).

1) V události onPanelStartEnd objektu PmgRoot lze přečíst vlastnost Arguments a zobrazit ji v editačních Pmg objektech:
JavaScriptVBScriptVyber a zkopíruj do schránky

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) V události onButtonUp tlačítka OK ukončit okno s příznakem ok.
JavaScriptVBScriptVyber a zkopíruj do schránky

pMe.Root.Close("ok");


3) V události onButtonUp tlačítka Storno ukončit okno bez příznaku.
JavaScriptVBScriptVyber a zkopíruj do schránky

pMe.Root.Close("");


4) V události onPanelStopEnd objektu PmgRoot pomocí vlastnosti ReturnValue odešleme zpět hodnotu vyčtenou z editačních Pmg objektů.
JavaScriptVBScriptVyber a zkopíruj do schránky

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 otevřít modální okno a po jeho zavření zpracovat přijaté hodnoty

Předpokládejme, že v rodičovském obrazu je tlačítko (objekt PmgButton), které otevře modální okno. Níže uvedený příklad je doporučovaný způsob jak předat a následně přijmout hodnoty z modálního okna.
- metodou Pm.CreateView se nastaví objekt PmViewCreator
- do vlastnosti Arguments se nastaví vstupní hodnota modálního okna.
- do vlastnosti onClose se nastaví název funkce, která se zavolá při ukončení okna.

Následně se otevře modální okno. Po jeho ukončení je vracená hodnota zpracována ve funkci "onClose".

Skript v události onButtonUp tlačítka:
JavaScriptVyber a zkopíruj do schránky

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();


Poznámka
Zastaralý a nedoporučovaný způsob je otevření modálního okna metodou OpenViewModal. Tehdy je okno ve skriptu otevřeno synchronně a čeká na ukončení okna uživatelem. Pokud okno je zpřístupněno pro Web, pak není tento způsob podporován některými Web prohlížeči (Chrome, Opera).
Navigace:
 
 
- Modální okno
 
 
- SVG
© MICROSYS, spol. s r.o.