Proxy Variables
In this article:
Proxy variables are a core feature in EventIDE, acting as an interface between your user code and the properties of EventIDE objects — including Experiments, Events, and Elements (E-objects). They enable powerful and flexible control over your experiment's behavior during runtime.
What Is a Proxy Variable?
A proxy variable is a reference label that links directly to a property of an EventIDE object. Once created:
It behaves like a global variable in all code snippets.
It can be monitored and modified during runtime using the Status Screen, Debug Window, or Proxy Panel.
It always has the same data type as the linked property.
Only one proxy variable can be assigned to each property.
For example, to change the color of a Text Element during the experiment:
FontColor = "Red";This line will immediately update the color via the proxy variable linked to the Font Color property.
Types of Proxy Variables
EventIDE supports four kinds of proxy variables: single proxy variable, array proxy variable, hub proxy variable, and user proxy variable.

Single Proxy Variable
Links a single object’s property to a proxy variable.
Most common and straightforward type.
One-to-one relationship.
Array Proxy Variable vs. Hub Proxy Variable
Both Array and Hub Proxy Variables let you control the same property across multiple objects of the same type. The difference lies in how they manage and apply this control.
Array Proxy Variable
Treats the linked properties like elements of an array, providing indexed access to each object’s property.
Best suited for operations that act on objects individually but in a structured sequence (e.g., positioning multiple targets at specific coordinates).
Example:
TargetPositions[0] = new clPoint(100, 200);Hub Proxy Variable
Connects the linked properties to one shared proxy, keeping them synchronized at all times, both at runtime and design-time.
Ideal for group-level operations, where all objects should behave identically (e.g., showing or hiding several elements at once).
Example:
GroupVisibility = false;In short:
Use Array Proxies when you need indexed, separate control over a collection of properties.
Use Hub Proxies when you need uniform, synchronized control over multiple properties.
User Proxy Variable
User proxy variable is a custom global variable defined in the Header snippet and is not linked to any E-object by default. Once created, it appears in the Proxy Panel, where its value can be entered through the GUI. During runtime, the variable can also be monitored and edited, which makes it especially useful for parameters such as participant names.
Example:
string ParticipantName = "Default";After compiling the header, this variable becomes a proxy accessible and editable before running the experiment.
Default Proxy Variables
EventIDE provides some default proxy variables in every experiment:
Name | Purpose |
MouseRadar | Tracks mouse position |
Report | Interfaces with the internal data collection mechanism |
LibraryImageSource | Used in XAML scripts to access other XAML items in Material Library |
ScreenClone | Captures a live snapshot of the presentation screen to display on status screen |
These default proxies cannot be deleted.
Creating Proxy Variables
Single Proxy
Select an E-object.
In the Property Panel, hover over a property.
If adding proxy variable is supported, a “+” button appears beside the property.
Click it to define the name and category.

Array or Hub Proxy
Select multiple objects of the same type.
In the Property Panel, click the [..] button next to the target property.
Choose between array or hub, then assign a name and category.
Tip: to select multiple elements across different events use pin button at the top of the Property Panel.

User Proxy
Open the Header Snippet.
Define your global variables.
Click the “Check” button to compile.
These variables will now appear in the Proxy Panel and support runtime editing.
Managing Proxy Variables
Use the Proxy Panel to:
Rename or remove proxies (right-click).
Sort and group by categories.
Reorder objects in array or hub proxies.
Drag & drop new objects into proxies (same type).
Replace linked objects in a single proxy.
Using Proxy Variables in Code Snippets
In snippets, proxy variables are used like global variables.
if (ResponseTime > 1000) {
FeedbackText = "Too slow!";
}Important:
Proxy variables behave as virtual copies within code snippets. This means:
The linked property is not updated immediately.
The change takes effect after the snippet finishes executing.
Only the last assigned value in the snippet is applied.
