Promotic
WikipediaLinkedInYoutubeTwitterFacebook

SelectionDialog - metoda objektu Pm

Popis:
Umožňuje v zadávacím okně vybrat volbu z nabídky.
Syntaxe:
SelectionDialog(aOptions As Array, vSelected As Variant, sDlgTitle As String, sStyle As String, [oExtra As Object]) As Variant
Volání:
Pm.SelectionDialog(aOptions, vSelected, sDlgTitle, sStyle, oExtra)
Parametry:
aOptions(Array) 2-rozměrné pole s volbami, kde řádky představují jednotlivé volby a sloupce představují položky volby.
První sloupec (index 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á data.
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í, potom 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 zobrázení.
Hodnota Empty 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), 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) Textový seznam dodatečných parametrů pro zobrazení okna s nabídkou. Parametry s přiřazenou hodnotou jsou zde odděleny středníkem. Například "ontop:1;grid:1;size:350,250;". Přednastavená hodnota je "ontop:0;grid:0;".
ontop:nn (nepovinné) - Určuje, zda se okno zobrazí "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 v případě, že jsou k zobrazení alespoň dvě volby. Pokud je k dispozici pouze jediná volba, je tato automaticky zvolena a vrácená hodnota je typu String (identifikátor vybrané volby). Pokud není k dispozici žádná volba, je automaticky vrácena hodnota Empty.
oExtra[nepovinné] (Object) Dodatečný údaj v podobě objektu typu PmMap.

Pokud je údaj zadán (doporučeno), pak se metoda volá asynchronně, jinak se metoda volá synchronně (viz Synchronní nebo asynchronní volání).

Objekt se vytváří metodou Pm.CreatePmMap.

Tento parametr má podobnou funkci jako parametr oExtra metody OpenView.

 
oExtra.onClose (povinné) - (Objekt typu PmAction) Zadává se zde uživatelská metoda, která se vyvolá, když se obraz zavře.

Objekt pro tuto vlastnost se vytváří pomocí metody Pm.CreatePmAction.

Tato uživatelská metoda musí mít dva parametry:

- oSystem: Objekt typu PmMap. Vlastnosti tohoto objektu nastavuje systém podle toho odkud tuto akci volá. V tomto případě systém nastavuje vlastnosti:
- oSystem.CloseReason: (String) Identifikátor typu zavření okna. Hodnota "ok" znamená, že v okně byla vybrána hodnota. Prázdný string ("") 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 uživatelská metoda 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. když se metoda volá asynchronně - doporučeno), pak metoda nevrací nic.

Když není zadán parametr oExtra (tzn. když se metoda volá synchronně), pak metoda vrací:

<Empty> - Pokud okno bylo ukončeno tlačítkem Storno, vrácená hodnota je typu Empty (lze testovat metodou Pm.IsValid).
<String> - Pokud okno bylo ukončeno tlačítkem OK, vrácená hodnota je typu String a obsahuje identifikátor vybrané volby.
Poznámka:
Synchronní nebo asynchronní volání:

Pokud je volána metoda synchronně (tzn. pokud není zadán parametr oExtra), pak se script 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 je volána metoda asynchronně (tzn. pokud je zadán parametr oExtra), pak se script v této metodě nezastaví, jen otevře okno a pokračuje dál. Po skončení této metody tedy ještě není položka vybrána. Zjistit vybranou položku lze v metodě určené v parametru oExtra.onClose.

 
Metodu lze volat i v událostech grafických prvků pro Web Obrazy. 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é je možno následně otevřít pomocí metod pro Otevření prohlížečky objektu. Seznam je metodou Pm.FindViewers vytvořen ve tvaru, který je možno metodou SelectionDialog přímo zobrazit. Viz Příklad1 a Příklad2.
Příklad1:
Vytvoření nabídky se seznamem všech prohlížečů objektu PmPanel 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í, otevře se vybraná prohlížečka objektu PmPanel.

Předpokládá se, že se skript volá v události grafického prvku (např. v události onButtonUp prvku PmiButton).

Příklad pro jazyk JavaScript.

var oExtra = Pm.CreatePmMap();
oExtra.onClose = Pm.CreatePmAction(1, pMe, "CloseMethod");
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. Script však běží dál. Až uživatel vybere obraz, zavolá se uživatelská metoda "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ř. script pro otevření vybraného obrazu:
Příklad2:
Nabídka pro seznam prohlížečů stavu alarmů (PmAlarmEvent) 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:

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á uživatelská metoda onClose, kód je jednodušší ale nefunguje v některých WEB prohlížečích (např. Chrome).
Dim aOptions, sViewer
aOptions = Pm.FindViewers("groups:menu;viewers:panel;", "", "")
sViewer = Pm.SelectionDialog(aOptions, "", "Obrazy", "size:400,300;")
If Pm.IsValid(sViewer) Then
  pMe.PmPanel.OpenView sViewer, "", ""
End If
Příklad4:
Vytvoření uživatelského výběrového okna pomocí dvourozměrného pole. První index pole představuje sloupce okna (první sloupec identifikátorů je skrytý). Druhý index představuje řádky výběru.

Příklad pro jazyk JavaScript.

var oExtra = Pm.CreatePmMap();
oExtra.onClose = Pm.CreatePmAction(1, pMe, "CloseMethod");
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);
var 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 script v uživatelské metodě "CloseMethod". V této metodě může být např. script:
Navigace:
 
- Pm
 
- Abs
- Cos
- E
- Exp
- LN2
- PI
- Pow
- SelectionDialog
 
 
- Sin
- Tan
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice