Promotic

SelectionDialog - metoda obiektu Pm

Opis:
Umożliwia w oknie edycyjnym dokonanie wyboru jednej z listy z oferty.
Niniejsza metoda jest przestarzała (lecz funkcjonalna) oraz dogodniejszym jest zastosowanie metody Pm.CreateView - patrz Otwarcie przeglądarki do wyboru opcji z menu (/#glob/list).
Składnia:
Variant SelectionDialog(Array aOptions, Variant vSelected, String sDlgTitle, String sStyle, [Object oExtra])
Parametry:
aOptions(Array) tablica 2-wymiarowa z opcjami, gdzie wiersze przedstawiają poszczególne opcje a kolumny przedstawiają pozycje wyboru. Patrz (Col,Row) - tablica 2-wymiarowa mniemana jako tablica wierszy.
Pierwsza kolumna (indeksowane od 0) nie jest wyświetlona w ofercie (jest ukryta) oraz zawiera identyfikatory poszczególnych opcji. Następne kolumny już będą widoczne w ofercie. Oferta jest wyświetlana w formie tabeli i posiada o jedną kolumnę mniej niż dane dostarczone w 2-wymiarowej tablicy.
Pierwszy wiersz może (lecz nie musi) zawieraś nagłówek z nazwami kolumn (lokalizowane nazwy użytkownika) w ofercie. Jeżeli pierwszy wiersz powinien zawierać nagłówek, wtedy w pierwszej kolumnie (nie widzialnej, zarezerwowanej dla indetyfikatorów) musi być wprowadzony łańcuch o wartości $title.
vSelected(Variant) Identyfikator opcji, która zostanie wybrana domyślnie.
Wartość null dla JavaScript lub Empty dla VBScript oznacza, że przy wyświetleniu początkowym nie ma zostać wybrana żadna z opcji.
Wartość typu String przedstawia identyfikator opcji, która zostanie wybrana podczas wyświetlenia początkowego. Jeżeli taka opcja nie znajduje się w ofercie (np. pusty łańcuch "" lub nie istniejący identyfikator), wtedy podczas wyświetlenia początkowego nie zostanie wybrana żadna z opcji.
sDlgTitle(String) Tytuł okna edycyjnego. Do wprowadzenia można zastosować Makro wyrażenie ($.text ..) (wartość jest obliczana przy wywołaniu metody).
sStyle(String) Dodatkowe parametry do wyświetlenia okna z ofertą. Dane są tutaj w formacie KeyVal, na przykład "ontop:1;grid:1;size:350,250;".
Domyślną wartością jest "ontop:0;grid:0;".
ontop:nn (opcjonalne) - Określa, czy okno będzie "Zawsze na wierzchu".
0 (domyślnie) - Okno nie będzie "Zawsze na wierzchu".
1 - Okno będzie "Zawsze na wierzchu".
grid:nn (opcjonalne) - Określa, czy komórki wyświetlonej tabeli będą mieć obrzeże.
0 (domyślnie) - nie będą z obrzeżem.
1 - będą z obrzeżem.
size:dx,dy (opcjonalne) - Wymiary okna (w pikselach).
autoselect:nn (opcjonalne) - Umożliwia tryb, kiedy system nie oczekuje na dokonanie wyboru przez użytkownika w tych przypadkach, kiedy nie jest to konieczne. W takim przypadku nie dojdzie nawet do wyświetlenia okna.
0 (domyślnie) - okno będzie zawsze wyświetlone.
1 - Okno będzie wyświetlone tylko jeżeli do wyświetlenia są przynajmniej dwie opcje.
Jeżeli do dyspozycji jest tylko jedna opcja, wtedy jest ona automatycznie wybrana a metoda zwraca wartość typu String (identyfikator wybranej opcji).
Jeżeli nie ma do dyspozycji żadnej opcji, wtedy metoda zwraca: null dla JavaScript lub Empty dla VBScript (można sprawdzić przy pomocy metody Pm.IsValid).
oExtra[opcjonalne] (Object) Dodatkowy parametr w formie obiektu PmMap.
Jeżeli parametr jest wprowadzony (zalecane), wtedy metoda jest wywołana asynchronicznie, w innym przypadku jest wywołana synchronicznie (patrz Wywołanie synchroniczne lub asynchroniczne).
Obiekt jest wytworzony przy pomocy metody Pm.CreatePmMap.
Parametr ten ma podobne znaczenie jako parametr oExtra metody OpenView.

oExtra.onClose (obowiązkowe) - (obiekt typu PmAction) Tu jest określana metoda projektanta, która zostanie wywołana po zamknięciu panela.
Obiekt dla tej właściwości jest wytworzony przy pomocy metody Pm.CreatePmAction.
Ta metoda projektanta musi posiadać dwa parametry:
- oSystem: Obiekt typu PmMap. Właściwości tego obiektu ustawia system według tego skąd dana akcja jest wołana. W tym przypadku system ustawia właściwości:
- oSystem.CloseReason: (String) Identyfikator typu zamknięcia okna. Wartość "ok" oznacza, że w oknie została wybrana wartość. Pusty łańcuch ("") oznacza, że okno zostało zamknięte bez wyboru (przy pomocy przycisku "Cofnij").
- oSystem.ReturnValue: (Variant) Identyfikator wybranej pozycji (wartość pierwszej kolumny).
- oPrivate: Obiekt typu PmMap. Właściwości tego obiektu ustawia projektant w obiekcie PmAction.PrivateData. Projektant w tym obiekcie niemusi ustawiać żadnych właściwości. Ustawieniem dowolnej właściwości można osiągnąć na przykład to, iż jedna metoda projektanta może zostać wykorzystana do wielu celów i tylko na podstawie wartości właściwości w PrivateData można w tej metodzie stwierdzić, z którego miejsca została wywołana.
Wartość zwrotna:
Jeżeli jest określony parametr oExtra (tzn. jeżeli metoda jest wywołana asynchronicznie - zalecane), wtedy metoda nie zwraca niczego.
Jeżeli nie jest określony parametr oExtra (tzn. jeżeli metoda jest wywołana synchronicznie), wtedy:
- Jeżeli okno zostało zamknięte przy pomocy przycisku "Cofnij", wtedy metoda zwraca: null dla JavaScript lub Empty dla VBScript (można sprawdzić przy pomocy metody Pm.IsValid).
- Jeżeli okno zostało zamknięte przy pomocy przycisku "OK", wtedy metoda zwraca String (identyfikator wybranej opcji).
Notatka:
Wywołanie synchroniczne lub asynchroniczne:
Jeżeli metoda jest wołana synchronicznie (tzn. jeżeli nie jest wprowadzony parametr oExtra), wtedy skrypt w tej metodzie zostanie zatrzymany i czeka, dopóki nie jest wybrana pozycja, tzn. dopóki okno jest otwarte. Potem metoda ta zwróci wybraną opcję. Jednak takie podejście w Webie nie jest wspierane przez niektóre przeglądarki (np. Chrome) i dlatego nie jest zalecane.
Jeżeli metoda jest wołana asynchronicznie (tzn. jeżeli jest wprowadzony parametr oExtra), wtedy skrypt w tej metodzie nie zostanie zatrzymany, tylko otworzy okno i kontynuuje pracę. To znaczy, że po zakończeniu tej metody, dana pozycja nie jest jeszcze wybrana. Określić wybraną pozycję można w metodzie określonej w parametrze oExtra.onClose.

Metoda ta działa także w Web panelach. Niektóre przeglądarki (np. Chrome) nie wspierają synchronicznego wywoływania (tzn. jeżeli nie jest określony parametr oExtra).

Metoda jest na przykład odpowiednia do wyświetlenia oferty, przygotowanej przy pomocy metody Pm.FindViewers. Metoda ta została zaprojektowana w celu wytwarzania oferty zawierającej listę przeglądarek obiektów, które można znastępnie otworzyć przy pomocy metod Otwarcie przeglądarki. Lista jest wytworzona przy pomocy metody Pm.FindViewers w formie, którą można wyświetlić bezpośrednio przy pomocy metody SelectionDialog. Patrz Przykład1 oraz Przykład2.
Patrz również:
Przykład1:
Wytworzy ofertu z listą wszystkich przeglądarek obiektu PmaPanel w grupie logicznej menu. Oferta łącznie z pierwszym wierszem z wytworzonymi nazwami kolumn. Oferta następnie zostaje wyświetlona i jeżeli użytkownik wybierze i zatwierdzi dowolną pozycję, wtedy zostanie otwarta przeglądarka obiektu PmaPanel.
Jest założone, że skrypt jest uruchamiany w zdarzeniu Pmg obiektu (np. w zdarzeniu onButtonUp obiektu PmgButton).
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var oExtra = Pm.CreatePmMap();
oExtra.onClose = Pm.CreatePmAction(1, pMe, "ClosePanel");
var aOptions = Pm.FindViewers("groups:menu;viewers:panel;", "", "");
Pm.SelectionDialog(aOptions, "", "Panele", "size:400,300;", oExtra);
Obecnie zostało otwarte okno z listą paneli i oczekuje się na wybór jednego z paneli przez użytkownika. Jednak skrypt działa dalej. Kiedy użytkownik wybierze panel, zostanie wywołana metoda projektanta "CloseMethod" (z parametrami oSystem oraz oPrivate). W właściwości oSystem.ReturnValue jest zapisana ścieżka do danego panelu. W tej metodzie może być np. skrypt do otwarcia wybranego panela:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

if ("ok" == oSystem.CloseReason)
{
pMe.PmPanel.OpenView(oSystem.ReturnValue, "", "");
}
Przykład2:
Oferta wszystkich przeglądarek stanu alarmów (PmaAlarmGroup) z szczegółowym wyświetleniem ilości alarmów w poszczególnych stanach w kolumnach pomocniczych oferty.
Przykład jest prawie taki sam jak Przykład1, tylko są zmienione następujące wiersze:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

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);
Przykład3:
To samo co Przykład1 lecz dla języka VBScript z wywołaniem synchronicznym. Z tego powodu nie jest konieczna metoda projektanta onClose. Kod jest prostszy lecz nie działa w niektórych Web przeglądarkach (np. Chrome).
VBScriptWybierz oraz skopiuj do schowka

