Was ist neu in 4D v17

Dieses Dokument ist eine Zusammenstellung aller in 4D v17 verfügbaren Funktionen, die entweder während des v16 R-Release Programms oder im letzten Schritt von 4D v16 R6 zu 4D v17 eingeführt wurden. Zu jeder Funktion gibt es einen zugehörigen Blog-Beitrag, in dem Sie konkrete Beispiele finden. Diese Blogbeiträge können durch Anklicken des Titels der Funktion aufgerufen werden.

Beachten Sie auch, dass sich die Abschnitte mit der Bezeichnung blank auf alle neuen Funktionen beziehen, die zwischen 4D v16 R6 und 4D v17 veröffentlicht wurden.

Dieses Dokument ist in sieben Abschnitte unterteilt:

ORDA

4D v17 führt ein innovatives Konzept ein, mit dem Sie Ihre Datenbank mit einem objektorientierten Ansatz verwalten können: ORDA (Object Relational Data Access).

Hier sind die Funktionen, die wir mit dieser Version ausliefern:

Daten erstellen, aktualisieren und löschen blank

Mit ORDA können CRUD-Operationen (Erstellen, Lesen, Aktualisieren und Löschen) auf Ihrer Datenbank über eine Abstraktionsschicht durchgeführt werden: den Datenspeicher, der ein Objekt ist, das eine Schnittstelle zum Datenbankmodell und den Daten über Objekte bietet. Mit ORDA werden die Operationen „Erstellen“, „Aktualisieren “ und “ Löschen“ nicht für eine aktuelle Auswahl oder einen aktuellen Datensatz, sondern für Entitäten durchgeführt:

  • Create: kann durch Instanziierung einer neuen Entität mit der Methode new() und anschließendes Speichern mit der Methode save() erreicht werden.
  • Aktualisieren: wird für eine Entität mit der gleichen save() -Methode durchgeführt.
  • Löschen: für eine Entität oder eine Entitätsauswahl mit der drop() -Methode.

Dokumentation lesen

Abfrage der Datenbank blank

Bei ORDA ist der Datenspeicher ein Objekt, das eine Schnittstelle zum Datenbankmodell und den Daten über Objekte bietet. Außerdem wird die aktuelle Auswahl nicht mehr für jede Tabelle und jeden aktuellen Datensatz durchgeführt, sondern für Entitäten, die Objekte sind. Sie können problemlos mehrere verknüpfte Tabellen abfragen, rekursive Beziehungen auf derselben Tabelle verwalten und mehrere logische Operatoren in einer einzigen Abfrage verwenden. 4D v17 bietet mehrere Möglichkeiten, Ihre dataClass (d.h. Tabelle) abzufragen: Sie können entweder die Abfrage als einzelnen String bereitstellen, oder die Abfrage und die Werte getrennt mit Platzhaltern bereitstellen, oder die Abfrage und die Werte getrennt mit einer dynamisch erstellten Sammlung bereitstellen. Dokumentation lesen

Zwischender aktuellen Auswahl und ORDA hin und her wechseln blank

ORDA kann in Ihren bestehenden Code integriert werden! Es ist möglich, die aktuelle Auswahl einer Tabelle aus einer Entity-Auswahl zu aktualisieren, sowie eine Entity-Auswahl aus der aktuellen Auswahl einer Tabelle zu erhalten! Zu diesem Zweck wurden neue Befehle hinzugefügt: USE ENTITY SELECTION, um die aktuelle Auswahl in der entsprechenden Tabelle zu aktualisieren, und der Befehl Create entity selection, um eine auf die entsprechende DataClass bezogene Entity-Auswahl zu erhalten. Dokumentation lesen

Konvertierung in Entitäten, Objekte und Sammlungen blank

Mit ORDA können Sie Entitäten und Entitätsselektionen von der Datenbank trennen, um sie separat zu bearbeiten. Außerdem können Sie bestehende Objekte und Sammlungen in die Datenbank verschieben. Um eine Entität in ein Objekt zu exportieren, verwenden Sie die Methode toObject(); und toCollection(), wenn Sie eine Entitätsauswahl in eine Sammlung exportieren möchten. Und das Importieren einer Entität über ein Objekt kann dank der fromObject() -Methode erfolgen und das Importieren einer Entitätsauswahl über eine Sammlung kann mit der fromCollection() -Methode erreicht werden. Dokumentation lesen

Verwalten von Sperren

Optimistisches Sperrenblank

ORDA ermöglicht Ihnen die Arbeit mit optimistischem Locking, indem es eine ganze Reihe von Methoden zur Verfügung stellt, um Fehler zu verwalten, die beim Speichern einer Entität in der Datenbank auftreten können. Der Prozess ist recht einfach: Nach dem erneuten Laden der Entität aus der Datenbank mit der reload() -Methode zeigt die touchedAttributes() -Methode an, welche Eigenschaften seit dem letzten Laden oder Speichern geändert wurden, und schließlich können Sie die beiden Entitäten mit der diff() -Methode vergleichen. Dokumentation lesen


Pessimistisches Sperren blank

Neben optimistischem Locking erlaubt ORDA auch die Arbeit mit pessimistischem Locking, indem die lock() -Methode eine Entität so sperrt, dass das Speichern einer Referenz auf diese Entität in anderen Prozessen fehlschlägt, bis die Entität entsperrt ist. Von nun an ist es also nicht mehr notwendig, vor dem Laden einer Entität zu prüfen, ob diese gesperrt ist, denn wenn man versucht, sie zu aktualisieren, gibt die Methode save() einen detaillierten Status zurück, der die Gründe für die Sperre angibt. Dokumentation lesen

Handhabung von Entitäten in der Entitätenauswahl blank

ORDA bietet einfache Methoden, um Entitätsselektionen zu erstellen und hinzuzufügen, sowie Methoden, um durch Entitäten in einem Entitätsselektionsobjekt zu navigieren. Dies ermöglicht es Ihnen, mehrere Entitätsselektionen gleichzeitig zu handhaben und unabhängig voneinander durch sie zu navigieren. Eine Entity-Auswahl wird mit der Methode newSelection() erstellt, und Entities werden mit der Methode add() zu ihr hinzugefügt. Eine Entitätsauswahl bietet die Methoden first() und last(), um die erste und letzte Entität zu erhalten, und eine Entität bietet previous() und next(), um die vorherige und nächste Entität zu erhalten. Dokumentation lesen

Logische Operationen auf Entity-Auswahlen blank

Logische Operatoren können auf Entity-Auswahlen angewendet werden, um die Schnittmenge, die Vereinigung oder die Differenz zwischen zwei Entity-Auswahlen zu erhalten, wie bei Mengen in der klassischen Sprache. Dokumentation lesen

Berechnungen auf Entitätsselektionen blank

ORDA bietet eine großartige Funktion, um die Daten durch Filter zu leiten und Aggregatwerte zu erhalten, es bietet eine Reihe von Aggregationsoperationen, die die Datensätze untersuchen und Berechnungen durchführen. Zum Beispiel werden die Methoden sum(), average(), count(), min() und max() verwendet, um die Operationen durchzuführen, die ihre Namen beschreiben! Dokumentation lesen

4D Sprache

Hier sind die wichtigsten Verbesserungen, die wir in die 4D Sprache eingebracht haben, um das Programmieren einfacher und intuitiver zu machen:

Objekt-Notation

Die Objektnotation verändert die Art und Weise, wie Sie Code schreiben und die Datenbank-Engine nutzen, drastisch. Ihr Code wird schneller und verständlicher. Sie können zum Beispiel einfach $myobject.attribute.subattribute:=5 schreiben oder auf ein Attribut mit $person.children[2].firstname zugreifen, auch können Sie die Objektnotation als Ausdruck verwenden. Legen Sie z.B. ein Formularobjekt wie eine Textvariable an und weisen Sie direkt das Objektattribut zu, z.B. [person]verwandte.grossvater.grossvater.vorname. Es ist nicht mehr notwendig, OB Get rekursiv zu verwenden, um den Wert zu lesen und ihn einer temporären Variablen zuzuweisen, nur um ihn anzuzeigen. Einer der Vorteile der Objektnotation ist die Verwendung von undefinierten Eigenschaften und Werten, da die 4D Sprache nun undefinierte Werte an jeder Stelle eines Ausdrucks akzeptiert. Und wenn Sie einer Variablen einen undefinierten Wert zuweisen, wird sie auf einen Standardwert entsprechend ihrem Typ gesetzt.Das bedeutet, dass das Lesen der Eigenschaft eines nicht existierenden Objekts weder einen Fehler erzeugt noch die Ausführung des Codes stoppt. Dokumentation lesen

Gemeinsam genutzteObjekte und Sammlungen

Shared Objects und Shared Collections sind eine einfache und effiziente Möglichkeit, Informationen zwischen präemptiven Prozessen auszutauschen. Shared Objects und Shared Collections verhalten sich genauso wie Standardobjekte, außer dass sie bei ihrer Instanziierung mit den folgenden neuen Befehlen als „shared“ deklariert werden müssen: Neues gemeinsames Objekt und Neue gemeinsame Sammlung. Sobald sie instanziiert sind, können sie wie jede andere Variable direkt zum Lesen verwendet werden. Zum Schreiben oder Ändern müssen sie von den Schlüsselwörtern Use und End use umgeben sein. Dokumentation lesen

Neuer Iterator: For each/ End for each blank

Die 4D Sprache hat eine neue Schleife bekommen: For each / End for each, um die Iteration über fortgeschrittene Datentypen wie Sammlungen zu ermöglichen, ohne dass Sie vor dem Eintritt in die Schleife wissen müssen, wie viele Elemente zu der Sammlung gehören. Es kann auch verwendet werden, um über Objekteigenschaften zu iterieren. Dies ist nützlich, wenn Sie einen generischen Code schreiben wollen, ohne die Namen der Objekteigenschaften im Voraus zu kennen. Dokumentation lesen

Sammlungen

Collection ist ein neuer Typ, der der 4D Sprache hinzugefügt wurde. Collections sind flexibel und können Ihre Entwicklungszeit beschleunigen. Auf den ersten Blick sieht eine Sammlung wie ein Array aus, aber während ein Array eine hochoptimierte Liste desselben Typs ist (Array longint, Array Text, …), ist eine Sammlung eine Art Container, der eine Liste individueller Typen speichert (ein longint, dann ein Text, dann eine Zahl, dann ein Bild, ein Objekt, sogar eine andere Sammlung, usw.); und auf sie kann mit Objektnotation zugegriffen werden. Mit dem Befehl Neue Sammlung wird eine neue leere oder bereits gefüllte Sammlung angelegt. Und um die Manipulation von Sammlungen zu erleichtern, werden eine Reihe neuer Methoden bereitgestellt, die mit der Objektnotation verwendet werden können. Diese Methoden ermöglichen es zum Beispiel, Elemente hinzuzufügen oder zu entfernen, die Sammlung zu sortieren, und vieles mehr. Über 40 neue Methoden sind bereits verfügbar. Hier sind nur einige von ihnen: pop(), push(), concat(), resize(), query(), slice(), .. . Dokumentation lesen

Null-Befehl

Der neue Null-Befehl kann verwendet werden, um zu prüfen, ob ein Objektattribut oder ein Sammlungsmitglied einen unbekannten oder fehlenden Wert hat (beachten Sie den Unterschied zum Wert 0 oder einer leeren Zeichenkette „“ mit einem nicht gesetzten Wert). Er erlaubt auch, einen Attributwert auf unbekannt zu setzen. Dieser Befehl kann mit der Objektnotation verwendet werden. Dokumentation lesen

Entwickeln mit Objekten

Datumsangaben in Objekten

Datumsangaben können nun als Datum und nicht als Zeichenkette in einem Objekt gesetzt werden, was die Verwendung von Datumsangaben innerhalb von Objekten einfacher und intuitiver macht. Dadurch wird die Verwendung von Datumsangaben in Objekten einfacher und intuitiver. So können OB SET und OB Get verwendet werden, ohne dass die Konstante is date benötigt wird, und die Objektnotation kann auf sie wie auf jedes andere typische Objekt angewendet werden. Um Datumsangaben innerhalb von Objekten zu verwenden, aktivieren Sie einfach die Option „Datumstyp anstelle des ISO-Datumsformats in Objekten verwenden“ auf der Seite Kompatibilitätseinstellungen in den Datenbankeinstellungen. Dokumentation lesen

Unterstützung von Bildern in Objekten

Bilder können jetzt in einem Objektfeld oder in einer Objektvariablen gespeichert werden. Die Befehle OB Get und OB SET unterstützen den neuen Bildtyp Is und die Möglichkeit, ein Bild in einem Objektfeld zu speichern. Und die Objektnotation kann ebenfalls verwendet werden. Dokumentation lesen

Validieren eines JSON-Objekts

Eine neue Option wurde hinzugefügt, um die Debugging-Zeit beim Parsen von JSON-Strings zu reduzieren. Der Parameter Option * von JSON Parse erzeugt zusätzliche Debug-Informationen (__symbols-Eigenschaft), die den Pfad, die Zeilenposition und den Zeilenversatz jeder Eigenschaft und Untereigenschaft des Objekts angeben. Auch wenn ein Objekt gut geformt ist, kann es sein, dass es die geforderten Spezifikationen oder Inhaltsnormen nicht erfüllt. Mit dem neuen Befehl JSON Validate können Sie überprüfen, ob die Struktur des Objekts einer bestimmten Spezifikation(JSON-Schema) entspricht. Dokumentation lesen

Eine einfache Möglichkeit, ein Objekt zu initialisieren

Mit dem Befehl Neues Objekt können Sie in einer einzigen Codezeile entweder ein leeres Objekt oder ein Objekt mit ersten Eigenschaften und Werten erstellen. Dokumentation lesen

Abfrage einer Liste von Elementen in einem einzigen Objekt

Es ist jetzt möglich, in einem Array innerhalb eines Objekts mit verknüpften Argumenten zu suchen. Der Befehl QUERY BY ATTRIBUTE ermöglicht die Ausführung komplexer Abfragen innerhalb einer Liste von Elementen in einem einzigen Objekt. Bei der Suche in Array-Attributen mit mehreren Abfrageargumenten, die mit dem Operator AND verknüpft sind, haben Sie die Möglichkeit, die Datensätze abzurufen, bei denen die übereinstimmenden Argumente in mindestens einem Element oder im selben Element enthalten sind. Dokumentation lesen

Datensätze nach Objektattribut sortieren

Dank des neuen Befehls ORDER BY ATTRIBUTE ist es jetzt möglich, Datensätze nach einem bestimmten Objektattribut zu sortieren, wenn eine Auswahl z. B. in einem Listenfeld angezeigt wird. Dokumentation lesen

Präemptives Multithreading

Preemptives Multi-Threading ermöglicht es Ihrer Anwendung, die Vorteile von Multi-Core-Computern voll auszunutzen. Dadurch werden Ihre Anwendungen schneller ausgeführt und können mehr angeschlossene Benutzer unterstützen. Mehr als zwanzig bestehende Befehle wurden so erweitert, dass sie in präemptiven Prozessen verwendet werden können. Dokumentation lesen

Dynamische Formulare

Es ist jetzt möglich, dynamische Formulare zu erstellen und zu verwenden. Sie werden in einem textbasierten Format (JSON) gespeichert und eröffnen eine Vielzahl neuer Möglichkeiten: Erstellung von Formularen, die vollständig an den Kontext des Endbenutzers angepasst sind, gemeinsame Nutzung desselben Formulars in mehreren Datenbanken. Die textuelle Beschreibung des Formulars kann in einem 4D Objekt oder einer Datei gespeichert werden. Zur Laufzeit können die Formulare dann geladen werden. Die folgenden Befehle wurden erweitert, so dass ein 4D Objekt oder ein JSON Dateipfad übergeben werden kann: Formularfenster öffnen, DIALOG, FORM SET INPUT, FORM SET OUTPUT, OBJECT SET SUBFORM, OBJECT GET SUBFORM, FORM LOAD, Formular drucken. Dokumentation lesen

Vereinfachte Kommunikation zwischen Formularen

Machen Sie Schluss mit komplexem Code und globalen Variablen, indem Sie ein Objekt an ein Formular binden und es intern mit dem neuen Befehl Form verwenden. Alles, was Sie tun müssen, ist, Parameter in einem Objekt mit dem DIALOG-Befehl an ein Formular zu übergeben. Jede Eigenschaft dieses Objekts ist dann innerhalb des Formulars über den Befehl Form verfügbar. Dies gilt auch für Unterformulare. Dokumentation lesen

Neue Programmiermöglichkeiten mit Standardaktionen

Standardaktionen – wie z.B. First Record oder color?value=red können einer Schaltfläche oder einem Menüpunkt in der Benutzeroberfläche oder durch Programmierung zugewiesen werden. Einer der Vorteile ist, dass 4D auch automatisch die Deaktivierung des Menüpunkts oder der Schaltfläche übernimmt, wenn die Aktion nicht anwendbar ist. Darüber hinaus wurden zwei neue Befehle in die 4D Sprache aufgenommen, um Standardaktionen einfach durch Programmierung zu handhaben:

  • INVOKE ACTION kann verwendet werden, um eine beliebige Standardaktion auszulösen, optional im Zielkontext (aktuelles Formular oder Hauptformular).
  • Um zu wissen, ob eine Standardaktion im aktuellen Kontext anwendbar und gültig ist, können Sie den Befehl Get action info verwenden.

Dokumentation lesen

Cache Manager Prioritätssteuerung

4D 64-Bit enthält einen vollständig optimierten Cache-Manager, der auf einem automatischen Prioritätsmanagement-Mechanismus für Objekte im Cache-Speicher basiert. Sie haben die volle Kontrolle über die Prioritäten der Objekte im Cache-Speicher und können diese fein abstimmen.

Für fortgeschrittene Anwendungen und spezielle Fälle können Sie die Cache-Prioritäten mit zwei Gruppen von 4D Befehlen anpassen:

Dokumentation lesen

Sicherheit

4D v17 macht einen großen Sprung nach vorne in Sachen Sicherheit mit den unten aufgeführten Erweiterungen:

Weitere Details zu den integrierten Tools und Techniken zur Schaffung einer sicheren Umgebung für Ihre Geschäftsanwendungen finden Sie in unserem Sicherheitsleitfaden.

A+ Bewertung für 4D Websites blank

Es ist jetzt möglich, das A+ Ranking (höchste Bewertung) von SSL Labs für Ihre Websites zu erhalten, indem Sie einfach die HSTS (HTTP Strict Transport Security) Funktion auf Ihrem 4D Webserver aktivieren! Mit HSTS können Webserver erklären, dass Browser nur über sichere HTTPS-Verbindungen mit ihnen interagieren sollen. Sobald die Funktion aktiviert ist, fügt der 4D Web Server automatisch HSTS-bezogene Informationen zu allen Antwort-Headern hinzu. Wenn ein Browser die erste Antwort des 4D Webservers mit den HSTS-Informationen erhält, speichert er sie. Von diesem Zeitpunkt an werden alle zukünftigen HTTP-Anfragen automatisch in HTTPS umgewandelt. Mit der Option Web HSTS max age können Sie festlegen, wie lange der Browser diese Informationen speichern soll. Dokumentation lesen

Perfect Forward Secrecy-Aktivierung in 4D Web Server

Die Standardsicherheit von 4D Web Server wurde durch die Unterstützung von Perfect Forward Secrecy (PFS) erhöht. Diese Implementierung bietet Ihrer Anwendung eine bessere Konformität mit einigen Netzwerksicherheitsmerkmalen sowie eine bessere Platzierung bei Web-Sicherheitsprüfungen. PFS wird automatisch aktiviert, wenn TLS auf dem Server aktiviert ist . Der WEB-Befehl Get server info kann verwendet werden, um sicherzustellen, dass PFS aktiviert ist. Der Wert des neuen Attributs perfectForwardSecrecy ist immer dann „true“, wenn alle für die Verwendung von PFS erforderlichen Bedingungen erfüllt sind. Beachten Sie, dass der RC4 Algorithmus in 4D Web Server aufgrund einiger bekannter Sicherheitsprobleme nicht mehr verwendet wird. Dokumentation lesen

Erhöhte Sicherheit für 4D Web Server

4D unterstützt Transport Layer Security (TLS v1.0, TLS v1.1 und TLS v1.2), um verschlüsselte Kommunikation zwischen Clients und Servern zu ermöglichen. Die standardmäßig unterstützte Mindestversion ist TLS v1.2, ältere Versionen werden abgelehnt, da sie unsicher sein könnten. Wenn Sie jedoch ältere Browser (oder Tools) unterstützen möchten, die TLS v1.2 nicht unterstützen, können Sie die Sicherheitsstufe mit dem neuen Selektor Min TLS version für die Befehle Get database parameter und SET DATABASE PARAMETER verringern. Dokumentation lesen

Hash und Passwortüberprüfung

Der Hash-Mechanismus ist ideal für die Speicherung von Passwörtern. Es wurden zwei neue Befehle zum Erzeugen und Überprüfen von Hash-Passwörtern erstellt: Kennwort-Hash generieren und Kennwort-Hash verifizieren. Beide basieren auf dem bcrypt-Algorithmus, der von vornherein langsam ist. Daher sind Brute-Force-Angriffe langsamer und die Auswirkungen werden minimiert. Dokumentation lesen

SHA-2-Unterstützung

Die Digest-Funktionen sind praktisch, wenn es um die Überprüfung der Datenintegrität während des Datenaustauschs oder -vergleichs geht. Der Befehl “ Digest generieren“ wurde erweitert, um SHA-2 zu unterstützen. Er unterstützt jetzt zwei Algorithmen der SHA-2-Familie: SHA-256 und SHA-512. Die Syntax bleibt gleich, und die Konstanten SHA256 digest und SHA512 digest wurden hinzugefügt. Dokumentation lesen

Letzte Datenbanksicherung standardmäßig wiederherstellen

Um Ihre Daten vor Beschädigungen zu schützen, ist die Option Letzte Sicherung wiederherstellen, wenn die Datenbank beschädigt istauf der Seite „Sicherung“ der Datenbankeinstellungen standardmäßig für neue Datenbanken aktiviert, was Ihnen den besten Schutz bietet. Dokumentation lesen

4D Write Pro

Mehrspaltige Dokumente blank

Sie können nun mit 4D Write Pro mehrspaltige Dokumente erstellen und bestehende 4D Write Dokumente mit mehreren Spalten konvertieren. Die Befehle WP SET ATTRIBUTES und WP GET ATTRIBUTES wurden aktualisiert und unterstützen nun neue Attribute zur Verwaltung von Spalten:

  • wk column count: Definiert die Anzahl der Spalten für das Dokument oder den Abschnitt
  • wk column spacing: Definiert den Abstand zwischen zwei Spalten
  • wk column rule style, wk column rule color, wk column rule width: Definieren Sie den Stil (gepunktet, gestrichelt, etc.), die Farbe oder die Breite der vertikalen Spaltentrennung.

Dokumentation lesen

Ermitteln der Position eines beliebigen Teils eines 4D Write Pro Dokuments blank

Ein neuer Befehl für 4D Write Pro ist jetzt verfügbar: WP Get position. Wenn Sie einen bestimmten Bereich, ein Element oder einen Verweis angeben, gibt dieser Befehl eine Objektvariable mit fünf wichtigen Informationen auf einmal zurück: die Abschnittsnummer, an der der Bereich beginnt, die Seitennummer, die Spaltennummer, die Zeilennummer und sogar die Position des ersten Zeichens des Bereichs in der Zeile. Dokumentation lesen

Programmatisch auf Elemente in 4D Write Pro zugreifen blank

Der Befehl WP Get elements gibt eine Sammlung von Elementen beliebigen Typs zurück (Absätze, Tabellen, Bilder, etc.). Wenn ein typisierter Bereich übergeben wird, gibt der Befehl eine Sammlung zurück, die nur Elemente des entsprechenden Typs enthält (es sei denn, dies ist im zweiten Parameter angegeben). Andernfalls gibt der Befehl eine Sammlung zurück, die alle verfügbaren Elemente enthält, unabhängig von ihrem Typ. Dokumentation lesen

Wie man Texteinfügungen einfach handhabt blank

Mit dem Befehl WP SET TEXT können Sie Text an einer beliebigen Stelle in einem Dokument einfügen. Dieser Befehl wird auf dieselbe Weise verwendet wie die meisten „Einfügen“-Befehle in 4D Write Pro. Er nimmt drei Argumente entgegen: das Bereichsobjekt (in das der Text eingefügt werden soll), den Text selbst und eine Konstante, die festlegt, ob der Text vor, nach oder anstelle des Bereichs platziert werden soll. Dokumentation lesen

4D Write Pro Tabellen

Tabellen sind in 4D Write Pro angekommen! Wenn Sie einen großen Text in eine Zelle eingeben, wird der Text automatisch umbrochen, und die Zellenbreite bleibt gleich. Sie können eine Tabelle von Grund auf neu erstellen und den Stil der Tabelle oder ihre Spalten, Zeilen und sogar einzelne Zellen ändern, und das alles durch Programmierung.

Mit dem WP-Befehl Tabelle einfügen können Sie eine Tabelle mit einer bestimmten Anzahl von Zellen, Zeilen oder leeren Zellen erstellen. Die folgenden Befehle wurden entwickelt, um Tabellen in Ihrem 4D Write Pro Dokument zu verwalten: WP Table append row, WP Table get rows, WP Table get columns, WP Table get cells. Alle diese neuen Befehle sind thread-safe. Dokumentation lesen

Der Mechanismus für Standardaktionen wurde für 4D Write Pro erweitert

Es wurden über 80 neue Standardaktionen für 4D Write Pro erstellt, die es Ihnen ermöglichen, die Bereiche von 4D Write Pro mit neuen Aktionen wie Fett, Farbe, Rechtschreibprüfung, Ausdruck einfrieren, System Font Picker Dialog anzeigen… zu bearbeiten. Sie können nun Ihre eigene 4D Write Pro Benutzeroberfläche erstellen, ohne eine Zeile Code zu schreiben. Dokumentation lesen

Gestalten Sie Ihre eigene Symbolleiste mit Standardaktionen

Erstellen Sie ganz einfach Ihre eigene 4D Write Pro Symbolleiste, ganz ohne Programmierung. Der einfache, aber sehr leistungsfähige Mechanismus der Standardaktionen wurde erweitert, so dass er auch Kontrollkästchen und Popup-Menüs zugewiesen werden kann.

Durch die Verwendung von Standardaktionen profitieren Sie von automatischen Mechanismen, die Ihnen Zeit sparen: Die Aktivierung/Deaktivierung von Objekten wird von 4D automatisch je nach Kontext gehandhabt und der aktuelle Status (bei Kontrollkästchen) oder Wert (bei Popup-Menüs) wird automatisch entsprechend der aktuellen Textauswahl aktualisiert. Dokumentation lesen

Gestalten Sie Ihr eigenes Kontextmenü für 4D Write Pro

Der Befehl Dynamisches Popup-Menü wurde aktualisiert, so dass Sie nun Ihre eigenen 4D Write Pro Kontextmenüs auf der Grundlage von Standardaktionen entwerfen können. Dokumentation lesen

4D Write Pro und die Handhabung von Bildern

Bilder in absoluter Position

Sie haben die volle Kontrolle über das Einfügen von Bildern an einer bestimmten Position: vor oder hinter dem Text sowie verankert auf der Seite oder in bestimmten Teilen des Dokuments (z. B. Kopfzeile, Fußzeile, Abschnitte). Der Befehl WP Add picture fügt das Bild in die Seite ein. Um seine genaue Position sowie andere Eigenschaften zu definieren, können Sie entweder Standardaktionen verwenden oder die Selektoren nutzen, die den Befehlen WP GET ATTRIBUTES und WP SET ATTRIBUTES hinzugefügt wurden. Dokumentation lesen

Unterstützung von Bildausdrücken

4D Write Pro unterstützt jetzt Bildausdrücke. Der Befehl ST INSERT EXPRESSION wurde erweitert und unterstützt nun jeden Ausdruck, der ein Bild zurückgibt. Ein Ausdruck kann eine 4D Variable, ein Feld, eine Funktion oder eine benutzerdefinierte Methode sein. Beachten Sie, dass Sie vor der Verwendung einer 4D Methode in einem Ausdruck zunächst die Verwendung dieser Methode mit dem Befehl SET ALLOWED METHODS aktivieren müssen. Dokumentation lesen

Hintergrundbilder in voller Größe

Die Erstellung von Hintergrundbildern, die die gesamte Seite ausfüllen, ist mit 4D Write Pro möglich, dank eines Hintergrundstil-Attributs für Bildausschnitt und Ursprung. Dieses Attribut kann über gesteuert werden:

  • 4D Sprache: Sie können den Befehl WP SET ATTRIBUTES verwenden und den neuen wk paper box-Wert für das Beschneiden und/oder den Ursprung des Hintergrundbildes einstellen.
  • Standard-Aktionen: Der Befehl INVOKE ACTION kann verwendet werden, oder im Designmodus wie jede andere Standardaktion.
  • 4D Write Pro Widget: Wenn Sie die Elemente „Hintergrundbild“ und „Dokument“ auswählen, steht für die Optionen „Ausschnitt“ und „Ursprung“ eine neue Option „Papierrahmen“ zur Verfügung.

Dokumentation lesen

Kopf- und Fußzeilen programmatisch verwalten

Die Kopf- und Fußzeilen von 4D Write Pro können programmatisch verwaltet werden, um andere Dokumente auf der Grundlage einer Vorlage zu erstellen, dank neuer Befehle, die in zwei Kategorien unterteilt sind:

  • Befehle zum Abrufen von Referenzen auf Kopf-, Fußzeilen oder Textkörper innerhalb von Dokumenten, die verwendet werden können, um zugehörige Bereiche abzurufen und Dokumente für einen bestimmten Abschnitt zu erstellen: WP Get header, WP Get body und WP Get footer.
  • Befehle, um den Cursor an eine bestimmte Position zu bewegen: WP Get frame wird verwendet, um einen Verweis auf den Rahmen zu erhalten, in dem sich der Cursor gerade befindet, während WP SET FRAME den Cursor in einen bestimmten Rahmen setzt.

Dokumentation lesen

4D Write Pro Hyperlinks

Sie können einen Link zu Ihrem Firmenlogo oder Firmennamen mit dem Attribut wk link url hinzufügen. Hyperlinks können zu Bildern, Texten oder einer Kombination aus beidem hinzugefügt werden, indem Sie einfach die Befehle WP SET ATTRIBUTES und WP GET ATTRIBUTES verwenden. Dokumentation lesen

Führende Zeichen für Tabulatoren verwenden

4D Write Pro bietet eine zusätzliche Funktion zur Feinabstimmung Ihres Designs: führende Zeichen (z. B. die wiederholten Punkte oder jedes andere Zeichen in einem Inhaltsverzeichnis). Die Führungszeichen können entweder über das Kontextmenü gesteuert werden, wenn Sie auf einen vorhandenen Tabulator im Linealbereich klicken, oder programmatisch mit dem Selektor wk tab stop leadings new und dem Befehl WP SET ATTRIBUTES. Dokumentation lesen

4D Write Pro horizontales Lineal

Verwenden Sie das horizontale Lineal in einem 4D Write Pro Bereich, um Ränder, Einzüge und die horizontale Ausrichtung von Text, Grafiken, Tabulatoren und anderen Elementen in Ihren Dokumenten anzupassen. Dokumentation lesen

4D Ansicht Pro

Dokumente in 4D View Pro konvertieren

Der erste Schritt zur Konvertierung Ihrer bestehenden 4D View Dokumente in 4D View Pro ist getan. Dank des neuen Befehls VP Convert from 4D View werden die meisten Eigenschaften und Informationen, die in 4D View Dokumenten gespeichert sind, automatisch konvertiert, einschließlich Dokumentstruktur, Werte, Formate, Stile, Rahmen und Formeln! Dokumentation lesen

4D View Pro Tabellenkalkulationen

Dank des neuen 4D View Pro Formularobjekts und der neuen 4D View Pro Befehle können Sie jetzt auch 4D View Pro Tabellen erstellen. Erstellen Sie ein neues Dokument mit VP NEW DOCUMENT, speichern Sie es auf der Festplatte mit VP EXPORT DOCUMENT oder in der Datenbank mit VP Export to object und öffnen Sie es wieder mit VP IMPORT DOCUMENT oder VP IMPORT FROM OBJECT. Dokumentation lesen

Automatische variable Zeilenhöhe der Listbox

4D View Pro unterstützt die automatische variable Zeilenhöhe, d. h. die Höhe jeder Zeile wird an den Inhalt angepasst, so dass der gesamte Text oder das gesamte Bild angezeigt werden kann, ohne dass es zu Umbruchproblemen kommt. Drei neue Eigenschaften sind in der Eigenschaftsliste verfügbar: Automatische Zeilenhöhe, Minimale Zeilenhöhe und Maximale Zeilenhöhe. Mit diesen Einstellungen können Entwickler festlegen, ob ein Listenfeld den Modus für die automatische Zeilenhöhe verwendet, zusätzlich zu der minimal und maximal zulässigen Zeilenhöhe.
Diese Einstellungen können auch programmatisch mit dem Befehl LISTBOX SET PROPERTY und dem neuen Befehl LISTBOX SET AUTO ROW HEIGHT verwaltet werden. Dokumentation lesen

Mehr Programmiermöglichkeiten

Hardware-Informationen des Rechners abrufen blank

Mit dem Befehl “ Systeminformationen ab rufen“ können Sie alle Hardware- und Systemdetails des laufenden Rechners abrufen, z. B. welches Betriebssystem verwendet wird, welche(r) Prozessor(en), wie viel RAM verfügbar ist und vieles mehr. Dokumentation lesen

Detaillierte Informationen über 4D Web Server

Der Befehl WEB Get server info ruft detaillierte Informationen über Ihren 4D Web Server ab. Dieser Befehl hat einen optionalen Eingabeparameter, withCacheInfo, der nützlich ist, wenn die Cache-Informationen des Webservers benötigt werden. Dieses Attribut ist standardmäßig auf „False“ gesetzt. Dokumentation lesen

Detaillierte Informationen über Benutzer und Prozesse

Der Befehl Get process activity liefert eine Momentaufnahme der verbundenen Benutzersitzungen, der zugehörigen laufenden Prozesse und aller aktuellen Prozesse, einschließlich der internen Prozesse, die mit dem Befehl PROCESS PROPERTIES nicht erreicht werden konnten. Darüber hinaus ist ein systemID-Attribut enthalten, um jeden Prozess eindeutig zu identifizieren: user, 4D und spare. Aus den zurückgegebenen Sitzungs-/Prozessinformationen können Sie auch die von diesem Prozess seit dem Verbindungsaufbau verbrauchte CPU-Zeit (in Sekunden) und den Aktivitätsprozentsatz (z. B.: 2 %) errechnen . Darüber hinaus erleichtert der Befehl das Parsen der Ergebnisse. Dokumentation lesen

Detaillierte Informationen über Lizenzen

Der Befehl Get license info liefert detaillierte Informationen über die installierten Lizenzen und die verwendeten/verfügbaren Lizenzen. Dokumentation lesen

Bessere Verwaltung von Datei- und Ordnererweiterungen

Es wurden zwei Befehle erstellt, um die Verwaltung von Datei- und Ordnerpfaden zu erleichtern. Der Befehl Path to object gibt ein Objekt zurück, das die spezifischen Eigenschaften (übergeordneter Ordner, Datei- oder Ordnername, Datei- oder Ordnererweiterung) des Pfades enthält, den Sie als Parameter übergeben haben. Der Befehl Objekt zu Pfad baut einen Pfad aus den im Parameter übergebenen Objektattributen auf. Um also einen neuen Pfad zu erstellen, ändern Sie die benötigten Objektattribute und kombinieren Sie sie einfach neu.
Diese Befehle sollten nun anstelle der veralteten Befehle _o_Document type und _o_SET DOCUMENT TYPE verwendet werden. Dokumentation lesen

Einfacher Zugriff auf Logdateien

Der Befehl Get 4D file wurde für einen besseren Zugriff auf die Protokolldateien verbessert. Jetzt können Sie ganz einfach eine bestimmte Protokolldatei finden, anstatt den Ordner mit allen Protokollen abzurufen. Für diesen Befehl wurde eine Reihe neuer Selektoren erstellt: Anforderungsprotokolldatei, Debug-Protokolldatei, Sicherungsprotokolldatei, Verifizierungsprotokolldatei, Komprimierungsprotokolldatei, Reparaturprotokolldatei, HTTP-Debug-Protokolldatei und Build-Anwendungsprotokolldatei. Dokumentation lesen

Befehl Timestamp

Mit dem Befehl Timestamp können Sie einen genauen UTC-Zeitstempel einschließlich Millisekunden erhalten. Dokumentation lesen

Benutzererfahrung

Code-Vervollständigung und -Vorschläge für Objektattribute

Der Methodeneditor wurde erweitert, um die Codevervollständigung für Objektattribute zu ermöglichen. Eine Liste mit vorgeschlagenen Attributen wird immer dann angezeigt, wenn ein Punkt nach einem Objekt eingegeben wird, um die Geschwindigkeit der Codierung zu erhöhen und Fehler oder Tippfehler zu vermeiden. Das Verhalten der Autovervollständigung kann in den„4D Einstellungen“ angepasst werden, um festzulegen, ob die Vorschlagsliste automatisch nach der Eingabe eines Punktes geöffnet wird (Option aktiviert) oder nur nach der Verwendung der Tabulatortaste (Option nicht aktiviert). Dokumentation lesen

Altura-freie 4D Windows 64-Bit Produktlinie

Die gesamte 4D Windows 64-Bit Produktlinie ist nicht mehr auf die Mac2Win Bibliothek von Altura angewiesen. 4D Server Windows 64-bit war der letzte Schritt, der mit 4D v16 R4 vollzogen wurde. Dadurch kann 4D intern moderne Technologien auf der Windows-Plattform nutzen und Sie profitieren von neuen Funktionen wie SDI. Dokumentation lesen

SDI Unterstützung unter Windows

4D Windows Anwendungen hatten bisher ein graues Hauptfenster (genannt MDI – Multiple Document Interface), in dem alle Anwendungsfenster (als Kindfenster) angezeigt wurden. SDI-Anwendungen(Single Document Interface) haben ein Hauptfenster, das viele zusätzliche Fenster öffnen kann, die unabhängig vom Hauptfenster sind. Sie können auf andere Bildschirme verschoben werden, sie bleiben sichtbar, auch wenn das Hauptfenster ausgeblendet wird und so weiter… Warum 4D jetzt beide Modi unter Windows 64-bit für zusammengeführte Anwendungen erlaubt. Dokumentation lesen

Hilfestellungen zu Listenfeldern

Sie können alle Hilfestellungen innerhalb einer 4D Anwendung mit dem Befehl SET DATABASE PARAMETER deaktivieren oder aktivieren. Sie können auch die Anzeigeverzögerung und die maximale Anzeigedauer pro Sprache festlegen. Aber das ist noch nicht alles, es ist auch möglich, den Text eines Hilfetextes mit dem Befehl OBJECT SET HELP TIP dynamisch zu ändern. Darüber hinaus unterstützt der Befehl LISTBOX GET CELL POSITION jetzt zwei neue optionale Parameter (x- und y-Position, in Pixeln) und gibt die entsprechenden Spalten- und Zeilennummern zurück, um die Anzeige von Tipps in einer Spalte, Zeile oder bestimmten Zelle einer Listbox zu erleichtern. Dokumentation lesen

Definieren Sie die Reihenfolge der Registerkarten eines Formulars durch Programmierung

Definieren Sie die Reihenfolge der Objekteingabe in einem Formular durch Programmierung, so dass Sie steuern können, auf welches nächste Formularobjekt der Fokus gelegt wird, wenn der Benutzer die TAB-Taste drückt. Zwei neue Befehle – FORM SET ENTRY ORDER und FORM GET ENTRY ORDER – ermöglichen es Ihnen, die Eingabereihenfolge der aktuellen Formularobjekte für den aktuellen Prozess dynamisch zu setzen und zu erhalten. Dokumentation lesen

IPv6-bezogene Verbesserung der Benutzeroberfläche

Die Benutzeroberfläche wurde verbessert, um eine bessere Benutzererfahrung für Benutzer mit IPv6-Netzwerkkonfigurationen zu ermöglichen. Dokumentation lesen

Ergebnisse nach einer „Suche im Entwurf“ exportieren

Der Dialog „Suche im Entwurf“ wurde um zwei neue Funktionen für das Ergebnisfenster erweitert. Es wurde eine neue Schaltfläche hinzugefügt, mit der eine laufende Suche unterbrochen werden kann. Außerdem steht eine neue Filteroption zur Verfügung, mit der Sie die Ergebnisse auswählen können, die Sie behalten möchten, und alle anderen Elemente außer dieser Auswahl entfernen können. Außerdem werden die Ergebnisse einer „Suche im Entwurf“ in einer hierarchischen Liste angezeigt. Sie können die Suchergebnisse jetzt auch in eine Textdatei exportieren, die später z. B. in einer Tabellenkalkulation geöffnet werden kann, so dass Sie die Ergebnisse leicht weitergeben oder speichern können. Wählen Sie dazu einfach den neuen Eintrag Ergebnisse exportieren, der im Aktionsmenü „Im Entwurf suchen“ verfügbar ist. Dokumentation lesen

Customize list box selection highlight color

Es ist nun möglich, die Hervorhebungsfarbe für jede einzelne Zeile oder sogar Zelle detailliert zu steuern. Zu diesem Zweck wurde der Eigenschaftsliste der Listbox eine neue Option hinzugefügt: Hide selection highlight. Wenn diese Option aktiviert ist, muss der Entwickler die Auswahl von Listboxen mithilfe der verfügbaren Schnittstellenoptionen sichtbar machen. Dann können sie eine bestimmte Hintergrundfarbe, Schriftfarben und/oder Schriftstile durch Programmierung definieren, um das Aussehen der ausgewählten Zeilen anzupassen. Dies kann mit Hilfe von Arrays oder Ausdrücken geschehen, abhängig von der Art der angezeigten Listbox (Auswahlen oder Arrays). Dokumentation lesen

Tabbed windows in 4D Design mode on MacOS Sierra

On macOS SierraMit der neuen Version von 4D Developer Edition haben Sie nun die Möglichkeit, Registerkarten statt mehrerer Fenster zu verwenden. 4D Developer Edition 64-Bit kann diese neue Funktion von Apple in der Entwurfsumgebung nutzen, dank der neuen Option “ Fenster mit Register karten“ in den 4D Voreinstellungen. Wenn die neue Voreinstellung aktiv ist, können die Fenster von Method und Form Editor zu einem einzigen Fenster mit Registerkarten zusammengefasst werden. Dokumentation lesen

Kreuztabelle im Quick Report Editor

Der 64-Bit-Editor von Quick Report unterstützt jetzt zusätzlich zu den Listenberichten auch tabellenübergreifende Berichte, so dass Ihre Endbenutzer beim Erstellen von Berichten eine reibungslose Benutzererfahrung genießen können. Wenn Sie den Kreuztabellenmodus wählen, können Sie Ihren Bericht als Pivot-Tabelle anzeigen. Beachten Sie, dass das erneute Öffnen eines bestehenden Berichts, der mit den 32-Bit 4D Produkten erstellt wurde, weiterhin möglich ist. Dokumentation lesen

Neue Rendering-Engine für Webbereiche

Um die Benutzerfreundlichkeit und die Unterstützung neuer HTML-Funktionen zu verbessern, aktualisiert 4D seine interne Komponente für eingebettete Webbereich-Objekte in 4D 64-bit auf Blink (wird auch von Google Chrome verwendet). Blink ist die aktuellste und am besten gewartete bestehende Rendering-Engine. Die Umstellung auf das Blink-Framework erfordert keine Code-Änderung für Ihre Anwendung und hat keinerlei Auswirkungen auf die Nutzung von Webbereichen; alle Befehle und Ereignisse für eingebettete Webbereiche funktionieren wie zuvor, mit Ausnahme einiger weniger Einstellungen, die nicht unterstützt und ignoriert werden. Wenn die Option Eingebettete Web Rendering Engine verwenden aktiviert ist, verwendet 4D WebKit bei 32-Bit Versionen und Blink bei 64-Bit Versionen. Dokumentation lesen

R-Releases im Detail