Promotic
WikipediaLinkedInYoutubeTwitterFacebook

SelectionDialog - metoda obiektu Pm

Opis:
Umożliwia w oknie edycyjnym dokonanie wyboru opcji z oferty
Składnia:
SelectionDialog(aOptions As Array, vSelected As Variant, sDlgTitle As String, sStyle As String, [oExtra As Object]) As Variant
Wołanie:
Pm.SelectionDialog(aOptions, vSelected, sDlgTitle, sStyle, oExtra)
Parametry:
aOptions(Array) 2-wymiarowa tablica 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) i 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 prezentuje 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 wykorzystać 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 PmNamedValues, 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:
- 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 metoda zwraca:

<Empty> - Jeżeli okno zostało zamknięte przy pomocy przycisku Cofnij, wtedy wartość zwrotna jest typu Empty (można sprawdzić przy pomocy metody Pm.IsValid).
<String> - Jeżeli okno zostało zamknięte przy pomocy przycisku OK, wtedy wartość zwrotna jest typu String i zawiera identyfikator wybranej opcji.
Notatka:
Wywołanie synchroniczne lub asynchroniczne:

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.

 
Metodę można wywołać również w zdarzeniach elementów graficznych 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. Opisywana metoda 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 obiektu. Lista jest wytworzona przez metodę Pm.FindViewers w formie, którą można wyświetlić bezpośrednio przy pomocy metody SelectionDialog. Patrz Przykład1 i Przykład2.
Patrz również:
Przykład1:
Wytworzy ofertu z listą wszystkich przeglądarek obiektu PmPanel 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 PmPanel.

Jest założone, że skrypt jest uruchamiany w zdarzeniu elementu graficznego (np. w zdarzeniu onButtonUp elementu PmiButton).

JavaScriptWybierz 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 i 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 panelu:
JavaScriptWybierz oraz skopiuj do schowka

if ("ok" == oSystem.CloseReason)
  pMe.PmPanel.OpenView(oSystem.ReturnValue, "", "");
Przykład2:
Oferta wszystkich przeglądarek stanu alarmów (PmAlarmEvent) 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:

JavaScriptWybierz 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, 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
Przykład4:
Wytworzy wybiórczy dialog przy pomocy tablicy dwuwymiarowej. Pierwszy indeks tablicy przedstawia kolumny dialogu (pierwsza kolumna identyfikatorów jest ukryta). Drugi indeks przedstawia wiersze wyboru.
JavaScriptWybierz oraz skopiuj do schowka

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("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 temepratury", "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:
JavaScriptWybierz oraz skopiuj do schowka

if ("ok" == oSystem.CloseReason)
  Pm.MessageBox("Nazwa", oSystem.ReturnValue, 0x0);
Navigacja:
 
- 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