Use custom properties to set property values when screens are opened
- Last UpdatedOct 29, 2026
- 3 minute read
Studio allows you to assign values, tags, or even expressions to screen objects properties or animation properties dynamically when opening the screens. This feature is based on the use of Custom Properties (formerly known as Mnemonics).
Custom Properties are place holders (aliases) that can configured to screen animations and objects properties. The built-in function $Open() can be used to set values, tags, or even expressions dynamically to the Custom Properties when opening the screen. Therefore, the same screen can be used to display different values, depending on the context in which it was opened.
The Custom Properties follow the syntax below:
#CustomPropertyName:CustomPropertyValue
…where:
CustomPropertyName
Identifier (alias name) of the custom property.
CustomPropertyValue
Actual (default) value of the custom property. It can be a literal value (numeric or alphanumeric), a tag, or even an expression between parentheses. It can also be omitted (no default value), so there is no default value for the custom property, but its value can still be set dynamically when opening the screen with the built-in function $Open().
During the runtime, only the CustomPropertyValue is used and the remaining text from the aforementioned syntax is ignored. Examples:
|
Custom Property (full syntax) |
Custom Property Name (alias used as identifier) |
Custom Property Value (used during the runtime) |
|---|---|---|
|
#MyNumValue:10 |
MyNumValue |
10 |
|
#MyTextValue:"ABC" |
MyTextValue |
"ABC" |
|
#MyTag:Second |
MyTag |
Second |
|
#MyExpression:(Minute*10) |
MyExpression |
(Minute*10) |
In most cases, the Custom Property value is completely replaced by the value passed by the built-in function $Open(). For example, assume you configured an object property from the screen MyScreen with the syntax:
#MyCustomProperty:
Then, you execute the following expression to open the screen:
$Open("MyScreen",-1,-1,-1,-1,0,0,"#MyCustomProperty:Second")
The screen will be opened, and the placeholder #MyCustomProperty: will be replaced by the tag Second during the runtime.
Additional examples:
|
Custom Property configured on the objects and animations |
Custom Property passed by the built-in function $Open() |
Actual value executed during the runtime |
|---|---|---|
|
#MyCustomProperty:Minute |
#MyCustomProperty:Second |
Second |
|
#MyCustomProperty:Minute |
#MyCustomProperty:Second->Quality |
Second->Quality |
|
#MyCustomProperty:Minute |
#MyCustomProperty:Mytag[1].MyMember |
Mytag[1].MyMember |
|
#MyCustomProperty:Minute |
#MyCustomProperty:Mytag[1].MyMember->Quality |
Mytag[1].MyMember->Quality |
Replace Custom Property value partially using tag fields configured on the objects and animations
Assume you have a screen where you configure the following syntaxes on different objects:
-
#MyTag:Minute
-
#MyTag:Minute->Min
-
#MyTag:Minute->Max
-
#MyTag:Minute->Unit
The same Custom Property (MyTag) is associated with different values (Minute, Minute->Min, Minute->Max, and Minute->Unit). It is valid, as long as all values are associated to different fields of the same tag. Conveniently, you can replace the tag Minute by another tag dynamically and keep the fields configuration, calling the built-in function $Open() as follows:
$Open("MyScreen",-1,-1,-1,-1,0,0,"#MyCustomProperty:Second")
This function will replace values as indicated in the following table:
|
Custom Property configured on the objects and animations |
Custom Property passed by the built-in function $Open() |
Actual value executed during the runtime |
|---|---|---|
|
#MyCustomProperty:Minute |
#MyCustomProperty:Second |
Second |
|
#MyCustomProperty:Minute->Min |
#MyCustomProperty:Second |
Second->Min |
|
#MyCustomProperty:Minute->Max |
#MyCustomProperty:Second |
Second->Max |
|
#MyCustomProperty:Minute->Unit |
#MyCustomProperty:Second |
Second->Unit |
Replace Custom Property value partially using class tags on the objects and animations
Assume you have a screen where you configure the following syntaxes on different objects:
-
#MyTag:MyTagA.MemberX
-
#MyTag:MyTagA.MemberY
-
#MyTag:MyTagA.MemberZ
The same Custom Property (MyTag) is associated with different values (MyTagA.MemberX, MyTagA.MemberY, and MyTagA.memberZ). It is valid, as long as all values are associated to different members of the same class tag. Conveniently, you can replace the main tag name MyTagA by another tag dynamically and keep the respective members, calling the built-in function $Open() as follows:
$Open("MyScreen",-1,-1,-1,-1,0,0,"#MyCustomProperty:MyTagB")
This function will replace values as indicated in the following table:
|
Custom Property configured on the objects and animations |
Custom Property passed by the built-in function $Open() |
Actual value executed during the runtime |
|---|---|---|
|
#MyCustomProperty:MyTagA.MemberX |
#MyCustomProperty:MyTagB |
MyTagB.MemberX |
|
#MyCustomProperty:MyTagA.MemberY |
#MyCustomProperty:MyTagB |
MyTagB.MemberY |
|
#MyCustomProperty:MyTagA.MemberZ |
#MyCustomProperty:MyTagB |
MyTagB.MemberZ |
Note: This partial replacement is valid ONLY if both the original class tag (MyTagA) and the target class tag (MyTagB) share the same class type.
Replace Custom Property value partially using array tags
Assume you have a screen where you configure the following syntaxes on different objects:
-
#MyTag:MyArray[1]
-
#MyTag:MyArray[2]
-
#MyTag:MyArray[3]
The same Custom Property (MyTag) is associated with different values (MyArray[1], MyArray[2], and MyArray[3]). It is valid, as long as all values are associated to different array positions from the same tag. Conveniently, you can replace the tag name MyArray by another tag dynamically and keep the respective array positions, calling the built-in function $Open() as follows:
$Open("MyScreen",-1,-1,-1,-1,0,0,"#MyCustomProperty:NewArray")
This function will replace values as indicated in the following table:
|
Custom Property configured on the objects and animations |
Custom Property passed by the built-in function $Open() |
Actual value executed during the runtime |
|---|---|---|
|
#MyCustomProperty:MyArray[1] |
#MyCustomProperty:NewArray |
NewArray[1] |
|
#MyCustomProperty:MyArray[2] |
#MyCustomProperty:NewArray |
NewArray[2] |
|
#MyCustomProperty:MyArray[3] |
#MyCustomProperty:NewArray |
NewArray[3 |
Note: This partial replacement is valid ONLY if both the original tag (MyArray) and the target tag (NewArray) are array tags.