Promotic

Metody - karta obiektu PmaObject

Opis:
W tej karcie można zdefiniować metody projektanta tego obiektu.
Przyciski:
NowaOtworzy okno konfiguracyjne "Metoda", w którym można wprowadzić nową metodę.
UsuńUsunie zaznaczoną metodę
EdytujOtworzy okno konfiguracyjne "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ć tak, ż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 obiekcie 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ę po lewej 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 zapisu 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łaniu 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 użytkownika, 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 panela) 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 metoda nie poisada żadnych parametrów) po wyborze z menu lokalnego (prawym przyciskiem myszki). Patrz uprawnienie "PmaRoot > Uprawnienia > InfoEdit".

Uwaga! Dla obiektu PmaPrototype jest ważne, że metoda zostanie przekazana do obiektu PmaInstance przy uruchamianiu aplikacji, jeżeli metoda o tej nazwie jeszcze nie istnieje w obiekcie PmaInstance.
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) z parametrem par1 (w ten sposób można wywołać globalną metodę zarówno w aplikacji 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:
Pm9.00.25: Karta ta została dodana również do obiektu PmaPrototype.
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.00.08: oraz Zdarzenia zostały usunięte przyciski "Test" (do kontroli składniowej poprawności skryptu) i "Edit" (do ziwększenia edytora skryptu na cały ekran). Te funkcjonalności zostały przesunięte do menu lokalnego w edytorze skryptu.
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 z 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.