Saltar al contenido principal
Una propiedad definida por el usuario es una variable tipada que pertenece a un elemento. Estas propiedades se definen en la sección Campo externo de la pestaña Advanced. Use el siguiente formato:
Type1 Name1;
...
TypeN NameN;
donde Name es el nombre de la variable y Type es su tipo. Cuando se crean campos, se inicializan automáticamente. Por ejemplo, los campos numéricos se inicializan con valores de cero, y los rectángulos y las regiones se inicializan con valores vacíos.

Ámbito y acceso de los campos

Los campos pueden usarse en el elemento al que pertenecen y en cualquier elemento situado por debajo de él en el árbol de búsqueda. El valor de un campo solo puede modificarse en el elemento al que pertenece. En los demás elementos, está disponible en modo de solo lectura. Para acceder a un campo de un elemento, use el nombre completo del campo con el formato ElementName.FieldName (por ejemplo, SearchElements.StaticText1.x). Dentro de un elemento, se puede acceder a su campo por su nombre: x. En un elemento compuesto, sus subelementos (en cualquier nivel de anidamiento) también pueden acceder a sus campos por sus nombres cortos. El valor de una expresión compleja que caracteriza la hipótesis de un elemento puede calcularse y escribirse en una propiedad. Después, se puede acceder a este valor desde cualquier elemento situado más abajo en el árbol de búsqueda, sin tener que calcularlo cada vez que se necesite. Esto reduce el tiempo necesario para realizar la coincidencia de FlexiLayout, elimina la necesidad de copiar una expresión extensa en cada elemento y hace que el código sea más legible.

Restricciones de nomenclatura de campos

  • Dentro de un elemento, los nombres de los campos deben ser únicos.
  • El nombre de un elemento dentro de un elemento compuesto no debe coincidir con el nombre de ningún campo de sus subelementos (en cualquier nivel de anidación).
  • Los nombres de los campos de un elemento compuesto no deben coincidir con los nombres de ninguno de sus subelementos.

Ejemplo: acelerar el emparejamiento con una propiedad definida por el usuario

Este ejemplo busca dos componentes de dirección: una ciudad (cadena de caracteres City) y una estación de metro (cadena de caracteres Station). La estación de metro se especifica solo si la ciudad es “Moscow”. Para acelerar el emparejamiento de FlexiLayout, el ejemplo define una propiedad fromMoscow para el elemento City. Esta propiedad es true si se detecta el elemento City y tiene el valor “Moscow”, y false en todos los demás casos. Código para el elemento City, en la sección Campo externo:
logic fromMoscow;
En la sección Relaciones avanzadas de posbúsqueda:
if( not IsNull and Value.Find( "Moscow" ) >= 0 ) then fromMoscow = true;
else fromMoscow = false;
El elemento Station utiliza esta propiedad para buscar la estación solo si se detecta Moscú como el elemento City. Código del elemento Station, en la sección relación avanzada de prebúsqueda:
if not City.fromMoscow then dontfind;
Debido a los campos, los elementos del mismo tipo no se consideran idénticos. Por lo tanto, la siguiente construcción está prohibida:
Let e = SearchElements.StaticText1;
e = SearchElements.StaticText2; // elemento del mismo tipo