Name is the variable name and Type is its type.
When fields are created, they are initialized automatically. For example, numerical fields are initialized with zero values, and rectangles and regions are initialized with empty values.
Field scope and access
Fields can be used in the element to which they belong and in any element located lower in the search tree. The value of a field can be changed only in the element to which it belongs. In other elements, it is available as read-only. To access a field of an element, use the full name of the field in the formatElementName.FieldName (for example, SearchElements.StaticText1.x). Within an element, its field can be accessed by name: x. For a compound element, its subelements (at any level of nesting) can also access its fields by their short names.
The value of a complex expression that characterizes the hypothesis for an element can be computed and written into a property. This value can then be accessed from any element lower in the search tree, without computing it each time it is needed. This reduces the time required to match the FlexiLayout, removes the need to copy a large expression into each element, and makes the code more readable.
Field naming restrictions
- Within an element, field names must be unique.
- The name of an element in a compound element must not match any field name in its subelements (at any level of nesting).
- The field names of a compound element must not match the names of any of its subelements.
Example: speed up matching with a user-defined property
This example searches for two address components: a city (character string City) and a subway station (character string Station). The subway station is specified only if the city is Moscow. To speed up FlexiLayout matching, the example defines afromMoscow property for the City element. This property is true if the City element is detected and has the value "Moscow", and false in all other cases.
Code for the City element, in the External fields section:
