4d doc center : 4d v15 r4 - mise à jourdownload.4d.com/documents/products_documentation/... ·...

76
4D v15 R4 - Mise à jour Mode Développement Langage 4D Write Pro 4D Mobile SQL Optimisations 4D Developer Edition version 64 bits (préversion) Liste alphabétique des commandes - 1 -

Upload: dodien

Post on 13-Sep-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

4D v15 R4 - Mise à jour

Mode Développement Langage 4D Write Pro 4D Mobile SQL Optimisations 4D Developer Edition version 64 bits (préversion) Liste alphabétique des commandes

- 1 -

Page 2: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Mode Développement

Listbox : Option d'affichage des ellipses Listbox : Option de masquage des lignes vides Listbox : Lignes désactivées et lignes non sélectionnables Stockage du chemin d'accès des données dans les préférences Nouvelle procédure de connexion pour les applications clientes Nouvel objet 4D Write Pro dans la bibliothèque d'objets

- 2 -

Page 3: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Listbox : Option d'affichage des ellipses

Nouvelle option Tronquer avec ellipse

Une nouvelle option de list box, Tronquer avec ellipse, est disponible dans 4D v15 R4. Elle vous permet de contrôler lareprésentation des valeurs lorsque les colonnes de la list box sont trop étroites pour afficher la totalité de leur contenu. Cettenouvelle option est située dans le thème "Affichage" de la Liste des propriétés et s'applique à tous les types de colonnes,hormis Image et Objet:

Lorsque l'option est cochée (défaut), si le contenu d'une cellule excède la largeur de la colonne, il est tronqué et uneellipse est affichée :

Note : La position de l'ellipse dépend de l'OS. Dans l'exemple ci-dessus (Windows), elle est ajoutée à droite du texte.Sous OS X, l'ellipse est placée au centre du texte.

Lorsque l'option est désélectionnée, si le contenu d'une cellule excède la largeur de la colonne, il est simplementcoupé et aucune ellipse n'est affichée :

L'option Tronquer avec ellipse est cochée par défaut et peut être définie pour des list box de type Tableau et Sélection. Elleest disponible globalement au niveau des objets list box, ou séparément pour les colonnes et les pieds de colonnes.

Retour à la ligne et ellipses Avec les colonnes de type Alpha ou Texte, l'option Tronquer avec ellipse est disponible uniquement lorsque l'option Retourà la ligne n'est pas cochée. Lorsque l'option Retour à la ligne est cochée, le contenu supplémentaire des cellules est gérévia la fonction de retour à la ligne, l'option Tronquer avec ellipse n'est alors pas disponible.Note : Par soucis de cohérence, l'option Retour à la ligne a été déplacée du thème "Saisie" au thème "Affichage" de laListe des propriétés.

Type Booléen L'option Tronquer avec ellipse peut être appliquée aux colonnes de type Booléen ; cependant, le résultat diffère en fonctiondu format des cellules :

pour les formats booléens de type pop-up, les libellés sont tronqués avec une ellipse,pour les formats booléens de type case à cocher, les libellés sont toujours coupés.

- 3 -

Page 4: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Listbox : Option de masquage des lignes vides

A compter de 4D v15 R4, une nouvelle option de list box vous permet de contrôler l'affichage de lignes vides supplémentairesen bas des objets list box. Par défaut, 4D affiche ces lignes afin de remplir l'espace vide au pied des list box :

Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes vides finales située dans le thème"Fond et bordure" de la Liste des propriétés :

Lorsque vous cochez cette option, le bas de l'objet list box est laissé blanc :

Cette nouvelle option est disponible pour les objets list box de type Tableau et Sélection.

- 4 -

Page 5: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Listbox : Lignes désactivées et lignes non sélectionnables

A compter de 4D v15 R4, vous pouvez contrôler les nouvelles propriétés d'interface "désactivée" et "sélectionnable" pourchaque ligne de list box de type tableau.Ces fonctionnalités sont gérées via un nouveau tableau de propriétés nommé Tableau de contrôle des lignes, qui est uneversion étendue du "Tableau lignes masquées" disponible dans les versions précédentes de 4D.

Propriété Tableau de contrôle des lignes

Les list box de type tableau contiennent une nouvelle propriété, située dans le thème "List Box" : Tableau de contrôle deslignes.

Note de compatibilité : Cette propriété remplace la propriété "Tableau lignes masquées" qui était proposée dans lesversions précédentes de 4D. Par compatibilité, un tableau Booléen est toujours accepté comme tableau de contrôle deslignes (cf. ci-dessous).Vous pouvez saisir le nom d'un tableau de type booléen ou d'un tabeau de type entier long :

Tableau Booléen : Cette possibilité est conservée uniquement pour des raisons de compatibilité (voir Note decompatibilité ci-dessus). Dans ce cas, le tableau est utilisé comme dans les versions précédentes : chaque élément dutableau indique le statut masqué/affiché de la ligne correspondante dans la list box. Vrai signifie que la ligne estmasquée et Faux, qu'elle est affichée.Tableau Entier long (nouvelle fonctionnalité) : Dans ce cas, le tableau vous permet de contrôler plusieurs propriétésd'interface pour la list box. Chaque élément du tableau indique si la ligne correspondante est :

masquée ou visible (visible par défaut)activée ou désactivée (activée par défaut)sélectionnable ou non sélectionnable (sélectionnable par défaut)

Quel que soit son type, le tableau doit avoir le même nombre d'éléments que la list box. Chaque élément du tableau gèrel'élément la ligne correspondante dans la list box.Note : La propriété Tableau de contrôle des lignes peut être fixée ou lue à l'aide des commandes LISTBOX FIXERTABLEAU et LISTBOX Lire tableau. Le tableau peut également être retourné par la commande LISTBOX LIRETABLEAUX. Pour plus d'informations, veuillez vous reporter à la section LISTBOX Lire tableau, LISTBOX FIXERTABLEAU, LISTBOX LIRE TABLEAUX.

Utilisation du tableau de contrôle des lignes

Note : Ce paragraphe décrit uniquement la gestion d'un tableau de contrôle des lignes de type entier long. L'utilisation d'untableau de type booléen est déjà décrit dans la documentation des list box (veuillez vous reporter au paragraphe "Tableaulignes masquées" dans la section Propriétés spécifiques des List box).Chaque élément du Tableau de contrôle des lignes définit le statut d'interface de la ligne correspondante dans la list box.Trois propriétés d'interface sont accessibles via les constantes du thème "List Box" :

- 5 -

Page 6: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Constante Type Valeur DescriptionListbox lignemasquée

Entierlong 1 La ligne correspondante est masquée (équivaut à la propriété Masquée existante). Par

défaut : visible

Listbox lignedésactivée

Entierlong 2

La ligne correspondante est désactivée. Les textes et les contrôles tels que les casesà cocher sont grisés ou estompés. Les zones de texte ne sont plus saisissables. Pardéfaut : activée

Listbox lignenonsélectionnable

Entierlong 4

La ligne correspondante n'est pas sélectionnable (le surlignage n'est plus possible).Les zones de texte ne sont plus saisissables à moins que l'option "Saisie sur clicunique" soit active. Les contrôles tels que les cases à cocher et les pop ups restenttoutefois fonctionnels. Ce paramétrage est ignoré si le mode de sélection de la list boxest "Aucun". Par défaut : sélectionnable

Pour modifier le statut d'une ligne, il vous suffit de passer la ou les constante(s) appropriée(s) dans l'élément correspondant.Par exemple, si vous souhaitez que la ligne n°10 ne soit pas sélectionnable, vous pouvez écrire :

aLControlArr{10}:=Listbox ligne non sélectionnable

Vous pouvez définir plusieurs propriétés d'interface en un seul appel :

aLControlArr{8}:=Listbox ligne non sélectionnable+Listbox ligne désactivée

A noter que la définition d'une propriété pour un élément écrase toutes les autres valeurs définies pour cet élément (si ellesn'ont pas été réinitialisées). Par exemple :

aLControlArr{6}:=Listbox ligne désactivée+Listbox ligne non sélectionnable //la ligne 6est désactivée et non sélectionnable aLControlArr{6}:=Listbox ligne désactivée //la ligne 6 est toujours désactivée maisredevient sélectionnable

- 6 -

Page 7: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Stockage du chemin d'accès des données dans les préférences

Présentation

4D mémorise automatiquement le chemin d'accès du dernier fichier de données ouvert par le fichier de structure. Cettefonctionnalité très pratique accélère le lancement des applications 4D tout en leur permettant de travailler alternativementavec plusieurs fichiers de données. Dans les versions précédentes du programme, cette information était stockée dans le fichier de structure. Bien que ceprincipe ne pose pas de problème dans la plupart des cas, il peut s'avérer inapproprié dans le contexte du déploiementd'applications finales fusionnées. En particulier, lorsque les développeurs envoient à leurs clients des versions mises à jourde leurs applications déployées, les clients doivent toujours re-sélectionner manuellement leur fichier de données local aupremier lancement. Pour plus de souplesse, à compter de 4D v15 R4, le chemin du fichier de données pour les applications fusionnées peut êtrestocké dans les préférences utilisateur. Ce nouveau principe rend également les applications fusionnées plus conformes auxnormes des systèmes d'exploitation.

Activation de la fonctionnalité (option de compatibilité)

Les fonctionnalités décrites dans cette section sont disponibles uniquement lorsque l'option Utiliser la nouvellearchitecture pour les applications déployées de la page "Compatibilité" des Propriétés de la base est cochée :

Cette option est cochée par défaut dans les bases de données créées avec 4D v15 R4 et suivantes : la "nouvellearchitecture" est automatiquement activée, aucun paramétrage supplémentaire n'est requis pour en bénéficier.Pour des raisons de compatibilité, cette option est désélectionnée par défaut dans les bases converties depuis lesversions précédentes : vous devez la cocher pour bénéficier des nouvelles fonctionnalités.

Nouvel emplacement pour le chemin d'accès du dernier fichier de données

Dans les bases de données créées avec 4D v15 R4 ou dans les bases converties lorsque l'option de compatibilité Utiliser lanouvelle architecture pour les applications déployées est cochée (voir ci-dessus), toute application autonome ouserveur générée avec 4D ne stocke plus le chemin d'accès du dernier fichier de données ouvert dans le fichier de structure.Ce chemin d'accès est désormais stocké dans le dossier de préférences de l'utilisateur de l'application. L'emplacement du dossier de préférences de l'utilisateur de l'application correspond au chemin retourné par l'instructionsuivante :

userPrefs:=Dossier 4D(Dossier 4D actif)

Le chemin d'accès du fichier de données est stocké dans un fichier dédié, nommé lastDataPath.xml.Grâce à cette nouvelle architecture, lorsque vous fournissez une mise à jour de votre application, le fichier de données del'utilisateur local (le dernier fichier de données utilisé) est automatiquement ouvert dès le premier lancement.Ce mécanisme est généralement adapté aux déploiements standard. Cependant, dans des cas spécifiques, par exemple sivous dupliquez vos applications fusionnées, vous pouvez avoir besoin de modifier la manière dont le fichier de données estlié à l'application. Pour plus d'informations, reportez-vous à la section suivante.

Changer le mode de liaison des données

Pourquoi changer le mode de liaison des données ? Dans les versions 15 R4 et suivantes, 4D va automatiquement utiliser, avec vos applications compilées, le dernier fichier de

- 7 -

Page 8: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

données ouvert, comme dans les versions précédentes. Cependant, lorsque la "nouvelle architecture" est activée, le chemind'accès du fichier de données est stocké dans le dossier de préférences de l'utilisateur de l'application. Une conséquenceest qu'un procédé spécifique auparavant utilisable ne fonctionnera plus correctement : la duplication d'une applicationfusionnée destinée à utiliser différents fichiers de données. Cette astuce était possible car le chemin d'accès du fichier de données était stocké dans le package de l'application et relatifau fichier de structure. Une version dupliquée pouvait alors fonctionner de manière indépendante (sandboxing). Mais laduplication du dossier d'une application ne crée pas une application distincte. Avec le nouvel emplacement de stockage duchemin d'accès du fichier de données, les applications dupliquées vont en fait partager le même dossier de préférences del'utilisateur et donc, toujours utiliser le même fichier de données -- même si le fichier de données est renommé, carl'application utilisera toujours le dernier fichier de données ouvert par l'application.Afin de prendre en charge ce scénario spécifique lorsque la "nouvelle architecture" est activée, 4D vous permet de lier votrechemin de fichier de données au chemin de l'application. Dans ce cas, le fichier de données sera relié via un cheminspécifique et ne sera plus simplement le dernier fichier utilisé. Vous pouvez sélectionner le mode de liaison des données lorsde la phase de génération de l'application. Duplication lorsque les données sont liées par le nom de l'application :

Duplication lorsque les données sont liées par le chemin de l'application :

Quels sont les modes de liaison ? Deux modes de liaison des données sont disponibles. Chaque mode ayant ses avantages et ses inconvénients, vous devezchoisir le mode qui correspond le mieux à vos besoins.

Par Nom de l'application (défaut)Dans ce mode, l'application 4D ouvre automatiquement le dernier fichier de données ouvert correspondant à lastructure. Ce mode souple et intuitif vous permet de déplacer librement le dossier de l'application sur le disque. Il estconseillé en général pour les applications fusionnées, à moins que vous n'ayez spécifiquement besoin de dupliquerl'application.

Par Chemin de l'application Dans ce mode, l'application 4D fusionnée va lire le contenu du fichier lastDataPath.xml des préférences de l'utilisateuret tenter d'ouvrir le fichier de données dont l'attribut "executablePath" correspond au chemin d'accès de l'application. Sicette clé est trouvée, son fichier de données correspondant (défini via son attribut "dataFilePath") est ouvert. Sinon, ledernier fichier de données utilisé est ouvert (mode par défaut). Ce mode vous permet de dupliquer vos applications fusionnées sans rompre le lien avec le fichier de données (cf. ci-dessus). Toutefois avec cette option, si le dossier de l'application est déplacé sur le disque, l'utilisateur devra désignermanuellement un fichier de données, puisque le chemin de l'application ne correspondra plus à l'attribut"executablePath" (une fois que l'utilisateur a sélectionné un fichier de données, le fichier lastDataPath.xml est mis àjour).

Comment changer le mode de liaison des données ? Vous pouvez sélectionner le mode de liaison des données soit dans la boîte de dialogue du Générateur d'application, soit viade nouvelles clés XML BuildApp.

Dans la fenêtre du Générateur d'application, vous pouvez désormais sélectionner le mode de liaison des données dansles pages Application et Client/Serveur :

- 8 -

Page 9: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Note : Ces options sont disponibles uniquement lorsque l'option de compatibilité Utiliser la nouvelle architecturepour les applications déployées a été cochée (voir ci-dessus).

Vous pouvez également utiliser la nouvelle clé XML BuildApp "LastDataPathLookup", qui est disponible pour lesapplications monopostes et client/serveur :Preferences4D/BuildApp/RuntimeVL/LastDataPathLookup : définit le fonctionnement de l'application monopostePreferences4D/BuildApp/CS/LastDataPathLookup : définit le fonctionnement de l'application serveurCes clés peuvent contenir l'une des valeurs suivantes :

Valeur de laclé Mode de sélection du fichier de données Stockage du chemin du fichier

de données

InDbStruct Utiliser le chemin dans le fichier de structure Dans le fichier de structure(ancienne architecture)

ByAppName Utiliser le plus récent stocké dans LastDataPath.xml Dans les préférences utilisateur

ByAppPath Entrée dont executablePath correspond au chemin d'accès del'exécutable de l'application Dans les préférences utilisateur

- 9 -

Page 10: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Nouvelle procédure de connexion pour les applications clientes

A compter de 4D v15 R4 dans les applications clientes fusionnées, la procédure de gestion des connexions au serveur a étémodifiée. Elle offre désormais davantage de contrôle au développeur et plus de flexibilité en cas d'erreur de connexion.

Activation de la fonctionnalité (option de compatibilité)

Les fonctionnalités décrites dans cette section sont disponibles uniquement lorsque l'option Utiliser la nouvellearchitecture pour les applications déployées de la page "Compatibilité" des Propriétés de la base est cochée :

Cette option est cochée par défaut dans les bases de données créées avec 4D v15 R4 et suivantes : la "nouvellearchitecture" est automatiquement activée, aucun paramétrage supplémentaire n'est requis pour en bénéficier.Pour des raisons de compatibilité, cette option est désélectionnée par défaut dans les bases converties depuis lesversions précédentes : vous devez la cocher pour bénéficier des nouvelles fonctionnalités.

Nouveau scénario de connexion

Dans les bases de données créées avec 4D v15 R4 ou dans les bases de données converties lorsque l'option decompatibilité Utiliser la nouvelle architecture pour les applications déployées est cochée (voir ci-dessus), le processusde connexion des applications clientes fusionnées a été modifié pour prendre en charge le cas où le serveur dédié n'est pasdisponible. Le scénario du démarrage d'une application cliente 4D est désormais le suivant :

L'application cliente tente de se connecter au serveur via le service de découverte (basé sur le nom du serveur, publiésur le même sous-réseau que l'application cliente). OUSi des informations de connexion valides sont présentes dans le fichier EnginedServer.4DLink à l'intérieur de sondossier, l'application cliente tente de se connecter à l'adresse du serveur spécifiée dans ce fichier. En cas d'échec, l'application cliente tente de se connecter au serveur à l'aide des informations présentes dans ledossier de préférences utilisateur de l'application (fichier lastServer.xml, cf. dernière étape).En cas d'échec, l'application cliente affiche une boîte de dialogue d'erreur de connexion.

Si l'utilisateur clique sur le bouton Sélectionner... (lorsqu'il été autorisé par le développeur 4D au moment de lagénération de l'application, voir ci-dessous), la boîte de dialogue standard "Connexion au serveur" est affichée.Si l'utilisateur clique sur le bouton Quitter, l'application client quitte.

Si la connexion est établie avec succès, les paramètres de cette connexion sont sauvegardés dans le dossier depréférences utilisateur de l'application cliente, ce qui permettra de les réutiliser ultérieurement en cas de besoin.

Sauvegarde du chemin du dernier serveur

Dans les bases de données créées avec 4D v15 R4 ou dans les bases de données converties lorsque l'option decompatibilité Utiliser la nouvelle architecture pour les applications déployées est cochée (voir ci-dessus), le chemin dudernier serveur utilisé est automatiquement sauvegardé dans un fichier nommé lastServer.xml placé dans le dossier depréférences utilisateur de l'application cliente. Ce dossier est situé à l'emplacement suivant :

prefsUtilisateur:=Dossier 4D(Dossier 4D actif)

Ce nouveau mécanisme permet de prendre en charge le cas où le serveur cible primaire est temporairement indisponiblepour une raison quelconque (par exemple pour une opération de maintenance). Lorsque ce cas se produit pour la premièrefois, la boîte de dialogue de sélection de serveur est affichée (si elle est autorisée, cf. ci-dessous) et l'utilisateur peut

- 10 -

Page 11: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

manuellement sélectionner un serveur alternatif, dont le chemin est alors sauvegardé si la connexion est établie et validée.Toute indisponibilité ultérieure sera alors automatiquement prise en charge à l'aide des paramètres de connexion présentsdans le fichier lastServer.xml.Notes :

Lorsque les applications clientes ne peuvent pas bénéficier du service de découverte, par exemple à cause de laconfiguration réseau, il reste recommandé que le développeur indique un nom d'hôte lors de la génération del'application à l'aide de la clé IPAddress dans le fichier BuildApp.xml. Ce nouveau mécanisme est conçu pour les casd'indisponibilité temporaire uniquement.Dans tous les cas, il est possible de maintenir la touche Alt/Option au démarrage de l'application cliente afin d'afficherla boîte de dialogue de sélection du serveur.

Accès à la boîte de dialogue de sélection de serveur en cas d'erreur

A compter de 4D v15 R4, il est possible de ne pas afficher automatiquement la boîte de dialogue standard de sélection deserveur sur les applications clientes fusionnées lorsque le serveur ne répond pas.La configuration dans ce cas dépend de l'option de compatibilité Utiliser la nouvelle architecture pour les applicationsdéployées ainsi que de la valeur de la nouvelle clé XML ServerSelectionAllowed (cf. paragraphe suivant) sur le poste quigénère l'application. Vous disposez de trois possibilités :

Affichage d'un message d'erreur sans accès possible à la boîte de dialogue de sélection de serveurFonctionnement par défaut pour les bases de données créées à partir de 4D v15 R4. L'application peut uniquementquitter. Ce fonctionnement est obtenu avec la configuration suivante :

Option Utiliser la nouvelle architecture pour les applications déployées : cochéeClé XML ServerSelectionAllowed : valeur False ou clé omise

Affichage d'un message d'erreur avec accès possible à la boîte de dialogue de sélection de serveur.L'utilisateur peut accéder à la fenêtre de sélection de serveur en cliquant sur le bouton Sélectionner... Cefonctionnement est obtenu avec la configuration suivante :

Option Utiliser la nouvelle architecture pour les applications déployées : cochéeClé XML ServerSelectionAllowed : valeur True

=>

Affichage direct de la boîte de dialogue de sélection de serveur.Fonctionnement par défaut pour les bases de données converties. Ce fonctionnement est celui des versionsprécédentes de 4D. Il est obtenu avec la configuration suivante :

Option Utiliser la nouvelle architecture pour les applications déployées : non cochéClé XML ServerSelectionAllowed : ignorée

- 11 -

Page 12: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Nouvelle clé XML ServerSelectionAllowed Lorsque l'option de compatibilité Utiliser la nouvelle architecture pour les applications déployées est cochée, vouspouvez configurer l'application cliente à l'aide de la nouvelle clé XML "ServerSelectionAllowed" disponible dans le générateurd'applications :

/Preferences4D/BuildApp/CS/ServerSelectionAllowed

Lorsque cette clé est définie :

Si elle vaut true, l'application affichera la boîte de dialogue d'erreur de connexion avec accès à la boîte de dialogue desélection de serveur.Si elle vaut false, l'application affichera la boîte de dialogue d'erreur de connexion sans accès à la boîte de dialogue desélection de serveur.

Rappel : Quelle que soit la configuration définie, appuyer sur la touche Alt/Option au démarrage de l'application clientepermet toujours d'afficher la boîte de dialogue de sélection de serveur.

- 12 -

Page 13: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Nouvel objet 4D Write Pro dans la bibliothèque d'objets

Dans 4D v15 R4, la bibliothèque d'objets préconfigurés de l'éditeur de formulaires inclut le nouvel objet de formulaire 4DWrite Pro. Pour accéder à la bibliothèque d'objets, il suffit de cliquer sur l'icône dans la barre d'outils de l'éditeur de

formulaires :

Le nouvel objet de fomulaire 4D Write Pro est placé dans le thème "Zones de saisie" :

Glisser-déposer cet objet dans un formulaire insère automatiquement une zone 4D Write Pro préconfigurée associée à unsous-formulaire widget 4D Write Pro contenant plusieurs pages de panneaux de contrôle permettant de gérer le contenu de lazone :

En exécution, le premier panneau est affiché avec une barre d'outils contenant 7 icônes par défaut :

- 13 -

Page 14: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Cliquer sur une icône de la barre d'outils affiche le panneau correspondant (les panneaux sont détaillés ci-dessous) :

Caractères

Marges et alignements

Tabulations

Tailles

Encadrements

Arrière-plan

Base de données et Informations

De plus, le widget contient un bouton gérant des opérations avancées de Copier/coller associé à un menu contextuel :

Caractères

Ce panneau permet de gérer les styles de police standard et les propriétés de texte de la zone 4D Write Pro.Les éléments disponibles dans le menu Style varient en fonction de la police sélectionnée :

Note : La taille de police est toujours exprimée en points indépendamment de l'unité définie pour le document.Le menu Align. vert. permet de modifier le texte en indice ou en exposant et le menu Transform. permet de choisir parmidifférentes combinaisons de casse :

Le bouton Copier/coller copie le style appliqué au texte sélectionné. La ligne Coller style est automatiquement ajoutée

au menu après la copie d'une sélection de texte, vous permettant de réappliquer le style à d'autres endroits. Notez que cemécanisme ne fonctionne que lorsque la sélection contient un ensemble homogène de styles.

Marges et alignements

- 14 -

Page 15: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Ce panneau gère les propriétés d'alignement standard du texte et définit les marges de la zone 4D Write Pro.En plus des paramètres appliqués à la totalité du document, l'alignement du texte et les marges peuvent être définisindividuellement pour chaque paragraphe et/ou image. Utilisez les icônes situées en haut du panneau afin de configurer lesparamètres séparément pour chaque type d'élément ( pour le document, pour le paragraphe courant et pour

une image sélectionnée).

Tabulations

Ce panneau gère les tabulations des paragraphes dans la zone 4D Write Pro. Toute valeur Indentation définie soit à l'aide de la règle, soit en saisissant une valeur directement dans la zone, est utiliséepar défaut comme distance de décalage entre chaque tabulation ajoutée. Lorsque vous cliquez sur un Type de tabulation, ilest appliqué à toutes les tabulations déjà définies pour le paragraphe.Vous pouvez modifier manuellement des tabulations individuelles en saisissant une nouvelle valeur de Position directementdans la cellule et/ou en choisissant un nouveau Type dans le menu :

Note : Modifier la valeur de Indentation ou de Type à l'aide des contrôles dans la partie supérieure du panneau réinitialiseles modifications individuelles éventuellement effectuées dans la liste des tabulations.Cliquer sur le bouton ajoute une nouvelle tabulation par défaut dans le paragraphe. Vous pouvez supprimer toutetabulation en la sélectionnant dans la liste puis en cliquant sur le bouton .Les tabulations sont appliquées au paragraphe courant ou à la sélection de paragraphes. Vous pouvez également utiliser lebouton Copier/coller pour copier et coller des paramètres de tabulations.

- 15 -

Page 16: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Tailles

Ce panneau permet de gérer les unités utilisées pour le document 4D Write Pro et de définir la taille des paragraphes et desimages qu'il contient.Les unités sont définies pour la totalité du document. Note : Quelle que soit l'unité du document, la taille de la police (cf.paragraphe Caractères), ainsi que la largeur des lignes et l'angle des encadrements (voir le panneau Encadrements) sonttoujours définis en points.Les paragraphes peuvent avoir une largeur fixe ou variable et les images peuvent être définies avec une taille fixe ou unehauteur/largeur minimum. Lorsqu'une valeur de taille est "auto", elle est basée sur le contenu de l'élément.La zone Texte alternatif vous permet de saisir un message de substitution qui s'affichera au cas où l'image ne pourrait pasêtre affichée.

Encadrements

Ce panneau gère les encadrements et le padding (marges intérieures) dans la zone 4D Write Pro.Les encadrements peuvent être définis pour la totalité du document ou pour les paragraphes, ou encore pour les images.Utilisez les icônes dans la partie supérieure du panneau pour désigner le type d'élément à paramétrer, i.e. pour ledocument, pour un paragraphe et pour une image.

Note : Les styles d'encadrement Double, Groove, Ridge et Inset ne sont pas visibles avec la largeur de trait par défaut (1 pt).L'option Rayon permet de définir les angles arrondis des encadrements. A noter que ce paramètre ne peut pas être définipour les styles d'encadrement Groove, Ridge et Inset.Le bouton Copier/coller permet de copier et coller des encadrements ainsi que le padding entre deux paragraphes (ou

deux images).

Arrière-plan

- 16 -

Page 17: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Ce panneau gère les images d'arrière-plan de la zone 4D Write Pro. Vous pouvez glisser-déposer des images ou des URLsdirectement dans la zone Image. Vous pouvez également cliquer avec le bouton droit dans la zone Image afin d'afficher uneliste de motifs d'arrière-plan disponibles par défaut. Vous pouvez définir la position et la taille de chaque image ou motif ainsique des paramètres personnalisés. Vous pouvez utiliser l'icône pour supprimer une image ou un motif existant(e).

Les images d'arrière-plan peuvent être définies au niveau du document ( ) et/ou pour chaque paragraphe ( ). Vous

pouvez également définir une image d'arrière-plan pour une image du document ( ).

Le bouton Copier/coller permet de copier et coller une image d'arrière-plan ainsi que ses paramètres entre deux

paragraphes (ou deux images).

Base de données et informations

Ce panneau insère et gère les expressions 4D et les URLs dans la zone 4D Write Pro. Il contient également une zonepermettant de saisir les informations d'identification au document. Les éléments suivants sont disponibles :

Date : insère la date courante à l'emplacement du curseur.Expression (bouton) : ouvre l'éditeur de formules de 4D, vous permettant de créer ou de charger une expression 4Dqui sera insérée à l'emplacement du curseur.Expression (zone) : affiche l'expression 4D sélectionnée sous forme de référence.Affichage Valeurs/Expressions : permet de sélectionner le mode d'affichage des expressions 4D expressions(Valeurs = résultat de l'évaluation de l'expression, Expressions = référence de l'expression)

- 17 -

Page 18: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Calculer : recalcule les valeurs des expressions 4D dans le document.Figer : transforme les expressions 4D en texte simple (ne peut être annulé).Sélection uniquement : cochez cette option pour limiter l'action des boutons Calculer et Figer au texte sélectionnédans la zone 4D Write Pro. Lorsque cette option n'est pas cochée, ces actions s'appliquent à l'ensemble du document.Libellé/Lien : affiche l'adresse cible et le libellé visible de l'URL sélectionné.Appliquer : affiche une boîte de dialogue vous permettant de saisir ou de modifier une URL (adresse et libellé).

Note : La zone 4D Write Pro doit avoir le focus pour que les parties Expression 4D et URL du panneau soient actives.DocumentLes informations d'identification saisies dans cette section sont stockées dans le document mais ne sont pas affichées. Pardéfaut, le "Titre" est "Nouveau Document 4D Write Pro". Les zones "Création" et "Modification" ne peuvent pas êtremodifiées.

Afficher les panneaux séparément

Par défaut, le sous-formulaire widget 4D Write Pro propose un ensemble complet de panneaux de contrôle, qui sontregroupés dans le formulaire détaillé "WP_Palette" du widget. Cependant, vous pouvez aussi utiliser chaque panneauséparément en sélectionnant le formulaire détail approprié dans la Liste des propriétés :

Par exemple, si vous sélectionnez "WP_Palette_Fonts" en tant que formulaire détail, vous obtenez le panneau suivant dansvotre formulaire :

Personnaliser l'interface du widget

L'interface des panneaux de contrôle peut être modifiée de manière à utiliser des skins et des polices différentes. Il vous suffitpour cela de modifier la méthode objet de la zone 4D Write Pro associée.Assurez-vous que la variable objet de la zone 4D Write Pro contient les attributs obligatoires suivants (ils sont inclusautomatiquement dans la méthode objet par défaut) :

selection : utilisé par les commandes 4D Write Pro telles que WP LIRE ATTRIBUTS et WP FIXER ATTRIBUTSzoneName : utilisé par les commandes ST.

Un troisième attribut optionnel (nommé "skin") peut être ajouté afin de personnaliser l'apparence du panneau de contrôle. Lavaleur de cet attribut est un objet ($WP_skin dans l'exemple ci-dessous) qui peut contenir les attributs suivants (tousoptionnels) :

skinName : les valeurs peuvent être "black", "dark", "grey", "light", "white" ou "night"backgroundColor : ex. 0x00A0A0A0separatorColor : ex. 0x00D04060fontColor : ex. 0x002080C0separatorFontColor : ex. 0x00803000

- 18 -

Page 19: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

font : font family, ex. "Times"fontSize : ex. 12scrollbar* : Vrai ou Faux *La barre de défilement peut être utilisée et activée uniquement lorsque l'objet de formulaire 4D Write Pro peut êtreredimensionné verticalement (Propriété "Dim. vertical" sur "Agrandir").

Pour plus d'informations sur les attributs de 4D Write Pro, veuillez vous reporter à la section Attributs 4D Write Pro.Exemple de code permettant de personnaliser l'interface des panneaux de contrôle du widget :

C_OBJET($WP_skin) OB FIXER($WP_skin;"skinName";$skinName) // "black","dark", "grey", "light", "white", ou"night" OB FIXER($WP_skin;"backgroundColor";0x00A0A0A0) //définit la couleur de fond du panneau OB FIXER($WP_skin;"separatorColor";0x00D04060) //définit la couleur de fond des zones deséparation OB FIXER($WP_skin;"fontColor";0x002080C0) //définit la couleur de police du texte dupanneau OB FIXER($WP_skin;"separatorFontColor";0x00803000) //définit la couleur de police du textedes zones de séparation OB FIXER($WP_skin;"font";"Times") // définit la police utilisée OB FIXER($WP_skin;"fontSize";13) // définit la taille de police OB FIXER($WP_skin;"scrollbar";Vrai) // Ensuite il suffit d'affecter l'attribut personnalisé à l'objet 4D Write Pro OB FIXER($WP_object;"skin";$WP_skin)

