setProp | |||||||||||||
Type | control structure | ||||||||||||
Dictionary | LCS | ||||||||||||
Library | LiveCode Script | ||||||||||||
Syntax |
| ||||||||||||
Summary | Handles the trigger sent to an object when you change one of its custom properties. | ||||||||||||
Introduced | 1.0 | ||||||||||||
Changes | In version 2.0 and later, setting a custom property (other than the one that the current setProp handler applies to) inside a setProp handler sends a setProp trigger. In previous versions, setting a custom property within a setProp handler never sent a setProp trigger, regardless of which custom property you set. | ||||||||||||
OS | mac, windows, linux, ios, android | ||||||||||||
Platforms | desktop, server, mobile | ||||||||||||
Parameters |
| ||||||||||||
Related | Property: properties, customPropertySets, customProperties Control Structure: pass, exit, setProp Keyword: card, $ Object: stack, button Glossary: object, statement, handler, property, recursion, command, LiveCode, control structure, custom property set, trigger, custom property, handle, message path, trap, message, parameter, script Command: call, set Function: propertyNames, paramCount, value | ||||||||||||
Description | Use the setProp control structure to check the range of a custom property that is being set, or to change other properties or do other tasks at the same time a custom property is set. Form: The first line of a setProp handler consists of the word "setProp" followed by the name of the custom property. The last line of a setProp handler consists of the word "end" followed by the property's name. A setProp handler can contain any set of LiveCode statements. The propertyName is the name of the custom property whose value is being changed with the set command.
The setProp trigger passes through the message path, the same as any other message, so a setProp handler for an object can be located in the object's script or in the script of any object further in the message path. For example, a setProp handler for a card property may be located in the script of the stack that the card belongs to. If you use the set command within a setProp control structure to set the same custom property for the current object, no setProp trigger is sent to the object. (This is to avoid runaway recursion, where the setProp handler triggers itself.) This is only the case for the custom property that the current setProp handler applies to. Setting a different custom property sends a setProp trigger. So does setting the handler's custom property for an object other than the one whose script contains the setProp handler.
To avoid this problem, set the lockMessages property to true before setting the custom property. You can include as many setProp handlers in a script as you need. The property that a setProp handler controls is determined by the propertyName parameter in the first line of the handler. (If a script contains two setProp handlers for the same property, the first one is used.) If the custom property you want to control is in a custom property set, use array notation in the first line of the setProp handler, as in the following example:
The above setProp handler responds to changes in the custom property named "that", which is a member of the custom property set named "mySet".
|