Zum Hauptinhalt springen
Eine benutzerdefinierte Eigenschaft ist eine typisierte Variable, die zu einem Element gehört. Diese Eigenschaften werden im Abschnitt „Externe Felder“ auf der Registerkarte „Erweitert“ definiert. Dabei ist folgendes Format einzuhalten: Type1 Name1; TypeN NameN; wobei Name der Name der Variablen und Type ihr Typ ist. Wenn Felder erstellt werden, werden sie wie folgt initialisiert: Numerische Felder werden mit dem Wert null initialisiert, Rechtecke und Regionen 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 Feldes kann nur in dem Element geändert werden, zu dem es gehört; in allen anderen Elementen ist es nur schreibgeschützt verfügbar. Der Wert eines komplexen Ausdrucks, der die Hypothese für ein Element charakterisiert, kann berechnet und in diese Eigenschaft geschrieben werden. Auf diesen Wert kann dann von jedem darunterliegenden Element aus zugegriffen werden, ohne ihn jedes Mal neu berechnen zu müssen. Dadurch wird die für das Matching des FlexiLayout erforderliche Zeit verkürzt, es ist nicht mehr nötig, einen langen Ausdruck in jedes Element zu kopieren, und der Code wird besser lesbar. Um auf ein Feld eines Elements zuzugreifen, wird der vollständige Feldname 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 Unterelemente (auf jeder Verschachtelungsebene) außerdem über ihre Kurznamen auf seine Felder zugreifen. Innerhalb eines Elements müssen die Namen der Felder eindeutig sein. Die Namen von Elementen eines zusammengesetzten Elements dürfen mit keinem der Feldnamen in seinen Unterelementen (auf jeder Verschachtelungsebene) übereinstimmen. Außerdem dürfen die Namen der Felder eines zusammengesetzten Elements mit keinem der Namen seiner Unterelemente übereinstimmen.
In diesem Beispiel wird nach zwei Adresskomponenten gesucht: Stadt (Zeichenkette City) und U-Bahn-Station (Zeichenkette Station). Die U-Bahn-Station wird nur angegeben, wenn die Stadt Moskau ist. Um das Matching des FlexiLayout zu beschleunigen, geben wir für das Element City eine Eigenschaft fromMoscow an. Diese Eigenschaft isttrue, wenn das Element City erkannt wird und den WertMoscowhat, undfalsein allen anderen Fällen.Code für das Element City:Externe Felderlogic fromMoscow;Erweiterte Beziehungen nach der Sucheif( not IsNull and Value.Find( “Moscow” ) >= 0 ) then fromMoscow = true; else fromMoscow = false;Anschließend verwenden wir diese Eigenschaft, um nach der U-Bahn-Station zu suchen. Um den Matching-Prozess zu beschleunigen, suchen wir nur dann nach der Station, wenn Moskau als Element City erkannt wurde.Code für das Element Station:Erweiterte Beziehungen vor der Suche if not City.fromMoscow then dontfind;
Aufgrund der Felder werden Elemente desselben Typs nicht als identisch behandelt. Daher sind Konstruktionen des folgenden Typs verboten:
Let e = SearchElements.StaticText1; e = SearchElements.StaticText2;// Element desselben Typs