Was ist neu in 4D v17

Dieses Dokument ist eine Zusammenfassung aller Features, die in 4D v17 verfügbar sind. Sie wurden entweder mit den verschiedenen R-Versionen in v16 oder mit dem letzten Schritt von 4D v16 R6 zu 4D v17 eingeführt. Beachten Sie, dass jedem Feature ein Blog Post zugeordnet ist, das Sie durch konkrete Beispiele führt. Zum Öffnen des Blog Post klicken Sie einfach auf den Titel dieses Features.

Bereiche, die mit gekennzeichnet sind, beschreiben die neuen Features, die mit dem Release 4D v16 R6 und 4D v17 veröffentlicht wurden.

Dieses Dokument ist in sieben Abschnitte gegliedert:

ORDA 

4D v17 führt ein innovatives Konzept ein, um Ihre Datenbank mit objektorientierter Ausrichtung zu verwalten, genannt ORDA (Object Relational Data Access). Stellen Sie sich einen Weg vor, Ihre Datenbank objektorientiert zu nutzen, ohne sich um die physische Struktur zu kümmern. Stellen Sie sich vor, Sie können mehrere aktuelle Auswahlen gleichzeitig beibehalten oder rekursive Suchläufe mit einer einzigen Zeile Code ausführen. Mit ORDA ist all das jetzt Realität. In 4D v17 lässt sich Ihr Code in objektorientierter Form schreiben und Sie können ganz einfach durch Ihre gesamtes Datenmodell navigieren. Außer den Auswirkungen auf die Programmierung bietet ORDA aber auch erhebliche Erweiterungen für die Datendarstellung für den Benutzer, z.B. in Listboxen.

Hier sind die Features, die wir mit diesem Release ausliefern:

Update erstellen und Daten löschen

CRUD (Create, Read, Update and Delete) Operationen in Ihrer Datenbank laufen über eine Abstraktionsschicht, den Datastore. Das ist ein Objekt, das eine Schnittstelle zum Datenbankmodell und den Daten über Objekte bietet. Mit ORDA werden die Operationen ErstellenUpdaten und Löschen nicht über eine aktuelle Auswahl oder einen aktuellen Datensatz durchgeführt, sondern über Entities:

  • Erstellen: Wird durch Anlegen einer Instanz zu einer neuen Entity über die Methode new() und Sichern mit der Methode save() durchgeführt.
  • Updaten: Wird für eine Entity mit der gleichen Methode save() durchgeführt.
  • Löschen: Wird für eine Entity oder eine Entity-Selection mit der Methode drop() durchgeführt.

Dokumentation lesen

 

Suchen in der Datenbank

Der Datastore bietet über Objekte eine Oberfläche zum Datenbankmodell und den Daten. Sie arbeiten nicht mehr mit der aktuellen Auswahl für jede Tabelle und den aktuellen Datensatz, sondern mit den Objekten Entities. Sie können einfach mehrere verknüpfte Tabellen durchsuchen, rekursive Verknüpfungen auf die gleiche Tabelle verwalten und in einem einzelnen Suchlauf mehrere logische Operatoren verwenden. 4D v17 bietet verschiedene Wege für Suchläufe in Ihrer dataClass (z.B. Tabelle): Sie können die Suche als einzelnen String oder Suchkriterien und Werte getrennt voneinander einrichten, entweder über Platzhalter oder über eine dynamisch erstellte Collection.  Dokumentation lesen

 

Zwischen aktueller Auswahl und ORDA vor und zurück wechseln 

Sie können ORDA in Ihren vorhandenen Code integrieren. Die aktuelle Auswahl einer Tabelle lässt sich über eine Entity-Selection aktualisieren und aus der aktuellen Auswahl einer Tabelle lässt sich eine Entity-Selection erhalten. Dafür verwenden Sie die neu hinzugefügten Befehle: USE ENTITY SELECTION zum Aktualisieren der aktuellen Auswahl in der entsprechenden Tabelle und Create entity selection zum Erhalten der Entity-Selection, die mit der entsprechenden DataClass verbunden  ist. Dokumentation lesen

 

In Entities, Objekte und Collections konvertieren 

Sie können Entities und Entity-Selections von der Datenbank trennen, um separat damit zu arbeiten, und umgekehrt auch vorhandene Objekte und Collections in die Datenbank setzen. Mit der Methode toObject() exportieren Sie eine Entity in ein Objekt; mit der Methode toCollection() exportieren Sie eine Entity-Selection in eine Collection. Zum Importieren einer Entity via Objekt wählen Sie die Methode fromObject(), zum Importieren einer Entity-Selection via Collection wählen Sie die Methode fromCollection()Dokumentation lesen

 

Sperrverfahren

Optimistisches Sperren

Für das optimistische Sperrverfahren bietet ORDA eine Reihe von Methoden zum Verwalten von Fehlern, die beim Sichern der Entity in der Datenbank auftreten können. Das Verfahren ist ganz einfach: Wird die Entity mit der Methode reload() erneut aus der Datenbank geladen, erfahren Sie über die Methode touchedAttributes(), welche Eigenschaften seit dem letzten Laden oder Sichern verändert wurden und können dann über die Methode diff() beide Entities miteinander vergleichen.  Dokumentation lesen


Pessimistisches Sperren

ORDA ermöglicht aber auch das pessimistische Sperrverfahren. Hier wird die Entity über die Methode lock() gesperrt, so dass eine Referenz auf diese Entity in anderen Prozessen nicht gesichert werden kann, bis die Entity entsperrt ist. So müssen Sie nicht mehr vor dem Laden prüfen, ob eine Entity gesperrt ist, da die Methode save() beim Versuch, Änderungen zu sichern, einen detaillierten Statusbericht über die Ursachen des Sperrens zurückgibt.  Dokumentation lesen

 

Entities in der Entity-Selection verwalten 

ORDA bietet einfache Methoden, um Entity-Selections zu erstellen bzw. hinzuzufügen, und um innerhalb von Selections durch die Entities zu navigieren. Auf diese Weise können Sie mehrere Entity-Selections gleichzeitig verwalten und unabhängig voneinander darin navigieren. Mit der Methode newSelection() erstellen Sie die Entity-Selection, mit der Methode add() fügen Sie weitere Entities hinzu. Über die Methoden first() und last() der Entity-Selection erhalten Sie die erste und letzte Entity, über die Methoden previous() und next() erhalten Sie die vorige und nächste Entity.  Dokumentation lesen

 

Logische Operationen in Entity-Selections 

Analog zur klassischen Programmiersprache gibt es auch für Entity-Selections spezifische Methoden, um direkt die Schnittmenge, Gesamtmenge oder Differenz zwischen zwei Entity-Selections zu bestimmen.  Dokumentation lesen

 

Berechnungen in Entity-Selections 

Über Filter lassen sich die Daten in Entity-Selections auch kanalisieren und Berechnungen durchführen. So gibt z.B. die Methode sum() die Summe aller Werte eines bestimmten Attributs zurück. Weitere Berechnungen können Sie über die Methoden  average(), count(), min() und max() ausführen.  Dokumentation lesen

4D Programmiersprache

Hier sehen Sie die bedeutendsten Verbesserungen in der 4D Programmiersprache, die das Erstellen von Code um einiges leichter und intuitiver machen:

Objektnotation

Dieses Feature verändert drastisch, wie Sie Code schreiben und die Datenbank-Engine verwenden. Objektnotation macht Ihre Programmierung schneller und verständlicher. Sie können beispielsweise einfach schreiben $myobject.attribute.subattribute:=5 oder mit $person.children[2].firstname auf ein Attribut zugreifen. Sie können Objektnotation auch als Ausdruck verwenden, beispielsweise ein Formularobjekt als Textvariable verwenden und direkt das Objektattribut zuweisen, zum Beispiel [person]relatives.grandfather.grandfather.firstname. Sie müssen nicht länger OB Get rekursiv verwenden, um den Wert zu lesen und einer temporären Variablen zuzuweisen, nur um ihn anzuzeigen. Ein weiterer Vorteil ist die Verwendung undefinierter Eigenschaften und Werte, denn die 4D Sprache akzeptiert nun undefinierte Werte überall in einem Ausdruck. Und immer wenn Sie einer Variablen einen undefinierten Wert zuweisen, wird sie entsprechend ihrem Typ auf einen Standardwert gesetzt. Das Lesen der Eigenschaft eines nicht existierenden Objekts erzeugt weder einen Fehler, noch stoppt es die Ausführung von Code.   Dokumentation lesen 

 

Shared Objects und Collections 

Mit Shared Objects und shared Collections lassen sich Informationen zwischen preemptive Prozessen auf einfache und effiziente Weise teilen. Sie verhalten sich wie Standardobjekte und müssen nur beim Setzen einer Instanz über die beiden neuen Funktionen New shared object und New shared collection als “shared” deklariert werden. Dann lassen sie sich, wie jede andere Variable, direkt zum Lesen verwenden. Zum Schreiben oder Ändern müssen sie in die Struktur Use und End use eingebettet werden. Dokumentation lesen

 

Neue Struktur: For each/ End for each 

In der 4D Programmiersprache gibt es die neue Schleife For each / End for each, um fortschrittliche Datentypen wie Collections zu durchlaufen, ohne vorab zu wissen, wieviel Einträge zu einer Collection gehören. Diese Schleife lässt sich auch für Objekteigenschaften verwenden. Sie ist sehr hilfreich, wenn Sie generischen Code schreiben wollen und die Namen von Objekteigenschaften nicht im Voraus kennen.  Dokumentation lesen

 

Collections

Collection ist ein neuer Datentyp in der 4D Programmiersprache. Collections sind flexibel und können Ihre Entwicklungszeit beschleunigen. Auf den ersten Blick sieht eine Collection wie ein Array aus. Während jedoch ein Array eine optimierte Liste von Daten desselben Typs ist (Array vom Typ Lange Ganzzahl, Array Text, …), ist eine Collection eine Art Container, die eine Liste unterschiedlicher Typen speichert (eine Lange Ganzzahl, dann ein Text, als nächstes eine Zahl, dann ein Bild, ein Objekt und sogar eine andere Collection, etc.) und die den Zugriff mit Objektnotation erlaubt. Die Funktion New collection erstellt eine neue leere oder vorab gefüllte Collection. Und eine ganze Reihe neuer Methoden vereinfachen das Arbeiten mit Collection und Objektnotation. Sie können z.B. Elemente hinzufügen oder entfernen, die Collection sortieren, u.v.m. Es gibt bereits über 40 solcher Methoden, hier eine kleine Auswahl: pop(), push(), concat(), resize(), query(), slice(), …   Dokumentation lesen

 

Funktion Null

Mit der neuen Funktion Null können Sie prüfen, ob ein Objektattribut oder Element einer Collection einen unbekannten Wert  oder keinen Wert hat (Achten Sie auf den Unterschied zwischen dem Wert 0 und einem leeren String “” mit einem nicht gesetzten Wert). Sie können damit auch den Wert eines Attributs auf unbekannt setzen und Objektnotation verwenden. Dokumentation lesen 

 

Entwickeln mit Objekten

Unterstützung von Datum in Objekten

Datumsangaben lassen sich in einem Objekt auch als Datum und nicht nur als String setzen. Das macht die Verwendung von Datum innerhalb von Objekten einfacher und intuitiver. Die Konstante is date ist in OB SET und OB Get nicht mehr erforderlich, und Objektnotation lässt sich wie für andere typische Objekte anwenden. Sie müssen nur in den Datenbank-Eigenschaften auf der Seite Kompatibilität die Option “Verwende  Datumstyp statt ISO Datumsformat in Objekten” markieren und schon können Sie Datum auch innerhalb von Objekten verwenden. Dokumentation lesen

Unterstützung von Bildern in Objekten

Bilder lassen sich in einem Feld oder einer Variablen vom Typ Objekt speichern. Die Befehle OB Get und OB SET unterstützen den neuen Typ Is picture. Sie können ein Bild in einem Feld vom Typ Objekt speichern und mit Objektnotation arbeiten. Dokumentation lesen

JSON Objekt bestätigen

Es gibt eine neue Option, über die Sie beim Analysieren von JSON Strings Zeit beim Debuggen einsparen können. Der optionale Parameter * von JSON Parse liefert zusätzliche Angaben beim Debuggen (__symbols property) wie Pfad, Zeilenposition und -versatz jeder Eigenschaft und Untereigenschaft des Objekts. Denn, selbst wenn ein Objekt “well formed” ist, erfüllt es u.U. nicht die spezifischen Regeln oder Inhaltsnormen. Mit der neuen Funktion JSON Validate können Sie prüfen, ob die Struktur des Objekts der vorgegebenen Spezifikation entspricht (JSON schema).  Dokumentation lesen

Ein Objekt ganz einfach initialisieren

Mit der Funktion New Object können Sie in einer einzelnen Zeile Code ein leeres oder ein vorab gefülltes Objekt erstellen.  Dokumentation lesen

Suchen in einer Liste von Elementen in einem einzelnen Objekt

Sie können jetzt in einem Array innerhalb eines Objekts über verknüpfte Argumente suchen. Mit QUERY BY ATTRIBUTE lassen sich in einer Liste von Elementen komplexe Suchläufe in einem einzelnen Objekt ausführen. Suchen Sie in Array Attributen mit mehrfachen Suchkriterien, die mit dem Operator UND verbunden sind, können Sie festlegen, ob Sie die Datensätze erhalten wollen, auf die Argumente in mindestens einem Element oder im selben Element zutreffen. Dokumentation lesen

Datensätze nach Attribut des Objekts sortieren

Über den neuen Befehl ORDER BY ATTRIBUTE können Sie Datensätze nach einen spezifischen Objektattribut suchen, z.B. beim Anzeigen einer Auswahl in einer Listbox.  Dokumentation lesen

 

Preemptive Multi-threading

Mit preemptive Multi-threading kann Ihre Anwendung die Vorteile von multi-core Computern voll ausnutzen. Das beschleunigt Ihre Anwendungen und es können mehr angemeldete Benutzer unterstützt werden. Dafür wurden über 20 vorhandene Befehle angepasst und sind jetzt in preemptive Prozessen verwendbar.  Dokumentation lesen

 

Dynamische Formulare

Sie können jetzt dynamische Formulare erstellen und verwenden. Da sie in einem textbasierten Format (JSON) gespeichert werden, erschließen sie eine ganze Reihe neuer Möglichkeiten, wie z.B. Formulare erstellen, die sich vollkommen an den Kontext des Endnutzers anpassen oder mehrere Anwendungen können dasselbe Formular gemeinsam nutzen. Die Textbeschreibung des Formulars lässt sich in einem 4D Objekt oder einer Datei speichern und dann im laufenden Betrieb laden. Die nachfolgenden Befehle wurden ergänzt, so dass ein 4D Objekt oder Pfad zur JSON Datei übergeben werden kann: Open form window, DIALOG, FORM SET INPUT, FORM SET OUTPUT, OBJECT SET SUBFORM, OBJECT GET SUBFORM, FORM LOAD, Print formDokumentation lesen

 

Vereinfachte Kommunikation zwischen den Formularen

Verabschieden Sie sich von komplexem Code und globalen Variablen und binden einfach ein Objekt an ein Formular, das Sie dann intern mit der neuen Funktion Form verwenden können. Dazu müssen Sie nur mit der Funktion DIALOG Parameter in einem Objekt zu einem Formular übergeben. Über Form ist dann  jede Eigenschaft dieses Objekts aus dem Formular heraus verfügbar. Das gilt auch für Unterformulare.  Dokumentation lesen

 

Neue Möglichkeiten durch Standardaktionen per Programmierung

Standardaktionen – wie First Record  oder color?value=red  – lassen sich einer Schaltfläche oder einem Menübefehl in der Benutzeroberfläche oder per Programmierung zuweisen. Einer der Vorteile ist, dass 4D, immer wenn die Aktion nicht anwendbar ist, die Deaktivierung des Menüeintrags oder der Schaltfläche automatisch verwaltet. Die 4D Programmiersprache enthält zwei neue Befehle, über die sich Standardaktionen per Programmierung ganz einfach verwalten lassen:

  • INVOKE ACTION dient zum Auslösen einer beliebigen Standardaktion, optional im Zielkontext (aktuelles Formular oder Hauptformular).
  • Über Get action info erfahren Sie, ob eine Standardaktion möglich und im aktuellen Kontext gültig ist.

Dokumentation lesen

 

Prioritäten im Cache Manager automatisch steuern

4D 64-bit enthält einen voll optimierten Cache Manager, der die Priorität für Objekte im Cache Speicher automatisch verwaltet. Das sorgt für hohe Effizienz und Performance beim Zugriff auf Daten.

Für fortgeschrittene Anwendung und besondere Fälle können Sie die Priorität im Cache individuell anpassen. Dafür gibt es zwei Gruppen von 4D Befehlen:

Dokumentation lesen

 

Sicherheit

In Sicherheitsbelangen macht 4D v17 einen gewaltigen Sprung vorwärts. Hierzu gibt es verschiedene Verbesserungen:

Alle Details zu den eingebauten Tools und Techniken, die zum Erstellen einer abgesicherten Umgebung für Ihre Business-Anwendungen relevant sind, finden Sie in unserem Security Guide.

A+ Ranking für 4D Web Sites 

Sie können für Ihre Web Sites das A+ Ranking (höchste Stufe) von SSL Labs bekommen. Dazu aktivieren Sie einfach HSTS (HTTP Strict Transport Security) auf Ihrem 4D Web Server! Auf diese Weise können Web Server deklarieren, dass Browser nur über gesicherte HTTPS Verbindungen laufen sollen. Ist dieses Feature aktiviert, fügt 4D Web Server in den jeweiligen Kopfteilen der zurückgesendeten Seiten automatisch die Angaben zu HSTS ein. Empfängt ein Browser erstmalig die Antwort des 4D Web Server mit der Angabe HSTS, speichert er dies ab. Alle zukünftigen HTTP Anfragen werden dann automatisch in HTTPS umgeleitet. Mit der Option Web HSTS max age können Sie angeben, wie lange der Browser diese Information speichern soll.  Dokumentation lesen

 

Perfect Forward Secrecy

Der Einsatz von Perfect Forward Secrecy (PFS) erhöht weiter die standardmäßige Sicherheit des 4D Web Server. PFS bietet Ihrer Applikation eine bessere Übereinstimmung mit einigen Sicherheitsvorkehrungen im Netzverkehr, sowie ein höheres Ranking bei audit Tests zur Web Sicherheit. PFS ist automatisch aktiviert, wenn TLS auf dem Server aktiv ist. Mit dem Befehl WEB Get server info können Sie sicherstellen, dass PFS aktiviert ist. Der Wert des neuen Attributs perfectForwardSecrecy ist wahr, wenn alle für PFS erforderlichen Bedingungen erfüllt sind. Beachten Sie, dass der RC4 Algorithmus aufgrund einiger bekannter Sicherheitsmängel in 4D Web Server jetzt überholt ist. Dokumentation lesen

 

Verbesserte Sicherheit für 4D Web Server

4D unterstützt Transport Layer Security (TLS v1.0, TLS v1.1 und TLS v1.2), um die verschlüsselte  Kommunikation zwischen Clients und Servern zu aktivieren. Die in 4D unterstützte Mindestversion ist standardmäßig TLS v1.2, ältere Versionen werden zurückgewiesen, da sie unsicher sein können. Wollen Sie ältere Browser oder Tools verwenden, die TLS v1.2 nicht unterstützen, können Sie die Sicherheitsebene über den neuen Selector Min TLS version für die Befehle Get database parameter und SET DATABASE PARAMETER herabsetzen.   Dokumentation lesen

 

Sichere Kennwort-Hash

Der Hash-Mechanismus ist ideal zum Speichern sicherer Kennwörter. Es gibt zwei neue Befehle zum Generieren und Prüfen sicherer Kennwort-Hash: Generate password hash und Verify password hash. Sie basieren auf dem Algorithmus bcrypt, der gezielt verlangsamt, so dass brute force Attacken zuviel Zeit beanspruchen und zu teuer werden. Dokumentation lesen

 

Unterstützung von SHA-2

Die Digest Funktionen sind von Vorteil, wenn beim Datenaustausch oder bei Vergleichen die Datenintegrität geprüft wird. Die Funktion Generate digest wurde erweitert und unterstützt jetzt SHA-2, und zwar die beiden Algorithmen SHA-256 und SHA-512. Die Syntax bleibt gleich, hinzugefügt wurden die beiden Konstanten SHA256 digest und SHA512 digestDokumentation lesen

 

Standardmäßig letztes Backup wiederherstellen, wenn Datenbank beschädigt

Um Ihre Daten vor Beschädigung zu schützen, ist für neue Datenbanken standardmäßig die Option Letztes Backup wiederherstellen, wenn Datenbank beschädigtin den Datenbank-Eigenschaften auf der Seite Backup markiert. Das schützt Ihre Daten besser, wenn Unregelmäßigkeiten auftreten.  Dokumentation lesen

 

4D Write Pro

Sie wissen sicher schon, dass 4D Write Pro komplett neu geschrieben wurde und das veraltete Plug-In 4D Write ersetzt. Der Satz Funktionen beschränkt sich aber nicht darauf, die Möglichkeiten von 4D Write abzudecken. Vielmehr bot Neuschreiben die Gelegenheit, neue Features hinzufügen, was im Plug-In nicht möglich war. Als Ergebnis übertrumpft 4D Write Pro das bisherige 4D Write in vielen Bereichen. Hier sehen Sie einen Überblick:

 

Mehrspaltige Dokumente erstellen

Sie können mit 4D Write Pro Dokumente mit mehrenen Spalten erstellen und Ihre vorhandenen mehrspaltigen 4D Write Dokumente konvertieren. Die Befehle WP SET ATTRIBUTES und WP GET ATTRIBUTES wurden entsprechend angepasst und unterstützen neue Attribute für Spalten:

  • wk column count: definiert die Anzahl der Spalten für das Dokument oder den Ausschnitt
  • wk column spacing: definiert den Abstand zwischen zwei Spalten
  • wk column rule style, wk column rule color, wk column rule width: definieren Stil (gepunktet, gestrichelt, etc.), Farbe und Breite des vertikalen Spaltentrenners.

Dokumentation lesen

 

Die aktuelle Position innerhalb eines 4D Write Pro Dokuments erhalten

In 4D Write Pro ist die neue Funktion WP Get position verfügbar. Sie gibt in einem bestimmten Ausschnitt, Element oder einer Referenz eine Variable vom Typ Objekt mit fünf wichtigen Positionsangaben zurück: Nummer des zutreffenden Ausschnitts, Nummer der Seite, der Spalte, der Zeile und sogar die Position des ersten Zeichens in diesem Ausschnitt.  Dokumentation lesen

 

Per Programmierung auf Elemente in 4D Write Pro zugreifen

Die Funktion WP Get elements gibt eine Collection mit verschiedenen Elementtypen zurück (Absätze, Tabellen, Bilder, etc.). Wird ein typisierter Bereich übergeben, gibt sie eine Collection zurück, die nur Referenzen auf Elemente dieses Typs enthält. Sonst erhalten Sie eine Collection mit allen verfügbaren Elementen, unabhängig vom Typ.  Dokumentation lesen

 

Text einfügen ist ganz einfach

Mit dem Befehl WP SET TEXT können Sie mühelos Text an eine bestimmte Stelle im Dokument setzen. Er funktioniert wie die meisten 4D Write Pro Befehle zum Einfügen. Er verwendet drei Elemente: das Objekt Ausschnitt (wo der Text eingefügt werden soll), den Text selbst und eine Konstante, die definiert, ob der Text am Anfang oder Ende des Ausschnitts eingesetzt oder ihn ersetzen soll. Dokumentation lesen

 

Tabellen in 4D Write Pro einrichten und gestalten

Tabellen sind in 4D Write Pro angekommen! Echte Tabellen, individuelle Zellen; geben Sie in eine Zelle einen längeren Text ein, wird er automatisch umgebrochen und die Zellenbreite bleibt gleich. Sie können eine Tabelle von Grund auf neu erstellen, den Stil der Tabelle oder ihrer Spalten, Zeilen und sogar einzelner Zellen ändern, alles per Programmierung.

Mit der Funktion WP Insert table können Sie eine Tabelle mit einer definierten Anzahl Zellen, Zeilen oder leer anlegen. Und es gibt einige Befehle für Tabellen in Ihrem 4D Write Dokument: WP Table append row, WP Table get rows, WP Table get columns, WP Table get cells. All diese neuen Befehle sind thread-safeDokumentation lesen

 

Standardaktionen jetzt auch in 4D Write Pro

Mehr als 80 Standardaktionen wurden speziell für 4D Write Pro geschaffen, dazu gehören Aktionen wie Farbe, Rechtschreibprüfung, Ausdruck einfrieren, Dialog mit Systemschriften anzeigen,… Sie können Ihre eigene 4D Write Pro Benutzeroberfläche einfach über Standardaktionen anlegen – ohne eine einzige Zeile Code zu schreiben.  Dokumentation lesen

 

Ihre eigene Toolbar mit Standardaktionen gestalten

Sie können in 4D Write Pro Ihre eigene Toolbar einrichten, ganz ohne Programmierung. Der einfache und effektive Mechanismus der Standardaktionen wurde erweitert und ist jetzt auch für Optionsfelder und PopUp-Menüs möglich.

Mit Standardaktionen können Sie die Vorteile von Automatismen nutzen und Zeit einsparen: 4D verwaltet Aktivieren/Deaktivieren von Objekten entsprechend dem Kontext automatisch. So wird der aktuelle Status (für Optionsfelder) bzw. Wert (für PopUp-Menüs) automatisch anhand der aktuellen Textauswahl aktualisiert.  Dokumentation lesen

 

Eigenes Kontextmenü für 4D Write Pro anlegen

Die Funktion Dynamic pop up menu wurde aktualisiert und ermöglicht jetzt, über Standardaktionen in 4D Write Pro eigene Kontextmenüs anzulegen. Dokumentation lesen

 

Bilder verwalten in 4D Write Pro

Bilder in absoluter Position 

Sie haben volle Kontrolle beim Positionieren von Bildern: vor oder hinter dem Text, mit der Seite verankert oder mit bestimmten Teilen, wie Kopfteil, Fußteil, Abschnitt des Dokuments. WP Add picture fügt das Bild auf der Seite hinzu und definiert dann seine exakte Position, sowie andere Eigenschaften. Sie können entweder Standardaktionen verwenden oder den Satz Selektoren, der in den Befehlen WP GET ATTRIBUTES und WP SET ATTRIBUTES hinzugefügt wurde.  Dokumentation lesen

Unterstützung von Bildausdrücken

Mit dem Befehl ST INSERT EXPRESSION können Sie 4D Ausdrücke einfügen, die ein Bild in 4D Write Pro zurückgeben. Das kann eine Variable, Funktion, ein Feld oder eine benutzerdefinierte Methode sein. Rufen Sie eine 4D Methode als Ausdruck auf, beachten Sie, dass sie zuvor mit dem Befehl SET ALLOWED METHODS aktiviert wurde. Dokumentation lesen

Hintergrundbilder bis zum Druckrand

In 4D Write Pro können Sie Hintergrundbilder setzen, die den gesamten druckbaren Bereich ausfüllen. Das ist über spezifische Hintergrundattribute möglich, die Startpunkt und Bildrand definieren. Sie haben verschiedene Möglichkeiten:

  • 4D Programmiersprache: Sie verwenden WP SET ATTRIBUTES und setzen für Positionierung und Zeichenbereich des den neuen Selector wk paper box.
  • Standardaktionen: Sie verwenden den Befehl INVOKE ACTION oder führen die entsprechende Standardaktion im Designmodus aus.
  • 4D Write Pro Widget: Sie wählen Sie im Kontextmenü “Dokument” den Eintrag “Hintergrund>Begrenzung>Papierrand”.

Dokumentation lesen

 

Kopf- und Fußteile per Programmierung steuern

Kopf- und Fußteile in 4D Write Pro lassen sich per Programmierung steuern, um andere Dokumente zu erstellen, die auf einer Vorlage basieren. Dafür gibt es neue Befehle, die in zwei Kategorien gegliedert sind:

  • Befehle, um Referenzen auf Kopf-, Fuß- oder Hauptteil im Dokument zu erhalten, um die entsprechenden Ausschnitte zu erhalten oder für einen spezifischen Abschnitt zu verwenden: WP Get header, WP Get body und WP Get footer.
  • Befehle, die den Cursor an eine bestimmte Position setzen: WP Get frame liefert eine Referenz auf den Rahmen, in dem der Cursor sich gerade befindet, WP SET FRAME setzt den Cursor in einen bestimmten Rahmen. 

Dokumentation lesen

 

Hyperlinks in 4D Write Pro setzen

Mit dem Attribut wk link url können Sie einen Link zu Ihrem Firmenlogo oder Firmennamen setzen. Über die Befehle WP SET ATTRIBUTES und WP GET ATTRIBUTES lassen sich Hyperlinks für Bilder, Text oder einer Kombination aus beiden hinzufügen.  Dokumentation lesen

 

Führende Zeichen für Tabulatoren verwenden

Sie können in 4D Write Pro führende Zeichen bei Tabulatoren setzen, die Ihr Design weiter verbessern. Das können sich wiederholende Punkte, Striche oder Sternchen in einer Tabellenzeile sein. Sie lassen sich entweder über das Kontextmenü setzen, wenn Sie im Lineal auf einen gesetzten Tabulator klicken oder per Programmierung mit dem Befehl WP SET ATTRIBUTES und dem neuen Selector wk tab stop leadings  Dokumentation lesen

 

Horizontales Lineal in 4D Write Pro

Mit dem horizontalen Lineal in einem 4D Write Pro Bereich können Sie Ränder und Einrückungen im Dokument anpassen, sowie Text, Grafiken, Tabulatoren und andere Elemente horizontal ausrichten.  Dokumentation lesen

 

4D View Pro

 

Dokumente in 4D View Pro konvertieren

Der erste Schritt zum Konvertieren Ihrer vorhandenden 4D View Dokumente in 4D View Pro ist gemacht. Mit der neuen Funktion VP Convert from 4D View werden die meisten Eigenschaften und Informationen, die in 4D View gespeichert sind, automatisch konvertiert. Das gilt für die Struktur des Dokuments, Werte, Formate, Stilarten, Ränder und Formeln.  Dokumentation lesen

 

4D View Pro Bereich erstellen

Mit dem neuen 4D View Pro Formularobjekt und den neuen Befehlen können Sie 4D View Pro Bereiche mit Tabellenkalkulation einrichten. Sie erstellen ein neues Dokument mit VP NEW DOCUMENT, sichern es auf der Festplatte mit VP EXPORT DOCUMENT oder in der Datenbank mit VP Export to object und öffnen es erneut mit VP IMPORT DOCUMENT oder VP IMPORT FROM OBJECTDokumentation lesen

 

Automatische Zeilenhöhe in Listboxen

