Skip to main content
ユーザー定義プロパティは、要素に属する型付き変数です。これらのプロパティは、Advanced タブの External fields セクションで定義します。 次の形式を使用します:
ここで、Name は変数名、Type はその型です。 field の作成時には、自動的に初期化されます。たとえば、数値 field は 0、矩形と Region は空の値で初期化されます。

field のスコープとアクセス

field は、それが属する要素内と、検索ツリー内でそれより下位にある任意の要素で使用できます。field の値を変更できるのは、それが属する要素内だけです。ほかの要素では、読み取り専用で参照できます。 要素の field にアクセスするには、ElementName.FieldName の形式で field の完全名を使用します (例: SearchElements.StaticText1.x) 。要素内では、その field には x という名前でアクセスできます。複合要素の場合は、そのサブ要素も (ネストのレベルに関係なく) 短縮名でその field にアクセスできます。 要素の仮説を表す複雑な式の値は、計算してプロパティに書き込むことができます。その後、この値には検索ツリー内でそれより下位にある任意の要素から、必要になるたびに再計算することなくアクセスできます。これにより、FlexiLayout のマッチングに必要な時間が短縮され、大きな式を各要素にコピーする必要がなくなり、コードの可読性も向上します。

field の命名に関する制限

  • 1 つの要素内では、field 名は一意である必要があります。
  • 複合要素内の要素名は、そのサブ要素 (ネストされたすべてのレベルを含む) 内のいずれの field 名とも一致してはなりません。
  • 複合要素の field 名は、その配下のいずれのサブ要素名とも一致してはなりません。

例: ユーザー定義プロパティでマッチングを高速化する

この例では、2 つの住所コンポーネント、つまり都市 (character string City) と地下鉄駅 (character string Station) を検索します。地下鉄駅を指定するのは、都市が Moscow の場合のみです。FlexiLayout のマッチングを高速化するため、この例では City 要素に fromMoscow プロパティを定義しています。このプロパティは、City 要素が検出され、その値が “Moscow” の場合は true、それ以外の場合は false になります。 External fields セクションの City 要素のコード:
Advanced post-search relations セクション:
その後、Station 要素はこのプロパティを使って、Moscow が City 要素として検出された場合にのみステーションを検索します。 Station 要素のコードは、Advanced pre-search relations セクションにあります。
field があるため、同じ型の要素でも同一のものとしては扱われません。したがって、次のような記述は禁止されています。