4D Write Pro Dokumente können Tabellen enthalten. Sie werden per Programmierung erstellt und definiert. Ihr Inhalt kann jedoch vom Benutzer geändert werden. Folgende 4D Write Pro Tabellenattribute sind editierbar: Zeilenhöhe, Ausrichtung, Rahmen, Textstil, Farbe oder Ränder.
Zelleninhalt können Sie per Programmierung mit der Funktion WP Table append row hinzufügen.
Ist eine Tabelle angelegt, können Benutzer den Zelleninhalt direkt ändern. Sie können in Zellen klicken, Text oder Bilder genauso wie in regulären Absätzen auswählen, bearbeiten, kopieren/einsetzen oder löschen. Mit der Tabulatortaste können sie durch Zellen navigieren (mit Shift+Tab in der Gegenrichtung).
Mit der Zeilenschaltung in einer Zelle erstellen Sie einen neuen Absatz in der Zelle.
Beachten Sie, dass die Zellenbreite fest ist: Ändert ein Benutzer Text oder setzt ein Bild ein, wird die Zeilenhöhe bei Bedarf automatisch erweitert und der Text automatisch umgebrochen:
Benutzer können auch Spalten, Zeilen oder Zellen auswählen und verfügbare Attribute, wie Textstil, Farben, Ausrichtung, etc. über die eingebauten PopUp-Menüs oder eine angepasste Oberfläche anwenden. 4D Write Pro bietet verschiedene Funktionen zum Auswählen von Tabellenausschnitten:
(*) Spalten haben keine Entsprechung in html. In 4D Write Pro ist ein Spaltenausschnitt dasselbe wie ein Zellenausschnitt, d.h. Spalten haben dieselbe Priorität wie Zellen.
Haben Sie einen Ausschnitt gewählt, können Sie mit dem Befehl WP SET ATTRIBUTES passende Attribute setzen. Innerhalb von Zellen werden Attribute je nach Inhalt auf Absätze, Zeichen oder Bilder angewandt. Sie können z.B. die Höhe, Schriftgröße, Ränder, etc. von Tabellen oder Tabellenzellen setzen. Weitere Informationen dazu finden Sie im Abschnitt 4D Write Pro Attribute).
Werden verschiedene Attribute auf konkurrierende Elemente einer Tabelle angewandt, gilt für das Rendern folgende Reihenfolge:
Zuerst wird die Tabelle gerendert
Dann werden Zeilen gerendert (überschreibt Tabellenattribute)
Dann werden Zellen/Spalten gerendert (überschreibt Zeilenattribute)
Die Breite von Spalten einer Tabelle lässt sich verändern. Dazu muss die Eigenschaft Eingebbar für 4D Write Pro Dokumente aktiviert sein. Sie können den Spaltentrenner nach links oder nach rechts ziehen. Der Cursor erscheint in Form von Pfeilen, um anzuzeigen, dass er horizontal verschiebbar ist. Im Lineal erscheint ein vertikaler Strich:
Beim Anpassen von Spalten wird ein Formularereignis On After Edit generiert.
Um eine Spalte anzupassen, klicken Sie auf den Spaltentrenner und ziehen ihn nach rechts oder links. Die Mindestbreite einer Spalte ist 8 pt. Erreicht die rechts anschließende Spalte die Mindestbreite, werden alle rechts davon liegenden Spalten angepasst. Erreicht die erste Spalte oder eine links anschließende Spalte die Mindestgröße, ist in dieser Richtung keine weitere Anpassung möglich.
Ziehen Sie den Spaltentrenner mit gedrückter Shift-Taste, bleiben rechts anschließende Spalten unverändert.
Bei Anzeigen im Seiten- oder Draft-Modus (oder beim Drucken eines Dokuments) lassen sich 4D Write Pro Tabellen splitten:
automatisch, wenn die Höhe der Tabelle größer ist als die verfügbare Höhe der Seite/Spalte
abhängig von den Seiten/Spaltenumbrüchen, die per Programmierung oder durch den Benutzer gesetzt werden
Tabellen können zwischen Zeilen aufgeteilt werden, und auch Zeilen können aufgeteilt werden. Die Paginierung der Tabelle wird dynamisch aktualisiert, wenn die Ausrichtung oder die Spaltennummer geändert wird.
Hinweis:
Sie können automatische Umbrüche in Tabellen deaktivieren, indem Sie die Attribute wk page break inside row / wk page break inside table (siehe 4D Write Pro Attribute) oder die Standardaktionen table/avoidPageBreakInside und row/avoidPageBreakInside (siehe 4D Write Pro Standardaktionen verwenden) verwenden.
Wenn eine Tabellenzeile und ein Absatz unterschiedliche Optionen für den Seitenumbruch haben, haben die Optionen, die auf die Zeile angewendet werden, Vorrang. Wenn zum Beispiel ein Absatz einen Seitenumbruch zulässt, seine übergeordnete Zeile aber nicht, wird die Zeile nicht geteilt.
Umbrüche in Tabellen sind durch den Benutzer oder per Programmierung steuerbar. Es gibt folgende Aktionen:
Option Spaltenumbruch einfügen im standardmäßigen Kontextmenü
Ein Seiten- oder Spaltenumbruch über eine Standardaktion oder das Kontextmenü wird vor dem ausgewählten Inhalt eingefügt: Die erste Zeile der Auswahl wird an den Beginn der nächsten Seite oder Spalte gesetzt. Zum Beispiel:
===>
Hinweis:
Nur Tabellen im Hauptteil eines Dokuments können geteilt werden. Umbrüche, die in Tabellen in Kopf- und Fußteilen eingefügt werden, werden ignoriert.
Tabellen können nicht in verschiedenen Abschnitten umgebrochen werden. Wenn Sie einen Umbruch in einer Tabelle einfügen, wird die gesamte Tabelle in den neuen Abschnitt verschoben.
Umbrüche innerhalb von Zeilen sind nicht zulässig, wenn Carry-over rows aktiviert ist.
Mit 4D Write Pro können Sie bis zu fünf Kopfteile pro Tabelle definieren. Ausgewählte Kopfteile werden in jeder Spalte oder auf jeder Seite wiederholt, wenn ein Umbruch oder ein Seitenumbruch erfolgt.
Kopfteile von Tabellen sind die erste(n) Zeile(n) der Tabelle. Um Kopfteile zu definieren, können Sie:
Wenn Sie mehr als fünf Zeilen als Kopfteil festlegen (oder wenn dies aus dem Einfügen von Zeilen in einen bestehenden Kopfteil resultiert), verwendet 4D Write Pro nur die ersten fünf Zeilen als Kopfteil. Wenn Sie die im Kopfteil definierte(n) Zeile(n) entfernen, verringert sich die Anzahl der Kopfteilzeilen.
Sie können ein Formel-Objekt als Datenquelle für eine Tabelle zuweisen und mit Ausdrücke mit This aus der Tabelle heraus auf den/die resultierenden Wert(e) zugreifen (siehe unten). Die Formel der Datenquelle wird von 4D Write Pro verarbeitet, wenn Formeln berechnet werden (z.B. wenn das Dokument geöffnet wird, wenn der Befehl WP COMPUTE FORMULAS aufgerufen wird usw.). Diese Funktion nutzt die Vorteile von Datenkontexten (siehe WP SET DATA CONTEXT).
Um einer Tabelle eine Datenquelle zuzuweisen, verwenden Sie den Befehl WP SET ATTRIBUTES mit dem Befehl wk datasource und einem 4D-Formelobjekt als Wert. Zum Beispiel, um eine Tabelle mit einer Zeile für jede in Frankreich lebende Person zu füllen:
$formula:=Formula(ds.people.query("country = :1";"France")) WP SET ATTRIBUTES($table;wk datasource;$formula)
Wenn das Formel-Objekt der Datenquelle eine (nicht leere) Collection oder Entity-Auswahl zurückgibt, wird die Tabelle bei der Berechnung der Formel automatisch gefüllt: Sie enthält mindestens so viele Zeilen, wie es Elemente in der Collection oder Entities in der Entity-Auswahl gibt. Die erste Tabellenzeile, die so genannte Wiederholungszeile, wird als Template-Zeile verwendet (mit Ausnahme der Kopfteil-Zeile(n) und der möglichen Umbruch-Zeile(n)).
In die Wiederholungszeile (und die Umbruchzeile(n)) können Sie Ausdrücke einfügen, die spezielle Schlüsselwörter verwenden, wie z.B. Dieser.Artikel.Nachname. Die Ausdrücke werden bei der Verarbeitung durch Daten aus der Collection oder Entity-Selection ersetzt. Die wiederholte Zeile wird dupliziert, so dass die Anzahl der Elementzeilen der Anzahl der Elemente in der Collection oder Entity-Selection entspricht, nachdem die Formeln berechnet wurden.
Wenn die Formel der Datenquelle keine Collection oder Entity-Auswahl zurückgibt oder wenn sie eine leere Collection/Entity-Auswahl zurückgibt, werden die Tabellenzeilen nicht automatisch erstellt und alle Zeilen werden als reguläre Zeilen behandelt.
Um eine Datenquelle aus einer Tabelle zu entfernen, verwenden Sie den Befehl WP RESET ATTRIBUTES. Er setzt den Wert des Attributs datasource auf null:
Die Formel der Datenquelle muss iterierbare Elemente zurückgeben
Wenn die Tabelle keine Kopfteile hat, ist die Template-Zeile die erste Zeile der Tabelle - andernfalls ist es die erste Zeile nach dem Kopfteil. Sie wird in der Regel mit Ausdrücken gefüllt, die This verwenden (z.B. This.item.value), die Zugriff auf verarbeitete Daten geben, wenn sich das Dokument im Modus Werte anzeigen befindet und die Zeile dupliziert ist.
Sort break rows
up to 5
-
Die Formel der Datenquelle muss iterierbare Elemente zurückgeben
Die Zeile(n), die vor oder nach der wiederholten Zeile erscheinen. Siehe Break rows
Bottom carry-over row
1
-
Die Formel der Datenquelle muss iterierbare Elemente zurückgeben
Die erste Zeile nach der Template-Zeile. Siehe Carry-over rows
Andere Zeilen
unbegrenzt
-
-
Standardzeilen (nicht dupliziert)
Beispiel (Modus Referenzen anzeigen):
Wenn die Formeln berechnet werden, wird die Template-Zeile bei Bedarf automatisch dupliziert, um allen Entities oder Collection-Elementen zu entsprechen, die von der Datenquellenformel zurückgegeben werden:
In jedem Fall gibt die folgende Anweisung die tatsächliche Anzahl der Zeilen zurück:
WP GET ATTRIBUTES($table;wk row count;$vcount) //24 für das obige Beispiel
Tabellen, die auf Datenquellen basieren, unterstützen Untere Übertragszeile , die automatisch am unteren Rand jeder Seite/Spalte angezeigt werden, wenn die Tabelle auf mehr als eine Seite/Spalte aufgeteilt ist. Eine Übertragszeile kann dank des Ausdrucks This.previousItems (siehe Ausdrücke mit This) zusätzliche Informationen anzeigen, die auf zuvor angezeigten/gedruckten Artikeln basieren. Mit dieser Funktion können Sie z.B. Zwischensummenzeilen hinzufügen.
Übertragszeile werden angezeigt:
wenn eine Datenquellentabelle nicht auf eine einzige Seite (oder Spalte) passt
am unteren Ende der Tabelle
auf der ersten Seite (oder ersten Spalte) und auf allen anderen Seiten außer der letzten Seite.
Wichtig: Übertragszeilen sind nur in Tabellen verfügbar, die mit einer Datenquellenformel gefüllt sind, die eine nicht leere Collection oder Entity-Selection zurückgibt, und im Modus Werte anzeigen. In allen anderen Fällen oder wenn die Datenquellenformel nicht berechnet wurde, wird eine Übertragszeile als normale Zeile angezeigt.
Um Carry-over Zeilen zu erstellen:
Fügen Sie in der Template-Tabelle eine Zeile direkt nach der Template-Zeile oder die Umbruchzeile(n) ein und fügen Sie darin alle erforderlichen Formeln ein, z.B. This.previousItems.
Aktivieren Sie die Funktion zum Übertragen von Zeilen für Ihr Dokument. Sie können: - die Standardaktion bottomCarryOverRow verwenden (siehe 4D Write Pro Standardaktionen verwenden), oder - den Befehl WP SET ATTRIBUTES mit dem Attribut Selector wk bottom carry over rowTabellen verwenden.
Hinweis: Umbrüche innerhalb von Zeilen sind nicht zulässig, wenn die Funktion zum Übertragen von Zeilen aktiviert ist (siehe Seiten/Spaltenumbruch in der Tabelle setzen). Entsprechende Optionen werden, falls gesetzt, ignoriert.
Tabellen, die auf Datenquellen basieren, unterstützen eine oder mehrere Sort Break Rows, die entweder vor oder nach der wiederholten Zeile angezeigt werden können. Sort Break Rows helfen Ihnen, Ihre bereits sortierten Datenquellenelemente in Ihrer Tabelle auf der Grundlage eines berechneten Formelwerts visuell in verschiedene Teile zu unterteilen.
Jedes Mal, wenn sich der Wert des Formulars ändert, wird eine neue Umbruchzeile eingefügt. Damit Tabellen korrekt dargestellt werden, muss die als Tabellendatenquelle verwendete Entity-Selection (oder Collection) entsprechend sortiert sein. Wenn beispielsweise Umbrüche nach Ländern und Städten gewünscht sind, muss die Datenquelle wie folgt sortiert werden: ds.people.all().orderBy("country asc, city asc")
Der Umbruchwert wird über das Attribut wk break formula definiert. Der Wert ist in der Regel eine Formel, die auf einer Artikeleigenschaft wie "Dieser.Artikel.Name" basiert. Andernfalls kann sich der berechnete Wert niemals ändern, was die Umbruchformel nutzlos macht. Das Attribut wk break formula wird ignoriert, wenn die Tabelle keine Datenquelle hat oder wenn die Zeile ein Kopfteil ist. Eine Umbruchzeile muss an die wiederholte Zeile (entweder vor oder nach) oder an eine andere Umbruchzeile angrenzen, andernfalls wird sie ignoriert.
WP SET ATTRIBUTES($row_2;wk break formula;Formula(This.item.country))
Dank des Ausdrucks This.breakItems können Sie diese Funktion beispielsweise nutzen, um den Gesamtdurchschnitt der wiederholten Zeilen innerhalb einer Umbruchzeile anzuzeigen. breakItems ist eine ausgewertete Teilmenge der Tabellendatenquelle, entweder eine Entity-Auswahl, wenn die Tabellendatenquelle eine Entity-Auswahl ist, oder eine Collection, wenn die Datenquelle eine Collection ist. Innerhalb einer Umbruchzeile können Sie also eingeben: This.breakItems.sum("Gehalt")
Zur Erstellung von Umbruchreihen:
Ordnen Sie die Datenquelle nach den Ebenen, die den Umbrüchen entsprechen, die Sie anzeigen möchten, z.B. ds.People.all().orderBy("continent asc, country asc, city asc")
Zeichnen Sie die Umbruchzeile(n) in das Template für die Tabelle. Wenn sich die Umbrüche nach der wiederholten Zeile befinden, müssen sie der entgegengesetzten Sortierreihenfolge der Datenquelle entsprechen, und wenn sie sich vor der wiederholten Zeile befinden, müssen sie der gleichen Sortierreihenfolge wie die Datenquelle entsprechen.
Setzen Sie das Attribut wk Umbruch Formel auf die ausgewählte(n) Zeile(n):
$row:=WP Table get rows($table;2;1) //wählen Sie die zweite Zeile als Umbruch WP SET ATTRIBUTES($row_2;wk break formula;Formula(This.item.country))
Wenn Sie das Schlüsselwort This in einer Formel innerhalb der Tabelle verwenden, haben Sie je nach Kontext Zugriff auf unterschiedliche Daten:
Kontext
Ausdruck
Typ
Rückgabewert
Irgendwo
This.table
Objekt
Aktuelle Tabelle
This.row
Objekt
Aktuelles Element der Tabellenzeile
This.rowIndex
Nummer
Index der aktuellen Zeile, beginnend mit 1
Wenn eine Datasource für die Tabelle definiert wurde
This.table.dataSource
Objekt(Formular)
Datasource als ein Formular
This.tableData
Collection oder Entity-Auswahl (normalerweise)
Ausgewertete table.dataSource
In jeder duplizierten Vorlagen-Zeile, gibt eine Tabellen-Datenquelle eine Collection oder eine Entity-Selection züruck
This.item.xxx
Jede
Auf jedes Element der Collection der Tabellendatenquelle oder der Entity-Auswahl abgebildet, z.B. This.item.firstName, wenn die zugehörige Entity das Attribut firstName hat
This.itemIndex
Nummer
Index des aktuellen Elements in der Collection oder Entity-Selection, beginnend mit 0
In jeder Zeile (außer Kopfteilen), wenn eine Tabellendatenquelle eine Collection oder eine Entity-Selection zurückgibt
This.previousItems
Collection oder Entity-Auswahl
Artikel, die auf den Seiten vor der unteren Übertragszeile (falls vorhanden) oder vor der Zeile des Ausdrucks angezeigt werden, einschließlich der Seite, auf der die Zeile mit dem Ausdruck angezeigt wird. Dieser Ausdruck gibt dieselbe Art von Wert zurück wie der Ausdruck This.tableData.
In einer Umbruch-Zeile
This.breakItems
Collection oder Entity-Auswahl
Elemente der Collection oder Entity-Selection, die in den Zeilen dazwischen angezeigt werden:
die aktuelle Umbruchzeile und die vorherige Umbruchzeile der gleichen Ebene (oder den Anfang der Tabelle), wenn die Umbruchzeile(n) nach der wiederholten Zeile angezeigt werden.
den aktuellen Umbruch und die nächste Umbruchzeile der gleichen Ebene (oder das Ende der Tabelle), wenn die Umbruchzeile(n) vor der wiederholten Zeile angezeigt werden.
In allen anderen Kontexten geben diese Ausdrücke undefiniert zurück.
Hinweis: Weitere Informationen zum Einfügen von Formularen finden Sie unter WP INSERT FORMULA.
Wenn eine Tabelle aus einer Datenquelle gefüllt wird, werden beim Berechnen der Referenzen automatisch Zeilen erstellt. Sie können Zeilen einfügen oder löschen, Zellinhalte bearbeiten, den Stil ändern usw.:
Beachten Sie jedoch, dass bei einer Neuberechnung der Tabellendatenquelle alle Änderungen an den berechneten Zeilen (außer der ersten Zeile) verloren gehen. Da es sich bei der ersten Zeile um die wiederholte Zeile handelt, wird jede Änderung an dieser Zeile auf alle Zeilen übertragen, wenn die Datenquelle der Tabelle neu berechnet wird. Dasselbe gilt für Umbruchzeilen. Alle Änderungen, die an berechneten Umbruchzeilen vorgenommen werden, gehen verloren, mit Ausnahme der Template Umbruchzeilen (die sich entweder am Ende oder am Anfang der Tabelle befinden können).
Zum Beispiel:
Nach der Neuberechnung der Ausdrücke:
Wenn der Cursor in eine Zelle einer mit einer Datenquelle gefüllten Tabelle gesetzt wird, erscheint auf der linken Seite ein Warnsymbol und ein Hinweis, der Informationen anzeigt:
Wenn Formeln als Referenzen angezeigt werden oder wenn Sie das Dokument speichern, wird nur die erste Zeile als Template angezeigt/gespeichert (wenn Formeln nicht eingefroren sind).
Wenn die Formeln eingefroren sind, wird die Tabelle zu einer Standardtabelle und die Datenquelle der Tabelle wird zurückgesetzt.
Hinweis: Die Standardaktion freezeExpressions berechnet keine Formeln neu.