4D View Pro unterstützt die automatische Variable Zeilenhöhe, d.h. die Listbox passt die Höhe jeder Zeile an ihren Inhalt an, so dass Text oder Bild vollständig angezeigt werden und nicht Teile davon abgeschnitten werden. Dafür gibt es in der Eigenschaftenliste drei Eigenschaften: Automatische Zeilenhöhe, Min Zeilenhöhe und Max Zeilenhöhe. Damit können Entwickler für eine Listbox den Modus automatische Zeilenhöhe definieren und zusätzlich Werte für die Mindest- und Maximumhöhe der Zeilen festlegen.
Diese Einstellungen lassen sich mit LISTBOX SET PROPERTY und dem neuen Befehl LISTBOX SET AUTO ROW HEIGHT auch per Programmierung steuern.  Dokumentation lesen

 Weitere Programmierfunktionen

 

Information zu Hard- und Software des Rechners 

Die Funktion Get system info liefert alle Details zur Hard- und Software des eingesetzten Rechners, also welches Betriebssystem verwendet wird, welcher bzw. welche Prozessoren, wieviel RAM verfügbar ist, u.v.m.  Dokumentation lesen 

 

Ausführliche Information zum 4D Web Server

Die Funktion WEB Get server info liefert detaillierte Angaben zum eingesetzten 4D Web Server. Der optionale Parameter CacheInfo ist hilfreich, wenn Sie Angaben zum Web Cache benötigen. Da dies u.U. sehr umfangreich sein kann, ist er standardmäßig auf “Falsch” gesetzt.  Dokumentation lesen

 

Ausführliche Information über Benutzer und Prozesse

Die Funktion Get process activity gibt eine Momentaufnahme (snapshot) der verbundenen Benutzersitzungen, der dazugehörigen laufenden Prozesse und aller aktuellen Prozesse zurück, d.h. auch interne Prozesse, die durch den Befehl  PROCESS PROPERTIES nicht erreichbar sind. Über die Eigenschaft systemID können Sie jeden Prozess identifizieren, also ob es ein Benutzerprozess, ein 4D oder ein wartender Prozess ist. Anhand der Angaben zu Sitzung/Prozess können Sie auch die vom Prozess verbrauchte CPU Zeit seit dem Sitzungsbeginn (in Sekunden) und die Aktivität in Prozent (z.B.: 2%) berechnen. All diese Angaben machen das Analysieren der Ergebnisse übersichtlicher und einfacher.  Dokumentation lesen

 

Details zu den Lizenzen

Die Funktion Get license info gibt detaillierte Informationen zu den installierten und den benutzten bzw. verfügbaren Lizenzen zurück.  Dokumentation lesen

 

Bessere Verwaltung von Datei- und Ordnerpfaden

Zwei neue Funktionen vereinfachen die Verwaltung von Datei- und Ordnerpfaden. Path to object gibt ein Objekt mit den spezifischen Eigenschaften des Parameters Pfad zurück (Verzeichnisinfo, Datei- oder Ordnername, Datei- oder Ordnerendung). Object to path erstellt einen Pfad anhand der Angaben im Parameter PfadObjekt. So können Sie problemlos einen neuen Pfad zusammenzustellen, denn Sie müssen nur die entsprechenden Attribute im angegebenen Objekt ändern und neu kombinieren.  Dokumentation lesen

 

Zugriff auf einzelne Logbücher

Die Funktion Get 4D file bietet besseren Zugriff auf Logbücher. Sie finden nun leicht ein bestimmtes Logbuch und nicht nur den Ordner mit allen Logbüchern. Dafür steht ein Satz neuer Selectoren zur Verfügung: Request log file, Debug log file, Backup log file, Verification log file, Compacting log file, Repair log file, HTTP debug log file und Build application log fileDokumentation lesen

 

Funktion Timestamp

Timestamp gibt die aktuelle UTC Zeit (Weltzeit) inkl. Millisekunden zurück.  Dokumentation lesen

 

User Experience

 

Code automatisch vervollständigen und Vorschläge für Objektattribute

