When a control is inserted into a container, its initial properties are set. Properties act as a way of exposing variables inside a control. The control passes any changes back to the container, which is responsible for saving the properties that the control requested. In this way, the state of the control is persistent. The container design program is responsible for saving these properties when it saves the container's representation.

When the container is run and creates the control, the container must provide the control with these initial property values.

Properties are saved as part of the variables of the form. In HTML pages, the properties are saved as <PARAM> tags inside the <OBJECT> tag that specifies how to create the control.

There are several categories and sub-categories of properties. They can be implemented by the control or the container. Control properties are further broken down into custom properties (implemented by you) and stock properties (implemented by Microsoft Foundation Classes). Container properties are called ambient properties; they are further categorized as standard ambient properties, whose meanings are defined by OLE and extended properties, which are defined by a specific container. Extended properties are more properly thought of as properties of the extended control, which is inside the container that encapsulates and extends your control.

Of the four, custom control properties are the most commonly used.

To retrieve a property from a control, use the $ObjGetProperty Zim function:

LET var = $ObjGetProperty(MyForm.OLE_MonthView, 'DayOfWeek')