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 Dim) 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 = PmObjectRef("ścieżka"):

Umożliwia uzyskanie odniesienia do PROMOTIC obiektu w drzewie obiektów. 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 i Set).

W ten sposób uzyskane odniesienie do obiektu jest dogodne w tym, że 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 PmObject.Pm.

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

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

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

Umożliwia uzyskanie odniesienia do elementu graficznego lub do jego podobiektu implementacyjnego w panelu graficznym. W skrypcie zostanie założona zmienna lokalna i zostanie ustawiona jej wartość początkowa jako odniesienie do wymaganego elementu graficznego (dla takiej zmiennej zatem nie są stosowane polecenia Dim i Set). Dyrektywa skryptu ta działa wyłącznie w skryptach w panelach graficznych (zdarzenia elementów graficznych).

W ten sposób uzyskane odniesienie do obiektu jest dogodne w tym, że 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 elementu położonego na dynamicznej (z góry nie znanej) ścieżce służy metoda PmiItem.Items.

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

Na przykład '#pragma variable oTemperature1 = PmiItemRef("../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ę (w podobny sposób 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)

© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice