Passer au contenu principal
Une propriété définie par l’utilisateur est une variable typée associée à un élément. Ces propriétés sont définies dans la section External fields. Le format suivant doit être respecté :
Type1 Nom1 ;
...
TypeN NomN ;
où Name est le nom de la variable et Type est son type. Lorsque des champs sont créés, ils sont initialisés comme suit : les champs numériques sont initialisés à zéro, les rectangles et les régions avec des valeurs vides, etc. Les champs peuvent être utilisés dans l’élément auquel ils appartiennent et dans n’importe quel élément situé en dessous. La valeur d’un champ ne peut être modifiée que dans l’élément auquel il appartient ; dans les autres éléments, elle est disponible en lecture seule. La valeur d’une expression complexe qui caractérise l’hypothèse pour un élément peut être calculée et écrite dans cette propriété. Cette valeur peut être consultée à partir de n’importe quel élément situé en dessous, sans avoir à la recalculer à chaque fois. Cela réduit le temps nécessaire pour faire correspondre le FlexiLayout, évite de devoir copier une expression volumineuse dans chacun des éléments et rend le code plus lisible. Pour accéder à un champ d’un élément, on utilise le nom complet du champ au format suivant : ElementName.FieldName (par exemple, SearchElements.StaticText1.x). À l’intérieur d’un élément, son champ est accessible par son nom : x. Dans le cas d’un élément composé, ses sous-éléments (à n’importe quel niveau d’imbrication) peuvent également accéder à ses champs par leurs noms courts. À l’intérieur d’un élément, les noms des champs doivent être uniques. Les noms des sous-éléments d’un élément composé ne doivent pas coïncider avec l’un des noms de champ de ses sous-éléments (à n’importe quel niveau d’imbrication). De plus, les noms des champs d’un élément composé ne doivent pas coïncider avec l’un des noms de ses sous-éléments.

Exemple

Cet exemple recherche deux composants d’adresse : ville (chaîne de caractères City) et station de métro (chaîne de caractères Station). La station de métro n’est renseignée que si la ville est Sydney. Pour accélérer l’appariement FlexiLayout, nous définissons une propriété fromSydney pour l’élément City. Cette propriété vaut true si l’élément City est détecté avec la valeur Sydney, et false dans tous les autres cas. Code pour l’élément City : Champs externes
logic fromSydney;
Évaluation des hypothèses
if( not IsNull and Value.Find( "Sydney" ) >= 0 ) then fromSydney = true;
else fromSydney = false;
Par la suite, nous utilisons cette propriété pour rechercher la station de métro. Pour accélérer l’opération de mise en correspondance, nous recherchons la station uniquement si Sydney est détectée comme élément City. Code pour l’élément Station : Conditions de recherche
if not City.fromSydney then dontfind;
Remarque : En raison des fields, les éléments du même type ne sont pas traités comme identiques. Par conséquent, les constructions du type suivant sont interdites :
Let e = SearchElements.StaticText1;
e = SearchElements.StaticText2; // élément du même type