Les relations avancées de pré-recherche permettent de définir des contraintes de recherche et des propriétés d’élément dans le langage FlexiLayout. Le volet dans lequel vous saisissez votre code se trouve dans l’onglet Advanced de la boîte de dialogue Properties.
Le code que vous saisissez dans le volet relations avancées de pré-recherche est exécuté immédiatement avant la recherche de l’objet image correspondant à l’élément FlexiLayout. Le programme utilise d’abord les propriétés que vous avez définies dans les onglets situés à gauche de l’onglet Advanced, puis exécute le code.
Si un paramètre donné est spécifié à la fois dans un onglet situé à gauche de l’onglet Advanced et dans le code de l’onglet Advanced, le code a priorité. Si un paramètre est spécifié dans un onglet situé à gauche de l’onglet Advanced mais n’est pas spécifié dans le code, la valeur définie dans l’onglet correspondant sera utilisée.
La fonction SearchText (élément Static Text) constitue une exception. Cette fonction va ajouter des mots de recherche à ceux déjà spécifiés dans l’onglet Static Text.
Si vous avez défini certaines propriétés dans l’un des onglets situés à gauche de l’onglet Advanced, vous pouvez les convertir en code en cliquant sur le bouton Code de l’onglet Advanced. Le code généré peut ensuite être copié ou modifié.
Les contraintes supplémentaires saisies dans le volet relations avancées de pré-recherche ne peuvent faire référence qu’à des éléments situés au-dessus de l’élément actif dans l’arborescence FlexiLayout. Les seules exceptions concernent les sous-éléments d’un même élément Repeating Group, qui peuvent faire référence à des instances précédentes de sous-éléments situés dans le même groupe, en dessous de l’élément donné.
Spécifier différentes valeurs pour un même paramètre
Il est parfois nécessaire d’attribuer différentes valeurs à un même paramètre. Pour ce faire, utilisez l’opérateur if... then :
Limiter la zone de recherche
La zone de recherche peut être définie à l’aide de n’importe lequel des types qui décrivent une zone de l’image : Rect, RectArray, Region. Elle peut également être définie à l’aide d’une expression qui renvoie l’un de ces types. Le résultat du calcul de l’expression est transmis comme argument à la fonction RestrictSearchArea() :
Vous pouvez également transmettre une expression combinant les régions de plusieurs éléments :
Annuler la recherche d’un objet
Pour certains documents, la présence d’un objet sur l’image exclut automatiquement la présence d’un autre objet. Dans d’autres cas, vous voudrez peut-être rechercher un objet particulier uniquement si certaines conditions sont remplies. Vous pouvez indiquer au programme de ne pas rechercher un objet spécifique à l’aide de la commande DontFind(). Une fois cette commande exécutée, le programme formule une hypothèse nulle pour l’objet correspondant :
Sélectionner une hypothèse
Il arrive que plusieurs objets d’image remplissent les conditions spécifiées dans un élément. Cela signifie que le programme formulera plusieurs hypothèses. Si vous devez sélectionner dans cet ensemble uniquement l’hypothèse la plus proche d’un autre objet ou d’un point de l’image, vous pouvez utiliser l’une des fonctions suivantes :
Vous ne pouvez pas utiliser plusieurs fonctions Nearest simultanément.
Recherche dans des documents multipage
Le programme traite un document multipage comme une seule entité et peut rechercher un élément d’un document multipage sans le rattacher à une page précise.
Pour indiquer qu’un élément peut être trouvé dans la moitié inférieure de n’importe quelle page :
Pour plus d’informations, consultez la description de la fonction PageRect.
Pour indiquer qu’un élément est situé sur la dernière page d’un document (vous ne pouvez écrire ce code que dans la partie principale du FlexiLayout, après les éléments Header et Footer, le cas échéant) :
Pour indiquer qu’un élément se trouve sur la page où débute l’élément nommé SearchElements.OtherElement :
Pour indiquer qu’un élément peut se trouver sur chaque page au-dessous des instances des hypothèses d’un groupe répétitif nommé SearchElements.RepeatableGroup :
Pour indiquer qu’un élément peut se trouver, sur chaque page, sous le corps de chaque sous-tableau d’un tableau nommé SearchElements.Table :