2006

Feb

13

Av

Parametrar till Scriptmaker-manus förenklar betydligt för utvecklaren. Samma manus kan användas fast med olika värden som skickas till manuset som parametrar. I tidigare versioner har detta fått göras med globala fält, t.ex. tilldelat globala fält värden, anropat ett manus och där läst de globala fälten.

En manusparameter är ett värde som skickas till ett manus, antingen via en knapp eller ett annat manus. Värdet kan vara allt från ett enstaka fält, en beräkning av flera fält eller flera fält. Ett exempel kan vara ett utskriftsmanus som har parameter för vilken layout som ska skrivas ut. 

Vi har valt att skicka en textsträng som parameter, som innehåller obegränsat antal värden. Med de egendefinierade funktionerna mvGet och mvSet hämtas värden respektive sätts värden anpassade till manusparametrar.

Anropet till utskriftsmanuset kan se ut så här:

Utskriftsmanus; Parameter: mvSet("Layout";"Faktura")

I manuset Utskriftsmanus görs manussteget:

Gå till layout[mvGet("Layout")],

som i det här exemplet går till layouten “Faktura” eftersom det var det värde som skickades in som parameter.

Funktionen mvSet (parameter; värde) definieras som

parameter & "=" & värde & ";"

medan mvGet(param) har en något besvärligare definition, i princip hämtar funktionen det som står mellan “parameter=” och nästföljande “;”:

Let(
[
#separator = ";";
#x = #separator & Substitute(Get ( Manusparameter );"\¶";"") & #separator;
#xstart = Position (#x; #separator & param & "="; 1; 1);
#xstartplus = If(#xstart > 0;#xstart + Length(param) + 2;0);
#xstop = Position (#x;#separator;#xstartplus;1)
];

If(#xstartplus > 0;Middle(#x;#xstartplus;#xstop-#xstartplus);"")

)

Genom att använda dessa båda funktioner behöver man aldrig fundera över hur och i vilken ordning parametrarna är definierade. Det finns givetvis andra lösningar, t.ex. med de nya variablerna i version 8, men vi gillar detta sätt bäst. Dessutom fungerar det med både version 7 och 8!

2 kommentarer till ”Manusparametrar”

    • Rolf

      Man kan ha flera parametrar till ett manus, egentligen obegränsat många. Det är bara till att lägga ihop flera anrop till mvSet på samma sätt som man lägger ihop textsträngar, t.ex. mvSet(“Layout”;”Faktura”) & mvSet(“Format”;”Stående”) & mvSet(“Kommando”;”Granska”).

      Reply

Skriv en kommentar

  • (will not be published)
  • 5 − one =

Läs också: