Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Metody - karta obiektu PmaObject

Opis:
W tej karcie można zdefiniować metody projektanta tego obiektu.
Przyciski:
NowaOtworzy okno Metoda, w którym można wprowadzić nową metodę.
UsuńUsunie zaznaczoną metodę
EdytujOtworzy okno Metoda, w którym można edytować zaznaczpną metodę.
Notatka:
W tej karcie można do obiektu dodawać następne metody. Poprawne stosowanie takich metod bardzo upraszcza aplikację i czyni ją bardziej czytelną.

Przykład zastosowanie: Założmy, że istnieje folder PmaFolder, który przedstawia jakieś urządzenie (np. Kociol). W niektórych przypadkach jest konieczne wyłączenie Kotła z innego foldera aplikacji. Można to wykonać w ten sposób, że w innym folderze będzie się znajdować szczegółowy algorytm do wyłączenia Kotła, lecz lepszym rozwiązaniem jest wytworzenie metody bezpośrednio w folderze "Kociol", w której będzie się znajdować algorytm wyłączenia. Z innego foldera następnie wystarcze tylko wywołać taką metodę.

 
W tej karcie można określić dowolną ilość metod. Na każdym wierszu listy (która znajduje się w lewo u góry) znajduje się definicja właśnie jednej metody. Takie metody można z kolei wywoływać przy pomocy właściwości PmaObject.Methods lub Pm.Methods.
Parametry metody:
pMe(Object) Odniesienie do Pma obiektu, w którym metoda jest zdefiniowana.
pResult[tylko do zapisu] (Variant) Wyjściowy parametr, który jest przeznaczony do zwrócenia końcowej wartości metody.

Jest dostępny tylko dla metod, które są pisane w języku VBScript. Dla języka JavaScript wartość zwrotna zostanie określona w poleceniu return.

pContext(Object) (dla obiektów PmaRoot oraz PmaPanel) zawiera odniesienie do obiektu z dodatkowymi informacjami o sposobie, jakim metoda została wywołana.
pContext.User - (Object) właściwość z odniesieniem do obiektu PmUser, w którym znajdują się szczegółowe informacje o użytkownikowi (lokalnym lub sieciowym), który wywołał metodę. Można zastosować na przykład:
- do zabezpieczenia metody dla konkretnego zalogowanego użytkownika lub dla grupy użytkowników.
- do przechowania i odczytu prywatnych danych użytkownika przy pomocy metod SetPrivateData oraz GetPrivateData.

Uwaga! Żeby w podobiekcie User znalazła się wiarygodna wartość jest konieczne, żeby w odpowiednim uprawnieniu WebRead nie bzůo pseudo grup $ANY oraz $ANY_NET (tzn. żeby przy otworzeniu strony webowej użytkownik musiał być zalogowany).

pContext.Language - (String) zwraca informację owymaganym języku narodowym, w którym są wymagane ewentualne wyjścia tekstowe metody (odpowiednie zwłaszcza przy wywoływaniu metody z Web paneli). Język jest określony przez identyfikator tekstowy, np. "pl", "en", "cs" itd. - patrz Języki z pełnym wsparciem w systemie PROMOTIC. Patrz konfigurator "Główny język runtime".
pContext.TypeEnable - (Long) Typ zezwolenia wołania metody poprzez klienta. Projektant może (według ustawionego uytkownika, hasła lub adresu komputera) wyłączyć działanie. Ustawienie tego parametru jest zalecane tylko dla specjalnych przypadkach. Jest dogodniejszym wykonywać powszechne zabezpieczenie w standardowy sposób za pomocą uprawnienia: WebMethods.

Uwaga! Właściwość działa tylko dla Web panele.

1 (domyślnie) - zezwolenie na operację.
-1 - żądanie zalogowania użytkownika (jeżeli użytkownik nie został określony) lub wprowadzenie użytkownika (jeżeli użytkownik został określony ale jego nazwa oraz hasło są nipoprawne).
-2 - zakazanie operacji dla danego klienta bezwarunkowo.
Parametry zdefiniowane przez projektanta(Variant) Służy jako przekazywane parametry przy wywołaniu danej metody. Parametry te można zdefiniować w konfiguratorze "Parametry".
Metody zdefiniowane w tej karcie dla obiektu PmaPanel (metody panelu) oraz dla obiektu PmaRoot (globalne metody aplikacji) można wywoływać także w skryptach paneli graficznych, które są przeznaczone do współdzielenia na Web-ie.
 
Listę zastosowanych metod oraz ilość ich wykonania można zobaczyć w INFO systemie w karcie podczas przeglądania danego obiektu. W tej karcie można także uruchomić wybraną metodę (tylko jeżeli nie poisada żadnych parametrów) po wyborze z menu lokalnego (prawym przyciskiem myszy). Patrz uprawnienie "PmaRoot > Uprawnienia > InfoEdit".
Przykład1:
W obiekcie PmaFolder znajduje się obiekt PmaData (o nazwie "DAT"), który zawiera kilka zmiennych (o nazwach na przykład "data1", "data2", itd.) Wytworzymy prostą metodę w obiekcie PmaFolder o nazwie "dataadd" o jednym parametrze (o nazwie "par1"), który przedstawia nazwę zmiennej. Metoda zwraca wartość wymaganej zmiennej zwiększoną o 10.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var val = pMe.Pm("DAT").Item(par1).Value;
return val + 10;
Metodę tą można następnie wywoływać z dowolnego miejsca w aplikacji:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var n = oFolder.Methods.dataadd("data1");
Przykład2:
Test, czy użytkownik, który wywołał daną metodę jest członkiem grupy $ADMIN:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

if (pContext.User.Type == 2 && Pm.TestUserInGroup(1, "$ADMIN", pContext.User.Id))
//...
Przykład3:
Wołanie globalnej metody GetStartTime (to znaczy określonej w obiekcie PmaRoot) o parametrze par1 (w ten sposób można wywołać globalną metodę zarówno na serwerze jak również w Web panelu):
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var val = Pm.Methods.GetStartTime(par1);
Następne przykłady:
Patrz przykłady w opisie właściwości PmaObject.Methods.

Historia:
Pm8.03.00: Taką kartę posiada każdy Pma obiekt oraz Pmg obiekt (wcześniej ją posiadało tylko kilka typów Pma obiektów).
Pm8.02.06: Dodano nowy parametr pContext.TypeEnable
Pm8.00.08: oraz Zdarzenia zostały usunięte przyciski "Test" (do kontroli składniowej poprawności skryptu) i "Edit" (do ziwększenia edytora skryptów na cały ekran). Te funkcjonalności zostały przesunięte do lokalnego menu w edytorze skryptów (patrz Podstawowa obsługa edytora skryptów).
Pm8.00.00: Globalne metody aplikacji (tzn. metody określone w karcie "Metody" obiektu PmaRoot) teraz nie można już wołać w skryptach bezpośrednio tylko pod nazwą, ale należy je wołać przy pomocy właściwości Pm.Methods. Powodem są ograniczenia, które posiada bezpośrednie wołanie - na przykład nie działa dla Web panele. Stary sposób wołania (tzn. wołanie bezpośrednio nazwą metody) mażna nadal stosować, ale w skrypcie należy zastosować dyrektywę #pragma option OldGlobalMethodCall o wartości 1 (jest to znacznik dla starego wołania metody). Podczas konwersji aplikacji do wersji PROMOTIC 8 zostanie wykonane: do wszystkich globalnych metod zostanie włożona ta dyrektywa skryptu a aplikacja będzie sprawnie działać.
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice