2006

Feb

13

Av Rolf

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!

Kommentarer

2009-04-03 Kalle Sundberg

Vad händer om man vill ha flera manusparametrar till ett manus?

2009-04-03 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").

Skriv en kommentar

Din epost-adress stannar hos oss.