# Compound Properties

Multi-Property Access |

The following properties allow an application to set/get values for more than one property for a control in a single command:

| '_PropList$ | Comma separated list of property names to read/write
| '_PropValues$ | String that contains values for each of the properties in '_PropList$
| '_PropSep$ | Character used as a field separator between values

The ability to handle multiple reads is useful for accessing properties across a WindX connection, particularly when dealing with an object that has a large number of properties such as a grid. This can boost performance and reduce the amount of network traffic.

To retrieve the value of multiple properties, first set '_PropList$, then read '_PropValues$.

Example:

> G1'_PropList$="CurrentColumn,CurrentRow,Value$"
> x$=G1'_PropValues$

In this example, x$ receives a string containing the values of CurrentColumn, CurrentRow, and Value$, with each field separated by either the standard SEP field separator or with the '_PropSep$ character.

Data can then be extracted using READ DATA:

> read data from G1'_PropValues$ to iol=MYIOL
> MYIOL: \
> iolist Col,Row,Value$

To set values, first set '_PropList$ (if not already set), then set '_PropValues$:

> G1'_PropValues$="1"+sep+"2"+sep+"Data"
> or
> G1'_PropValues$=rec(iol=MYIOL)

The advantage is that only one packet needs to be sent to WindX to either SET or RETRIEVE the values of multiple properties. Do not constantly read fields '_PropList$ and '_PropSep$ from the control to parse the data returned by '_PropValues$. This would defeat the purpose.

Example:

> read data from G1'_PropValues$,sep=G1'_PropSep$ to iol=cpl("IOLIST "+G1'_PropList$)

This example actually results in three exchanges with WindX: one to get '_PropSep$, the second for '_PropList$, and the third for '_PropValues$. The separator character and list should be maintained within the application code and should not be retrieved from the control.