Pm.SelectionDialog(aOptions, vSelected, sDlgTitle, sStyle, oExtra)
aOptions | (Array) tablica 2-wymiarowa z opcjami, gdzie wiersze przedstawiają poszczególne opcje a kolumny przedstawiają pozycje wyboru. Pierwsza kolumna (indeks 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ść Empty 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) Nazwa 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;". Wstępnie ustawioną wartością jest "ontop:0;grid:0;". ontop:nn (opcjonalne) - Określa, czy okno zostanie wyświetlone "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 zostanie 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 zwrócona wartość jest typu String (identyfikator wybranej opcji). Jeżeli nie ma do dyspozycji żadnej opcji, wtedy jest automatycznie zwrócona wartość Empty. |
oExtra | [opcjonalne] (Object) Dodatkowy parametr w formie obiektu typu 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 wytwarzany metodą Pm.CreatePmMap. Ten parametr ma podobne znaczenie jak 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 wytwarzany jest przy pomocy metody Pm.CreatePmAction. Ta metoda projektanta musi posiadać dwa parametry: - oSystem: Obiekt typu PmMap. Właściwości tego obiektu ustawia system wg tego skąd dana akcja jest wołana. W tym przypadku system ustawia właściwości: - 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. |
Jeżeli nie jest określony parametr oExtra (tzn. jeżeli metoda jest wywołana synchronicznie), wtedy metoda zwraca:
Jeżeli metoda jest wywołana synchronicznie (tzn. jeżeli nie jest wprowadzony parametr oExtra), wtedy skrypt w tej metodzie zostanie zatrzymany i czeka, dopóki nie jest wybrana opcja, tzn. dopóki okno jest otwarte. Potem metoda zwróci wybraną opcję. Jednak takie podejście na Webie nie jest wspierane przez niektóre przeglądarki (np. Chrome) i dlatego nie jest zalecane.
Jeżeli metoda jest wywoł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 opcja nie jest jeszcze wybrana. Określić wybraną pozycję można w metodzie określonej w parametrze oExtra.onClose.
Jest założone, że skrypt jest uruchamiany w zdarzeniu elementu graficznego (np. w zdarzeniu onButtonUp elementu PmiButton).
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);
if ("ok" == oSystem.CloseReason)
pMe.PmPanel.OpenView(oSystem.ReturnValue, "", "");
Przykład jest prawie taki sam jak Przykład1, tylko są zmienione następujące wiersze:
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);
Dim aOptions, sViewer
aOptions = Pm.FindViewers("groups:menu;viewers:panel;", "", "")
sViewer = Pm.SelectionDialog(aOptions, "", "Panele", "size:400,300;")
If Pm.IsValid(sViewer) Then
pMe.PmPanel.OpenView sViewer, "", ""
End If
Pierwszy indeks tablicy przedstawia kolumny dialogu (pierwsza kolumna identyfikatorów jest ukryta).
Drugi indeks tablicy przedstawia wiersze wyboru.
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);
var sId = Pm.SelectionDialog(aOptions, "id1", "Wybór temperatury", "ontop:1;grid:1;size:350,250;", oExtra);
if ("ok" == oSystem.CloseReason)
Pm.MessageBox("Nazwa", oSystem.ReturnValue, 0x0);