Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Dyrektywa skryptu #pragma systemu PROMOTIC

Dyrektywa skryptu #pragma umożliwia skryptom wpływanie na sposób zastosowania owego skryptu w systemie PROMOTIC a także ewentualnie modyfikację samej zawartości skryptu.

Jednak do przetworzenia dyrektywy #pragma dochodzi w chwili kompilacji takiego skryptu i tym różni się od wywołanie metod podczas uruchomienia skryptu. W przypadku aplikacji webowej skrypty panelu graficznego są wprawdzie uruchamiane u kilenta, lecz przetworzenie dyrektywy #pragma przebiega na serwerze i klient uzyska już przetworzony skrypt.

System PROMOTIC podczas kompilacji przetworzy daną dyrektywę #pragma i właściwy kod dyrektywy #pragma usunie ze skryptu. Jednak na miejsce byłej dyrektywy #pragma może zostaś zapisany nowy kod, jako wynik przetworzenia odpowiedniej dyrektywy #pragma.

Uwaga! Dyrektywa skryptu #pragma zawsze jest zapisana w notatce skryptu, tzn. w VBScript za znakiem "apostrof" ('), w JavaScript za dwoma znakami "ukośnik" (//).

 
Istnieją dwa rodzaje dyrektyw #pragma:
 

#pragma variable

Służy do modyfikacji właściwego skryptu, tzn. do skryptu jest włożony nowy kod, jako wynik przetworzenia odpowiedniej dyraktywy #pragma.

Dyrektywa skryptu ta włoży do ciała skryptu kod zawierający założenie zmiennej lokalnej w skrypcie o odpowiedniej nazwie (polecenie var dla JavaScript lub Dim dla VBScript) a następnie kod do zinicjalizowania zmiennej odpowiednią wymaganą wartością (wartością taką może być również odniesienie do obiektu).

Włożony kod, powstały w wyniku przetworzenia jednej i tej samej dyrektywy #pragma w tym samym skrypcie może różnić się na przykład w zależności od tego, czy skrypt znajduje się w lokalnym albo Web panelu, itd.

Ten rodzaj dyrektywy #pragma sprawia, że skrypty są bardzeij przejrzyste, umożliwia w sposób systemowy wychwycić odniesienia do obiektów a także umożliwia wychwycić niektóre różnice pomiędzy panelem lokalnym a Web panel.

 
#pragma variable x = Macro("makro wyrażenie"):

Umożliwia obliczyć makro wyrażenie. W skrypcie wytworzy zmienną lokalną oraz ustawi jej wartość początkową na wartość rezultatu obliczenia wyrażenia makro. Jest stosowana zwłaszcza do wczytania tekstu lokalizacyjnego (Makro wyrażenie $.text). W przypadku Webu dochodzi do obliszenia wyrażenia już na serwerze, więc przetworzenie dyrektywy #pragma posiada dostęp do danych i plików serwera.

Na przykład '#pragma variable sComment = Macro("$.text('sys','comment')")

Inną możliwością jak uzyskać zlokalizowany tekst użycie Makro wyrażenie $.text lub EvalMacro.

 
#pragma variable x = PmaObjectRef("ścieżka"):

Umożliwia uzyskanie odniesienia do Pma obiektu w drzewie Pma obiektów lub jego implementacyjny podobiekt. W skrypcie zostanie założona zmienna lokalna i zostanie ustawiona jej wartość początkowa jako odniesienie do wymaganego obiektu (dla takiej zmiennej zatem nie są stosowane polecenia Dim oraz Set).

W ten sposób uzyskane odniesienie do obiektu jest dogodne, ponieważ odniesienie jest znane już w środowisku deweloperskim PROMOTIC, tzn. że PROMOTIC wie o takim odniesieniu i jest znany typ obiektu, do którego jest wytwarzane odniesienie co w przyszłości umożliwi w edytorze skryptów inteligentną pomoc z lictą metod i właściwości obiektu, itd.

Do uzyskania obiektu położonego na dynamicznej (z góry nie znanej) ścieżce służy metoda PmaObject.Pm.

Na przykład '#pragma variable oTemperature1 = PmaObjectRef("/Block1/Data/#vars/Temperature1")

Na przykład '#pragma variable oTemperature1 = PmaObjectRef("../Data/#vars/Temperature1")

 
#pragma variable x = PmgObjectRef("ścieżka"):

Umożliwia uzyskanie odniesienia do Pmg obiektu lub do jego podobiekt implementacyjnego w panelu graficznym. W skrypcie zostanie założona zmienna lokalna i zostanie ustawiona jej wartość początkowa jako odniesienie do wymaganego Pmg obiektu lub jego implementacyjny podobiekt Dyrektywa skryptu ta działa wyłącznie w skryptach w panelach graficznych (zdarzenia Pmg obiektów).

W ten sposób uzyskane odniesienie do obiektu jest dogodne, ponieważ odniesienie jest znane już w środowisku deweloperskim PROMOTIC, tzn. że PROMOTIC wie o takim odniesieniu i jest znany typ obiektu, do którego jest wytwarzane odniesienie co w przyszłości umożliwi w edytorze skryptów inteligentną pomoc z lictą metod i właściwości obiektu, itd.

Do uzyskania Pmg obiektu położonego na dynamicznej (z góry nie znanej) ścieżce służy metoda PmgObject.Items.

Na przykład '#pragma variable oEdit0 = PmgObjectRef("../edit0")

Na przykład '#pragma variable oTemperature1 = PmgObjectRef("../edit0/#vars/Temperature1")

#pragma option

Służy do wpłynięcia na sposób, w jaki w systemie PROMOTIC zostanie zastosowany skrypt, tzn. że ustawia niektóre parametry systemu PROMOTIC. Nie dochodzi do modyfikacji zawartości skryptu (z wyjątkiem usunięcia właściwej dyrektywy #pragma).
 
#pragma option OldGlobalMethodCall:

Umożliwia włączenie starego sposobu wywoływania metod globalnych, kiedy metody globalne były wywoływane ze skryptów bezpośrednio przez ich nazwę (tak samo jak funkcje języka VBScript). Sposób ten jednak nie był zgodny z Web aplikacjami. W nowy sposób można metody globalne wywołać przy pomocy Pm.Methods. Ta dyrektywa skryptu ma sens tylko w metodych globalnych aplikacji. Jeżeli nie jest ustawione (lub jest zastosowana wartość 0), wtedy jest wykorzystany nowy sposób wywołania metod globalnych.

Składnia: '#pragma option OldGlobalMethodCall = 0/1

gdzie 0 (domyślnie) oznacza nowy sposób a 1 oznacza stary sposób.

Na przykład '#pragma option OldGlobalMethodCall = 1

Przykład wywołania metody gloablnej Test z dwoma parametrami ze skryptu bezpośrednio w stary sposób:

  v = Test(5, 8)

Przykład wywołania metody globalnej Test z dwoma parametrami ze skryptu pośrednio w nowy sposób:

  v = Pm.Methods.Test(5, 8)


Historia:
Pm8.00.00: Wytworzono
Pm8.03.07: Usunięty błąd: w skrypcie nie działała dyrektywa skryptu #pragma option OldGlobalMethodCall.
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice