Promotic

SelectionDialog - metoda objektu Pm

Popis:
Umožňuje v zadávacím okně vybrat jednu volbu ze seznamu.
Tato metoda je zastaralá (ale funkční) a je lepší použít metodu Pm.CreateView - viz Otevření prohlížeče pro výběr volby z nabídky (/#glob/list).
Syntaxe:
Variant SelectionDialog(Array aOptions, Variant vSelected, String sDlgTitle, String sStyle, [Object oExtra])
Parametry:
aOptions(Array) 2-rozměrné pole s volbami, kde řádky představují jednotlivé volby a sloupce představují položky volby. Viz (Col,Row) - 2-rozměrné pole s významem pole řádků.
První sloupec (indexováno od 0) není nabídkou zobrazen (je neviditelný) a obsahuje identifikátory jednotlivých voleb. Další sloupce jsou již v nabídce zobrazeny. Nabídka je zobrazena v tabulkové podobě a má o jeden sloupec méně, než dodané 2-rozměrné pole.
První řádek může (ale nemusí) obsahovat záhlaví s nadpisy sloupců (lokalizované uživatelské názvy) v nabídce. Pokud má první řádek obsahovat záhlaví, pak v prvním sloupci (neviditelný, vyhrazený pro identifikátory) musí být uveden řetězec s hodnotou $title.
vSelected(Variant) Identifikátor volby, která bude vybrána při počátečním zobrazení.
Hodnota null pro JavaScript nebo Empty pro VBScript znamená, že při počátečním zobrazení nemá být vybrána žádna volba.
Hodnota typu String představuje identifikátor volby, která bude vybrána při počátečním zobrazení. Pokud taková volba v nabídce není (např. prázdný řetězec "" nebo neexistující identifikátor), pak nebude při počátečním zobrazení vybrána žádna volba.
sDlgTitle(String) Nadpis zadávacího okna. Pro zadání lze použít Makro výraz ($.text ..) (vyhodnocuje se při volání metody).
sStyle(String) Dodatečné parametry pro zobrazení okna s nabídkou. Údaje jsou zde ve formátu KeyVal, například "ontop:1;grid:1;size:350,250;".
Výchozí hodnota je "ontop:0;grid:0;".
ontop:nn (nepovinné) - Určuje, zda okno bude "Vždy nahoře".
0 (přednastaveno) - Okno nebude "Vždy nahoře".
1 - Okno bude "Vždy nahoře".
grid:nn (nepovinné) - Určuje, zda buňky zobrazené tabulky budou s ohraničením.
0 (přednastaveno) - nebudou s ohraničením.
1 - budou s ohraničením.
size:dx,dy (nepovinné) - Rozměry okna (v pixelech).
autoselect:nn (nepovinné) - Umožňuje režim, kdy se nečeká na výběr uživatelem v těch případech, kdy to není nutné. Nedojde tak ani k zobrazení okna.
0 (přednastaveno) - okno bude zobrazeno vždy.
1 - Okno bude zobrazeno pouze pokud jsou k zobrazení alespoň dvě volby.
Pokud je k dispozici pouze jediná volba, pak je tato automaticky zvolena a metoda vrací hodnotu typu String (identifikátor vybrané volby).
Pokud není k dispozici žádná volba, pak metoda vrací: null pro JavaScript nebo Empty pro VBScript (lze testovat metodou Pm.IsValid).
oExtra[nepovinné] (Object) Dodatečný údaj v podobě objektu PmMap.
Pokud je údaj zadán (doporučeno), pak se metoda volá asynchronně, v jiném případě se metoda volá synchronně (viz Synchronní nebo asynchronní volání).
Objekt se vytvoří metodou Pm.CreatePmMap.
Tento parametr má podobnou funkci jako parametr oExtra metody OpenView.

oExtra.onClose (povinné) - (objekt typu PmAction) Zadává se zde metoda projektanta, která se vyvolá, když se obraz zavře.
Objekt pro tuto vlastnost se vytvoří metodou Pm.CreatePmAction.
Tato metoda projektanta musí mít dva parametry:
- oSystem: Objekt typu PmMap. Vlastnosti tohoto objektu nastavuje systém podle toho odkud tuto akci volá. V tom případě systém nastaví vlastnosti:
- oSystem.CloseReason: (String) Identifikátor typu zavření okna. Hodnota "ok" znamená, že v okně byla vybrána hodnota. Prázdný řetězec ("") znamená, že okno bylo zavřeno bez vybrání (tlačítkem "Storno").
- oSystem.ReturnValue: (Variant) Identifikátor vybrané položky (hodnota prvního sloupce).
- oPrivate: Objekt typu PmMap. Vlastnosti tohoto objektu nastavuje projektant v objektu PmAction.PrivateData. Projektant v tomto objektu nemusí nastavit žádnou vlastnost. Nastavením nějaké vlastnosti lze však dosáhnout například toho, že jedna metoda projektanta může sloužit více účelům a jen podle hodnoty vlastnosti v PrivateData se v této metodě rozpozná, odkud se metoda volá.
Vrácená hodnota:
Pokud je zadán parametr oExtra (tzn. pokud se metoda volá asynchronně - doporučeno), pak metoda nevrací nic.
Pokud není zadán parametr oExtra (tzn. pokud se metoda volá synchronně), pak:
- Pokud okno bylo ukončeno tlačítkem "Storno", pak metoda vrací: null pro JavaScript nebo Empty pro VBScript (lze testovat metodou Pm.IsValid).
- Pokud okno bylo ukončeno tlačítkem "OK", pak metoda vrací String (identifikátor vybrané volby).
Poznámka:
Synchronní nebo asynchronní volání:
Pokud metoda je volána synchronně (tzn. pokud není zadán parametr oExtra), pak se skript v této metodě zastaví a čeká až je vybrána položka, tzn. až je okno zavřeno. Pak tato metoda vrátí vybranou položku. Tento přístup však na Webu není podporován některými prohlížeči (např. Chrome) a proto není doporučován.
Pokud metoda je volána asynchronně (tzn. pokud je zadán parametr oExtra), pak se skript v této metodě nezastaví, jen otevře okno a pokračuje dál. To znamená, že po skončení této metody ještě není položka vybrána. Zjistit vybranou položku lze v metodě určené v parametru oExtra.onClose.

Tato metoda je funkční i ve Web obrazech. Pro některé prohlížeče (např. Chrome) však nefunguje synchronní volání (tzn. pokud není zadán parametr oExtra).

Metoda je například vhodná pro zobrazení nabídky, připravené metodou Pm.FindViewers. Tato metoda byla navržena za účelem vytváření nabídky se seznamem prohlížečů objektů, které lze následně otevřít pomocí metod Otevření prohlížeče. Seznam se vytvoří metodou Pm.FindViewers ve tvaru, který lze metodou SelectionDialog přímo zobrazit. Viz Příklad1 a Příklad2.
Příklad1:
Vytvoří nabídku se seznamem všech prohlížečů objektu PmaPanel v logické skupině menu. Nabídka bude včetně prvního řádku s vygenerovanými názvy sloupců. Následně je nabídka zobrazena a pokud uživatel některou položku vybere a potvrdí, pak se otevře vybraná prohlížeč objektu PmaPanel.
Předpokládá se, že se skript volá v události Pmg objektu (např. v události onButtonUp objektu PmgButton).
JavaScriptVBScriptVyber a zkopíruj do schránky

var oExtra = Pm.CreatePmMap();
oExtra.onClose = Pm.CreatePmAction(1, pMe, "ClosePanel");
var aOptions = Pm.FindViewers("groups:menu;viewers:panel;", "", "");
Pm.SelectionDialog(aOptions, "", "Obrazy", "size:400,300;", oExtra);
Nyní se otevřelo okno se seznamem obrazů a čeká se až uživatel vybere nějaký obraz. Skript však běží dál. Až uživatel vybere obraz, zavolá se metoda projektanta "CloseMethod" (s parametry oSystem a oPrivate). Ve vlastnosti oSystem.ReturnValue je uložena cesta k vybranému obrazu. V této metodě může být např. skript pro otevření vybraného obrazu:
JavaScriptVBScriptVyber a zkopíruj do schránky

if ("ok" == oSystem.CloseReason)
{
pMe.PmPanel.OpenView(oSystem.ReturnValue, "", "");
}
Příklad2:
Nabídka pro seznam prohlížečů stavu alarmů (PmaAlarmGroup) s podrobným zobrazením počtů alarmů v jednotlivých stavech v pomocných sloupcích nabídky.
Příklad je stejný jako Příklad1, jen jsou změněny následující řádky:
JavaScriptVBScriptVyber a zkopíruj do schránky

var oExtra = Pm.CreatePmMap();
oExtra.onClose = Pm.CreatePmAction(1, pMe, "ClosePanel");
var aOptions = Pm.FindViewers("groups:menu;viewers:alarm_state;", "", "columns:path,title,alstate3,alstate2,alstate1,alhoot;");
Pm.SelectionDialog(aOptions, "", "Alarmy", "size:400,300;", oExtra);
Příklad3:
Totéž co Příklad1 ale pro jazyk VBScript a synchronní volání. Není tedy nutná metoda projektanta onClose. Kód je jednodušší ale není funkční v některých Web prohlížečích (např. Chrome).
VBScriptVyber a zkopíruj do schránky

Dim aOptions
aOptions = Pm.FindViewers("groups:menu;viewers:panel;", "", "")
Dim sViewer
sViewer = Pm.SelectionDialog(aOptions, "", "Obrazy", "size:400,300;")
If Pm.IsValid(sViewer) Then
pMe.PmPanel.OpenView sViewer, "", ""
End If
Příklad4:
Vytvoří výběrové okno pomocí 2-rozměrného pole.
První index pole představuje sloupce okna (první sloupec identifikátorů je skrytý).
Druhý index pole představuje řádky výběru.
JavaScriptVBScriptVyber a zkopíruj do schránky

var sId;
var oExtra = Pm.CreatePmMap();
oExtra.onClose = Pm.CreatePmAction(1, pMe, "ClosePanel");
var aOptions = Pm.CreatePmArray().Create(3,4);

aOptions.SetItem("$title", 0, 0);
aOptions.SetItem("Název", 1, 0);
aOptions.SetItem("Popis", 2, 0);
aOptions.SetItem("id0", 0, 1);
aOptions.SetItem("T1", 1, 1);
aOptions.SetItem("Teplota 1", 2, 1);
aOptions.SetItem("id1", 0, 2);
aOptions.SetItem("T2", 1, 2);
aOptions.SetItem("Teplota 2", 2, 2);
aOptions.SetItem("id2", 0, 3);
aOptions.SetItem("T3", 1, 3);
aOptions.SetItem("Teplota 3", 2, 3);
sId = Pm.SelectionDialog(aOptions, "id1", "Výběr teploty", "ontop:1;grid:1;size:350,250;", oExtra);
Podobně jako v Příklad1 je ještě potřeba skript v metodě projektanta "CloseMethod". Tato metoda může obsahovat např. skript:
JavaScriptVBScriptVyber a zkopíruj do schránky

if ("ok" == oSystem.CloseReason)
{
Pm.MessageBox("Nadpis", oSystem.ReturnValue);
}

Historie:
Pm9.00.09: Tato metoda je zastaralá (ale funkční).
Pm8.03.14: Web obrazy - Zobecnění o parametr oExtra, ve kterém lze zadat akci která se vyvolá po zavření výběrového okna. V tom případě je volání této metody asynchronní (tzn. se nezastaví a nečeká na zavření okna).
Tento přístup umožňuje funkčnost této metody i ve Web prohlížeči Chrome (tento prohlížeč nedovoluje synchronní otevírání modálních oken).
Pm8.00.12: Ve Web obrazu v InternetExplorer 9 se zobrazovalo špatně výběrové okno.
Pm8.00.00: Vytvořeno
Navigace:
 
- Pm
 
- Abs
- Cos
- E
- Exp
- LN2
- PI
- Pow
- SelectionDialog
 
 
- Sin
- Tan
© MICROSYS, spol. s r.o.