Propiedades definidas por el usuario en FlexiLayout language: declare variables tipadas en la sección Campo externo para compartir valores de hipótesis entre elementos.
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. Debe respetarse 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 de la siguiente manera: los campos numéricos se inicializan con valores de cero, los rectángulos y las regiones se inicializan con valores vacíos, etc.Los campos pueden utilizarse en el elemento al que pertenecen y en cualquiera de los elementos situados debajo de él. El valor de un campo solo puede modificarse en el elemento al que pertenece, y en los demás elementos está disponible como de solo lectura.El valor de una expresión compleja que caracteriza la hipótesis de un elemento puede calcularse y escribirse en esta propiedad. Se puede acceder a este valor desde cualquiera de los elementos inferiores, sin tener que calcularlo cada vez que se necesite. Esto reduce el tiempo necesario para el emparejamiento de FlexiLayout, evita tener que copiar una expresión larga en cada uno de los elementos y hace que el código sea más legible.Para acceder a un campo de un elemento, se usa el nombre completo del campo con el siguiente formato: ElementName.FieldName (por ejemplo, SearchElements.StaticText1.x). Dentro de un elemento, se puede acceder a su campo por nombre: x. En el caso de un elemento compuesto, sus subelementos (en cualquier nivel de anidamiento) también pueden acceder a sus campos por sus nombres cortos.Dentro de un elemento, los nombres de los campos deben ser únicos. Los nombres de los elementos de un elemento compuesto no pueden coincidir con ninguno de los nombres de campo de sus subelementos (en cualquier nivel de anidamiento). Además, los nombres de los campos de un elemento compuesto no pueden coincidir con ninguno de los nombres de sus subelementos.
Ejemplo
Este ejemplo busca dos componentes de dirección: ciudad (cadena de caracteres City) y 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, especificamos una propiedad fromMoscow para el elemento City. Esta propiedad estruesi se detecta el elemento City y tiene el valorMoscow, yfalseen todos los demás casos.Código para el elemento City:Campo externologic fromMoscow;Relaciones avanzadas posteriores a la búsquedaif( not IsNull and Value.Find( “Moscow” ) >= 0 ) then fromMoscow = true;
else fromMoscow = false;Posteriormente, usamos esta propiedad para buscar la estación de metro. Para acelerar el proceso de emparejamiento, buscamos la estación solo si se detecta Moscow como el elemento City.Código para el elemento Station:Relaciones avanzadas previas a la búsqueda
if not City.fromMoscow then dontfind;
Debido a los campos, los elementos del mismo tipo no se consideran idénticos. Por lo tanto, se prohíben construcciones del siguiente tipo:
Let e = SearchElements.StaticText1;
e = SearchElements.StaticText2;// elemento del mismo tipo