Zum Hauptinhalt springen
Eine benutzerdefinierte Eigenschaft ist eine typisierte Variable, die zu einem Element gehört. Diese Eigenschaften werden im Abschnitt External fields definiert. Das folgende Format ist einzuhalten:
Typ1 Name1;
...
TypN NameN;
wobei Name der Name der Variablen ist und Type ihr Typ. Wenn Felder erstellt werden, werden sie wie folgt initialisiert: Numerische Felder werden mit dem Wert 0 initialisiert, Rectangle- und Regions-Felder mit leeren Werten usw. Felder können in dem Element verwendet werden, zu dem sie gehören, sowie in allen Elementen, die unterhalb dieses Elements liegen. Der Wert eines Felds kann nur in dem Element geändert werden, zu dem es gehört; in anderen Elementen ist er schreibgeschützt verfügbar. Der Wert eines komplexen Ausdrucks, der die Hypothese für ein Element beschreibt, kann berechnet und in diese Eigenschaft geschrieben werden. Auf diesen Wert kann von allen darunterliegenden Elementen zugegriffen werden, ohne ihn jedes Mal neu berechnen zu müssen. Dies verkürzt die Zeit für das Abgleichen des FlexiLayout, macht das Kopieren eines umfangreichen Ausdrucks in jedes Element überflüssig und verbessert die Lesbarkeit des Codes. Um auf ein Feld eines Elements zuzugreifen, wird der vollständige Name des Felds im folgenden Format verwendet: ElementName.FieldName (z. B. SearchElements.StaticText1.x). Innerhalb eines Elements kann auf sein Feld über den Namen zugegriffen werden: x. Bei einem zusammengesetzten Element können seine Subelemente (auf jeder Verschachtelungsebene) auch auf seine Elemente über deren Kurznamen zugreifen. Innerhalb eines Elements müssen die Feldnamen eindeutig sein. Die Namen der Elemente eines zusammengesetzten Elements dürfen mit keinem der Feldnamen in seinen Subelementen (auf jeder Verschachtelungsebene) übereinstimmen. Zusätzlich dürfen die Feldnamen eines zusammengesetzten Elements mit keinem der Namen seiner Subelemente übereinstimmen.

Beispiel

In diesem Beispiel werden zwei Adressbestandteile gesucht: Stadt (Zeichenfolge City) und U‑Bahn-Station (Zeichenfolge Station). Die U‑Bahn-Station wird nur angegeben, wenn die Stadt Sydney ist. Um die FlexiLayout-Erkennung zu beschleunigen, definieren wir für das Element City die Eigenschaft fromSydney. Diese Eigenschaft ist true, wenn das Element City erkannt wurde und den Wert Sydney hat, und false in allen anderen Fällen. Code für das Element City: Externe Felder
logic fromSydney;
Bewertung von Hypothesen
if( not IsNull and Value.Find( "Sydney" ) >= 0 ) then fromSydney = true;
else fromSydney = false;
Anschließend verwenden wir diese Eigenschaft, um die U‑Bahn-Station zu suchen. Um den Abgleich zu beschleunigen, suchen wir nach der Station nur, wenn Sydney als City-Element erkannt wurde. Code für das Station-Element: Suchbedingungen
if not City.fromSydney then dontfind;
Hinweis: Aufgrund der fields werden Elemente desselben Typs nicht als identisch behandelt. Daher sind Konstruktionen der folgenden Art unzulässig:
Let e = SearchElements.StaticText1;
e = SearchElements.StaticText2; // Element desselben Typs