Zum Hauptinhalt springen
Eine benutzerdefinierte Eigenschaft ist eine typisierte Variable, die einem Element zugeordnet ist. Diese Eigenschaften werden im Abschnitt „Externe Felder“ definiert. Das folgende Format ist zu beachten:
Typ1 Name1;
...
TypN NameN;
wobei Name der Name der Variablen und Type ihr Typ ist. Beim Erstellen von Feldern werden diese wie folgt initialisiert: numerische Felder mit dem Wert Null, 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 nur 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 zu berechnen, wenn er benötigt wird. Dies verkürzt die Zeit für das Abgleichen des FlexiLayout, macht das Kopieren eines umfangreichen Ausdrucks in jedes der Elemente überflüssig und erhöht 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 Verbundelement können seine Unterelemente (auf beliebiger Verschachtelungsebene) ebenfalls über die Kurznamen auf dessen Elemente zugreifen. Innerhalb eines Elements müssen die Namen der Felder eindeutig sein. Die Namen der Elemente eines Verbundelements dürfen mit keinem der Feldnamen in seinen Unterelementen (auf beliebiger Verschachtelungsebene) übereinstimmen. Zusätzlich dürfen die Namen der Felder eines Verbundelements nicht mit einem der Namen seiner Unterelemente ü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