---
url: /statelake/scripting-reference/variables/user-parameters.md
---

# User Parameters

While **User Parameters** are global to the **Map**, they can only be set and configured at design time and cannot be modified through script within the Map - a **User Parameter** can only be referenced through a script within the **Map**.

The purpose of a **User Parameter** is to store information that doesn't need to change during the execution of a **Map**, but may need to be changed by a user from time to time.

It provides easy access to change parameters without having to hunt through the different **Event** scripts within the **Map**. They are useful for settings that need changing when using the **Map** with different scenarios and/or clients.

For example, a **Map** transferring invoice data to a file may need to include a tax number such as a GST, ABN, or VAT number. This value may need changing if the **Map** was going to be used for a different client, depending on their requirements. By storing this value as a **User Parameter** and then referencing it from within a script, it becomes easy to change the value without having to hunt through the different **Events** of the **Map**.

More **User Parameters** can be defined by right-clicking the parameter list, and then selecting **New**.

The following illustrates the **User Parameter** list from within the **Map** designer.

However, care must be taken when setting the code of the parameter per the **ID** column, as it is possible to create a naming conflict if you name it the same as another object in the **Map**, as **User Parameters** are referenced using this **ID**. Simply drag the parameter onto the script editor, or manually enter it.

The value of the parameter can be accessed through the .Value property.

An example of using a **User Parameter** is as follows.

```pascal
procedure ScriptEvent (var Value : variant);
begin
  Value := GST.Value;
end;
```

The other properties of a **User Parameter** are:

* .Code - the parameter's ID as a string
* .FriendlyName - the description of the parameter as a string
* .ParamType - the type of the parameter.
