Hypothesenregionen und -grenzen
Eine gefundene Hypothese für ein einfaches Element ist immer eine zusammenhängende Region. Hypothesen für die Elemente White Gap, Separator und Barcode sind immer einzelne Rechtecke. Wenn eine Hypothese auf Grundlage einer Menge erkannter Bildobjekte gebildet wird, z. B. eine Hypothese für ein Paragraph-Element, wird die Region der Hypothese auf Grundlage des Arrays von Rechtecken der erkannten Objekte erstellt. Die auf diese Weise erstellte Region kann mit der MethodeRegion der Hypothese abgerufen werden.
Wenn die Region der Hypothese im Bild angezeigt wird oder wenn auf Grundlage der Hypothese ein Block erstellt wird, folgen die Grenzen der Region nicht exakt den Grenzen der einzelnen Rechtecke. Stattdessen werden die Grenzen des Suchbereichs zur besseren Visualisierung geglättet. Eine auf diese Weise erstellte Region kann mit der Methode SimplifiedRegion der Hypothese abgerufen werden.
Die Methoden Region und SimplifiedRegion können entweder im Feld Erweiterte Vor-Suchbeziehungen auf der Registerkarte Erweitert (beim Beschreiben des Suchbereichs des Elements) oder im Feld Regionsausdruck beim Beschreiben der Eigenschaften des Blocks und bei Verwendung der bereits gefundenen Elemente verwendet werden.
Wenn eine Hypothese nicht gefunden wurde, entspricht sie dem Fuzzy-Rectangle ihres Suchbereichs. Wenn eine nicht gefundene Hypothese im Bild angezeigt wird, zeichnet FlexiLayout Studio das äußere Rechteck des Fuzzy-Rectangles.
Die Grenzen Left, top, Right und Bottom jeder Hypothese sind Bereiche. Bei jeder gefundenen Hypothese reduziert sich der Bereich auf einen Punkt, d. h. Left.Start = Left.End, top.Start = top.End usw. Bei einer nicht gefundenen Hypothese entsprechen die Bereiche der Grenzen den Bereichen ihres Suchbereichs.
Zugriff auf Hypothesen im FlexiLayout-Code
Der Zugriff auf generierte Hypothesen und ihre Eigenschaften im Code der entsprechenden Dialogfelder von Blöcken und Elementen bietet zusätzliche Tools zum Einrichten des FlexiLayout. Auf Elementhypothesen kann über die Namen der Elemente zugegriffen werden. Um im Feld Erweiterte Nach-Suchbeziehungen auf eine Hypothese für das aktuelle Element zuzugreifen, können Sie nur den Namen der Eigenschaft verwenden. Auf Hypothesen und ihre Eigenschaften wird im Nur-Lese-Modus zugegriffen. Auf Hypothesen für Elemente kann in den Feldern Erweiterte Vor-Suchbeziehungen und Erweiterte Nach-Suchbeziehungen auf der Registerkarte Erweitert im Dialogfeld Eigenschaften des Elements sowie im Feld Regionsausdruck im Dialogfeld Eigenschaften des Blocks zugegriffen werden. In Erweiterte Vor-Suchbeziehungen können Sie auf die generierten Hypothesen (und ihre Eigenschaften) für alle Elemente zugreifen, die sich im FlexiLayout-Baum oberhalb des aktuellen Elements befinden. In Erweiterte Nach-Suchbeziehungen können Sie auf die generierten Hypothesen für die Elemente zugreifen, die sich im FlexiLayout-Baum oberhalb des aktuellen Elements befinden, sowie auf die Hypothese für das aktuelle Element selbst. In Regionsausdruck können Sie auf die Hypothesen (und ihre Eigenschaften) für alle Elemente zugreifen.Eigenschaften von Hypothesen für alle Elementtypen
Die folgende Tabelle enthält die Eigenschaften von Hypothesen für alle Elementtypen.Beispiel: Vor dem Zugriff auf Eigenschaften prüfen, ob eine Nullhypothese vorliegt
Bevor Sie auf die Eigenschaften einer Hypothese für ein einfaches oder Group-Element zugreifen, stellen Sie sicher, dass die Hypothese, auf die zugegriffen werden soll, keine Nullhypothese ist (rufen Sie ihre EigenschaftIsNull auf). Der Zugriff auf eine Eigenschaft einer Nullhypothese (die einem nicht erkannten Element entspricht) führt zu einem Fehler.
Sehen Sie sich ein Beispiel an, das das Projekt aus Sample 1 verwendet, das auf der Programm-CD-ROM zu finden ist.
Angenommen, auf Ihrem Dokument befindet sich ein Bezeichner in Form eines Barcodes, und Sie möchten, dass Ihr FlexiLayout nur diejenigen Dokumente abgleicht, bei denen der Wert des Barcodes 1556897142240 ist.
Schreiben Sie im Abschnitt Erweiterte Nach-Suchbeziehungen des Elements, das die Eigenschaften und Suchbedingungen des Barcodes beschreibt (Element IdentityNumber in Sample 1), den folgenden Code:
Error in element “MainGroup.IdentityNumber”, Advanced relations section: Attempt to access undefined hypothesis MainGroup.IdentityNumber.
Der Grund für den Fehler ist folgender: FlexiLayout Studio findet eine Hypothese für das Barcode-Element. Anschließend vergleicht es den Wert des Barcodes mit dem im Code angegebenen Wert. Wenn die Werte unterschiedlich sind, setzt der Code Quality: 0; den Wert der Hypothese auf 0 zurück.
Dann wird für dieses Element eine Nullhypothese erzeugt, für die FlexiLayout Studio ebenfalls die Bedingung value != "1556897142240" prüft. Da der Zugriff auf den Wert einer Nullhypothese nicht zulässig ist (sie verfügt nicht über diese Eigenschaft), gibt FlexiLayout Studio die Fehlermeldung “…undefined hypothesis…” aus.
Passen Sie den Code daher wie folgt an:
if not IsNull nicht ausgeführt wird.
Daher bleibt die Quality der endgültigen (Null-)Hypothese unverändert und entspricht dem in den Eigenschaften des Elements angegebenen Wert (0,97, wenn der Standardwert beibehalten wurde), und FlexiLayout Studio setzt den Abgleich des FlexiLayouts auch ohne das betreffende Element fort.
Wenn Sie dem Code else {Quality: 0;} hinzufügen, wird die Anweisung für alle Hypothesen (einschließlich der Nullhypothese) ausgeführt, und der Abgleich des FlexiLayouts wird beendet, weil bei diesem Element auch die gesamte Kette von Hypothesen auf 0 zurückgesetzt wird.
Vergleich der Methoden Region() und SimplifiedRegion()
Die MethodenRegion Region() und Region SimplifiedRegion() geben beide die Region eines Elements zurück, aber die Methode Region Region() gibt die exakte Region zurück:

Region SimplifiedRegion() gibt das Rectangle zurück, das anhand der Koordinaten der Begrenzungen erstellt wurde:

