Quoi de neuf dans 4D v17

Ce document est une compilation de toutes les fonctionnalités disponibles dans 4D v17, qui ont été introduites soit au cours du programme de la version v16 R, soit lors de la toute dernière étape du passage de 4D v16 R6 à 4D v17. Notez que chaque fonctionnalité est associée à un article de blog pour vous guider à travers des exemples concrets. Vous pouvez accéder à ces articles de blog en cliquant sur le titre de la fonctionnalité.

Notez également que les sections portant le label blank sont liées à toutes les nouvelles fonctionnalités publiées entre 4D v16 R6 et 4D v17.

Ce document est divisé en sept sections :

ORDA

4D v17 introduit un concept innovant pour vous permettre de gérer votre base de données avec une approche orientée objet : ORDA (Object Relational Data Access).

Voici les fonctionnalités que nous livrons avec cette version :

Créer, mettre à jour et supprimer des données blank

Avec ORDA, les opérations CRUD (Create, Read, Update and Delete) peuvent être effectuées sur votre base de données à travers une couche d’abstraction : le datastore, qui est un objet qui fournit une interface au modèle de base de données et aux données à travers des objets. Avec ORDA, les opérations Create, Update et Delete ne sont pas effectuées sur une sélection courante ou sur un enregistrement courant mais sur des entités :

  • Créer: elle peut être réalisée en instanciant une nouvelle entité avec la méthode new() puis en la sauvegardant avec la méthode save().
  • Mise à jour: effectuée sur une entité en utilisant la même méthode save().
  • Suppression: effectuée sur une entité ou une sélection d’entités à l’aide de la méthode drop() .

Lire la documentation

Interroger la base de données blank

Avec ORDA, le datastore est un objet qui fournit une interface au modèle de base de données et aux données à travers des objets. Aussi, vous ne manipulez plus la sélection courante pour chaque table et l’enregistrement courant, mais plutôt des entités qui sont des objets. Vous pouvez facilement interroger plusieurs tables liées, gérer des relations récursives sur une même table, ainsi qu’utiliser plusieurs opérateurs logiques dans une seule requête. 4D v17 propose plusieurs façons d’interroger votre dataClass (c’est-à-dire votre table): vous pouvez soit fournir la requête sous forme de chaîne unique, soit fournir la requête et les valeurs séparément en utilisant des espaces réservés, soit fournir la requête et les valeurs séparément en utilisant une collection construite dynamiquement. Lire la documentation

Alleret venir entre la sélection actuelle et ORDA blank

ORDA peut être intégré à votre code existant ! Il est possible de mettre à jour la sélection courante d’une table à partir d’une sélection d’entité ainsi que d’obtenir une sélection d’entité à partir de la sélection courante d’une table ! De nouvelles commandes sont ajoutées à cet effet : la commande USE ENTITY SELECTION pour mettre à jour la sélection courante dans la table correspondante, et la commande Create entity selection pour obtenir une sélection d’entité liée à la DataClass correspondante. Lire la documentation

Convertir en entités, objets et collections blank

Avec ORDA, vous pouvez séparer les entités et les sélections d’entités de la base de données pour travailler sur elles séparément. De même, vous pouvez déplacer les objets et collections existants vers la base de données. Ainsi, afin d’exporter une entité vers un objet, utilisez la méthode toObject(); et la méthode toCollection() dans le cas où vous voulez exporter une sélection d’entités vers une collection. Et l’importation d’une entité via un objet peut se faire grâce à la méthode fromObject() et l’importation d’une sélection d’entités via une collection peut être réalisée avec la méthode fromCollection(). Lire la documentation

Gérer les verrous

Verrouillage optimisteblank

ORDA vous permet de travailler avec un verrouillage optimiste en fournissant un ensemble complet de méthodes pour gérer les erreurs qui pourraient survenir lors de la sauvegarde d’une entité dans la base de données. Le processus est très simple : Après avoir rechargé l’entité de la base de données avec la méthode reload(), la méthode touchedAttributes() vous permet de savoir quelles propriétés ont été modifiées depuis le dernier chargement ou sauvegarde, et finalement vous pouvez comparer les deux entités en utilisant la méthode diff(). Lire la documentation


Verrouillage pessimiste blank

En plus du verrouillage optimiste, ORDA vous permet également de travailler avec un verrouillage pessimiste en utilisant la méthode lock() qui verrouille une entité, de telle sorte que la sauvegarde d’une référence sur cette entité dans d’autres processus échouera jusqu’à ce que l’entité soit déverrouillée. Ainsi, à partir de maintenant, il n’est pas nécessaire de vérifier si une entité est verrouillée avant de la charger, car lorsqu’on essaie de la mettre à jour, la méthode save() renverra un statut détaillé indiquant les raisons du verrouillage. Lire la documentation

Gérer les entités dans la sélection d’entités blank

ORDA fournit des méthodes simples pour créer et ajouter des sélections d’entités, ainsi que des méthodes pour naviguer à travers les entités dans un objet de sélection d’entités, ce qui vous permettra de gérer plusieurs sélections d’entités en même temps et de naviguer à travers elles indépendamment. Une sélection d’entités est créée à l’aide de la méthode newSelection() , et des entités y sont ajoutées à l’aide de la méthode add(). Une sélection d’entités fournit les méthodes first() et last() pour obtenir la première et la dernière entité, et une entité fournit les méthodes previous() et next() pour obtenir l’entité précédente et suivante. Lire la documentation

Opérations logiques sur les sélections d’entités blank

Les opérateurs logiques peuvent être utilisés sur les sélections d’entités, ce qui vous permet d’obtenir l’intersection, l’union ou la différence entre deux sélections d’entités, comme avec les ensembles en langage classique. Lire la documentation

Calculs sur les sélections d’entités blank

ORDA fournit une grande fonctionnalité pour canaliser les données à travers des filtres et obtenir des valeurs agrégées, il offre un ensemble d’opérations d’agrégation qui examinent et effectuent des calculs sur les ensembles de données. Par exemple, les méthodes sum(), average(), count(), min() et max() sont utilisées pour effectuer les opérations que leur nom décrit ! Lire la documentation

Langage 4D

Voici les principales améliorations que nous avons apportées au langage 4D pour rendre votre expérience de codage plus facile et plus intuitive :

Notation des objets

La notation d’objet change radicalement la façon dont vous écrivez du code et utilisez le moteur de base de données, votre codage est plus rapide et plus facile à comprendre. Par exemple, vous pouvez simplement écrire $myobject.attribute.subattribute:=5 ou accéder à un attribut avec $person.children[2].firstname, vous pouvez également utiliser la notation d’objet comme expression. Par exemple, créez un objet de formulaire comme une variable texte et assignez directement l’attribut de l’objet, par exemple [person]relatives.grandfather.grandfather.firstname. Il n’est plus nécessaire d’utiliser OB Get de manière récursive pour lire la valeur et l’affecter à une variable temporaire, juste pour l’afficher. L’un des avantages de la notation objet est l’utilisation de propriétés et de valeurs indéfinies, car le langage 4D accepte désormais les valeurs indéfinies n’importe où dans une expression. Et, chaque fois que vous attribuez une valeur indéfinie à une variable, celle-ci sera définie par une valeur par défaut en fonction de son type.Cela signifie que la lecture de la propriété d’un objet non existant ne générera pas d’ erreur et n’ arrêtera pas l’exécution du code. Lire la documentation

Objets et collections partagés

Les objets partagés et les collections partagées sont un moyen simple et efficace de partager des informations entre des processus préemptifs. Les objets partagés et les collections partagées se comportent comme les objets standards, sauf qu’ils doivent être déclarés comme « partagés » lors de leur instanciation avec les nouvelles commandes suivantes : Nouvel objet partagé et Nouvelle collection partagée. Une fois instanciés, ils peuvent être utilisés directement, comme toute autre variable, pour la lecture. Et pour l’écriture ou la modification, elles doivent être entourées des mots-clés Use et End use . Lire la documentation

Nouvel itérateur : For each/ End for each blank

Une nouvelle boucle a rejoint le langage 4D : For each / End for each, pour vous permettre d’itérer sur des types de données avancés tels que les collections. Il n’est pas nécessaire de savoir à l’avance combien d’éléments appartiennent à la collection avant d’entrer dans la boucle. Elle peut également être utilisée pour itérer sur les propriétés d’un objet. Ceci est utile si vous voulez écrire du code générique, sans connaître à l’avance les noms des propriétés des objets. Lire la documentation

Collections

Collection est un nouveau type ajouté au langage 4D. Les collections sont flexibles et peuvent accélérer votre temps de développement. A première vue, une collection ressemble à un tableau, mais alors qu’un tableau est une liste hautement optimisée du même type (Array longint, Array Text, …), une collection est une sorte de conteneur stockant une liste de types individuels (un longint, puis un texte, puis un nombre, puis une image, un objet, même une autre collection, etc); et on peut y accéder avec la notation objet. La commande Nouvelle collection permet de créer une nouvelle collection vide ou pré-remplie. Et afin de faciliter la manipulation des collections, un ensemble de nouvelles méthodes à utiliser avec la notation objet sont fournies. Ces méthodes permettent, par exemple, d’ajouter ou de supprimer des éléments, de trier la collection, et bien plus encore. Plus de 40 nouvelles méthodes sont déjà disponibles. En voici quelques-unes : pop(), push(), concat(), resize(), query(), slice(), .. . Lire la documentation

Commande Null

La nouvelle commande Null peut être utilisée pour vérifier si un attribut d’un objet ou un membre d’une collection a une valeur inconnue ou manquante (attention à la différence avec la valeur 0 ou une chaîne vide «  » avec une valeur non définie). Elle permet également de définir la valeur d’un attribut comme étant inconnue. Cette commande peut être utilisée avec la notation d’objet. Lire la documentation

Développer avec des objets

Dates dans les objets

Les dates peuvent désormais être définies comme des dates et non comme des chaînes de caractères dans un objet, ce qui rend l’utilisation des dates dans les objets plus facile et plus intuitive. Ainsi, OB SET et OB Get peuvent être utilisés sans nécessiter la constante is date, et la notation objet peut leur être appliquée comme n’importe quel autre objet typique. Pour utiliser les dates dans les objets, il suffit de cocher l’option « Use date type instead of ISO date format in objects » (utiliser le type de date au lieu du format de date ISO dans les objets) sur la page de configuration de la compatibilité dans Database Settings. Lire la documentation

Prise en charge des images dans les objets

Les images peuvent désormais être stockées dans un champ d’objet ou dans une variable d’objet. Les commandes OB Get et OB SET prennent en charge le nouveau type d’image Is et permettent de stocker une image dans un champ d’objet. La notation d’objet peut également être utilisée. Lire la documentation

Validation d’un objet JSON

Une nouvelle option a été ajoutée pour vous aider à réduire votre temps de débogage lors de l’analyse syntaxique des chaînes JSON. Le paramètre option * de JSON Parse crée des informations de débogage supplémentaires (propriété __symbols) qui fournissent le chemin, la position de la ligne et le décalage de la ligne de chaque propriété et sous-propriété de l’objet. Même si un objet est bien formé, il peut ne pas répondre aux spécifications demandées ou aux normes de contenu. La nouvelle commande JSON Validate vous permet de vérifier si la structure de l’objet correspond à une spécification donnée(schéma JSON). Lire la documentation

Un moyen simple d’initialiser un objet

La commande New Object vous permet de créer un objet vide ou de le créer avec des propriétés et des valeurs initiales en une seule ligne de code. Lire la documentation

Interroger une liste d’éléments dans un seul objet

Il est désormais possible d’effectuer une recherche dans un tableau à l’intérieur d’un objet en utilisant des arguments liés. La commande QUERY BY ATTRIBUTE permet d’exécuter des requêtes complexes à l’intérieur d’une liste d’éléments dans un seul objet. Lors d’une recherche dans un tableau d’attributs avec plusieurs arguments de requête reliés par l’opérateur AND, vous aurez la possibilité de choisir d’obtenir les enregistrements où les arguments correspondants sont dans au moins un élément ou dans le même élément. Lire la documentation

Tri des enregistrements par attribut d’objet

Il est désormais possible de trier les enregistrements en fonction d’un attribut d’objet spécifique lors de l’affichage d’une sélection, par exemple dans une boîte de liste, grâce à la nouvelle commande ORDER BY ATTRIBUTE. Lire la documentation

Multi-threading préemptif

Le multithreading préemptif permet à votre application de tirer pleinement parti des ordinateurs multi-cœurs. Par conséquent, vos applications s’exécutent plus rapidement et peuvent prendre en charge un plus grand nombre d’utilisateurs connectés. Plus de vingt commandes existantes ont été améliorées pour pouvoir être utilisées dans des processus préemptifs. Lire la documentation

Formulaires dynamiques

Il est désormais possible de créer et d’utiliser des formulaires dynamiques. Stockés dans un format textuel (JSON), ils ouvrent une large liste de nouvelles opportunités : créer des formulaires totalement adaptés au contexte de l’utilisateur final, partager un même formulaire entre plusieurs bases de données. La description textuelle du formulaire peut être sauvegardée dans un objet 4D ou dans un fichier. Ensuite, au moment de l’exécution, les formulaires peuvent être chargés. Les commandes suivantes ont été améliorées de manière à ce qu’un objet 4D ou un chemin de fichier JSON puisse être transmis : Ouvrir la fenêtre du formulaire, DIALOGUE, FORM SET INPUT, FORM SET OUTPUT, OBJECT SET SUBFORM, OBJECT GET SUBFORM, FORM LOAD, Imprimer le formulaire. Lire la documentation

Communication simplifiée entre les formulaires

Débarrassez-vous de votre code complexe et de vos variables globales en liant un objet à un formulaire et en l’utilisant en interne avec la nouvelle commande Form . Il vous suffit de passer les paramètres d’un objet à un formulaire en utilisant la commande DIALOG. Toute propriété de cet objet sera alors disponible à l’intérieur du formulaire via la commande Form. Ceci est également valable pour les sous-formulaires. Lire la documentation

Nouvelles possibilités de programmation avec les actions standard

Les actions standard – telles que Premier enregistrement ou couleur ?valeur=rouge peuvent être assignées à un bouton ou à un élément de menu dans l’interface utilisateur ou par programmation. L’un des avantages est que 4D gère aussi automatiquement la désactivation de l’élément de menu ou du bouton lorsque l’action n’est pas applicable. En outre, deux nouvelles commandes ont été ajoutées au langage 4D pour faciliter la gestion des actions standard par programmation :

  • INVOKE ACTION peut être utilisée pour déclencher toute action standard, éventuellement dans le contexte cible (formulaire actuel ou formulaire principal).
  • Pour savoir si une action standard est applicable et valide dans le contexte actuel, vous pouvez utiliser la commande Get action info.

Lire la documentation

Contrôle des priorités du gestionnaire de cache

4D 64-bit inclut un gestionnaire de cache entièrement optimisé, basé sur un mécanisme de gestion automatique des priorités pour les objets en mémoire cache. Le contrôle total de la priorité est donné à la gestion des objets dans la mémoire cache, ce qui permet un réglage fin avancé.

Pour une utilisation avancée et des cas spécifiques, vous pouvez personnaliser les priorités du cache en utilisant deux ensembles de commandes 4D :

Lire la documentation

Sécurité

4D v17 fait un pas de géant en matière de sécurité avec les améliorations ci-dessous :

Pour plus de détails sur les outils et techniques intégrés permettant de créer un environnement sécurisé pour vos applications professionnelles, veuillez consulter notre Guide de sécurité.

Classement A+ pour les sites Web 4D blank

Il est désormais possible d’obtenir le classement A+ (taux le plus élevé) de SSL Labs pour vos sites Web, en activant simplement la fonction HSTS (HTTP Strict Transport Security) sur votre serveur Web 4D ! HSTS permet aux serveurs Web de déclarer que les navigateurs ne doivent interagir avec eux que par des connexions HTTPS sécurisées. Une fois activée, le serveur Web 4D ajoutera automatiquement des informations relatives à HSTS à tous vos en-têtes de réponse. Lorsqu’un navigateur reçoit la réponse initiale du serveur Web 4D avec les informations HSTS, il l’enregistre. À partir de ce moment, toutes les futures demandes HTTP seront automatiquement transformées en HTTPS. Et vous pouvez spécifier la durée de stockage de ces informations par le navigateur avec l’option Web HSTS max age. Lire la documentation

Activation du Perfect Forward Secrecy dans le serveur Web 4D

La sécurité par défaut du serveur Web 4D a été renforcée par la prise en charge de Perfect Forward Secrecy (PFS). Cette mise en œuvre permet à votre application de mieux se conformer à certaines fonctions de sécurité réseau et d’obtenir un meilleur classement lors des tests d’audit de sécurité Web. PFS est automatiquement activé lorsque TLS est activé sur le serveur. La commande WEB Get server info peut être utilisée pour s’assurer que PFS est activé. La valeur du nouvel attribut perfectForwardSecrecy est vraie lorsque toutes les conditions nécessaires à l’utilisation de PFS sont remplies. Gardez à l’esprit que l’algorithme RC4 est désormais déprécié dans 4D Web Server en raison de certains problèmes de sécurité connus. Lire la documentation

Sécurité renforcée pour le serveur Web 4D

4D prend en charge Transport Layer Security (TLS v1.0, TLS v1.1 et TLS v1.2) pour permettre des communications cryptées entre clients et serveurs. La version minimale prise en charge par défaut est TLS v1.2, les versions plus anciennes seront rejetées car elles pourraient être peu sûres. Mais si vous souhaitez prendre en charge des navigateurs (ou des outils) plus anciens qui ne prennent pas en charge TLS v1.2, vous pouvez diminuer le niveau de sécurité avec le nouveau sélecteur de version TLS minimale pour les commandes Get database parameter et SET DATABASE PARAMETER. Lire la documentation

Vérification du hachage et du mot de passe

Le mécanisme de hachage est idéal pour stocker les mots de passe. Deux nouvelles commandes ont été créées pour générer et vérifier les mots de passe hachés : Generate password hash et Verify password hash. Toutes deux sont basées sur l’algorithme bcrypt, qui est lent par conception. Ainsi, les attaques par force brute sont plus lentes et les impacts sont minimisés. Lire la documentation

Support SHA-2

Les fonctions de digest sont pratiques lorsqu’il s’agit de vérifier l’intégrité des données lors d’échanges ou de comparaisons de données. La commande Generate digest a été améliorée pour prendre en charge SHA-2. Elle prend désormais en charge deux algorithmes de la famille SHA-2 : SHA-256 et SHA-512. La syntaxe reste la même, et les constantes SHA256 digest et SHA512 digest ont été ajoutées. Lire la documentation

Restauration de la dernière sauvegarde de la base de données par défaut

Pour protéger vos données contre les dommages, l’option « Restaurer la dernière sauvegarde si la base de données est endommagée » de la page « Sauvegarde » des paramètres de la base de données est cochée par défaut pour les nouvelles bases de données, ce qui vous offre le meilleur niveau de protection. Lire la documentation

4D Write Pro

Documents multi-colonnes blank

Vous pouvez désormais créer des documents multi-colonnes avec 4D Write Pro ainsi que convertir vos documents 4D Write existants contenant plusieurs colonnes.Les commandes WP SET ATTRIBUTES et WP GET ATTRIBUTES ont été mises à jour pour prendre en charge les nouveaux attributs permettant de gérer les colonnes :

  • wk column count: définit le nombre de colonnes pour le document ou la section.
  • wk column spacing: définit l’espacement entre deux colonnes
  • wk column rule style, wk column rule color, wk column rule width: définir le style (pointillés, tirets, etc.), la couleur ou la largeur du séparateur vertical de colonne.

Lire la documentation

Obtenir la position de n’importe quelle partie d’un document 4D Write Pro blank

Une nouvelle commande, dédiée à 4D Write Pro est maintenant disponible : WP Get position. Étant donné une plage, un élément ou une référence spécifique, cette commande renvoie une variable objet contenant cinq informations importantes à la fois : le numéro de section où la plage commence, le numéro de page, le numéro de colonne, le numéro de ligne et même la position du premier caractère de la plage dans la ligne. Lire la documentation

Accès programmé aux éléments dans 4D Write Pro blank

La commande WP Get elements renvoie une collection d’éléments de tout type (paragraphes, tableaux, images, etc.). Si une plage typée est passée, la commande renvoie une collection contenant uniquement des éléments du type correspondant (sauf si spécifié dans le second paramètre). Sinon, la commande renvoie une collection contenant tous les éléments disponibles, quel que soit leur type. Lire la documentation

Comment gérer facilement l’insertion de texte blank

La commande WP SET TEXT vous permet d’écrire du texte à n’importe quelle position dans un document. Cette commande s’utilise de la même manière que la plupart des commandes « Insertion » de 4D Write Pro. Elle prend trois arguments : l’objet plage (où le texte doit être inséré), le texte lui-même, puis une constante pour définir si le texte doit être placé avant, après ou remplacer la plage. Lire la documentation

Les tableaux de 4D Write Pro

Les tableaux arrivent dans 4D Write Pro ! De vrais tableaux, des cellules individuelles, si vous entrez un grand texte dans une cellule, le texte sera automatiquement enveloppé, et la largeur de la cellule restera la même. Vous pouvez créer un tableau à partir de zéro et modifier le style du tableau, ou ses colonnes, ses lignes et même les cellules individuelles, tout cela par programmation.

La commande WP Insert table vous permet de créer un tableau avec un certain nombre de cellules, de lignes ou vide. Les commandes suivantes ont été créées pour vous permettre de gérer les tableaux dans votre document 4D Write Pro : WP Table append row, WP Table get rows, WP Table get columns, WP Table get cells. Toutes ces nouvelles commandes sont thread-safe. Lire la documentation

Mécanisme d’actions standard étendu à 4D Write Pro

Plus de 80 nouvelles actions standard dédiées à 4D Write Pro ont été créées, vous permettant de gérer facilement 4D Write Pro avec de nouvelles actions telles que Bold, Color, Spell Check, Freeze expression, Show System Font Picker Dialog…Plus de 80+ actions sont disponibles. Il vous est maintenant possible de créer votre propre interface utilisateur 4D Write Pro sans écrire une ligne de code. Lire la documentation

Créez votre propre barre d’outils à l’aide d’actions standard

Créez facilement votre propre barre d’outils 4D Write Pro, sans aucune programmation. Le mécanisme d’actions standard, simple mais très puissant, a été étendu de manière à pouvoir également être affecté à des cases à cocher et à des menus contextuels.

L’utilisation des actions standard vous permet de bénéficier de mécanismes automatiques qui vous feront gagner du temps : l’activation/désactivation de l’objet est automatiquement gérée par 4D en fonction du contexte et l’état (pour les cases à cocher) ou la valeur (pour les menus déroulants) est automatiquement mis à jour en fonction de la sélection de texte en cours. Lire la documentation

Concevez votre propre menu contextuel pour 4D Write Pro

La commande  » Dynamic pop up menu  » a été mise à jour, permettant de concevoir vos propres menus contextuels 4D Write Pro basés sur des actions standard. Lire la documentation

4D Write Pro et la gestion des images

Images en position absolue

L’insertion d’une image à une position spécifique est entièrement contrôlée : devant ou derrière le texte, ainsi qu’ancrée à la page ou à des parties spécifiques du document (par exemple, en-tête, pied de page, sections). La commande WP Add picture ajoute l’image à la page, puis pour définir sa position exacte ainsi que d’autres propriétés, vous pouvez soit utiliser les actions standard, soit utiliser l’ensemble des sélecteurs qui ont été ajoutés aux commandes WP GET ATTRIBUTES et WP SET ATTRIBUTES. Lire la documentation

Prise en charge des expressions d’images

4D Write Pro prend désormais en charge les expressions d’images. La commande ST INSERT EXPRESSION a été étendue pour prendre en charge toute expression renvoyant une image. Une expression peut être une variable 4D, un champ, une fonction ou une méthode définie par l’utilisateur. N’oubliez pas qu’avant d’utiliser une méthode 4D dans une expression, vous devez d’abord activer l’utilisation de cette méthode à l’aide de la commande SET ALLOWED METHODS. Lire la documentation

Images de fond en taille réelle

La création d’images d’arrière-plan remplissant toute la page est possible avec 4D Write Pro, grâce à un attribut de style d’arrière-plan pour le découpage et l’origine de l’image. Cet attribut peut être contrôlé via :

  • lelangage 4D: Vous pouvez utiliser la commande WP SET ATTRIBUTES et définir la nouvelle valeur wk paper box pour le détourage et/ou l’origine de l’image de fond.
  • Actions standard: La commande INVOKE ACTION peut être utilisée, ou en mode conception comme toute autre action standard.
  • Widget 4D Write Pro: Lorsque vous sélectionnez les éléments « image d’arrière-plan » et « document », les options d’écrêtage et d’origine disposent d’une nouvelle option de boîte à papier.

Lire la documentation

Gestion programmatique des en-têtes et des pieds de page

Les en-têtes et pieds de page de 4D Write Pro peuvent être gérés de manière programmatique pour créer d’autres documents basés sur un modèle, grâce à de nouvelles commandes, divisées en deux catégories :

  • Commandes pour obtenir les références de n’importe quel en-tête, pied de page ou corps à l’intérieur des documents, qui peuvent être utilisées pour obtenir les plages associées, créer des documents pour une section spécifique : WP Get header, WP Get body et WP Get footer.
  • Commandes permettant de déplacer le curseur à une position spécifique : WP Get frame est utilisé pour obtenir une référence au cadre où le curseur est actuellement situé, tandis que WP SET FRAME place le curseur dans un cadre spécifique.

Lire la documentation

Hyperliens de 4D Write Pro

Vous pouvez ajouter un lien vers le logo ou le nom de votre entreprise avec l’attribut url de wk link. Les hyperliens peuvent être ajoutés sur des images, du texte ou une combinaison des deux, simplement en utilisant les commandes WP SET ATTRIBUTES et WP GET ATTRIBUTES. Lire la documentation

Utilisation de caractères de tête pour les tabulations

4D Write Pro offre une fonctionnalité supplémentaire pour affiner votre conception : les caractères d’en-tête (par exemple, les points répétés ou tout autre caractère dans une table des matières). Les caractères de tête peuvent être contrôlés soit à partir du menu contextuel lorsque vous cliquez sur une tabulation existante dans la zone de la règle, soit de manière programmatique grâce au sélecteur wk tab stop leadings new et à la commande WP SET ATTRIBUTES. Lire la documentation

Règle horizontale de 4D Write Pro

Utilisez la règle horizontale dans une zone 4D Write Pro pour ajuster les marges, les retraits et aligner horizontalement le texte, les graphiques, les onglets et autres éléments de vos documents. Lire la documentation

4D View Pro

Convertir des documents en 4D View Pro

La première étape de la conversion de vos documents existants 4D View vers 4D View Pro est lancée. Grâce à la nouvelle commande VP Convert from 4D View, la plupart des propriétés et informations stockées dans les documents 4D View sont automatiquement converties, y compris la structure du document, les valeurs, les formats, les styles, les bordures et les formules ! Lire la documentation

Feuilles de calcul 4D View Pro

Grâce au nouvel objet formulaire 4D View Pro, et aux nouvelles commandes 4D View Pro, vous pouvez désormais créer des feuilles de calcul 4D View Pro. Créez un nouveau document avec VP NEW DOCUMENT, enregistrez-le sur le disque avec VP EXPORT DOCUMENT ou dans la base de données avec VP Export to object et rouvrez-le avec VP IMPORT DOCUMENT ou VP IMPORT FROM OBJECT. Lire la documentation

Hauteur variable automatique des lignes de la liste

4D View Pro prend en charge la hauteur variable automatique des lignes, ce qui signifie qu’une boîte de liste adapte la hauteur de chaque ligne à son contenu, de sorte que le texte ou l’image complète puisse être affichée en évitant tout type de problème d’enveloppement. Trois nouvelles propriétés sont disponibles dans la liste des propriétés : Hauteur automatique des rangées, Hauteur minimale des rangées et Hauteur maximale des rangées. Ces paramètres permettent aux développeurs de définir si une zone de liste utilise le mode de hauteur de ligne automatique, en plus de la hauteur de ligne minimale et maximale autorisée.
Ces paramètres peuvent également être gérés de manière programmatique à l’aide de la commande LISTBOX SET PROPERTY et de la nouvelle commande LISTBOX SET AUTO ROW HEIGHT . Lire la documentation

Plus de possibilités de programmation

Obtenir des informations sur le matériel de la machine blank

La commande Obtenir des informations sur le système permet de récupérer tous les détails relatifs au matériel et au système de la machine en cours d’exécution, notamment : le système d’exploitation utilisé, le ou les processeurs, la quantité de RAM disponible, etc. Lire la documentation

Informations détaillées sur le serveur Web 4D

La commande WEB Get server info permet de récupérer des informations détaillées sur votre serveur Web 4D. Cette commande possède un paramètre d’entrée facultatif, withCacheInfo, qui est utile si des informations sur le cache du serveur Web sont nécessaires. Cet attribut a la valeur « False » par défaut. Lire la documentation

Informations détaillées sur les utilisateurs et les processus

La commande Get process activity donne un aperçu des sessions utilisateur connectées, des processus en cours d’exécution associés et de tous les processus actuels, y compris les processus internes qui n’étaient pas accessibles par la commande PROCESS PROPERTIES. En outre, un attribut systemID est inclus pour identifier de manière unique tout processus : utilisateur, 4D et spare. Vous pouvez également calculer, à partir des informations de session/processus renvoyées, le temps CPU consommé par ce processus depuis sa connexion (en secondes) et le pourcentage d’activité (par exemple : 2%). En plus de cela, la commande facilite l’analyse des résultats. Lire la documentation

Informations détaillées sur les licences

La commande Get license info renvoie des informations détaillées sur les licences installées et les licences utilisées/disponibles. Lire la documentation

Meilleure gestion des extensions de fichiers et de dossiers

Deux commandes ont été créées pour faciliter la gestion des chemins d’accès aux fichiers et aux dossiers. La commande Path to object renvoie un objet contenant les propriétés spécifiques (dossier parent, nom du fichier ou du dossier, extension du fichier ou du dossier) du chemin que vous avez passé en paramètre. La commande Object to path construit un chemin à partir des attributs de l’objet passé en paramètre. Ainsi, pour composer un nouveau chemin, modifiez les attributs d’objet dont vous avez besoin et recombinez-les simplement.
Ces commandes doivent désormais être utilisées à la place des commandes dépréciées _o_Document type et _o_SET DOCUMENT TYPE. Lire la documentation

Accès facilité aux fichiers journaux

La commande Get 4D file a été améliorée pour un meilleur accès aux fichiers journaux. Vous pouvez désormais trouver facilement un fichier journal particulier au lieu de récupérer le dossier contenant tous les journaux. Un ensemble de nouveaux sélecteurs a été créé pour cette commande : Fichier journal de requête, fichier journal de débogage, fichier journal de sauvegarde, fichier journal de vérification, fichier journal de compactage, fichier journal de réparation, fichier journal de débogage HTTP et fichier journal d’application de construction. Lire la documentation

Commande Timestamp

La commande Timestamp permet d’obtenir un horodatage UTC précis incluant les millisecondes. Lire la documentation

Expérience utilisateur

Complétion de code et suggestion pour les attributs d’objet

L’éditeur de méthodes a été amélioré pour fournir la complétion de code pour les attributs des objets. Une liste d’attributs suggérés s’affiche chaque fois qu’un point est tapé après un objet, afin d’améliorer la vitesse de codage et d’éviter les erreurs ou les fautes de frappe. Le comportement de l’autocomplétion peut être personnalisé à partir du panneau« 4D preferences« , pour définir si la liste de suggestions sera automatiquement ouverte après avoir tapé un caractère de point (option cochée), ou seulement après avoir utilisé la touche de tabulation (option non cochée). Lire la documentation

Ligne de produits 4D Windows 64-bit sans Altura

L’ensemble de la gamme de produits 4D Windows 64-bit ne dépend plus de la bibliothèque Mac2Win d’Altura. 4D Server Windows 64-bit était la dernière étape à franchir et c’est chose faite avec 4D v16 R4. Cela permet à 4D d’utiliser en interne les technologies modernes sur la plateforme Windows, et de vous faire bénéficier de nouvelles fonctionnalités telles que SDI. Lire la documentation

Support SDI sur Windows

Les applications Windows 4D avaient l’habitude d’avoir une fenêtre principale grise (appelée MDI – Multiple Document Interface) avec toutes les fenêtres de l’application affichées à l’intérieur (en tant que fenêtres enfants). Les applications SDI(Single Document Interface) ont une fenêtre principale qui peut ouvrir plusieurs fenêtres supplémentaires indépendantes de la fenêtre principale. Elles peuvent être déplacées sur d’autres écrans, elles restent visibles même si la fenêtre principale est cachée et ainsi de suite… Pourquoi 4D permet maintenant les deux modes sur Windows 64-bit pour les applications fusionnées. Lire la documentation

Conseils d’aide sur les boîtes de liste

Vous pouvez désactiver ou activer par programmation tous les conseils d’aide dans une application 4D en utilisant la commande SET DATABASE PARAMETER. Vous pouvez également définir le délai d’affichage et la durée maximale de l’affichage par langue. Mais ce n’est pas tout, il est également possible de modifier dynamiquement le texte d’une info-bulle à l’aide de la commande OBJECT SET HELP TIP. En outre, la commande LISTBOX GET CELL POSITION prend désormais en charge deux nouveaux paramètres facultatifs (position x et y, en pixels) et renvoie les numéros de colonne et de ligne correspondants, pour vous aider à afficher des conseils sur une colonne, une ligne ou une cellule particulière d’une boîte de liste. Lire la documentation

Définir l’ordre des onglets d’un formulaire par programmation

Définissez l’ordre de saisie des objets dans un formulaire par programmation, afin de pouvoir contrôler sur quel objet du formulaire le focus sera placé lorsque l’utilisateur appuiera sur la touche TAB. Deux nouvelles commandes – FORM SET ENTRY ORDER et FORM GET ENTRY ORDER – vous permettent de définir et d’obtenir dynamiquement l’ordre d’entrée des objets du formulaire pour le processus en cours. Lire la documentation

Amélioration de l’interface utilisateur liée à l’IPv6

L’interface utilisateur a été améliorée pour une meilleure expérience utilisateur pour les utilisateurs ayant des configurations réseau IPv6. Lire la documentation

Exportation des résultats après une « recherche dans la conception ».

La boîte de dialogue « find in design » a été enrichie de deux nouvelles fonctionnalités liées à la fenêtre de résultats. Un nouveau bouton a été ajouté pour permettre d’interrompre une recherche en cours. De plus, une nouvelle option de filtrage est disponible afin que vous puissiez sélectionner les éléments de résultat que vous souhaitez conserver et supprimer tous les autres éléments à l’exception de cette sélection. En outre, les résultats d’une opération « Rechercher dans le dessin » sont affichés dans une liste hiérarchique. Vous pouvez également désormais exporter les résultats de la recherche dans un fichier texte qui peut être ouvert ultérieurement dans une feuille de calcul par exemple, ce qui vous permet de partager ou de stocker facilement les résultats. Pour ce faire, il suffit de sélectionner le nouvel élément Exporter les résultats, disponible dans le menu d’action « Rechercher dans le design ». Lire la documentation

Customize list box selection highlight color

Il est maintenant possible d’avoir un contrôle détaillé sur la couleur de surbrillance, pour chaque ligne ou même chaque cellule. Pour cela, une nouvelle option a été ajoutée à la liste des propriétés de la boîte à liste : Hide selection highlight. Lorsque cette option est cochée, le développeur doit rendre les sélections de la zone de liste visibles en utilisant les options d’interface disponibles. Il peut ensuite définir par programmation une couleur d’arrière-plan spécifique, des couleurs de police et/ou des styles de police pour personnaliser l’apparence des lignes sélectionnées. Cela peut se faire à l’aide de tableaux ou d’expressions, selon le type de boîte de liste affichée (sélections ou tableaux). Lire la documentation

Tabbed windows in 4D Design mode on MacOS Sierra

On macOS SierraLes applications 4D, 4D Developer Edition 64 bits et 4D Developer Edition 64 bits ont maintenant la possibilité d’utiliser des fenêtres à onglets au lieu de fenêtres multiples. 4D Developer Edition 64-bit peut désormais tirer parti de cette nouvelle fonctionnalité d’Apple dans l’environnement de conception grâce à la nouvelle option de tabulation des fenêtres disponible dans les préférences de 4D. Lorsque la nouvelle préférence est active, les fenêtres de l’éditeur de méthodes et de formulaires peuvent être combinées en une seule fenêtre avec des onglets. Lire la documentation

Tableau croisé dans l’éditeur de rapports rapides

L’éditeur Quick Report 64 bits prend désormais en charge les rapports en tableaux croisés en plus des rapports en liste, ce qui permet à vos utilisateurs finaux d’apprécier la fluidité de l’expérience utilisateur lors de la conception des rapports. Le choix du mode tableau croisé vous permet d’afficher votre rapport comme un tableau croisé dynamique. Notez que la réouverture d’un rapport existant créé avec les produits 4D 32 bits est toujours possible. Lire la documentation

Nouveau moteur de rendu pour les zones web

Pour une meilleure expérience utilisateur et une meilleure prise en charge des nouvelles fonctionnalités HTML, 4D met à jour son composant interne pour les objets de zone Web intégrés dans 4D 64-bit vers Blink (également utilisé par Google Chrome). Blink est le moteur de rendu existant le plus à jour et le mieux entretenu. Le passage au framework Blink ne nécessite aucune modification du code de votre application et n’a strictement aucun impact sur l’utilisation des zones Web ; toutes les commandes et tous les événements pour les zones Web intégrées fonctionnent de la même manière qu’auparavant, à l’exception de quelques préférences qui ne sont pas prises en charge et sont ignorées. Lorsque l’option Utiliser le moteur de rendu Web intégré est cochée, 4D utilise WebKit sur les versions 32 bits et Blink sur les versions 64 bits. Lire la documentation

Les versions R en profondeur