メインコンテンツへスキップ
繰り返しグループ要素の Properties ダイアログには、追加の検索制約を指定できる 2 つのタブがあります。Advanced タブでは、グループの個々のインスタンスに対する追加の検索制約を指定できます。Advanced for All Instances タブでは、グループのすべてのインスタンスに対する追加の検索制約を指定できます。
External fields for All Instances セクションでは、Group 要素で使用できるすべてのメソッドを利用できます。たとえば、すでに検出されたインスタンスとのリレーションを指定できます。 // 後続の各インスタンスは、前のインスタンスの下に配置されます if SearchElements.RepeatingGroup.HasInstances then { Below: SearchElements.RepeatingGroup.LastFound, 0 * dot; } Advanced pre-search relations for all instances セクションでは、次のメソッドを使用できます。
  • MinRepetitions
  • MaxRepetitions
  • PaginalMode
  • MinRepetitionsOnPage
  • MaxRepetitionsOnPage
Post-search relations セクションでは、特定のインスタンスの推定値を指定できます。Post-search relations for all instances セクションでは、検出されたすべてのインスタンスの推定値を指定できます。 Pre-search relations セクションでは、Group 要素で使用できるすべてのメソッドを使用できます。 Post-search relations のコード例: // 繰り返しグループ内のサブ要素である StaticText1 と StaticText2 の仮説を確認します。最後に検出されたインスタンスが使用されます。 if StaticText1.Width() < 200dt and StaticText2.Width() < 200dt then Quality: 0.98; Post-search relations for all instances のコード例: if InstancesCount() < 5 and LastFound.Pages.End <= 2 then Quality: 0.98;

要素インスタンスへのアクセス

要素インスタンスにアクセスするには、次の定義済みの名前を使用します。
  • LastFound - 最後に検出されたインスタンス
  • CurrentInstance - 繰り返し要素内を検索しているときの現在のインスタンス
  • Instance ( n ) – n 番目のインスタンス
  • AllInstances - すべてのインスタンス
繰り返しグループ要素のサブ要素には、それらが要素ツリーの下位にある場合でもアクセスできます。要素インスタンスを扱うには、FlexiLayout language の次のメソッドも使用できます。
  • HasInstances - インスタンスが1つでも見つかっているかどうかを確認します
  • InstancesCount - 検出されたインスタンスの数を返します

要素インスタンスの検索を停止する条件

インスタンスの検索は、プログラムが (指定された分岐で) グループの空の仮説 (つまり、空のRegionを持つグループ) に遭遇した場合、またはプログラムがそれ以上仮説を生成できない場合 (検索領域内にこれ以上仮説がない場合) に停止します。Paginal mode では、このルールは1ページ内の検索にのみ適用されます。プログラムは1ページの検索を終えると、次のページに進みます。MinRepetitionsOnPage、MaxRepetitionsOnPage、MinRepetitions、MaxRepetitions も、仮説の生成プロセスに影響します。 標準の仮説生成プロセスを変更するには、次のメソッドを使用できます。
  1. 最後に検出されたインスタンスを最後のインスタンスにしなければならない場合: if SearchElements.RepeatingGroup.HasInstances and then DontFind; この条件は Advanced pre-search relations に入力する必要があります。
  2. 最後に検出されたインスタンス (制約の作成対象であるこのインスタンス) が「不適切」であり、前のインスタンスを最後のインスタンスにしなければならない場合 (ほかに「適切なインスタンス」が検出されていない場合) : If then Quality: 0; この条件は Advanced post-search relations に入力する必要があります。

関連項目:

FlexiLayout language