- 19 -

Page 20: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Langage

Balises de transformation 4D FICHIER HISTORIQUE VERS JSON GRAPHE INTEGRER FICHIER HISTORIQUE MIROIR LANCER PROCESS EXTERNE Lire parametre base et FIXER PARAMETRE BASE LISTBOX Lire tableau, LISTBOX FIXER TABLEAU, LISTBOX LIRE TABLEAUX LISTE DES POLICES LISTE STYLES POLICE METHODE LIRE CODE OB Lire et OB FIXER OBJET Lire alignement horizontal et OBJET FIXER ALIGNEMENT HORIZONTAL REACTIVER TRANSACTION Suspendre et réactiver les transactions SUSPENDRE TRANSACTION Transaction active Utiliser les commentaires 4DVAR au lieu des crochets (option supprimée) VALEURS DISTINCTES Variable système Error formula WEB Lire nombre process session

- 20 -

Page 21: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Balises de transformation 4D

Plusieurs nouveautés concernent les balises de transformation dans 4D v15 R4 :

prise en charge d'une syntaxe alternative conforme à la norme XML, permettant l'utilisation de templates XML valides. nouvelle balise "4DCODE" qui permet l'insertion de blocs de code 4D,utilisation du "." comme séparateur décimal afin d'obtenir du code indépendant des paramétrages régionaux.

Note : L'option de compatibilité obsolète "Utiliser les commentaires 4DVAR au lieu des crochets" n'est désormais plus priseen charge (cf. paragraphe Utiliser les commentaires 4DVAR au lieu des crochets (option supprimée)).

Nouvelle syntaxe avec $ pour 4DTEXT, 4DHTML, 4DEVAL

Plusieurs balises de transformation 4D existantes peuvent désormais être exprimées à l'aide d'une nouvelle syntaxe utilisantle $ :$4dbalise (expression) peut remplacer <!--#4dbalise expression-->Conditions de prise en chargeLa syntaxe avec $ est utilisable uniquement avec certaines balises et dans certains contextes d'évaluation :

BalisesSeules les balises qui traitent et retournent des valeurs acceptent cette syntaxe :

4DTEXT4DHTML4DEVAL

EvaluationLa syntaxe $ déclenche l'évaluation des balises par 4D uniquement dans les cas où l'évaluation est explicite :

commande TRAITER BALISES 4Dpages statiques .shtml servies directement par le serveur Web via des URLspages insérées via la balise 4DINCLUDE

Pour les autres balises (4DIF, 4DSCRIPT...) et dans les autres contextes d'évaluation (commandes WEB ENVOYERFICHIER, WEB ENVOYER BLOB et WEB ENVOYER TEXTE), la syntaxe $ n'est pas prise en charge, il est nécessaired'utiliser la syntaxe standard.Mode d'utilisationVous pouvez désormais écrire par exemple :

$4DEVAL(NomUtilisateur)

au lieu de :

<!--#4DEVAL(NomUtilisateur)-->

Le principal avantage de cette nouvelle syntaxe est qu'elle vous permet d'écrire des templates conformes à la normeXML. Certains développeurs 4D ont besoin d'écrire et de valider des templates à base d'XML et en utilisant des éditeursstandard. Comme le caractère "<" est interdit dans une valeur d'attribut XML, il n'est pas possible d'utiliser la syntaxe "<!-- -->"pour les balises 4D sans rendre le document invalide du point du vue du XML. Parallèlement, échapper le caractère "<"empêche 4D d'interpréter correctement les balises. Par exemple, le code suivant provoquera une erreur d'analyse XML à cause du premier caractère "<" dans la valeur del'attribut :

<line x1="<!--#4DEVAL $x-->" y1="<!--#4DEVAL $graphY1-->"/>

- 21 -

Page 22: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Grâce à la syntaxe $, le code suivant sera en revanche parfaitement validé par l'analyseur XML :

<line x1="" y1=""/>

A noter que les syntaxes $4dbalise et <--#4dbalise --> ne sont pas strictement équivalentes : à la différence de <--#4dbalise -->, le traitement de $4dbalise n'effectuera pas d'interprétation récursive des balises. Les balises $ sont toujours évaluées uneseule fois et le résultat est considéré comme du texte brut.Note : Pour plus d'informations sur ce point, veuillez vous référer au paragraphe Récursivité du traitement.La raison de cette différence est la prévention de l'injection de code malveillant. Comme expliqué dans le manuel Langage de4D (cf. note), il est fortement recommandé d'utiliser des balises 4DTEXT au lieu de balises 4DHTML lorsque le codemanipule du texte saisi par les utilisateurs, de manière à empêcher toute réinterprétation des balises : avec 4DTEXT, lescaractères spéciaux tels que "<" sont échappés, et donc toute balise 4D utilisant la syntaxe <!--#4dbalise expression -->perdra sa signification spécifique. Cependant, comme 4DTEXT n'échappe pas le symbole $, nous avons décidé de renoncerà prendre en charge la récursivité des traitements afin de rendre impossible toute injection de code malveillant via la syntaxe$4dbalise (expression).Les exemples suivants montrent le résultat du traitement en fonction de la syntaxe et de la balise utilisées :

// exemple 1 myName:="<!--#4DHTML QUITTER 4D-->" //injection de code malveillant input:="Mon nom est : <!--#4DHTML myName-->" TRAITER BALISES 4D(input;output) //4D quitte !

// exemple 2 myName:="<!--#4DHTML QUITTER 4D-->" //injection de code malveillant input:="Mon nom est : <!--#4DTEXT myName-->" TRAITER BALISES 4D(input;output) //output vaut "Mon nom est : &lt;!--#4DHTML QUITTER 4D--&gt;"

// exemple 3 myName:="" //injection de code malveillant input:="Mon nom est : <!--#4DTEXT myName-->" TRAITER BALISES 4D(input;output) //output is "Mon nom est : $4DEVAL(QUIT 4D)"

Notez que la syntaxe $4dbalise prend en charge les paires fermantes de guillemets ou de parenthèses incluses. Parexemple, supposons que vous souhaitez évaluer la chaîne complexe suivante (exemple théorique) :

String(1) + "\"(hello)\""

Vous pouvez écrire :

input:="$4DEVAL( String(1)+\"\\\"(hello)\\\"\")" TRAITER BALISES 4D(input;output) -->output vaut 1"(hello)"

Balise 4DCODE

- 22 -

Page 23: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Syntaxe : <!--#4DCODE code4D-->La nouvelle balise 4DCODE vous permet d'insérer un bloc de code 4D multi-lignes dans un template.Lorsqu'une séquence "<!--#4DCODE" suivie d'un caractère espace, CR ou LF est détectée, 4D interprète directement toutesles lignes de code jusqu'à la séquence "-->" suivante. Le bloc de code lui-même peut contenir des retours chariot, des retoursligne, ou les deux ; il sera interprété séquentiellement par 4D.Par exemple, à l'aide de la balise 4DCODE, vous pouvez écrire dans un template :

<!--#4DCODE//Initialisation des paramètres

$graphType:=1If(OB Is defined:C1231($graphParameters;"graphType")) //langage US uniquement $graphType:=OB GET:C1224($graphParameters;"graphType") If($graphType=7) $nbSeries:=1 If($nbValues>8) DELETE FROM ARRAY:C228 ($yValuesArrPtr{1}->;9;100000) $nbValues:=8 End if End ifEnd if-->

Note : Dans une balise 4DCODE, le code 4D doit toujours être écrit en langage Anglais-US. 4DCODE ne tient pas comptede la préférence "Utiliser paramètres régionaux système " pour le langage 4D (voir Langue des commandes et desconstantes ).La balise 4DCODE inclut les fonctionnalités suivantes :

La commande TRACE est prise en charge et active le débogueur de 4D, vous permettant donc de déboguer le codede votre template.Toute erreur est affichée via la boîte de dialogue standard d'erreur qui propose à l'utilisateur de stopper l'exécution ducode ou d'ouvrir le débogueur.Les lignes du texte situé entre <!--#4DCODE et --> peuvent utiliser tout type de convention de fin de ligne (cr, lf ou crlf).Le texte est tokenisé dans le contexte de la base qui a appelé la commande TRAITER BALISES 4D. Ce principe estimportant pour la reconnaissance des méthodes projet par exemple. Note : La propriété de méthode "Disponible via les balises HTML et les URLs 4D" n'est pas prise en compte (voirégalement ci-dessous Note à propos de la sécurité).Même si le texte utilise toujours la langue Anglais-US, il est recommandé d'utiliser la syntaxe avec tokens (:Cxxx) pourles noms des commandes et des constantes afin d'éliminer les problèmes potentiels liés au renommage descommandes ou des constantes entre deux versions de 4D. Note : Pour plus d'informations sur la syntaxe :Cxxx, veuillez vous référer à la section Utiliser des tokens dans lesformules.

Note à propos de la sécurité : Le fait que les balises 4DCODE puissent appeler n'importe quelle commande 4D ouméthode projet pourrait être perçu comme une faille de sécurité, notamment lorsque la base est accessible via HTTP.Cependant, comme elle exécute côté serveur du code appelé depuis vos propres fichiers de templates, la balise elle-mêmene pose aucun problème de sécurité. Dans ce contexte, comme pour tout serveur Web, la sécurité doit avant tout êtreoptimale au niveau des accès distants aux fichiers du serveur.

Utilisation du . comme séparateur décimal

A compter de la version 15 R4, 4D utilise toujours le point (.) comme séparateur décimal lors de l'évaluation d'une expressionnumérique via une balise 4DTEXT, 4DVAR, 4DHTML, 4DHTMLVAR ou 4DEVAL. Les paramètres régionaux sont désormaisignorés dans ce contexte.Ce fonctionnement facilite la maintenance et la compatibilité du code entre les diverses versions et langues de 4D. Par exemple, quels que soient les paramètres régionaux :

value:=10/4 input:="<!--#4DTEXT value-->" TRAITER BALISES 4D(input;output) // retourne toujours 2.5 même si les paramètres régionaux déclarent le ',' commeséparateur

- 23 -

Page 24: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Note de compatibilité : Si votre code évalue des expressions numériques via des balises 4D et en tenant compte desparamètres régionaux, il vous sera nécessaire de l'adapter à l'aide de la commande Chaine :

Pour obtenir value avec le point comme séparateur décimal : <!--#4DTEXT value-->Pour obtenir value avec le séparateur décimal défini dans les paramètres régionaux : <!--#4DTEXT Chaine(value)-->

- 24 -

Page 25: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

GRAPHE

GRAPHE ( graphImage ; graphNum | graphParams ; xCatégories {; zValeurs} {; zValeurs2 ; ... ; zValeursN} )

Paramètre Type Description

graphImage Variable image -> Picture variable

graphNum |graphParams

Entier long |Objet

->

Entier long : Numéro de type de graphe, Objet : Paramètres dugraphe

xCatégories Array -> Catégories sur l'axe des x

