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.
Hinweis: Da 4D Write Pro Tabellen durch Programmierung gefüllt werden können, können sie eine große Anzahl von Spalten und Zeilen enthalten. Denken Sie daran, dass sehr große Tabellen die Performance beeinträchtigen, insbesondere wenn sie auf dem Bildschirm angezeigt werden. Weitere Informationen finden Sie auch in diesem Blogbeitrag.
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.
Mit 4D Write Pro können Sie Zellen in einer Tabelle aufspalten und zusammenführen. Beim Zusammenführen von Zellen werden zwei oder mehr benachbarte Tabellenzellen, die sich in derselben Zeile oder Spalte befinden, zu einer einzigen Zelle zusammengefasst. Beim Aufspaltung von Zellen werden bereits zusammengeführte Zellen in mehrere benachbarte Zellen in derselben Zeile oder Spalte aufgeteilt. Zellen können mit dem Befehl WP TABLE MERGE CELLS oder der Standardaktion Zelle/Zusammenführen zusammengeführt und mit dem Befehl WP TABLE SPLIT CELLS oder der Standardaktion Zelle/Splitten aufgespalten werden.
Die Zellen der Tabelle können zusammengeführt werden:
Beispiel für die Zusammenführung von Zellen unter Verwendung der Sprache:
Bestimmen Sie einen Range von Zellen, die in Ihrer Tabelle zusammengeführt werden sollen. Die Zellen müssen entweder horizontal oder vertikal nebeneinander liegen oder beides.
Vorhandene Daten aus den ursprünglichen Zellen werden in der resultierenden zusammengeführten Zelle verkettet.
Bevor
nach
Beispiel für die Aufspaltung von Zellen mit Hilfe der Sprache:
Bestimmen Sie einen Bereich von Zellen, die in Ihrer Tabelle aufgesplaten werden sollen. Der ausgewählte Bereich muss einige bereits zusammengeführte Zellen enthalten.
Die Daten aus der bereits zusammengeführten Zelle werden alle in der ersten resultierenden Zelle (oben links) nach der Aufteilung behalten, die anderen resultierenden Zellen aus der Aufteilung bleiben leer.
Bevor
nach
Wichtig:
Zellen, die zu einer speziellen Zeile gehören (Datenzeile, Umbruchzeile oder untere Übertragszeile), können nicht vertikal zusammengeführt werden.
Zellen, die zu Kopfzeilen gehören, können nur dann vertikal zusammengeführt werden, wenn sie alle zu anderen Kopfteilen gehören (sie können nicht mit Kopfteilen zusammengeführt werden, die nicht auf die Kopfteile folgen).
Designating merged cells:
Eine zusammengeführte Zelle kann wie eine einzelne Zelle bearbeitet werden (Hintergrundfarbe, Rahmenstil, Absatzstile...), indem Sie die 4D Write Pro Oberfläche, die Standardaktionen oder den Befehl WP SET ATTRIBUTES verwenden.
Alle vorhandenen Tabellenbefehle sind auf Ranges oder Elemente anwendbar, die zusammengefasste Zellen enthalten. In einer Tabelle, die verschmolzene Zellen enthält, bleiben die Indizes der Zellen so, als ob keine Zelle verschmolzen worden wäre.
Beispiel :
$cell1:=WP Table get cells($table;1;1;1;1) $cell4:=WP Table get cells($table;4;1;1;1) WP SET ATTRIBUTES($cell1;wk background color;"yellow") WP SET ATTRIBUTES($cell4;wk background color;"pink")
bevor
nach
in diesem Beispiel können Sie auch $cell2 oder $cell3 anstelle von $cell1 übergeben, wie zum Beispiel:
$cell2:=WP Table get cells($table;2;1;1;1)
$cell3:=WP Table get cells($table;3;1;1;1)
und es führt zum gleichen Ergebnis wie die Verwendung von $cell1, da $cell1, $cell2 und $cell3 nach der Zusammenführung alle auf dieselbe Zelle verweisen und jede auf $cell1, $cell2 oder $cell3 angewendete Änderung auch auf die neue zusammengeführte Zelle angewendet wird.
Wenn jedoch eine x-fache Anzahl voller Zeilen oder voller Spalten zusammengeführt wird, werden die Indizes der folgenden Zeilen oder Spalten um x verringert.
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 Datenzeile, wird als Template-Zeile verwendet (mit Ausnahme der Kopfteil-Zeile(n) und der möglichen Umbruch-Zeile(n)).
In die Datenzeile (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 Datenzeile 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. Sie können eine Platzhalterzeile definieren, die im Falle einer leeren Datenquelle angezeigt wird.
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 Datenzeile 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 Datenzeile erscheinen. Siehe Break rows
Bottom carry-over row
1
-
Die Formel der Datenquelle muss iterierbare Elemente zurückgeben
Die erste Zeile nach der Datenzeile oder der Umbruchzeile(n). Siehe Carry-over rows
Placeholder row
1
-
Die Datenquelle muss definiert sein
Platzhalterzeile anstelle der Datenzeile und der Umbruchzeilen (falls vorhanden) angezeigt werden soll, wenn die Datenquelle leer ist und das Attribut "Platzhalterzeile anzeigen" in der Tabelle über die Standardaktion emptyDatasource oder die Konstante wk empty datasource gesetzt ist. Die Platzhalterzeile wird unmittelbar vor den anderen Zeilen angezeigt.
Andere Zeilen
unbegrenzt
-
-
Standardzeilen (nicht dupliziert)
Beispiel (Modus Referenzen anzeigen):
Wenn die Formeln berechnet werden, wird die Datenzeile 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 Datenzeile 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 Datenzeile 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 Datenzeile (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 Datenzeile 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 Datenzeile befinden, müssen sie der entgegengesetzten Sortierreihenfolge der Datenquelle entsprechen, und wenn sie sich vor der Datenzeile 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 Datenzeile, 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 Datenzeile angezeigt werden.
den aktuellen Umbruch und die nächste Umbruchzeile der gleichen Ebene (oder das Ende der Tabelle), wenn die Umbruchzeile(n) vor der Datenzeile 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 Datenzeile 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.