Dim aOptions
aOptions = Pm.FindViewers("groups:menu;viewers:panel;", "", "")
Dim sViewer
sViewer = Pm.SelectionDialog(aOptions, "", "Panele", "size:400,300;")
If Pm.IsValid(sViewer) Then
pMe.PmPanel.OpenView sViewer, "", ""
End If
Przykład4:
Wytworzy wybiórczy okno przy pomocy tablicy 2-wymiarowej.
Pierwszy indeks tablicy przedstawia kolumny dialogu (pierwsza kolumna identyfikatorów jest ukryta).
Drugi indeks tablicy przedstawia wiersze wyboru.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

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("Nazwa", 1, 0);
aOptions.SetItem("Opis", 2, 0);
aOptions.SetItem("id0", 0, 1);
aOptions.SetItem("T1", 1, 1);
aOptions.SetItem("Temperatura 1", 2, 1);
aOptions.SetItem("id1", 0, 2);
aOptions.SetItem("T2", 1, 2);
aOptions.SetItem("Temperatura 2", 2, 2);
aOptions.SetItem("id2", 0, 3);
aOptions.SetItem("T3", 1, 3);
aOptions.SetItem("Temperatura 3", 2, 3);
sId = Pm.SelectionDialog(aOptions, "id1", "Wybór temperatury", "ontop:1;grid:1;size:350,250;", oExtra);
Podobnnie jak w Przykład1 jest jeszcze konieczny skrypt w metodzie projektanta "CloseMethod". W tej metodzie może być np. następujący skrypt:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

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

Historia:
Pm9.00.09: Niniejsza metoda jest przestarzała (lecz funkcjonalna).
Pm8.03.14: Web panele - Uogólnienie o parametr oExtra, w którym można wprowadzić akcję, która zostanie wykonana po zamknięciu okna wyboru. W tym przypadku wywołanie tej metody jest asynchroniczne (tzn. nie zostanie zatrzymana i nie czeka na zamknięcie okna).
Takie podejście zapewnia poprawne funkcjonalność tej metody również w przeglądarce internetowej Chrome (ta przeglądarka nie umożliwia synchronicznego otwierania okien modalnych).
Pm8.00.12: W Web panelu w InternetExplorer 9 wyświetlała błędnie okno wyboru.
Pm8.00.00: Wytworzono
Nawigacja:
 
- Pm
 
- Abs
- Cos
- E
- Exp
- LN2
- PI
- Pow
- SelectionDialog
 
 
- Sin
- Tan
© MICROSYS, spol. s r.o.