zValeurs Array -> Valeurs à représenter graphiquement (jusqu'à 8 valeurs)

Description

Note : Cette nouvelle fonctionnalité est disponible uniquement dans les versions 64 bits de 4D (sauf 4D Server Windows64 bits). Voir aussi 4D Developer Edition version 64 bits (préversion).La commande GRAPHE accepte désormais une valeur de type Objet comme second paramètre (graphParams).Cette nouvelle syntaxe vous permet de définir le type de graphe ainsi que tous ses paramètres spécifiques (légende, xmin,etc.) en un seul appel -- avec l'ancienne syntaxe (graphNum en second paramètre), vous deviez effectuer un appelcomplémentaire à la commande PARAMETRES DU GRAPHE(*) afin de définir ces paramètres. Avec ce principe, vouspouvez sauvegarder les graphes générés en tant qu'images SVG et les afficher dans un navigateur standard tel que FireFox,Chrome, IE ou Safari (les graphes générés sont conformes au SVG standard implémenté dans les navigateurs).En outre, la nouvelle syntaxe donne accès à de nombreux nouveaux paramètres, vous permettant de personnaliser, entreautres, l'espacement entre les barres, les marges, les couleurs de barres, etc.(*) Si la syntaxe avec l'objet graphParams est utilisée, la commande PARAMETRES DU GRAPHE ne doit PAS êtreappelée.Dans le paramètre graphParams, vous devez passer un objet qui contient les diverses propriétés du graphe que voussouhaitez définir. Pour cela, vous pouvez utiliser les constantes suivantes, placées dans le nouveau thème "Paramètre desgraphes" :

Constante Type Valeur CommentGrapheafficher lalégende

Chaîne displayLegendValeurs possibles : BooléenValeur par défaut : Vrai

Graphecouleur fond Chaîne graphBackgroundColor Valeurs possibles : Expression couleur norme SVG (texte),

par exemple "#7F8E00", "Pink" ou "#0a1414"

Graphecouleur fonddocument

Chaîne documentBackgroundColor

Valeurs possibles : Expression couleur SVG (texte), parexemple "#7F8E00", "Pink" ou "#0a1414". Lorsqu'un grapheenregistré sous forme d'image SVG est ouvert dans une autreapplication, la couleur de fond du document est affichéeuniquement si le moteur de rendu SVG prend en charge lanorme SVG tiny 1.2 (prise en charge sur IE, Firefox mais passur Chrome).

Graphecouleurombre

Chaîne graphBackgroundShadowColor Valeurs possibles : Expression couleur SVG (texte), parexemple "#7F8E00", "Pink" ou "#0a1414"

Graphecouleurpolice

Chaîne fontColor Valeurs possibles : Expression couleur SVG (texte), parexemple "#7F8E00", "Pink" ou "#0a1414".

Graphecouleurpolicelégende

Chaîne legendFontColor Valeurs possibles : Expression couleur SVG (texte), parexemple "#7F8E00", "Pink" ou "#0a1414"

- 25 -

Page 26: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Graphecouleurs Chaîne colors

Valeurs possibles : Tableau texte. Couleurs pour chaquesérie de graphe.Valeurs par défaut : Blue-green (#19BAC9), Yellow(#FFC338), Purple (#573E82), Green (#4FA839), Orange(#D95700), Blue (#1D9DF2), Yellow-green (#B5CF32), Red(#D43A26)

Graphedécalagesecteurs

Chaîne pieShiftValeurs possibles : RéelsValeur par défaut : 8

Grapheépaisseurdes lignes

Chaîne lineWidthValeurs possibles : RéelsValeur par défaut : 2

Grapheespacementcolonnes

Chaîne columnGapValeurs possibles : Entier longValeur par défaut : 12Définit l'espacement entre les colonnes du graphe

Grapheespacementicôneslégende

Chaîne legendIconGap Valeurs possibles : RéelValeur par défaut : Graphe hauteur icônes légende/2

Graphehauteur despoints

Chaîne plotHeightValeurs possibles : RéelsValeur par défaut : 12

Graphehauteuricôneslégende

Chaîne legendIconHeight Valeurs possibles : RéelsValeur par défaut : 20

Graphehauteur pardéfaut

Chaîne defaultHeightValeurs possibles : RéelValeur par défaut : 400. Si graphType=7 (secteurs), valeurdéfaut = 600

Graphelargeur despoints

Chaîne plotWidthValeurs possibles : RéelValeur par défaut : 12

Graphelargeuricôneslégende

Chaîne legendIconWidth Valeurs possibles : RéelValeur par défaut : 20

Graphelargeur maxcolonne

Chaîne columnWidthMaxValeurs possibles : RéelValeur par défaut : 200

Graphelargeur mincolonne

Chaîne columnWidthMinValeurs possibles : RéelValeur par défaut : 10

Graphelargeur pardéfaut

Chaîne defaultWidthValeurs possibles : RéelValeur par défaut : 600. Si graphType=7 (Secteurs), valeurpar défaut = 800

Graphelibelléslégende

Chaîne legendLabels Valeurs possibles : Tableau texte. S'il est manquant, 4Daffiche des icônes sans texte.

Graphemargebasse

Chaîne bottomMarginValeurs possibles : Nombre réelValeur par défaut : 12

Graphemargedroite

Chaîne rightMarginValeurs possibles : RéelsValeur par défaut : 2

Graphemargegauche

Chaîne leftMarginValeurs possibles : RéelValeur par défaut : 12

Graphemargehaute

Chaîne topMarginValeurs possibles : RéelsValeur par défaut : 2

Grapheopacité fond Chaîne graphBackgroundOpacity Valeurs possibles : Entier long entre 0 et 100

Valeur par défaut : 100

Constante Type Valeur Comment

- 26 -

Page 27: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Grapheopacité fonddocument

Chaîne documentBackgroundOpacity

Valeurs possibles : Entier long (0 à 100). Lorsqu'un grapheenregistré sous forme d'image SVG est ouvert dans une autreapplication, l'opacité du fond du document est affichéeuniquement si le moteur de rendu SVG prend en charge lanorme SVG tiny 1.2 (prise en charge sur IE, Firefox mais passur Chrome).Valeur par défaut : 100

Grapherayon despoints

Chaîne plotRadiusValeurs possibles : RéelsValeur par défaut : 12

Graphetaille police Chaîne fontSize

Valeurs possibles : Entier longValeur par défaut : 12. Si graphType=7 (Secteurs), voirGraphe taille police des secteurs

Graphetaille policedessecteurs

Chaîne pieFontSize Valeurs possibles : RéelsValeur par défaut : 16

Graphe type Chaîne graphType

Valeurs possibles : Entier long [1 à 8] où 1 = colonnes, 2 =colonnes proportionnelles, 3 = colonnes empilées, 4 = lignes,5 = aires, 6 = points, 7 = secteurs, 8 = images. Valeur par défaut : 1Si la valeur est nulle, le graphe n'est pas dessiné et aucunmessage d'erreur n'est affiché. Si la valeur est trop grande, legraphe n'est pas dessiné et un message d'erreur est affiché.Pour les graphes de type image (valeur=8), les imagesutilisées doivent être stockées dans le dossier suivant :4D/Resources/GraphTemplates/Graph_8_Pictures/. Les nomsdes fichiers image sont libres ; 4D trie les fichiers contenusdans le dossier et affecte le premier fichier au premier graphe.Ces fichiers peuvent être de type SVG ou image.

GraphexGrille Chaîne xGrid

Valeurs possibles : BooléenValeur par défaut : VraiUtilisé uniquement avec les types proportionnels 4 et 6

GraphexMax Chaîne xMax

Valeurs possibles : Nombre, Date, Heure (même type que leparamètre xCatégories). Seules les valeurs inférieures à xMax sont affichées dans legraphe. xMax est utilisé uniquement pour les graphes de type4, 5, or 6 si xProp=Vrai et si xCatégories est de typenumérique, date ou heure. Si ce paramètre est manquant ou sixMin>xMax, 4D calcule automatiquement la valeur xMax.

GraphexMin Chaîne xMin

Valeurs possibles : Nombre, Date, Heure (même type que leparamètre xCatégories). Seules les valeurs supérieures xMin sont affichées dans legraphe. xMin est utilisé uniquement pour les graphes de type4, 5, or 6 si xProp=Vrai et si xCatégories est de typenumérique, date ou heure. Si ce paramètre est manquant ou sixMin>xMax, 4D calcule automatiquement la valeur xMin.

GraphexProp Chaîne xProp

Valeurs possibles : BooléenValeur par défaut : FauxVrai pour un axe x proportionnel, Faux pour un axe x normal.Utilisé uniquement avec les types proportionnels 4, 5 et 6

GrapheyGrille Chaîne yGrid Valeurs possibles : Booléen

Valeur par défaut : Vrai

GrapheyMax Chaîne yMax

Valeurs possibles : NombresSi ce paramètre est manquant, 4D calcule automatiquement lavaleur yMax.

GrapheyMin Chaîne yMin

Valeurs possibles : NombresSi ce paramètre est manquant, 4D calcule automatiquement lavaleur yMin.

Constante Type Valeur Comment

Exemple 1

- 27 -

Page 28: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Syntaxe avec graphParams : Avec l'exemple suivant, vous dessinez un simple graphe en lignes basé sur des valeurs detemps :

C_IMAGE(vGraph) //Variable graphe TABLEAU HEURE(X;3) //Tableau pour l'axe des X X{1}:=?05:15:10? //libellé X n°1 X{2}:=?07:15:10? //libellé X n°2 X{3}:=?12:15:55? //libellé X n°3 TABLEAU REEL(A;3) //Tableau pour l'axe des Y A{1}:=30 //On ajoute quelques données A{2}:=22 A{3}:=50 TABLEAU REEL(B;3) //Un autre ableau pour l'axe des Y B{1}:=50 //On ajoute quelques données B{2}:=80 B{3}:=10 C_OBJET(vSettings) //Initialisation des paramètres du graphe OB FIXER(vSettings;Graphe type;4) //Type lignes TABLEAU TEXTE(aLabels;2) //Définition des légendes pour le graphe aLabels{1}:="Mary" aLabels{2}:="John" OB FIXER TABLEAU(vSettings;Graphe libellés légende;aLabels) GRAPHE(vGraph;vSettings;X;A;B) //On dessine le graphe

Exemple 2

Avec les mêmes valeurs, on ajoute des paramètres personnalisés pour obtenir une vue différente :

C_IMAGE(vGraph) //Variable graphe TABLEAU HEURE(X;3) //Tableau pour l'axe des X X{1}:=?05:15:10? //libellé X n°1 X{2}:=?07:15:10? //libellé X n°2 X{3}:=?12:15:55? //libellé X n°3 TABLEAU REEL(A;3) //Tableau pour l'axe des Y A{1}:=30 //On ajoute quelques données A{2}:=22 A{3}:=50 TABLEAU REEL(B;3) //Un autre ableau pour l'axe des Y

- 28 -

Page 29: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

B{1}:=50 //On ajoute quelques données B{2}:=80 B{3}:=10 C_OBJET(vSettings) //initialisation des paramètres du graphe OB FIXER(vSettings;Graphe type;4) //Type lignes TABLEAU TEXTE(aLabels;2) //On définit les légendes du graphe aLabels{1}:="Mary" aLabels{2}:="John" OB FIXER TABLEAU(vSettings;Graphe libellés légende;aLabels) //options OB FIXER(vSettings;Graphe xProp;Vrai) //proportionnel OB FIXER(vSettings;Graphe xGrille;Faux) //on enlève la grille verticale OB FIXER(vSettings;Graphe xMin;?03:00:00?) //on définit les limites OB FIXER(vSettings;Graphe xMax;?20:00:00?) GRAPHE(vGraph;vSettings;X;A;B) //On dessine le graphe

Exemple 3

Dans cet exemple, on personnalise divers paramètres :

C_IMAGE(vGraph) //variable du graphe TABLEAU TEXTE(X;5) //Création d'un tableau pour l'axe des X X{1}:="Monday" // 1er libellé X X{2}:="Tuesday" // 2e libellé X X{3}:="Wednesday" //etc. X{4}:="Thursday" X{5}:="Friday" TABLEAU ENTIER LONG(A;5) //Création d'un tableau pour l'axe des Y A{1}:=30 //On ajoute quelques données A{2}:=22 A{3}:=50 A{4}:=45 A{5}:=55 TABLEAU ENTIER LONG(B;5) //Création d'un autre tableau pour l'axe des Y B{1}:=50 //On ajoute quelques données B{2}:=80 B{3}:=10 B{4}:=5 B{5}:=72

- 29 -

Page 30: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

C_OBJET(vSettings) //Initialisation des paramètres du graphe OB FIXER(vSettings;Graphe type;1) //graphe en barres TABLEAU TEXTE(aLabels;2) //Définit les légendes pour le graphe aLabels{1}:="Mary" aLabels{2}:="John" OB FIXER TABLEAU(vSettings;Graphe libellés légende;aLabels) //options OB FIXER(vSettings;Graphe yGrille;Faux) //on enlève la grille verticale OB FIXER(vSettings;Graphe couleur fond;"#573E82") //on définit une couleur de fond OB FIXER(vSettings;Graphe opacité fond;40) TABLEAU TEXTE($aTcols;2) //on définit les couleurs du graphe $aTcols{1}:="#B5CF32" $aTcols{2}:="#D43A26" OB FIXER TABLEAU(vSettings;Graphe couleurs;$aTcols) GRAPHE(vGraph;vSettings;X;A;B) //On dessine le graphe

- 30 -

Page 31: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

INTEGRER FICHIER HISTORIQUE MIROIR

INTEGRER FICHIER HISTORIQUE MIROIR ( cheminAccès; numOpération {; mode {; objErreur}} )

Paramètre Type DescriptioncheminAccès Texte -> Nom ou chemin d’accès du fichier d’historique à intégrernumOpération Variable réel -> Numéro de la dernière opération intégrée ou -2 pour tout intégrer

<- Nouveau numéro de la dernière opération intégréemode Entier long -> 0=mode strict (mode par défaut), 1=mode réparation autoobjErreur Variable objet <- Opération(s) manquante(s)

Description

Note préliminaire : Cette commande fonctionne uniquement sur 4D Server et doit être exécutée via Executer sur serveurou dans une procédure stockée.La commande INTEGRER FICHIER HISTORIQUE MIROIR propose un nouveau mode d'intégration, plus flexible, danslequel les erreurs non critiques n'interrompent pas la procédure d'intégration ("réparation auto"). En outre, le paramètrenumOpération est désormais obligatoire.

Nouvelle syntaxe (second paramètre obligatoire) A compter de 4D v15 R4, le paramètre numOpération devient obligatoire. S'il est omis, une erreur est générée. Vous pouvezpasser -2 dans la variable pour intégrer toutes les opérations du fichier d'historique, quel que soit le numéro de la dernièreopération intégrée.Note de compatibilité : Cette nouvelle syntaxe constitue une rupture de compatibilité avec votre code existant si leparamètre numOpération n'était pas utilisé (une erreur sera générée). Dans ce cas, passez simplement une variable avecla valeur -2 dans la variable numOpération afin de rétablir le fonctionnement initial.

Nouveau mode réparation auto Vous pouvez utiliser le nouveau paramètre mode afin spécifier le mode d'intégration et le nouveau paramètre objErreur pourenregistrer les propriétés des erreurs. Ces deux paramètres sont optionnels. Dans mode, passez le mode d'intégration que vous souhaiter activer. Vous pouvez utiliser une des nouvelles constantessuivantes, placées dans le thème "Sauvegarde et restitution" :

Constante Type Valeur Description

Mode strict Entierlong 0 Utiliser le mode d'intégration avec contrôle strict des opérations (option par défaut).

Recommandé dans la plupart des cas.Moderéparationauto

Entierlong 1 Utiliser le mode flexible avec réparation automatique et remplir le paramètre

objErreur (si passé)

Mode strict : Dans ce mode, comme dans les versions précédentes de 4D, lorsqu'une erreur se produit au cours del'intégration, la procédure est stoppée et vous devez utiliser le CSM pour tracer l'erreur. Ce mode sécurisé est utilisépar défaut et est recommandé dans la plupart des cas.

Mode réparation auto : Dans ce mode, lorsqu'une erreur non critique est détectée, elle est "réparée" et l'intégration sepoursuit. Si vous avez passé le paramètre objErreur, chaque erreur est enregistrée et pourra être analysée par la suite.Les cas d'erreurs non critiques sont les suivants :

Le fichier d'historique demande à ajouter un enregistrement mais l'enregistrement existe déjà dans les données. Action de réparation : 4D met à jour l'enregistrement.Le fichier d'historique demande à mettre à jour un enregistrement mais l'enregistrement n'existe pas. Action de réparation : 4D ajoute l'enregistrement.Le fichier d'historique demande à supprimer un enregistrement mais l'enregistrement n'existe pas. Action de réparation : 4D ne fait rien.

Lorsqu'une de ces anomalies se produit en mode réparation auto, l'enregistrement concerné est automatiquement "réparé" etl'opération associée est enregistrée dans le paramètre objErreur. Une fois l'intégration terminée, le paramètre objErreurcontient la liste de tous les enregistrements réparés. Il se compose d'un unique tableau d'objets nommé "operations",structuré de la manière suivante :

- 31 -

Page 32: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

{"operations": [ { "operationType":24, "operationName":"Create record", "operationNumber":2, "contextID":48, "timeStamp":"2015-07-10T07:53:02.413Z", "dataLen":24, "recordNumber":0, "tableID":"F4CXXXXX", "tableName":"Customers", "fields": { "1": 9, "2": "test value", "3": "2003-03-03T00:00:00.000Z", "4": "BlobPath: Table 1/Field4/Data_9ACB28F1A2744FDFA5822B22F18B2E12.png", "8": "BlobID: 2" } }, {...} ]

Attention : Le mode réparation auto doit être activé dans des cas spécifiques car il contourne les sécurités intégrées de 4Dchargées de contrôler l'intégrité des données. Il peut être utilisé, par exemple, lorsqu'un fichier d'historique intermédiaire a étéperdu ou corrompu et que vous souhaitez récupérer autant d'opérations que possible. Dans tous les cas, vous devez êtreparticulièrement vigilant en ce qui concerne l'intégrité des données lorsque ce mode est activé.

La liste effective des propriétés présentes dans l'objet "operations" dépend du type d'opération (i.e.: création, suppression oumodification de l'enregistrement, créer Blob, etc.). Les principales propriétés sont les suivantes :

operationType : Code interne de l'opérationoperationName : Type d'opération, par exemple "create record," "modify record"operationNumber : Numéro interne de l'opération dans le fichier d'historiquecontextID : ID du contexte d'exécution ; le contexte est détaillé dans la section extraDatatimeStamp : horodatage de l'opération dans le fichier d'historiquedataLen : taille interne des donnéesrecordNumber : numéro interne d'enregistrementtableID : ID interne de la tabletableName : nom de la tablefields : objet contenant la liste des numéros de champ ainsi que leur valeur. Tous les champs de la table sont listés. Dans le cas de valeurs de type Blob ou image, différentes informations sont stockées en fonction de leur mode destockage :

si le Blob ou l'image est stocké(e) dans le fichier de données, la propriété sera "BlobID:"+ un numéro de Blobinterne, par exemple : "BlobID:1"si le Blob ou l'image est stocké(e) à l'extérieur du fichier de données, la propriété sera "BlobPath:" + chemin dufichier, par exemple : "BlobPath: Table 1/Field 6/Data_EE12D091535F9748BCE62EDE972A4BA2.jpg"

extraData : données du contexte de l'utilisateur, incluant son nom et son ID, le nom et l'ID de la tâche, le nom de lamachine hôte ainsi que la version du client. sequenceNumber : numéro courant au sein d'une séquence d'incrémentation automatique.primaryKey : valeur de clé primaire.

Exemple

Vous voulez intégrer un fichier d'historique sur le serveur miroir en mode réparation auto :

//à exécuter sur le serveur C_OBJET($err) C_ENTIER LONG($num) //-2 pour tout intégrer INTEGRER FICHIER HISTORIQUE MIROIR("c:\\mirror\\logNew.journal";$num;Mode réparationauto;$err)

- 32 -

Page 33: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

LANCER PROCESS EXTERNE

LANCER PROCESS EXTERNE (nomFichier {; fluxEntrée {; fluxSortie {; fluxErreur}}} {; pid})

Paramètre Type DescriptionnomFichier Chaîne -> Chemin d’accès et arguments du fichier à lancer fluxEntrée Chaîne, BLOB -> Flux d’entrée (stdin)fluxSortie Chaîne, BLOB <- Flux de sortie (stdout) fluxErreur Chaîne, BLOB <- Flux d’erreur (stderr)pid Entier long <- Identifiant unique du process externe

Description

A compter de 4D v15 R4, la commande LANCER PROCESS EXTERNE retourne l'identifiant unique du process (PID)affecté au niveau de l'OS. Avec cette information, il est plus facile d'interagir avec les process externes créés par lacommande, par exemple pour les stopper.Le PID est retourné dans un nouveau paramètre optionnel de type entier long : pid. Lorsqu'il est passé, ce paramètre retournel''identifiant au niveau de l'OS du process créé pour lancer la commande, quel que soit le statut de l'option_4D_OPTION_BLOCKING_EXTERNAL_PROCESS.Si le lancement du process externe échoue, le paramètre pid n'est pas retourné.

Exemple

Les exemples suivants récupèrent la liste des process sous Windows :

C_ENTIER LONG($pid) C_TEXTE($stdin;$stdout;$stderr) LANCER PROCESS EXTERNE("tasklist";$pid) //obtenir uniquement le PID LANCER PROCESS EXTERNE("tasklist";$stdin;$stdout;$stderr;$pid) //obtenir toutes lesinformations

- 33 -

Page 34: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Lire parametre base et FIXER PARAMETRE BASE

Lire parametre base ( {laTable ;} sélecteur {; valeurAlpha} ) -> Résultat

FIXER PARAMETRE BASE ( {laTable ;} sélecteur ; valeur )

Description

Un nouveau paramètre sélecteur est disponible pour les commandes Lire parametre base et FIXER PARAMETRE BASE :Constante Type ValeurNombre de formules en cache Entier long 92

Portée : Application 4D.Conservé entre deux sessions : NonDescription: Fixe ou lit le nombre maximum de formules à conserver dans le cache des formules, qui est utilisé par lacommande EXECUTER FORMULE. Cette limite est appliquée à tous les process, mais chaque process dispose deson propre cache de formules. Placer des formules dans le cache accélère l'exécution de la commande EXECUTERFORMULE en mode compilé puisque chaque formule en cache est tokenisée une seule fois dans ce cas (pour plusd'informations, veuillez vous reporter à la section Cache pour EXECUTER FORMULE en mode compilé). Lorsquevous modifiez la valeur du cache, son contenu est réinitialisé même si la nouvelle valeur est supérieure à la précédente.Une fois le nombre maximum de formules en cache atteint, toute nouvelle formule exécutée écrase la plus anciennedans le cache (mode FIFO). Ce paramètre est pris en compte uniquement dans les bases ou les composantscompilés. Valeurs possibles : Entier long positifValeur par défaut : 0 (pas de cache)

- 34 -

Page 35: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

LISTBOX Lire tableau, LISTBOX FIXER TABLEAU, LISTBOX LIRE TABLEAUX

LISTBOX Lire tableau ( {* ;} objet ; typeTab ) -> RésultatLISTBOX FIXER TABLEAU ( {* ;} objet ; typeTab ; ptrTab )

LISTBOX LIRE TABLEAUX ( {* ;} objet ; tabNomsCols ; tabNomsEntêtes ; tabVarCols ; tabVarEntêtes ; tabColsVisibles ;tabStyles {; tabNomsPieds ; tabVarPieds} )

Description

Ces commandes prennent en charge le nouveau "tableau de contrôle des lignes" qui peut être associé avec les listbox detype tableau à compter de 4D v15 R4. Ce tableau contrôle jusqu'à trois propriétés de lignes (visible/masquée,activée/inactivée et sélectionnable/non sélectionnable). Il est détaillé dans la section Listbox : Lignes désactivées etlignes non sélectionnables.

Les deux commandes LISTBOX Lire tableau et LISTBOX FIXER TABLEAU acceptent une nouvelle constante dansle paramètre typeTab, vous permettant de lire ou de fixer le tableau :

Constante Type ValeurListbox tableau contrôle Entier long 3

La commande LISTBOX LIRE TABLEAUX prend en charge le tableau via le paramètre tabStyles (tableau depointeurs). Le quatrième élément pointe soit vers le tableau de statut masqué personnalisé de la list box (tableaubooléen, comme dans les versions précédentes de 4D), soit vers le nouveau tableau de contrôle des lignes (tableauentier long).

- 35 -

Page 36: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

LISTE DES POLICES

LISTE DES POLICES ( polices {; typeListe | *} )

Paramètre Type Description

polices Tableau texte <- Tableau des noms des polices disponibles (polices vectorielles uniquementsous Windows)

typeListe |*

Entier long,Opérateur -> Type de liste de police à retourner ou * pour retourner des noms de police sous OS

X

Description

La commande LISTE DES POLICES a été mise à jour sous Windows afin de ne retourner que les polices vectorielles dansle paramètre polices. Sous Windows, l'utilisation de polices non vectorielles (i.e. polices bitmap) pour dessiner des interfaces est déconseillé carelles sont basées sur une technologie dépassée et souffrent de limitations quant aux variations de taille. Elles ne sont pasprises en charge dans les nouvelles fonctionnalités de 4D telles que les zones 4D Write Pro. Pour aider les développeurs àne sélectionner que des polices modernes pour leurs interfaces, les polices non vectorielles ne sont plus retournées par lacommande LISTE DES POLICES. Seules les polices vectorielles "trueType" ou "openType" sont désormais listées. Parexemple, "ASI_Mono", "MS Sans Serif" ou encore "System" ne sont plus proposées.De plus, les noms GDI sont également ignorés ; seuls les noms de familles de police DirectWrite sont pris en charge. Parexemple, les familles "Arial Black" ou "Segoe UI Black" ne sont plus dans la liste ; seuls "Arial" et "Segoe" sont désormaisretournés.Notez que les polices bitmap peuvent toujours être utilisées dans vos formulaires 4D (à l'exception des zones 4D Write Pro).Elles sont uniquement supprimées de la liste retournée par cette commande. Cependant, pour assurer la compatibilité de vosapplications avec les versions futures de 4D et de Windows, nous recommandons dès à présent d'utiliser uniquement lesfamilles de police DirectWrite.Note de compatibilité : Comme les polices bitmap sont désormais filtrées dans le paramètre polices sous Windows, la listerésultante est différente dans les applications 4D v15 R4 et suivantes par rapport aux versions précédentes. Pensez àadapter votre code si vous utilisiez cette commande pour sélectionner une police non vectorielle.Cette mise à jour de la commande n'a pas d'effet sous OS X, où les polices bitmap (QuickDraw) sont obsolètes depuis OS X10.4.

- 36 -

Page 37: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

LISTE STYLES POLICE

LISTE STYLES POLICE ( famillePolice ; listeStylesPolice ; listeNomsPolice ) Paramètre Type DescriptionfamillePolice Chaîne Nom de la famille de policelisteStylesPolice Tableau texte Liste des styles pris en charge par la famille de policelisteNomsPolice Tableau texte Liste des noms complets pris en charge par la famille de police

Description

La nouvelle commande LISTE STYLES POLICE retourne la liste des styles et la liste des noms complets pris en charge parla famille de police désignée par le paramètre famillePolice. Cette commande vous permet de concevoir des interfacesmanipulant les familles de polices et les styles de police, en particulier dans le contexte des zones 4D Write Pro.Dans famillePolice, passez le nom de la famille de police dont vous souhaitez connaître les styles et les noms complets.Dans listeStylesPolice, passez un tableau texte qui sera rempli avec la liste des styles pris en charge par la famillePolice.Les styles sont retournés avec leurs noms localisés (i.e. un élément "Italique" sera "Itálico" sur un système espagnol), ce quivous permet par exemple de construire dynamiquement un pop-up menu "Styles" localisé.Dans listeNomsPolice, passez un tableau texte qui sera rempli avec la liste complète des noms de police pris en charge parla famillePolice. A la différence du tableau listeStylesPolice, le tableau listeNomsPolice retourne des valeurs non localisées,i.e. des noms de police basés sur leur identifiant système. Ainsi, les noms de police seront indépendants de la langue dusystème. Les éléments de ce tableau sont des chaînes de caractères destinées à être utilisées avec l'attribut wk font de lacommande 4D Write Pro WP FIXER ATTRIBUTS. Grâce à cette fonctionnalité, les documents 4D Write Pro stockent lesnoms de police et peuvent donc être ouverts sur différentes machines, quelle que soit la langue du système, sans problèmesde polices.Si la famillePolice n'est pas trouvée sur la machine, les tableaux sont retournés vides. Pour connaître la liste des familles depolice disponibles sur la machine, utilisez la commande LISTE DES POLICES (Note : Cette commande a été mise à joursous Windows dans 4D v15 R4, cf. LISTE DES POLICES).

Exemple

Vous voulez sélectionner les styles de la famille de police "Verdana" (si elle est disponible) :

TABLEAU TEXTE($aTfonts;0) TABLEAU TEXTE($aTStyles;0) TABLEAU TEXTE($aTnames;0) C_ENTIER LONG($numStyle) LISTE DES POLICES($aTfonts) $numStyle:=Chercher dans tableau($aTfonts;"Verdana") Si($numStyle#0) LISTE STYLES POLICE($aTfont{$numStyle};$aTStyles;$aTnames) Fin de si //Par exemple, les tableaux résultants sont : //$aTStyles{1}="Normal" //$aTStyles{1}="Italique" //$aTStyles{1}="Gras" //$aTStyles{1}="Gras Italique" // $aTnames{1}="Verdana" // $aTnames{1}="Verdana Italic" // $aTnames{1}="Verdana Bold" // $aTnames{1}="Verdana Bold Italic"

- 37 -

Page 38: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

METHODE LIRE CODE

METHODE LIRE CODE ( chemin ; code {;option} {; *} )

Paramètre Type Description

cheminTexte,Tableautexte

-> Texte ou Tableau texte contenant un ou plusieurs chemin(s) de méthode(s)

codeTexte,Tableautexte

<- Code de(s) méthode(s) désignée(s)

option Entier long -> 0 ou omis = export simple (sans tokens), 1 = export avec tokens

* Opérateur -> Si passé = la commande s’applique à la base hôte lorsqu’elle est exécutée depuis uncomposant (paramètre ignoré hors de ce contexte)

Description

Thème : Accès objets développementLa commande METHODE LIRE CODE a été modifiée dans 4D v15 R4 :

Le code des méthodes est désormais retourné sous forme de texte indenté.La commande accepte désormais un nouveau paramètre optionnel permettant d'activer la prise en charge des tokens.

Texte indentéLe texte du code retourné par la commande est désormais indenté avec des caractères de tabulation en fonction desstructures de programmation, à l'instar de l'éditeur de méthodes. Cette nouvelle fonctionnalité augmente la lisibilité du code.Nouveau paramètre "option"Le nouveau paramètre option vous permet de sélectionner le mode d'exportation du code concernant les éléments"tokenisés" de la ou des méthode(s) :

Si vous passez 0 ou omettez le paramètre option, le code de la méthode est exporté sans tokens, c'est-à-direexactement comme affiché dans l'éditeur de méthodes.Si vous passez 1 ou la constante Code avec tokens, le code de la méthode est exporté avec des tokens, c'est-à-direque les éléments "tokenisés" sont suivis de leur référence interne dans le contenu du code exporté. Par exemple,l'expression "Chaine(a)" est exportée "Chaine:C10(a)", où "C10" est la référence interne de la commande Chaine.

Les éléments tokenisés du langage incluent :

les commandes et constantes 4D,les noms de tables et de champs,les commandes des plug-ins 4D.

Pour plus d'informations sur la syntaxe tokens 4D, veuillez vous reporter à la section Utiliser des tokens dans les formules.Le code exporté avec ses tokens est indépendant de tout renommage ultérieur des éléments du langage. Grâce aux tokens,le code fourni sous forme de texte sera toujours correctement interprété par 4D, que ce soit via la commande METHODEFIXER CODE ou même le copier-coller.

Exemple

Cet exemple illustre les effets du nouveau paramètre option.Vous voulez importer le code de la méthode "simple_init" suivante :

Au cas ou :(Evenement formulaire=Sur chargement) TOUT SELECTIONNER([Customer]) Fin de cas

- 38 -

Page 39: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Si vous exécutez le code suivant :

C_TEXTE($code) C_TEXTE($contents) $code:=METHODE Lire chemin(Chemin Méthode projet;"simple_init") METHODE LIRE CODE($code;$contents;0) //pas de tokens TEXTE VERS DOCUMENT("simple_init.txt";$contents)

Le document résultant contient (notez l'indentation) :

//%attributes = {"lang":"fr"} commentaire réservé, ajouté par 4DAu cas ou : (Evenement formulaire=Sur chargement) TOUT SELECTIONNER([Customer])Fin de cas

Si vous exécutez le code suivant :

C_TEXTE($code) C_TEXTE($contents) $code:=METHODE Lire chemin(Chemin Méthode projet;"simple_init") METHODE LIRE CODE($code;$contents;Code avec tokens) //ajouter tokens TEXTE VERS DOCUMENT("simple_init.txt";$contents)

Le document résultant contient alors :

//%attributes = {"lang":"fr"} commentaire réservé, ajouté par 4DAu cas ou : (Evenement formulaire:C388=Sur chargement:K2:1) TOUT SELECTIONNER:C47([Customer:1])Fin de cas

- 39 -

Page 40: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

OB Lire et OB FIXER

OB Lire( objet | doc4WP ; propriété {; type} ) -> RésultatOB FIXER( objet | doc4WP ; propriété ; valeur {; propriété2 ; valeur2 ; ... ; propriétéN ; valeurN} )

Description

Ces deux commandes prennent en charge les définitions d'attributs dans les objets 4D Write Pro, tout comme lescommandes WP LIRE ATTRIBUTS et WP FIXER ATTRIBUTS.Il existe toutefois une limitation spécifique : avec ces commandes, vous ne pouvez pas manipuler directement une variable ouun champ image comme valeur d'attribut.

Exemple

Dans la méthode d'un formulaire contenant une zone 4D Write Pro, vous pouvez écrire :

Si(Evenement formulaire=Sur validation) OB FIXER([MyDocuments]My4DWP;"myatt_Last edition by";Utilisateur courant) OB FIXER([MyDocuments]My4DWP;"myatt_Category";"Memo") Fin de si

Vous pouvez également lire les attributs personnalisés des documents :

vAttrib:=OB Lire([MyDocuments]My4DWP;"myatt_Last edition by")

- 40 -

Page 41: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

OBJET Lire alignement horizontal et OBJET FIXER ALIGNEMENT HORIZONTAL

OBJET Lire alignement horizontal ( {* ;} objet ) -> Résultat OBJET FIXER ALIGNEMENT HORIZONTAL ( {* ;} objet ; alignement )

Description

Ces commandes prennent en charge les objets 4D Write Pro. Pour définir un alignement justifié, vous pouvez utiliser laconstante wk justify comme paramètre alignement ou retour de fonction pour les objets 4D Write Pro. Cette constante estdisponible dans le thème "4D Write Pro" :

Constante Type Valeur Commentaire

wk justify Entierlong 5 Disponible pour les zones 4D Write Pro uniquement (constante ajoutée dans le thème

"4D Write Pro")

Comme il s'agit d'un attribut de paragraphe, il ne s'applique qu'au(x) paragraphe(s) sélectionné(s) dans le document 4D WritePro.

Exemple

Vous souhaitez appliquer un alignement justifié à la zone 4D Write Pro :

OBJET FIXER ALIGNEMENT HORIZONTAL(*;"my4DWPArea";wk justify)

- 41 -

Page 42: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

REACTIVER TRANSACTION

REACTIVER TRANSACTION Ne requiert pas de paramètre

Description

Thème : TransactionsLa commande REACTIVER TRANSACTION réactive la transaction qui a été suspendue à l'aide de la commandeSUSPENDRE TRANSACTION au niveau correspondant dans le process courant. Toute opération effectuée après l'appelde cette commande retourne sous le contrôle de la transaction (hormis si plusieurs transactions suspendues sontimbriquées).Pour plus d'informations, veuillez vous référer au paragraphe Transactions suspendues et statut du process.

- 42 -

Page 43: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Suspendre et réactiver les transactions

4D v15 R4 inclut une nouvelle fonctionnalité vous permettant de suspendre temporairement et de réactiver des transactionsdans votre code 4D. Lorsqu'une transaction est suspendue, vous pouvez exécuter des opérations indépendantes de latransaction elle-même puis la réactiver afin de la valider ou de l'annuler, de façon classique. Lorsque la transaction estsuspendue, vous pouvez, en particulier :

créer ou modifier des enregistrements en-dehors de la transaction (par exemple pour incrémenter un compteur denuméros de factures),débuter, suspendre et/ou refermer d'autres transactions.

Cette fonction est utile notamment lorsque vous devez, depuis une transaction, lancer certaines opérations qui n'ont pasbesoin d'être effectuées sous le contrôle de cette transaction. Par exemple, imaginez le cas d'un client qui passe unecommande, donc via une transaction, et qui en profite pour mettre à jour son adresse postale. Finalement, le client se raviseet annule sa commande. La transaction est annulée, mais pour autant vous ne souhaitez pas que la mise à jour de l'adressele soit également. Ce cas peut typiquement être géré via la suspension de la transaction.

Comment suspendre et réactiver une transaction ?

Trois nouvelles commandes, placées dans le thème "Transactions", permettent de gérer la suspension et la réactivation destransactions :

SUSPENDRE TRANSACTION : suspend la transaction courante. Tous les enregistrements en cours de mise à jour oude création restent verrouillés.REACTIVER TRANSACTION : réactive une transaction suspendue, le cas échéant.Transaction active : retourne Faux si la transaction courante est suspendue ou s'il n'y a pas de transaction courante,et Vrai si elle est démarrée ou réactivée.

Ces commandes sont décrites séparément dans ce manuel.

Que se passe-t-il quand une transaction est suspendue ?

Lorsqu'une transaction est suspendue, les principes de fonctionnement suivants s'appliquent :

Vous pouvez accéder aux enregistrements qui ont été ajoutés ou modifiés durant la transaction, et vous ne pouvez pasaccéder aux enregistrements qui ont été supprimés durant la transaction.Vous pouvez créer, sauvegarder, supprimer ou modifier des enregistrements en-dehors de la transaction.Vous pouvez démarrer une nouvelle transaction, mais à l'intérieur de cette transaction incluse, vous ne pourrez pas voirles enregistrements ou les valeurs d'enregistrements qui auront été modifié(s) ou ajouté(e)s dans la transactionsuspendue. En fait, cette nouvelle transaction est totalement indépendante de celle qui a été suspendue, comme s'ils'agissait d'une transaction dans un autre process, et puisque la transaction suspendue pourra être par la suite validéeou annulée, tout enregistrement modifié ou annulé est automatiquement masqué pour la nouvelle transaction. Dès quevous validerez ou annulerez cette nouvelle transaction, vous pourrez à nouveau accéder à ces enregistrements. Tous les enregistrements modifiés, supprimés ou ajoutés à l'intérieur de la transaction suspendue restent verrouilléspour les autres process. If vous tentez de modifier ou de supprimer ces enregistrements hors de la transaction ou dansune autre transaction, une erreur est générée.

Ces principes sont résumés dans le schéma suivant :

- 43 -

Page 44: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Les valeurs modifiées durant la transaction A (enregistrement ID1 prend la valeur Val11) ne sont pas disponibles dansune nouvelle transaction (B) créée pendant la période de suspension. Les valeurs modifiées durant la période desuspension (enregistrement ID2 prend la valeur Val22 et enregistrement ID3 prend la valeur Val33) sont sauvegardéesmême après que la transaction A a été annulée.Des fonctionnalités spécifiques ont été ajoutées pour prendre en charge les erreurs :

L'enregistrement courant de chaque table devient temporairement verrouillé s'il est modifié pendant la transaction et estautomatiquement déverrouillé lorsque la transaction est réactivée. Ce mécanisme est important pour empêcher quedes parties de la transaction soient sauvegardées de manière impromptue.Si vous exécutez une séquence invalide telle que débuter transaction / suspendre transaction / débuter transaction /réactiver transaction, une erreur est générée. Ce mécanisme prévient tout éventuel oubli de valider ou d'annuler dessous-transactions incluses avant de réactiver une transaction suspendue.

Transactions suspendues et statut du process

La commande existante Transaction en cours retourne Vrai dès qu'une transaction a été démarrée, même si elle a étésuspendue. Pour savoir si la transaction courante a été suspendue, vous devez utiliser la nouvelle commande Transactionactive, qui retourne Faux dans ce cas. Ces deux commandes, cependant, retournent également Faux si aucune transaction n'a été démarrée. Vous pourrez alorsavoir besoin d'utiliser la commande existante Niveau de la transaction, qui retourne 0 dans ce contexte (pas de transactiondémarrée).Le schéma suivant illustre les différents contextes de transaction et les valeurs correspondantes retournées par lescommandes de transaction :

Exemple

Cet exemple présente un cas typique où la suspension d'une transaction est utile. Dans une base de facturation (Invoices),nous voulons obtenir un nouveau numéro de facture durant une transaction. Ce numéro est calculé et stocké dans une table[Settings]. Dans un environnement multi-utilisateur, les accès doivent être protégés ; cependant, à cause de la transaction, latable [Settings] pourrait être verrouillée par un autre utilisateur alors même que ses données ne dépendent pas de latransaction principale. Dans ce cas, vous pouvez suspendre la transaction pour l'accès à la table.

//Méthode standard qui crée une facture- 44 -

Page 45: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

DEBUT TRANSACTION ... CREER ENREGISTREMENT([Invoices]) [Invoices]InvoiceID:=GetInvoiceNum //appel de la méthode pour obtenir un numéro disponible ... STOCKER ENREGISTREMENT([Invoices]) VALIDER TRANSACTION

La méthode GetInvoiceNum suspend la transaction avant de s'exécuter. A noter que ce code fonctionnera même si laméthode est appelée en-dehors de toute transaction :

//Méthode projet GetInvoiceNum //GetInvoiceNum -> prochain numéro de facture disponible C_ENTIER LONG($0) SUSPENDRE TRANSACTION TOUT SELECTIONNER([Settings]) Si(Enregistrement verrouille([Settings])) //accès multi-utilisateur Tant que(Enregistrement verrouille([Settings])) MESSAGE("Attente d'enregistrement Settings verrouillé") ENDORMIR PROCESS(Numero du process courant;30) CHARGER ENREGISTREMENT([Settings]) Fin tant que Fin de si [Settings]InvoiceNum:=[Settings]InvoiceNum+1 $0:=[Settings]InvoiceNum STOCKER ENREGISTREMENT([Settings]) LIBERER ENREGISTREMENT([Settings]) REACTIVER TRANSACTION

- 45 -

Page 46: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

SUSPENDRE TRANSACTION

SUSPENDRE TRANSACTION Ne requiert pas de paramètre

Description

Thème : TransactionsLa commande SUSPENDRE TRANSACTION suspend les mécanismes de la transaction courante dans le process courant.Vous pouvez alors manipuler des données dans d'autres parties de la base, sans qu'elles soient contrôlées par latransaction, tout en préservant le contexte courant de la transaction. Tout enregistrement qui a été mis à jour ou ajouté durantla transaction est verrouillé jusqu'à ce que la transaction soit réactivée à l'aide de la commande REACTIVERTRANSACTION.Pour plus d'informations, veuillez vous référer à la section Suspendre et réactiver les transactions.

- 46 -

Page 47: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Transaction active

Transaction active -> Résultat Paramètre Type DescriptionRésultat Booléen Faux si la transaction courante est suspendue

Description

Thème : TransactionsLa commande Transaction active retourne Vrai si le process courant est en transaction et si cette transaction n'est passuspendue. Elle retourne Faux s'il n'y a pas de transaction en cours, ou si la transaction en cours est suspendue. Unetransaction peut être suspendue à l'aide de la commande SUSPENDRE TRANSACTION.Comme cette commande retourne également Faux lorsque le process courant n'est pas en transaction, vous aurez besoind'utiliser la commande Transaction en cours afin de vérifier que le process est bien en transaction. Pour plus d'informations, veuillez vous référer au paragraphe Transactions suspendues et statut du process.

Exemple

Vous voulez connaître le statut courant de transaction :

Si(Transaction en cours) Si(Non(Transaction active)) ALERTE("La transaction courante est suspendue") Sinon ALERTE("La transaction courante est active") Fin de si Sinon ALERTE("Nous ne sommes pas en transaction") Fin de si

- 47 -

Page 48: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Utiliser les commentaires 4DVAR au lieu des crochets (option supprimée)

A compter de 4D v15 R4, l'option de compatibilité Utiliser les commentaires 4DVAR au lieu des crochets a étésupprimée de la page "Compatibilité" de la boîte de dialogue des Propriétés de la base. Elle ne sera plus disponible dansles bases de données converties.Ce paramétrage était utilisé pour activer une syntaxe propriétaire pour les balises 4D à l'aide de crochets ([maVar] parexemple). Cette ancienne syntaxe n'est plus prise en charge dans les bases de données 4D. Si votre base convertie utilisaitcette option, vous devez mettre à jour vos templates. Les seules syntaxes prises en charge à compter de 4D v15 R4 sont :

la notation HTML standard (<!#--4DVAR maVar-->), oula Nouvelle syntaxe avec $ pour 4DTEXT, 4DHTML, 4DEVAL.

- 48 -

Page 49: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

VALEURS DISTINCTES

VALEURS DISTINCTES ( leChamp; tableau{; tabNbVal} )

Paramètre Type DescriptionleChamp Champ -> Champ indexable à utilisertableau Tableau <- Tableau devant recevoir les données du champ indexabletabNbVal Tab Entier long ou Tab Réel <- Tableau devant recevoir le nombre d'occurrences de chaque valeur

Description

La commande VALEURS DISTINCTES accepte désormais un nouveau paramètre optionnel : tabNbVal.Lorsqu'il est passé, le tableau tabNbVal contient, pour chaque valeur distincte de leChamp présente dans tableau, le nombred'occurrences détectées dans la sélection courante. Le tableau tabNbVal est automatiquement dimensionné au mêmenombre d'éléments que tableau. Par exemple, pour une sélection qui contient trois enregistrements avec les valeurs dechamps "A", "B" et "A", tableau contiendra {A;B} et tabNbVal contiendra {2;1}.Vous pouvez passer un tableau Entier long ou un tableau Réel dans tabNbVal. Note : Le paramètre tabNbVal n'est pas pris en charge pour les champs texte ou image associés à des index de mots-clés(dans ce contexte, il est retourné vide).

Exemple

Pour calculer des statistiques, vous voulez trier le nombre de valeurs distinctes d'un champ par ordre décroissant :

TABLEAU TEXTE($_issue_type;0) TABLEAU ENTIER LONG($_issue_type_instance;0) VALEURS DISTINCTES([Issue]iType;$_issue_type;$_issue_type_instances) TRIER TABLEAU($_issue_type_instances;$_issue_type;<)

- 49 -

Page 50: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Variable système Error formula

Une nouvelle variable système Texte est désormais accessible dans les méthodes d'appel sur erreur installées par lacommande APPELER SUR ERREUR : Error formula. Elle vient compléter l'ensemble existant de variables système liéesaux erreurs : Error, Error method et Error line.Cette nouvelle variable fournit au développeur une manière rapide et simple d'identifier l'origine d'une erreur. Lorsqu'uneerreur se produit, la variable système Error formula récupère la formule de code 4D (en texte brut) qui est à l'origine del'erreur. Le texte de la formule est exprimé dans la langue courante du langage de 4D. Note : Si le code source responsable de l'erreur ne peut pas être trouvé, Error formula contient une chaîne vide. Ce caspeut se produire dans les bases compilées lorsque :

le code source a été supprimé de la structure compilée à l'aide du générateur d'application.le code source est disponible mais la base a été compilée sans l'option Contrôle d'exécution.

Exemple

La méthode de gestion d'erreur suivante ignore les interruptions utilisateur et affiche le texte de l'erreur :

//Méthode projet Montrer_seulement_erreurs //doit être installée par APPELER SUR ERREUR Si(Error#1006) //ce n'est pas une interruption utilisateur ALERTE("L'erreur "+Chaine(Error)+" s'est produite. Le code en cause est : \""+Errorformula+"\"") Fin de si

- 50 -

Page 51: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

WEB Lire nombre process session

WEB Lire nombre process session ( idSession ) -> Résultat Paramètre Type DescriptionidSession Texte UUID de sessionRésultat Entier long Nombre de process rattachés à la session

Description

La nouvelle commande WEB Lire nombre process session retourne le nombre de process actifs rattachés à la sessiondont vous avez passé l'UUID dans le paramètre idSession.Cette commande a été créée dans le contexte de la nouvelle fonctionnalité Gestion des sessions 4D Mobile parprogrammation ajoutée dans 4D v15 R4. Elle a pour principal but de compter le nombre de process lancés par une session4D Mobile.

Pour une session 4D Mobile, cette commande retourne le nombre de process effectivement lancés. Une session 4DMobile peut piloter plusieurs process.Pour une session Web "classique", cette commande retourne toujours 1 (une session Web = un process).

Exemple

Vous souhaitez stocker dans des tableaux les données relatives à la session 4D Mobile courante :

C_TEXTE($sessionID) C_ENTIER LONG($count) C_DATE($expDate) C_HEURE($expTime) $sessionID:=WEB Lire ID session courante $count:=WEB Lire nombre process session($sessionID) WEB LIRE EXPIRATION SESSION($sessionID;$expDate;$expTime) AJOUTER A TABLEAU($aTimestamp;Chaine(Date du jour)+" "+Chaine(Heure courante)) AJOUTER A TABLEAU($aSessionUID;$sessionID) AJOUTER A TABLEAU($aNbProcesses;$count) AJOUTER A TABLEAU($aExpirationDate;$expDate) AJOUTER A TABLEAU($aExpirationTime;$expTime)

- 51 -

Page 52: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

4D Write Pro

Modifier les attributs de texte et d'image par programmation Nouvel objet de formulaire 4D Write Pro

- 52 -

Page 53: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Modifier les attributs de texte et d'image par programmation

Dans 4D v15 R4, 4D Write Pro propose un ensemble complet de commandes vous permettant de modifier les attributs detexte et d'image de vos documents. Dans le même temps, plusieurs commandes 4D ont été mises à jour.Grâce à ces nouvelles fonctionnalités, les développeurs 4D peuvent concevoir leurs propres interfaces (à l'aide de boutons,menus, cases à cocher, etc.) pour les documents 4D Write Pro. Les commandes peuvent s'appliquer à tout le document ouuniquement à certaines parties, basées soit sur la sélection utilisateur, soit sur des sélections créées par programmation. Lesattributs disponibles incluent les unités du document, les marges internes et externes, les arrière-plans, les propriétés desparagraphes, couleurs, polices, styles, ainsi que les propriétés des images. Par exemple, le Nouvel objet de formulaire 4D Write Pro s'appuie sur toutes ces nouvelles fonctionnalités pour proposerune interface de zone 4D Write Pro complète et sophistiquée :

Note : Vous pouvez également définir des attributs personnalisés lorsque la zone 4D Write est stockée dans un champ objet(cf. paragraphe Utiliser des attributs personnalisés).

Nouvelles commandes 4D Write Pro

Les nouvelles commandes 4D Write Pro suivantes sont destinées à fonctionner avec la fonctionnalité de gestion des attributs.Notez que ces commandes sont détaillées dans le manuel 4D Write Pro.

Commandes de gestion des plages Plusieurs nouvelles commandes sont dédiées à la gestion des sélections dans les documents. Comme le texte sélectionnépeut contenir des balises (invisibles) de formatage, 4D Write Pro travaille avec des objets appelés plages. Une plage est unobjet qui représente une portion de document 4D Write.

WP Lire plage( wpZone ; débutObjPlage ; finObjPlage ) -> objPlage : retourne une nouvelle plage correspondant auxlimites que vous avez passées en paramètres.WP Lire selection( {*;} wpZone ) -> objPlage : retourne une nouvelle plage correspondant à la sélection utilisateurcourante.WP Lire images( objPlage ) -> objPlage : retourne une nouvelle plage contenant uniquement les images.WP Lire paragraphes( objPlage ) -> objPlage : retourne une nouvelle plage contenant uniquement les paragraphes.

- 53 -

Page 54: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

WP SELECTIONNER( {*;} wpZone {; objPlage }{; débutObjPlage ; finObjPlage } ) : sélectionne le texte correspondantà la plage.

Commandes de gestion des attributs Les nouvelles commandes suivantes permettent de lire et de fixer tout attribut dans le document :

WP FIXER ATTRIBUTS( objPlage | wpDoc ; nomAttrib ; valeurAttrib {; nomAttrib2 ; valeurAttrib2 ; ... ; nomAttribN ;valeurAttribN} ) : fixe une ou plusieurs paires attribut/valeur dans le document ou la plage.WP LIRE ATTRIBUTS( objPlage | wpDoc ; nomAttrib ; valeurAttrib {; nomAttrib2 ; valeurAttrib2 ; ... ; nomAttribN ;valeurAttribN} ) : lit la valeur courante d'un ou plusieurs attribut(s) dans le document ou la plage.WP REINITIALISER ATTRIBUTS( objPlage ; nomAttrib {; nomAttrib2 ; ... ; nomAttribN } ) : réinitialise la valeursd'attribut(s) dans le document ou la plage.

Les attributs sont détaillés dans la section Attributs 4D Write Pro.

Commande de gestion des polices Une nouvelle commande vous permet d'obtenir des informations sur la prise en charge des styles dans une plage :

WP Style pris en charge( objPlage ; wpStylePolice ) -> vrai ou faux : vous permet de savoir si une plage prend encharge un style de police spécifique (utile pour concevoir une interface).

Commandes 4D mises à jour

Plusieurs commandes 4D ont été mises à jour dans 4D v15 R4 pour prendre en charge les nouvelles implémentations de 4DWrite Pro.

OBJET FIXER ALIGNEMENT HORIZONTAL Cette commande prend en charge les objets 4D Write Pro. Une nouvelle constante est désormais disponible dans leparamètre alignement pour les objets 4D Write Pro, vous permettant de fixer un alignement de type justifié :

Constante Type Valeur Comment

wk justify Entierlong 5 Disponible uniquement pour les zones 4D Write Pro (constante ajoutée dans le thème

"4D Write Pro")

OB FIXER Cette commande prend en charge les définitions d'attributs dans les objets 4D Write Pro, de la même manière que WPFIXER ATTRIBUTS. La syntaxe suivante est prise en charge :OB FIXER ( objSel | wpDoc; nomAttrib ; valeurAttrib {; nomAttrib2 ; valeurAttrib2 ; ... ; nomAttribN ; valeurAttribN} )Cependant, cette commande admet une limitation spécifique : elle ne permet pas de passer un champ image ou une variableimage directement comme valeur d'attribut.

OB Lire Cette commande prend en charge les définitions d'attributs dans les objets 4D Write Pro, de la même manière que WP LIREATTRIBUTS. La syntaxe suivante est prise en charge :OB Lire ( objSel | wpDoc; nomAttrib ) -> RésultatCette commande admet la même limitation que OB FIXER : elle ne permet pas d'utiliser champ image ou une variableimage directement comme valeur d'attribut.

Stringifier les attributs 4D Write Pro Dans 4D v15 R4, si vous convertissez un objet 4D Write Pro en JSON à l'aide de JSON Stringify, seul l'attribut "title" seradisponible dans la chaîne de sortie. Les attributs personnalisés, s'il y en a, seront quant à eux "stringifiés" (cf. "Utiliser des attributs personnalisés" dans la sectionStocker les documents 4D Write Pro dans des champs objet 4D).

CHERCHER PAR ATTRIBUT Comme défini dans la section Stocker les documents 4D Write Pro dans des champs objet 4D, la commandeCHERCHER PAR ATTRIBUT prend en charge les attributs 4D Write Pro (internes et personnalisés) lorsque les documentssont stockés dans des champs objet.

- 54 -

Page 55: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Nouvel objet de formulaire 4D Write Pro

Un nouvel objet de formulaire 4D Write Pro a été ajouté à la bibliothèque d'objets préconfigurés de 4D dans la v15 R4:

A la différence d'une zone 4D Write Pro standard (disponible dans la barre d'objets de l'éditeur de formulaires), cet objetpréconfiguré est constitué d'une zone 4D Write Pro associée à un sous-formulaire widget contenant un ensemble depanneaux de contrôle intuitifs. Ce widget dispose par défaut d'une barre d'outils de navigation parmi les différents panneaux,permettant aux utilisateurs de configurer directement le contenu de la zone. Lorsque vous déposez un objet de formulaire 4D Write Pro dans votre formulaire, la zone 4D Write Pro et son panneau

de contrôle sont prêts à l'emploi, aucun paramétrage supplémentaire n'est requis :

Pour plus d'informations sur ce nouvel objet de formulaire, veuillez vous référer à la section Nouvel objet 4D Write Pro dansla bibliothèque d'objets.

- 55 -

Page 56: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

4D Mobile

Gestion des sessions 4D Mobile par programmation Test_MOVE

- 56 -

Page 57: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Gestion des sessions 4D Mobile par programmation

Présentation

A compter de 4D v15 R4, il est possible d'accéder par programmation sur 4D Server à l'ID d'une session 4D Mobile. Cettenouvelle fonctionnalité permet aux développeurs de lire ou d'écrire localement des informations liées aux sessions (cf.exemple ci-dessous).Les sessions 4D Mobile peuvent désormais être gérées à l'aide des commandes standard de session Web de 4D. Lescommandes existantes ont été mises à jour pour prendre en charge les sessions 4D Mobile. De plus, la nouvelle commandeWEB Lire nombre process session a été ajoutée et, pour plus de clarté, une méthode base a été renommée.

Commandes utilisables sans modification

Les commandes suivantes de gestion des sessions Web prennent en charge les sessions 4D Mobile sans modification desyntaxe.

WEB Lire ID session courante -> ID session La commande WEB Lire ID session courante retourne désormais l'UUID associé à la session 4D Mobile courante.

WEB FERMER SESSION ( idSession ) La commande WEB FERMER SESSION referme la session 4D Mobile dont l'ID a été passé dans idSession. Comme unesession 4D Mobile peut gérer plusieurs process, cette commande demande en fait à tous les process Web liés à la sessionde terminer leur exécution.

WEB LIRE EXPIRATION SESSION ( idSession ; dateExp ; heureExp ) La commande WEB LIRE EXPIRATION SESSION retourne les informations relatives à l'expiration du cookie d'une session4D Mobile.Le même cookie est utilisé pour tous les process d'une session 4D Mobile.

Méthode base Sur fermeture process Web (précédemment Sur fermeture session Web)

A compter de 4D v15 R4, la méthode base existante Sur fermeture session Web est renommée Sur fermeture processWeb. Ce renommage est nécessaire par soucis de cohérence, puisqu'une session 4D Mobile n'est pas nécessairement liéeà un seul process Web (une session 4D Mobile pouvant gérer plusieurs process). Pour plus d'informations, veuillez vousreporter au paragraphe Sessions 4D Mobile vs sessions Web ci-dessous.La méthode base Sur fermeture process Web est appelée par 4D à chaque fois qu'un process Web est sur le point determiner son exécution. Elle prend pleinement en charge les process des sessions 4D Mobile : dans ce contexte, elle estappelée pour chaque process Web refermé, vous permettant de sauvegarder tout type de donnée (variable, sélection, etc.)générée par le process de session 4D Mobile.Note : Pour les sessions Web "classiques", la méthode base Sur fermeture process Web est inchangée : elle est appeléeà chaque fois qu'une session Web, c'est-à-dire qu'un process unique de session Web, est refermé.

Nouvelle commande WEB Lire nombre process session

La nouvelle commande WEB Lire nombre process session vous permet de connaître le nombre de process existants liésà une session donnée.

Pour une session Web "classique", la commande retourne toujours 1 (une session Web = un process),Pour une session 4D Mobile, la commande retourne tous les process Web qui lui sont rattachés. Cette commande estutile dans ce contexte par exemple pour exécuter une boucle parmi tous les process d'une session 4D Mobile. Pourplus d'informations, veuillez vous reporter à la description de la commande WEB Lire nombre process session.

Pourquoi et comment gérer une session 4D Mobile?

Sessions 4D Mobile vs sessions Web Les sessions 4D Mobile et les sessions Web sont deux sortes de sessions différentes. Bien qu'elles partagent certainsconcepts (et commandes),elles n'ont pas les mêmes propriétés. La principale différence a trait à la relation entre unesession, un process et le contexte du process :

- 57 -

Page 58: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Une session Web est liée à un seul process Web ; grâce à la fonctionnalité de Gestion automatique des sessions, lecontexte du process (instances de variables, sélections...) de la session peut être réutiliséUne session 4D Mobile peut être liée à plusieurs process Web ; chaque contexte de process est automatiquementréinitialisé à l'issue de l'exécution de la méthode du process

Par conséquent, le partage d'informations liées à la session entre les process Web 4D Mobile requiert des implémentationsspécifiques sur 4D Server.

Exemple Si vous souhaitez partager ou réutiliser des informations entre plusieurs process d'une même session 4D Mobile, vouspouvez utiliser l'UUID de la session 4D Mobile pour identifier les données relatives à cette session. Par exemple, après avoireffectué une recherche parmi des enregistrements, vous souhaitez conserver une sélection temporaire sur 4D Server afinqu'une requête REST ultérieure dans la même session puisse accéder directement à cette sélection. Vous pouvez écrire :

//créer une sélection interprocess dont le nom contient l'UUID de session COPIER SELECTION([Emp];"<>EmpSel"+WEB Lire ID session courante) //plus tard, vous pouvez réutiliser cette sélection depuis la même session UTILISER SELECTION([Emp];"<>EmpSel"+WEB Lire ID session courante)

- 58 -

Page 59: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Test_MOVE

TEST

This is a move test

- 59 -

Page 60: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

SQL

Prise en charge étendue des jointures SQL externes

- 60 -

Page 61: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Prise en charge étendue des jointures SQL externes

Description

A compter de 4D v15 R4, le serveur SQL intégré étend la prise en charge des jointures externes aux requêtes impliquant troistables ou plus.Les requêtes qui combinent plusieurs jointures et tables dans la même instruction SELECT sont désormais prises en charge,dans la mesure où elles respectent les conditions suivantes :

chaque clause ON de jointure externe explicite référence exactement deux tables, ni plus ni moins,l'une des ces deux tables doit provenir de la partie juste à gauche de la clause JOIN et l'autre, de la partie juste à droite.

Par exemple, la requête suivante sera exécutée sans erreur :

SELECT * FROM T1LEFT JOIN(T2 LEFT JOIN T3 ON T2.ID=T3.ID)ON T1.ID=T3.ID

Les requêtes qui ne respectent pas les conditions énoncées ci-dessus seront rejetées. Pour une description détaillée dessyntaxes prises en charge, veuillez vous reporter au manuel 4D - Réference SQL.

Limitations

L'implémentation des jointures externes dans 4D v15 R4 inclut quelques limitations :

seuls les opérateurs booléens AND et NOT sont pris en charge dans la condition ON (le OR n'est pas admis). Demême, le prédicat IS NULL et la fonction COALESCE ne sont pas utilisables dans ce contexte.Les appels de méthodes 4D ne sont pas pris en charge dans la clause ON si la partie gauche ou droite de la clauseJOIN courante est une jointure externe explicite. Les vues SQL (SQL views) ne sont pas prises en charge dans la déclaration de jointure explicite. Les sous-requêtes utilisant des jointures externes ne sont pas prises en charge.

Le manuel 4D - Référence SQL de 4D v15 R4 a été mis à jour avec ces limitations.

Optimisation

Dans l'implémentation actuelle, les cas dans lesquels la clause WHERE contient des filtres de type "champ=constante"peuvent être optimisés. Par exemple :

SELECT * FROM T1LEFT JOIN T2ON T1.ID=T2.IDLEFT JOIN T3ON T1.ID=T3.IDWHERE T1.ID=123

Pour améliorer les performances, vous pouvez dupliquer le filtre WHERE dans la clause JOIN explicite. La requête suivanteretournera les mêmes résultats que la précédente mais s'exécutera beaucoup plus rapidement :

SELECT * FROM T1LEFT JOIN T2ON T1.ID=T2.ID AND T1.ID=123 -- le filtre WHERE "T1.ID=123" est dupliquéLEFT JOIN T3ON T1.ID=T3.ID AND T1.ID=123 -- le filtre WHERE "T1.ID=123" est dupliquéWHERE T1.ID=123

- 61 -

Page 62: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Optimisations

Optimisation du processus de réindexation de la base Cache pour EXECUTER FORMULE en mode compilé

- 62 -

Page 63: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Optimisation du processus de réindexation de la base

Dans 4D v15 R4, nous avons optimisé de façon importante l'algorithme de réindexation globale de la base de données. Toutle processus a été revu, et l'opération peut s'effectuer désormais jusqu'à deux fois plus rapidement.Note : Une réindexation globale est nécessaire, par exemple, après une réparation de la base de données ou lorsque lefichier .4dindx a été supprimé. Comme chaque enregistrement de chaque table indexée doit être chargé en mémoire durant l'indexation, l'optimisation avisé à minimiser les échanges entre le cache et le disque (swaps). L'opération est désormais effectuée séquentiellement surchaque table, ce qui réduit les besoins en chargement et en déchargement d'enregistrements.Idéalement, si le cache était assez grand pour contenir la totalité du fichier de données et des index, le nouvel algorithme deréindexation n'apporterait aucune amélioration. Cependant, la mémoire disponible sur le serveur n'est généralement pasaussi grande. Si le cache est assez grand pour contenir au moins les données et les index de la table la plus volumineuse,alors le nouvel algorithme sera jusqu'à deux fois plus rapide que le précédent.

- 63 -

Page 64: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Cache pour EXECUTER FORMULE en mode compilé

A compter de 4D v15 R4, chaque formule exécutée via la commande EXECUTER FORMULE en mode compilé peut êtreconservée en mémoire dans un nouveau cache dédié. La formule est conservée sous forme de références (tokens). Une foisplacée dans le cache, une formule s'exécutera de manière beaucoup plus rapide par la suite car la phase de tokenisationsera évitée.La taille du cache est de zéro par défaut (pas de cache) ; vous devez le créer et l'ajuster à l'aide de la commande FIXERPARAMETRE BASE (cf. Lire parametre base et FIXER PARAMETRE BASE).

FIXER PARAMETRE BASE(Nombre de formules en cache;0) //pas de cache de formules FIXER PARAMETRE BASE(Nombre de formules en cache;3) //jusqu'à trois formules peuvent êtreen cache pour chaque process

La commande EXECUTER FORMULE utilise le cache uniquement lorsqu'elle est appelée depuis une base ou uncomposant exécuté(e) en mode compilé.Nos tests internes ont montré une très nette accélération de l'exécution d'une formule une fois chargée dans le cache.

- 64 -

Page 65: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

4D Developer Edition version 64 bits (préversion)

Depuis 4D v15 R2, 4D fournit une préversion opérationnelle de 4D Developer Edition 64 bits pour Windows et OS X.Lorsqu'ils seront disponibles en version finale, ces nouveaux produits permettront à vos applications 4D monopostes, ainsiqu'aux applications 4D distantes, de tirer pleinement parti de la puissance des systèmes d'exploitation 64 bits. Le principalavantage de la technologie 64 bits est qu'elle permet d'adresser davantage de mémoire RAM.Ces préversions vous permettent d'avoir un aperçu de nos futurs produits en 64 bits. Elles sont également utiles pour lesdéveloppeurs de plug-ins tiers, qui peuvent commencer à adapter leur code et le tester immédiatement. Gardez cependant àl'esprit que ces produits étant en phase de développement, leurs préversions peuvent parfois connaître quelques instabilités.

Veuillez vous reporter au manuel 4D v15 R2 - Mise à jour (PDF) pour plus d'informations sur la préversion R2 de 4DDeveloper Edition 64 bits.Veuillez vous reporter au manuel 4D v15 R3 - Mise à jour (PDF) pour plus d'informations sur la préversion R3 de 4DDeveloper Edition 64 bits.Les sections suivantes ont été mises à jour pour la préversion R4 de 4D Developer Edition 64 bits.

Configuration Statut des fonctions Refonte de la Liste des propriétés Nouvel éditeur d'étiquettes Nouvel éditeur d'états rapides

- 65 -

Page 66: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Configuration

Configuration système

4D Developer version 64 bits nécessite au minimum la configuration suivante :Windows OS X

OS Windows 7 ou supérieur (version 64 bit) OS X version 10.10 (Yosemite) ou supérieurRAM 8 Go 8 Go

Veuillez vous reporter aux matrices de certification disponibles sur le site Internet de 4D pour vérifier les systèmescompatibles avec votre version de 4D.

Architecture

Les applications 4D destinées aux architectures 64 bits sont des versions spécifiques, dédiées à cet environnement (elles nefonctionnent pas sur un OS 32 bits).En mode interprété, les mêmes bases de données 4D peuvent être exécutées par une application 4D en 64 bits ou 32 bits(serveur ou locale). Le développement est identique, quelle que soit l'application utilisée (hormis en ce qui concerne leslimitations décrites ci-dessous).En mode compilé, les bases de données doivent avoir été compilées pour les processeurs adéquats : 64 bits pour pouvoirêtre exécutées par une application 4D 64 bits, et 32 bits pour pouvoir être exécutées par une application 4D 32 bits Unebase de données compilée uniquement en 32 bits et qui ne contient pas de code interprété ne peut pas être exécutée parune application 4D 64 bits, et inversement. Vous pouvez compiler votre base de données pour une architecture spécifique oupour les deux. Pour plus d'informations sur la compilation, reportez-vous au prochain paragraphe.Le tableau suivant décrit les principes de compatibilité en fonction des différents environnements d'exécution de 4D et ducode de la base :

Code disponible 4D 32 bits 4D 64 bits4D Server 32 bits interprété OK OK(*)

compilé uniquement en 32 bits OK -compilé en 32 bits et en 64 bits OK OK(*)

4D Server 64 bits interprété OK OK(*)compilé uniquement en 64 bits - OK(*)compilé en 32 bits et en 64 bits OK OK(*)

Base locale interprété OK OKcompilé uniquement en 32 bits OK -compilé uniquement en 64 bits - OKcompilé en 32 bits et en 64 bits OK OK

(*) Avec la version 32 bits de 4D Server (toutes plates-formes) et la version 64 bits de 4D Server pour Windows, vous devezvous assurer que la couche réseau ServerNet est activée côté serveur, puisque l'ancienne couche réseau n'est pasdisponible sur les versions 64 bits de 4D Developer. Pour plus d'informations, reportez-vous au paragraphe Nouvellecouche réseau ServerNet (compatibilité).

Compilation multi-cible

Les applications 4D peuvent être compilées pour des processeurs 32 bits et/ou 64 bits. Pour paramétrer votre (vos) cible(s)de compilation, vous devez utiliser l'option Compilation multi-cible (32 bits et 64 bits) dans la page "Compilateur" desPropriétés de la base :

- 66 -

Page 67: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Lorsque cette option n'est pas cochée (défaut), la compilation produit uniquement du code compilé pour l'architecturecourante (32 bits ou 64 bits) du 4D Developer. Lorsqu'elle est cochée, le compilateur inclut le code 64 bits et le code 32 bitsdans les fichiers .4DC et .4DB. Ces fichiers peuvent alors être exécutés indifféremment avec une application 4D 32 bits ou64 bits.

- 67 -

Page 68: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Statut des fonctions

Cette section présente les particularités liées à l'implémentation et l'utilisation des versions 64 bits de 4D Developer Editionsous Windows et OS X. Le développement de ces produits s'effectuant de manière continue et itérative, certaines fonctionsne sont pas disponibles dans ces premières préversions. Vous trouverez dans cette section leur statut actuel.

Fonctions mises à jour

De nombreuses fonctionnalités et boîtes de dialogues de 4D ont été adaptées, voire réécrites, afin de prendre en chargel'architecture 64 bits. La plupart de ces changements sont "transparents" et n'entraînent aucune modification defonctionnement dans les version 64 bits. Cependant, quelques éditeurs ont du être sensiblement modifiés par rapport à leurversion 32 bits. Ils sont fournis sous forme de préversions dans 4D Developer Edition version 64 bits :

FonctionnalitéPlate(s)-forme(s)impactée(s)

Commentaires

Editeur d'étatsrapides OS X & Win

Editeur entièrement réécrit. Dans la préversion actuelle, les zones incluses et les étatstableaux croisés ne sont pas disponibles. La préversion est documentée dans lasection Nouvel éditeur d'états rapides.

Editeurd'étiquettes OS X & Win Editeur entièrement réécrit. Voir la section Nouvel éditeur d'étiquettes (préversion).

Graphes OS X & Win La commande GRAPHE accepte paramètre de type objet permettant de définir lespropriétés du graphe (voir GRAPHE).

Liste despropriétés(éditeur deformulaires)

OS X & Win Nouveau design + nouvelles fonctions dans 4D v15 R4 (voir Refonte de la Liste despropriétés)

Fonctions désactivées

Certaines fonctions spécifiques ont été désactivées dans les préversions de 4D Developer Edition 64 bits :

Fonction/technologiePlate(s)-forme(s)impactée(s)

Commentaires

Communication Portsérie OS X

Les commandes désactivées sont LIRE CORRESPONDANCE PORT SERIE,RECEVOIR BUFFER, RECEVOIR PAQUET, RECEVOIRENREGISTREMENT, RECEVOIR VARIABLE, ENVOYER PAQUET,ENVOYER ENREGISTREMENT, ENVOYER VARIABLE, REGLER SERIE,FIXER TIMEOUT, et UTILISER FILTRE dans le contexte des ports sérieuniquement.

Boîtes de dialogued'import/export OS X Désactivées, ainsi que IMPORTER DONNEES et EXPORTER DONNEES

Editeur d'états rapides: zones incluses OS X & Win Désactivées

Editeur d'états rapides: tableaux croisés OS X & Win Désactivés

Utilisation Web Kitintégré dans les zonesWeb

OS X & Win Désactivée

Impressions Win Désactivées

Fonctions non prises en charge

Les fonctions et technologies suivantes ne seront pas prises en charge dans 4D Developer Edition 64 bits :

- 68 -

Page 69: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Fonction/technologiePlate(s)-forme(s)impactée(s)

Commentaires

XSLT avec Xalan OS X & Win_o_XSLT APPLIQUER TRANSFORMATION, _o_XSLT FIXERPARAMETRE, et _o_XSLT LIRE ERREUR ne fonctionnent pas. Utiliser lacommande TRAITER BALISES 4D ou le module PHP libxslt.

Format PICT OS X & WinIcône de format d'image non disponible + extension de fichier affichées. Leformat PICT est globalement obsolète dans 4D, voir aussi AP Is PictureDeprecated.

cicn icons OS X & Win La commande LIRE RESSOURCE ICONE n'est pas prise en charge, elleretourne une erreur.

Fichiers de base .RSR OS X & Win Les fichiers .RSR des bases de données ne sont pas ouverts automatiquement.Vous devez utiliser Ouvrir fichier ressources.

Fichiers de ressourceéditables OS X & Win La commande _o_Créer fichier ressources n'est pas prise en charge, vous

pouvez uniquement ouvrir les fichiers de ressource en lecture._o_Numéro de police OS X & Win Commande non prise en charge ; elle retourne une erreur.Ancienne coucheréseau OS X & Win Seul ServerNet est pris en charge

Mode compatibilitéASCII OS X & Win Seul le mode Unicode est pris en charge.

Plug-ins 4D Write et4D View Win

Les plug-ins d'ancienne génération ne sont pas compatibles avec les versions64 bits de 4D sous Windows ; utiliser 4D Write Pro et 4D View Pro (en cours dedéveloppement).

OLE Tools Win Non pris en charge

Animations de formulaires sous OS X

Les versions OS X 64 bits des applications 4D bénéficient d'animations graphiques natives améliorant l'expérienceutilisateur dans les formulaires 4D. En particulier :

les champs, variables saisissables, boutons radio et cases à cocher s'animent lorsqu'ils prennent le focus,les boutons radio et cases à cocher sont également animés suivant les déplacements de la souris,les barres de défilement proposent une animation spécifique (Yosemite uniquement),tabuler dans les formulaires liste provoque le glissement des colonnes.

Voici un aperçu de ces animations :

Note : Apple a publié des guidelines relatives à l'usage des animations d'interface dans vos applications.

- 69 -

Page 70: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Refonte de la Liste des propriétés

La Liste des propriétés de l'éditeur de formulaires a été entièrement réécrite pour la version 64 bits de 4D Developer Edition.Par ailleurs, certaines fonctionalités ont été modifiées :

nouvelles fonctions pour définir et visualiser les propriétés verrouillées/déverrouillées dans l'éditeur de formulairesutilisateur,mise à jour de la gestion des couleurs et des palettes de couleurs.

Propriétés formulaires utilisateur

Deux nouvelles fonctions sont disponibles dans la Liste des propriétés lorsqu'un formulaire table a été déclaré "Modifiablepar l'utilisateur" :

Le développeur peut maintenant désigner les propriétés modifiables à l'aide d'un menu contextuel :

En plus de l'icône de cadenas, la couleur de fond des propriétés indique leur statut :rouge clair : verrouillébleu clair : non verrouilléblanc : non verrouillable

Propriétés de couleurs

Une nouvelle palette de couleurs par défaut est désormais utilisée pour toutes les propriétés de couleurs dans la Liste despropriétés :

Couleur de fondCouleur du traitCouleur de policeCouleur de fond alternée...

- 70 -

Page 71: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Conformité de la palette système de couleurs (OS X) Sous OS X, lorsque l'utilisateur sélectionne l'option Personalisée... dans le menu de liste de couleurs, une palette systèmeflottante de couleurs s'affiche et reste ouverte jusqu'à ce que l'utilisateur clique sur sa case de fermeture. Ce sélecteur decouleur est désormais conforme à OS X et peut être utilisé pour changer toute propriété de couleur sélectionnée. Dans l'exemple ci-dessous, la propriété "Fill Color" est sélectionnée dans la Liste des propriétés. La couleur sélectionnéedans la palette système sera appliquée à la propriété "Fill Color" :

- 71 -

Page 72: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Nouvel éditeur d'étiquettes

La version 64 bits de 4D Developer Edition inclut une préversion opérationnelle du nouvel éditeur d'étiquettes de 4D, destinéà remplacer l'éditeur actuel dans les prochaines versions de 4D. Ce nouvel éditeur bénéficie d'une nouvelle interface "ruban"et de menus contextuels :

Ce nouvel éditeur prendra en charge la plupart des fonctions de l'éditeur actuel, tout en proposant de nouvellesfonctionnalités.Note : Le développement du nouvel éditeur d'étiquettes de 4D s'effectue de manière continue.

Compatibilité

Format de fichier L'extension de fichier des étiquettes 4D sauvegardées par le nouvel éditeur est ".4lbp". A noter que ce format est ouvertpuisqu'il utilise en interne du XML.Les fichiers d'étiquettes 4D générés par le précédent éditeur (extension ".4lb") sont pris en charge. Le nouvel éditeur peutcharger, modifier et sauvegarder des étiquettes provenant de la version précédente sans changer leur format.Note : Dans les anciens fichiers d'étiquettes, les images présentes étaient enregistrées au format PICT. Ce format n'étantplus pris en charge dans 4D (cf. ci-dessous), le nouvel éditeur les remplace par des zones barrées de rouge.

Fonctions non prises en charge Les fonctions suivantes ne sont pas prises en charge dans le nouvel éditeur d'étiquettes :

Fonction Commentaire

Menu Format

Utiliser la commande Chaine, par exemple :

Chaine([Emp]NéLe;Interne date long)

Style "Relief" Arrêt de la prise en charge par 4DMotifs Arrêt de la prise en charge par 4DQuickdraw PICT Obsolète dans 4D / Non disponible dans 4D Developer Edition 64 bitsBouton Objet par défaut Désormais inutile

Disabled features Les fonctions suivantes ne sont pour l'instant pas disponibles dans le nouvel éditeur d'étiquettes :

Fonction CommentaireMenu Planche standardImpression sous Windows Désactivé dans 4D Developer Edition 64 bits (préversion)

Nouvelles fonctionnalités

- 72 -

Page 73: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Définition des formulaires et de méthodes utilisables Le nouvel éditeur d'étiquettes comporte une fonction supplémentaire, permettant de limiter les formulaires et les méthodesprojet de la base qui peuvent être sélectionnés :

dans le menu Formulaire à utiliser de la page "Etiquette"dans le menu Méthode à appliquer de la page "Planche".

Il vous suffit pour cela d'ajouter un fichier JSON dans le dossier de la base.Note : Dans la préversion 4D v15 R2, le contenu du menu "Formulaire à utiliser" était filtré par défaut en fonction depropriétés spécifiques. Ce principe a été supprimé et par défaut tous les objets sont accessibles sans restriction (commedans la version actuelle). Toutefois, si la base ne contient aucun formulaire table, le menu n'est pas affiché.Pour définir les formulaires et/ou les méthodes qui seront sélectionnables dans l'éditeur d'étiquettes :

1. Créez un fichier JSON nommé labels.json et placez-le dans le sous-dossier Resources du dossier de la base.2. Dans ce fichier, listez les noms des formulaires et/ou des méthodes projet que vous autorisez dans les menus de

l'éditeur d'étiquettes.

Le contenu du fichier labels.json devra être du type :

[ {"tableId":2,"forms":[],"methods":["maMéthode1","maMéthode2"]}, {"tableId":1,"forms":["Modele1","Modele 2"],"methods":[]} ]

Si aucun fichier labels.json n'a été défini, aucun filtrage n'est appliqué.

Préchargement de fichiers d'étiquettes Le nouvel éditeur d 'étiquettes vous permet de stocker des fichiers d'étiquettes à l'intérieur de votre application. Ces modèlespeuvent alors être directement sélectionnés et ouverts par l'utilisateur via le bouton Import.Pour cela, il vous suffit de créer un sous-dossier Labels dans le dossier Resource de la base et d'y copier vos fichiersd'étiquettes :

A l'ouverture de l'éditeur d'étiquettes, si ce dossier est détecté et qu'il contient au moins un fichier d'étiquettes valide, uneicône de pop up est ajoutée au bouton Import :

Les modèles d'étiquettes peuvent alors être sélectionnés via une simple ligne de menu. Les fichiers générés par le nouveléditeur (".4lbp") ainsi que les anciens (".4lb") sont pris en charge :

Zoom Vous pouvez désormais zoomer dans votre modèle d'étiquettes (page "Etiquette") en faisant glisser le curseur deredimensionnement situé en bas à droite de la fenêtre :

Glisser déposer Le glisser-déposer est pris en charge dans la page "Etiquette" :

Vous pouvez glisser-déposer des fichiers image depuis le bureau du système d'exploitation vers la zone deconstruction de l'étiquette.Vous pouvez glisser-déposer des fichiers d'étiquettes (fichiers ".4lbp" uniquement) depuis le bureau vers la zone deconstruction de l'étiquette.

Nouvelle ergonomie - 73 -

Page 74: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

L'ergonomie générale de l'éditeur a été repensée :

Les textes statiques sont saisis directement dans la zone de construction des étiquettes.Les objets graphiques sont gérés via un ensemble de menus contextuels.Aperçu avant impression : la première page est affichée avec des pointillés délimitant chaque étiquette.

- 74 -

Page 75: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

Nouvel éditeur d'états rapides

La version 64 bits de 4D inclut une préversion opérationnelle du nouvel éditeur d'états rapides de 4D. Nous vous invitons àprendre un moment pour découvrir son interface ainsi que les fonctionnalités qu'il propose actuellement. Basé sur unearchitecture moderne, ce nouvel outil remplacera l'éditeur actuel dans toutes les futures versions de 4D. A l'aide d'uneinterface intuitive de type "ruban", vous pourrez concevoir et générer de nouveaux états sophistiqués, tout en pouvantcontinuer d'utiliser vos états créés avec les versions précédentes de 4D :

Les caractéristiques principales de ce nouvel éditeur d'états rapides sont les suivantes :

Compatibilité :Compatible avec les fichiers d'états créés avec les versions précédentes ; possibilité d'ouvrir, modifier etsauvegarder des anciens états sans changer leur format interne.Prise en charge de toutes les fonctionnalités du précédent éditeur, y compris les commandes du langage (àl'exception de fonctions temporairement désactivées dans cette préversion de 4D 64 bits, voir Statut desfonctions).

Interface simplifiée :Pas de barre de menus : toutes les fonctionnalités sont accessibles via le nouveau bandeau de boutons ou desmenus contextuels.Pas de mode "assistant" : vous utilisez l'interface standard pour créer et modifier votre état en suivant des étapeslogiques. La page de génération de code 4D n'est pas prise en charge.

Principales fonctionnalités

Ajout d'une colonne (formule) ou de tous les champs via un menu contextuel :

Définition de lignes de totaux et sous-totauxDéfinition des attributs graphiques des cellules / lignes / colonnes via une fenêtre contextuelle :

Fonctions temporairement désactivées

Plusieurs fonctionnalités ne sont pas disponibles dans cette préversion de l'éditeur d'états rapides de 4D ; elles serontajoutées progressivement dans les prochaines releases :

- 75 -

Page 76: 4D Doc Center : 4D v15 R4 - Mise à jourdownload.4d.com/Documents/Products_Documentation/... · Vous pouvez supprimer ces lignes vides en cochant la nouvelle option Masquer lignes

modèlesétats en tableaux croisésprévisualisationétats inclus dans les formulaires (précédemment gérés via une zone de plug-in)

- 76 -