Zum Hauptinhalt springen
Erweiterte Beziehungen für die Vorsuche legen Suchbedingungen und Elementeigenschaften in einer speziellen FlexiLayout-Sprache fest. Den Bereich, in dem Sie Ihren Code eingeben können, finden Sie auf der Registerkarte Advanced im Dialogfeld „Eigenschaften“. Der Code, den Sie im Bereich „Erweiterte Beziehungen für die Vorsuche“ eingeben, wird unmittelbar vor der Suche nach dem Bildobjekt ausgeführt, das dem FlexiLayout-Element entspricht. Zunächst verwendet das Programm die Eigenschaften, die Sie auf den Registerkarten links von der Registerkarte Advanced angegeben haben, und führt dann den Code aus. Wenn ein bestimmter Parameter sowohl auf einer Registerkarte links von der Registerkarte Advanced als auch im Code auf der Registerkarte Advanced angegeben ist, hat der Code Vorrang. Wenn ein Parameter auf einer Registerkarte links von der Registerkarte Advanced angegeben ist, aber nicht im Code, wird der Parameterwert der entsprechenden Registerkarte verwendet.
Die Funktion SearchText (Element vom Typ „Static Text“) ist eine Ausnahme. Diese Funktion wirdzusätzlicheSuchwörter zu den Wörtern hinzufügen, die bereits auf der Registerkarte „Static Text“ angegeben sind.
Wenn Sie auf einer der Registerkarten links von der Registerkarte Advanced Eigenschaften angegeben haben, können Sie diese in Code umwandeln, indem Sie auf der Registerkarte Advanced auf die Schaltfläche Code klicken. Der generierte Code kann anschließend kopiert oder bearbeitet werden.
Die zusätzlichen Bedingungen, die im Bereich „Erweiterte Beziehungen für die Vorsuche“ eingegeben werden, dürfen sich nur auf Elemente beziehen, die sich im FlexiLayout-Baum oberhalb des aktuellen Elements befinden. Die einzige Ausnahme sind die Subelemente desselben Elements einer wiederholbaren Gruppe; sie dürfen sich auf vorherige Instanzen von Subelementen beziehen, die sich in derselben Gruppe unterhalb des angegebenen Elements befinden.

Beispiele

Manchmal müssen Sie ein und demselben Parameter unterschiedliche Werte zuweisen. Dies kann mit dem Operator „if… then“ erfolgen:if Element1.IsNull then { MaxErrors: 3, 0.25; } else { MaxErrors: 5, 0.5; }
Der Suchbereich kann mit jedem Typ angegeben werden, der einen Bildbereich definiert: Rect, RectArray, Region. Er kann auch mit einem Ausdruck angegeben werden, der einen dieser Typen zurückgibt. Das Ergebnis der Auswertung des Ausdrucks wird als Argument an die Funktion RestrictSearchArea() übergeben:a.RestrictSearchArea( Rect(Rect( Page( 1 ).RectGlobal.Left, Page( 1 ).RectGlobal.Top+20*mm, Element1.Left.Start, Element2.Ycenter.Start ) );b.let rect1 = Element1.Rect; let rect2 = Element2.Rect; RestrictSearchArea( rect1 or rect2 );
Bei manchen Dokumenten schließt das Vorhandensein eines Objekts im Bild automatisch ein anderes Objekt aus. In anderen Fällen möchten Sie vielleicht nur dann nach einem bestimmten Objekt suchen, wenn bestimmte Bedingungen erfüllt sind. Sie können das Programm anweisen, nicht nach einem bestimmten Objekt zu suchen, indem Sie den Befehl DontFind() verwenden. Sobald der Befehl ausgeführt wird, formuliert das Programm eine Nullhypothese für das entsprechende Objekt:if Element1.IsNull() then DontFind()
Manchmal erfüllen mehrere Bildobjekte die in einem Element angegebenen Bedingungen. Das bedeutet, dass das Programm mehrere Hypothesen formuliert. Wenn Sie aus dieser Menge nur die Hypothese auswählen möchten, die einem anderen Objekt oder Punkt im Bild am nächsten liegt, können Sie die Funktionen Nearest, NearestX und NearestY verwenden:
  • Nearest( [Name des Elements] ) - legt den Namen des nächstgelegenen Elements fest.
  • Nearest( x1, y1 ) - legt die Koordinaten des nächstgelegenen Punkts fest.
  • NearestX( x1 ) - legt die X-Koordinate der nächstgelegenen vertikalen Linie fest.
  • NearestY( y1 ) - legt die Y-Koordinate der nächstgelegenen horizontalen Linie fest.
Hinweis. Sie können nicht mehrere Nearest-Funktionen gleichzeitig verwenden.
Das Programm behandelt ein mehrseitiges Dokument als eine einzelne Einheit und kann nach einem Element in einem mehrseitigen Dokument suchen, ohne auf eine bestimmte Seite Bezug zu nehmen.Zum Beispiel:a. So geben Sie an, dass ein Element in der unteren Hälfte einer beliebigen Seite gefunden werden kann:Below: PageRect.Top + PageRect.Height / 2;(siehe die Beschreibung der Funktion PageRect für Details)b. So geben Sie an, dass sich ein Element auf der letzten Seite eines Dokuments befindet (Sie können diesen Code nur im Hauptteil des FlexiLayout nach den Elementen Header und Footer schreiben, falls vorhanden):RestrictSearchArea( Page( PagesCount ).RectGlobal );c. So geben Sie an, dass sich ein Element auf der Seite befindet, auf der ein Element mit dem Namen SearchElements.OtherElement beginnt:if SearchElements.OtherElement.IsFound then RestrictSearchArea( WholePage, SearchElements.OtherElement.Pages.Start );d. So geben Sie an, dass sich ein Element auf jeder Seite unterhalb der Instanzen der Hypothesen für eine wiederholbare Gruppe mit dem Namen SearchElements.RepeatableGroup befinden kann:Below: SearchElements.RepeatableGroup.AllInstances.PageAreaGlobal( PageNumber ).Region.Bottom;e. So geben Sie an, dass sich ein Element auf jeder Seite unterhalb des Tabellenkörpers jeder Untertabelle einer Tabelle mit dem Namen SearchElements.Table befinden kann:Below: SearchElements.Table.AllSubTables.Body.PageAreaGlobal( PageNumber ).Bottom;

Siehe auch:

FlexiLayout-Sprache