Der Methodeneditor bietet “autocomplete” auch für Objektattribute. Setzen Sie nach dem Objekt einen Punkt, erscheint eine Liste mit vorgeschlagenen Attributen. Das beschleunigt Schreiben von Code und vermeidet Tippfehler. Auf der Seite Methoden der 4D Einstellungen können Sie für “autocomplete” einstellen, ob Sie einen Vorschlag aus der Liste per Tab gleich mit passendem Begrenzer, wie (; [ übernehmen (Option markiert) oder nur per Tab, um Begrenzer selbst einzugeben (Option nicht markiert).  Dokumentation lesen

 

4D Windows Produktreihe in 64-bit ohne Altura

Die gesamte 4D Windows Produktreihe in 64-bit enthält nicht mehr die Library Mac2Win von Altura. Der letzte noch fehlende Teil war 4D Server Windows 64-bit, der seit 4D v16 R4 verfügbar ist. So kann 4D intern moderne Technologien auf Windows verwenden, und Sie können die Vorteile neuer Funktionalitäten nutzen, wie z.B. SDI.  Dokumentation lesen

 

SDI Unterstützung auf Windows

4D Windows Applikationen hatten in der Regel ein graues Hauptfenster (genannt MDI – Multiple Document Interface), in dem alle enthaltenen Fenster vom Hauptfenster abhängen. Im Gegensatz dazu haben SDI (Single Document Interface) Anwendungen ein Hauptfenster, das viele weitere Fenster öffnen kann, die vom Hauptfenster unabhängig sind. Sie lassen sich auf andere Bildschirme ziehen, bleiben auch bei ausgeblendetem Hauptfenster sichtbar, usw.… In 64-bit Anwendungen unter Windows mit einkompilierter Engine sind jetzt beide Modi möglich.  Dokumentation lesen

 

Hilfetipps in Listboxen

Mit dem Befehl SET DATABASE PARAMETER können Sie alle Hilfetipps in einer 4D Anwendung per Programmierung aktivieren bzw. deaktivieren und auch eine verzögerte Anzeige oder maximale Dauer der Anzeige definieren. Das ist aber noch nicht alles, denn mit dem Befehl OBJECT SET HELP TIP können Sie den Text eines Hilfetipps dynamisch ändern. Der Befehl LISTBOX GET CELL POSITION unterstützt zwei neue optionale Parameter (x und y Position, in Pixels) und gibt die entsprechende Spalten- und Zeilennummern zurück, so dass Sie Hilfetipps in eine Spalte, Zeile oder bestimmte Zelle einer Listbox setzen können.  Dokumentation lesen

 

Eingabereihenfolge im Formular per Programmierung definieren

Definieren Sie die Eingabereihenfolge der Objekte in einem Formular per Programmierung, können Sie steuern, welches Formularobjekt als nächstes den Fokus hat, wenn der Benutzer die Tabulatortaste drückt. Mit den neuen Befehlen FORM SET ENTRY ORDER und FORM GET ENTRY ORDER können Sie die Eingabereihenfolge der aktuellen Formularobjekte für den aktuellen Prozess dynamisch setzen und erhalten.  Dokumentation lesen

 

Ergebnisse von “Suche in Struktur” exportieren

Das Dialogfenster “Suche in Struktur” hat im Ergebnisfenster zwei neue Funktionalitäten erhalten und macht Suchen noch leistungsstärker. Es gibt eine neue Schaltfläche, um eine laufende Suche zu unterbrechen. Über das Menü Optionen können Sie wählen, welche Suchergebnisse Sie beibehalten wollen und alle anderen Einträge außer diese Auswahl entfernen. Die Ergebnisse der Operation “Suche in Struktur” erscheinen in einer hierarchischen Liste. Sie können die Suchergebnisse in eine Textdatei exportieren und später z.B. in einer Tabellenkalkulation öffnen. Dazu wählen Sie einfach im Menü Optionen den neuen Eintrag Exportiere Ergebnisse. Auf diese Weise können Sie die Ergebnisse leicht speichern und teilen.  Dokumentation lesen

 

Farbe für ausgewählte Zeilen in Listboxen selbst definieren

Sie können die Farbe der Auswahlmarkierung selbst steuern, für jede einzelne Zeile und sogar pro Zelle. Dafür gibt es in der Eigenschaftenliste für Listboxen die neue Option Auswahlmarkierung ausblenden. Ist sie markiert, muss der Entwickler zuerst die Auswahlen in der Listbox über spezifische Oberflächenoptionen sichtbar machen. Dann kann er eine bestimmte Hintergrundfarbe, Schriftfarbe bzw. Schriftstil per Programmierung definieren und die Darstellung der ausgewählten Zeilen individuell festlegen. Das ist je nach Typ (Auswahl oder Array) der angezeigten Listbox für Arrays oder Ausdrücke möglich.  Dokumentation lesen

 

Fenster Tabs im Designmodus auf macOS Sierra

Auf macOS Sierra können Anwendungen Fenster Tabs anstelle mehrfacher Fenstern verwenden, was besonders bei kleinen Bildschirmen hilfreich ist. Die 4D Developer Edition in 64-bit kann Apple’s neues Feature im Designmodus nutzen. Die neue Option Fenster Tabs (nur  macOS) ist in den 4D Einstellungen verfügbar. Ist sie aktiviert, werden die Fenster des Methoden- und Formulareditors in einem übergeordneten Fenster gestapelt und lassen sich über Tabs aufrufen.  Dokumentation lesen

 

Kreuztabelle im Schnellberichteditor

Der Schnellberichteditor in 64-bit unterstützt Berichte als Liste und als Kreuztabelle. Das bietet Benutzern mehr Vielfalt beim Gestalten von Berichten, da sie ihren Bericht auch als zweidimensionale Tabelle darstellen können. Außerdem ist es weiterhin möglich, einen mit 4D in 32-bit erstellten Bericht erneut zu öffnen.  Dokumentation lesen

 

Neue Rendering Engine für Web Areas

4D hat in allen 64-bit Versionen die interne Komponente für eingebundene Web Areas auf Blink von Google upgedated. Das ist die aktuellste und modernste Rendering-Engine auf dem Markt, die für mehr Benutzerfreundlichkeit sorgt und neue HTML Features und Technologien unterstützt. Für den Wechsel auf Blink sind keine Änderungen im Code Ihrer Anwendung erforderlich und es gibt keinerlei Auswirkung in Web Areas; alle Befehle und Ereignisse für eingebundene Web Areas funktionieren wie bisher, außer wenige Voreinstellungen, die nicht unterstützt und somit ignoriert werden. Ist in der Eigenschaftenliste für Web Areas die Option Integrierte Web Rendering-Engine markiert, verwendet 4D WebKit auf 32-bit Versionen und Blink auf 64-bit Versionen.  Dokumentation lesen

 R-Releases zum Vertiefen