Convertir vos bases en 4D v14



Documents pareils
Fonctionnalités obsolètes ou supprimées

4D v11 SQL BREAKING THE LIMITS * Les nouveautés

4D v11 SQL. Mise à jour Windows /Mac OS. 4D D SAS. Tous droits réservés.

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

Boîte à outils OfficeScan

4D v11 SQL Release 5 (11.5) ADDENDUM

Access 2007 FF Access FR FR Base

FAA : Fonctions Automatiques de l Application. Les fonctions automatiques incluses dans vos applications développées avec

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Archi Office, le logiciel de gestion des documents administratif de l'architecte

Guide pour la réalisation d'un document avec Open Office Writer 2.2

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Préconisations Techniques & Installation de Gestimum ERP

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Les nouveautés de Ciel Comptes personnels

Démarrer et quitter... 13

v7.1 SP2 Guide des Nouveautés

Symantec Backup Exec 12.5 for Windows Servers. Guide d'installation rapide

et de la feuille de styles.

FileMaker Server 14. Aide FileMaker Server

Capture Pro Software. Démarrage. A-61640_fr

GUIDE DE L UTILISATEUR Recoveo Récupérateur de données

Sommaire. Systèmes d Exploitation Intégration Sage 100 Sage CRM Disponibilité Client Bases de données... 3

Tropimed Guide d'installation

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

À propos de Kobo Desktop Télécharger et installer Kobo Desktop... 6

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Notes de mise à jour. 4D v11 SQL Release 2 (11.2) Notes de mise à jour

Cyberclasse L'interface web pas à pas

Manuel de l utilisateur de Samsung Auto Backup

(1) XDCAM Browser

Connected to the FP World

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

Logiciel Enterprise Guide Version 1.3 Windows

Table des matières. 1 À propos de ce manuel Icônes utilisées dans ce manuel Public visé Commentaires...

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Guide d installation UNIVERSALIS 2014

Syfadis. > Configuration du poste client. Nous vous aidons à réussir. REFERENCE : Syfadis LMS - 20/06/2007. AUTEUR : Equipe technique Syfadis

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

Universalis Guide d installation. Sommaire

BIRT (Business Intelligence and Reporting Tools)

Installation 4D. Configuration requise Installation et activation

Cours 420-KEG-LG, Gestion de réseaux et support technique. Atelier No2 :

Préparation à l installation d Active Directory

Notes de mise à jour. 4D v11 SQL Release 3 (11.3) Notes de mise à jour

26 Centre de Sécurité et de

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Archi Office, le logiciel de gestion des documents administratif de l'architecte

Q-Checker pour V6 Release 2.1

SQL Server Installation Center et SQL Server Management Studio

PROCÉDURE D AIDE AU PARAMÉTRAGE

Création de maquette web

TecLocal 4.0. Nouveautés de la version 4.0 (notes de mise à jour)

LOGICIEL KIPICAM : Manuel d installation et d utilisation

Guide d'installation du connecteur Outlook 4

4D v12. Mise à jour Windows /Mac OS. 4D D SAS. Tous droits réservés.

Publipostage avec Calc

GUIDE DE DÉMARRAGE. SitagriPro Infinite FINANCEAGRI. Un service. c o r p o r a t e

Installation 4D. Configuration requise Installation et activation

Corrigé de l'atelier pratique du module 5 : Analyse de SQL Server

Manuel d utilisation du web mail Zimbra 7.1

Symantec Enterprise Vault

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

TeamViewer 7 Manuel Manager

CA Desktop Migration Manager

Stellar Phoenix Outlook PST Repair - Technical 5.0 Guide d'installation

INSTALLATION ET PRISE EN MAIN

Google Drive, le cloud de Google

Procédure d installation pour WinEUR PROCÉDURE D INSTALLATION POUR WINEUR. Copyright GIT SA 2015 Page 1/16

Printer Administration Utility 4.2

FileMaker 13. Guide ODBC et JDBC

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

Logiciel (Système d impression directe)

MEDIAplus elearning. version 6.6

Utilisation de l éditeur.

Licence de Biologie, 1ère année. Aide. [Aide 1] Comment utiliser l'explorateur Windows? Comment créer des dossiers?

STATISTICA Version 12 : Instructions d'installation

Formation. Module WEB 4.1. Support de cours

Auguria_PCM Product & Combination Manager

Assistance à distance sous Windows

Sharpdesk V3.3. Guide d installation Push pour les administrateurs système Version

Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation

QUELQUES CONSEILS POUR LA MAINTENANCE DE VOTRE ORDINATEUR

FileMaker Server 14. Guide de démarrage

Bibliothèque numérique

Guide d installation UNIVERSALIS 2016

KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

INSTALLATION MICRO-SESAME

Freeway 7. Nouvelles fonctionnalités

Interface PC Vivago Ultra. Pro. Guide d'utilisation

Utilisation de l'outil «Open Office TEXTE»

Livret 1 Poste de travail de l utilisateur :

MODULES 3D TAG CLOUD. Par GENIUS AOM

Documentation Liste des changements apportés

Sage 100 CRM - Guide de démarrage rapide Version 8. Mise à jour : 2015 version 8

Mon aide mémoire traitement de texte (Microsoft Word)

Syfadis. > Configuration du poste client. Nous vous aidons à réussir. REFERENCE : Syfadis LMS - 12/09/2008. AUTEUR : Equipe technique Syfadis

Créer une base de données

Transcription:

Guide de migration Conditions d'utilisation Ce document (le «Guide») est destiné à aider les utilisateurs («vous») à effectuer la migration vers le logiciel 4D v14 (le «Logiciel»). Le Guide n a ni pour objet ni pour effet de constituer une quelconque garantie de 4D SAS («4D»), et/ou ne modifie aucunement les termes et conditions du contrat de licence d utilisation du Logiciel applicable. Le Guide est mis à votre disposition à titre gracieux. Le Guide est la propriété exclusive de 4D qui conserve, en qualité de titulaire des droits, l ensemble des droits de propriété intellectuelle afférent au Guide ainsi que toutes les prérogatives s y rattachant. En conséquence, aucun droit de propriété intellectuelle sur le Guide ne vous est transféré. De manière générale, vous n êtes pas autorisé à utiliser le Guide à d autres fins que pour vous aider à migrer vers le Logiciel. Vous n êtes notamment pas autorisé à distribuer le Guide à des tiers, et/ou à réaliser des œuvres dérivées à partir du Guide, et/ou à utiliser le Guide dans un but commercial. Le Guide est fourni «en l état». 4D ne concède aucune garantie expresse ou tacite concernant (i) la fiabilité et/ou l exactitude et/ou le caractère exhaustif du Guide et/ou les résultats découlant de l utilisation du Guide, et/ou (ii) l absence de contrefaçon. Vous reconnaissez et acceptez que toute utilisation du Guide est sous votre seule responsabilité. 4D ne peut en aucun cas être tenue responsable d un quelconque dommage direct, indirect, conséquent ou accidentel, lié au Guide ou découlant de son utilisation.. Si vous n acceptez pas les termes et conditions ci-dessus, vous n êtes pas autorisé à utiliser le Guide. 2

Table des matières Configuration minimale et compatibilités OS... 7 Conversion en 4D v14 à partir des versions précédentes... 8 de 4D v11, 4D v12 et 4D v13... 8 Gestion des clés primaires en 4D v13... 8 Gestion des clés primaires en 4D v14... 9 En résumé : à faire avant de convertir de 4D v13... 11 Conversion d'une base en 4D 2004... 12 Conversion de bases plus anciennes... 15 Obsolescence au fil des versions... 16 4D Chart... 17 Zone de plug-in 4D Chart... 17 Commande GRAPHE SUR SELECTION supprimée... 18 C_GRAPHE doit être remplacé par C_IMAGE... 18 Rendu SVG des graphes... 19 PICT et QuickTime... 19 Nouvelle Commande de 4D PACK : AP Is Picture Deprecated... 19 Par défaut, QuickTime est désactivé en 4D v14 (Commande mise à jour : FIXER PARAMETRE BASE)... 20 Barre d'outils automatique... 20 Commandes 4D Pack implémentées dans 4D v14... 21 Raccourci "Option f" / "Alt f"... 21 API QuickDraw et plug-ins tierce partie... 22 Fenêtre en mode "Non-compositing" sur Mac... 22 Compatibilité des composants... 23 Dialogue "Compatibilité"... 23 Les champs sont saisissables dans les dialogues... 23 Boutons radio groupés par nom... 23 Recharger le formulaire pour chaque enregistrement durant un IMPRIMER SELECTION... 24 Utiliser les commentaires 4DVAR au lieu des crochets... 24 Ne pas utiliser le nouveau référencement des contextes... 24 Supprimer le / sur les URLs inconnus... 24 Interdire de glisser des données ne provenant pas de 4D... 24 Exécuter CHERCHER PAR FORMULE sur le serveur... 24 Exécuter TRIER PAR FORMULE sur le serveur... 24 CHERCHER PAR FORMULE utilise jointures SQL... 25 Autoriser les transactions imbriquées... 25 Mode Unicode... 25 Définir le point et la virgule comme caractères d'emplacement dans les formats numériques... 25 Affectation automatique des variables... 26 Option de compatibilité QuickTime avec FIXER PARAMETRE BASE... 27 Langage : commandes supprimées... 28 Langage : changement de noms de commandes... 29 Modifications et changements de comportements en 4D v14... 30 Utilisation de la touche "." du pavé numérique sous Windows... 30 Plug ins : généralisation du 64 bits et du multilingue... 30 Graphe 4D... 30 Modification du dialogue de recherche... 31 4D Server... 31

Nouvelle page "Moniteur Temps Réel" dans la fenêtre d'administration... 31 Optimisation de la mise à jour automatique du client... 31 A partir de la version 13.5, les champs UNIQUES doivent obligatoirement être indexés.... 31 Journalisation des données et la gestion des clés primaires... 33 Gestion du fuseau horaire... 35 Nouveau PARAMETRE BASE... 35 commande Date et format ISO... 35 QR : méthode de callback... 36 Méthode... 36 Nouvelle valeur en paramètre... 36 Date nulle : les années s affichent sur 4 chiffres... 37 Type Source de données... 37 ListBox... 38 Listes hiérarchiques... 38 Affichage différent pour un pop-up menu hiérarchique associé à une liste 1 niveau ou une liste hiérarchique... 38 Dictionnaires... 39 Zone Web... 39 Accès aux méthodes 4D... 39 Accès à l inspecteur web... 39 Accès au Web kit intégré grâce à un objet spécifique... 40 Nouveau sélecteur pour autoriser le dépôt d'url (4D v14 R2)... 40 Commandes modifiées pour pouvoir utiliser les C_OBJET... 40 Méthode projet avec option Executer sur serveur peut utiliser les C_OBJET... 41 Mémoriser géométrie... 41 La couleur de contraste système devient obligatoire (optionnelle en 4D v13)... 41 La couleur de contraste système entraîne un redessinement de la liste et l'enregistrement courant est déchargé... 42 Images... 42 Nouvel évènement sur les images... 42 Opérateurs images & et... 42 Bibliothèque images... 43 Evènements Sur clic et Sur double clic... 43 Zones multistyles... 43 Interaction des commandes sur les objets et les zones de texte multistyles... 43 Normalisation des fins de lignes dans les zones texte... 44 Rendu des textes (MacOS)... 45 Pointeur Self... 45 Compilateur... 45 Mode plein écran avec masquage automatique de la barre de menu principale sous OS X... 45 Plugs-ins 4D Write et 4D View : "Aller en pleine page" se limite en v4d v14 à la taille du formulaire... 45 Internet Command et unicode... 45 Web services... 46 Mises à jour automatique des Clients... 46 Notation IPv6... 46 Générateur d'applications : Nouvelles clés XML pour intégrer la signature Mac sur OS X... 46 Construire une application avec 4D Volume Desktop... 47 Nouveau paramètre ou nouvelle option... 47 FIXER PARAMETRE BASE... 47 Enumérations et listes... 48 Formulaire : objets... 49 Formulaire : gestion... 49 4D Internet commands... 49 Backup... 50 Utilisateurs et groupes... 50 Serveur Web... 51 Changement de type de paramètre pour une commande existante... 51 OBJET FIXER POLICE... 51 Nouvelle valeur pour un paramètre existant... 51 METHODE FIXER CODE... 51 METHODE FIXER ATTRIBUT... 51 LIRE STATISTIQUES MEMOIRE... 52 LISTE DES POLICES... 52 4

OBJET FIXER / LIRE COULEURS RVB... 52 Version application (4D v14 R2)... 52 4D : Nouvelles commandes... 53 List Box... 53 Document... 53 Feuilles de style... 53 Tableaux... 53 Enumérations et listes hiérarchiques... 53 Objets formulaire... 53 Gestion des formulaires... 54 Texte multistyle... 54 Objets et JSON... 54 Sélecteurs... 55 Polices... 55 Mise à jour... 55 Internet Commands... 55 Web Services (Client)... 55 TimePicker Widget... 55 Web (4D v14r2)... 55 Divers... 55 Thèmes de commandes... 56 Nouveaux thèmes :... 56 Changement de nom :... 56 Nouvelles Méthodes base... 56 Composant... 56 REST... 56 Nouvel évènement... 56 Nouvel évènement sur les images : Sur défilement image... 56 Constantes... 56 Constantes renommées... 56 Nouvelles constantes pour des commandes existantes... 57 Creer fenetre formulaire... 57 Generer digest... 57 LISTE DES POLICES... 57 OBJET FIXER LISTE PAR NOM... 57 WA FIXER PREFERENCE et WA LIRE PREFERENCE... 57 OBJET FIXER COULEURS RVB... 57 TRANSFORMER IMAGE (4D v14r2)... 57 FORM LIRE OBJETS (4D v14r2)... 57 Nouvelles constantes pour de nouvelles commandes... 57 OBJET FIXER EVENEMENTS / OBJET LIRE EVENEMENTS... 57 OBJET FIXER ACTION / OBJET Lire action... 59 OBJET FIXER MULTILIGNE / OBJET Lire multiligne... 59 OBJET FIXER IMPRESSION TAILLE VARIABLE / OBJET LIRE IMPRESSION TAILLE VARIABLE... 59 OBJET FIXER STYLE BORDURE / OBJET Lire style bordure... 59 LIRE INFOS FEUILLE DE STYLE... 60 OBJET FIXER FEUILLE DE STYLE / OBJET Lire feuille de style... 60 OBJET FIXER TYPE INDICATEUR / OBJET Lire type indicateur... 60 ST CALCULER EXPRESSIONS / ST FIGER EXPRESSIONS / ST FIXER ATTRIBUTS / ST LIRE ATTRIBUTS... 60 ST FIXER OPTIONS... 60 ST Lire texte brut... 60 ST Lire type contenu... 60 OBJET Lire type... 61 OB Lire / OB Lire type / OB LIRE NOMS PROPRIETES... 61 TEXTE VERS DOCUMENT / Document vers texte... 61 LISTBOX FIXER TABLEAU / LISTBOX Lire tableau... 62 LISTBOX FIXER COULEUR LIGNE / LISTBOX FIXER STYLE LIGNE... 62 4D PACK 13.2 : nouvelle commande... 62 AP Is Picture Deprecated... 62 5

Nouveau connecteur 4D/Wakanda... 62 6

Configuration minimale et compatibilités OS Windows OS X 4D v14 Processeur Intel Core Duo Intel Core 2 Duo Mémoire RAM mini Mémoire RAM recommandée Systèmes non-compatibles Windows XP Windows Vista Windows Server 2003 Windows Server 200832 bits Systèmes compatibles Windows Server 2008 R2 SP1 Windows Server 2008 SP2 64 bits Windows Server 2012 R2 Windows Server 2012 Systèmes certifiés Windows 7 SP1 (32 bits et 64 bits) Windows 8.x (32 bits et 64 bits) 4D Server v14 32 bits Systèmes non-compatibles Windows XP Windows Vista Windows Server 2003 Windows Server 200832 bits Systèmes compatibles Windows 7 SP1 (32 bits et 64 bits) Windows 8.x (32 bits et 64 bits) Windows Server 2008 R2 SP1 Windows Server 2008 SP2 64 bits Windows Server 2012 R2 Windows Server 2012 Systèmes certifiés 4 Go 8 Go 10.4.11 10.5.8 10.6.8 10.7.5 (Lion) 10.8.5 (Mountain) 10.9.x (Mavericks) 10.10.x (Yosemite) 10.4.11 10.5.8 10.6.8 10.7.5 (Lion) 10.8.5 (Mountain) 10.9.x (Mavericks) 10.10.x (Yosemite) 4D Server v14 64 bits Processeur Intel Core Duo - Mémoire RAM recommandée 8 Go - Systèmes non-compatibles Windows XP - Windows Vista Windows Server 2003 Windows Server 200832 bits Windows 7 SP1 (32 bits) Windows 8.x (32 bits) Systèmes compatibles Windows Server 2008 SP2 64 bits - Systèmes certifiés Windows 7 SP1 (64 bits) - Windows 8.x (64 bits) Windows Server 2008 R2 SP1 Windows Server 2012 R2 Windows Server 2012 NOTE: Ces OS correspondent à la version de 4D v14.3. Les futures versions de 4D peuvent nécessiter des OS differents. http://www.4d.com/fr/support/resources.html 7

Conversion en 4D v14 à partir des versions précédentes de 4D v11, 4D v12 et 4D v13 Les bases de données créées avec les versions v11, v12, et v13 de 4D ou 4D Server, sont compatibles avec 4D version 14 (fichiers structure et données). Vous pouvez convertir n'importe quel fichier de structure interprétée. Vous obtiendrez ce dialogue : Puis les dialogues de journalisation des données vous permettront de mettre en place les clés primaires : Voir le chapitre "Journalisation des données et gestion des clés primaires". Gestion des clés primaires en 4D v13 A partir de la version de 4D v13.4, vous pouvez mettre en place les clés primaires avant conversion en 4D v14, en installant le composant PK Manager Component dans le dossier Components. Vous pouvez le télécharger ici : ftp://ftp-public.4d.fr/components/4dv13/4dv13_pk_manager_component/ 8

puis vous lancez le dialogue en cliquant, en structure, sur l'outil correspondant : Ou en utilisant la commande 4D_PRIMARY_KEY_WIZARD dans une méthode-projet : Gestion des clés primaires en 4D v14 La journalisation permet la mise en place de miroirs en cascade et renforce le processus d'intégration du fichier d'historique. Ce nouveau mécanisme requiert une clé primaire : 9

Soit vous utilisez une clé existante, soit vous la créez : 10

En résumé : à faire avant de convertir de 4D v13 Rappel : vous devez posséder une version "interprétée" de la base, ainsi que le mot de passe SuperUtilisateur pour pouvoir faire une conversion ; Faites une copie de votre base avant conversion ; Faites une vérification de votre syntaxe, même si vous ne souhaitez pas compiler. Cette vérification peut vous alerter sur des erreurs ; Utilisez le Centre de Sécurité et de Maintenance pour vérifier et réparer structure et données ; A partir de 13.2 : Vérifiez si vous avez des PICTS avec la commande du 4D Pack AP is Picture Deprecated et convertissez-les avec la commande TRANSFORMER IMAGE (en 4D v14, il existe toutefois une possibilité d'utiliser encore QuickTime avec un nouveau sélecteur pour la commande FIXER PARAMETRE BASE) ; A partir de 13.4 : possibilité de mise en place des clefs primaire (si besoin de journalisation des données). A partir de la version 13.5, vos champs uniques doivent obligatoirement être indexés. Bien qu'il soit encore possible d'avoir une telle configuration au niveau de la structure (à des fins de maintenance), vous ne serez pas autorisé à créer /modifier un enregistrement d'un champ unique non indexé : la tentative d'enregistrer l'enregistrement génèrera une erreur (-9998 enregistrement unique existe, 1088 L'index est invalide ou manquant). pour créer les index manquants : http://kb.4d.com/assetid=77023 (en anglais), ou ci-desssous code en français : C_ENTIER LONG($maxTableNumber_l;$currentTable_l) C_ENTIER LONG($maxFieldCount_l;$currentField_l) C_ENTIER LONG($dontCare_l) // pour les valeurs du LIRE PROPRIETES CHAMP qui ne sont pas utilisées C_BOOLEEN($dontCare_f;$isIndexed_f;$isUnique_f) C_TEXTE($logHeader_t;$logRecord_t;$logfile_t) C_TEXTE($delim_t;$lf_t) C_TEXTE($tableName_t;$fieldName_t;$note_t) $maxtablenumber_l:=lire numero derniere table Boucle ($currenttable_l;1;$maxtablenumber_l) Si(Est un numero de table valide ($currenttable_l)) $maxfieldcount_l:=lire numero dernier champ (Table($currentTable_l)) boucle ($currentfield_l;1;$maxfieldcount_l) Si(Est un numero de champ valide($currenttable_l;$currentfield_l)) LIRE PROPRIETES CHAMP($currentTable_l;$currentField_l;$dontCare_l;\ $dontcare_l;$isindexed_f;$isunique_f;$dontcare_f) Si($isUnique_f) & (non($isindexed_f)) $tableptr:=table($currenttable_l) $fieldptr:=champ($currenttable_l;$currentfield_l) $tablename_t:=nom de la table($tableptr) 11

$fieldname_t:=nom du champ($fieldptr) $indexname_t:="["+$tablename_t+"]"+$fieldname_t+" indexé car unicité" TABLEAU POINTEUR ($fieldsarray_p;1) $fieldsarray_p{1}:=$fieldptr CREER INDEX($tablePtr->;$fieldsArray_p;Index BTree standard;$indexname_t;*) Fin de si Fin de si Fin de boucle Fin de si Fin de boucle Techtip pour générer un fichier disque listant les champs uniques non-indexés : http://kb.4d.com/assetid=77024, (en anglais) ou ci-dessous code en français : C_ENTIER LONG ($maxtablenumber_l;$currenttable_l) C_ENTIER LONG ($maxfieldcount_l;$currentfield_l) C_ENTIER LONG ($dontcare_l) // pour les valeurs du LIRE PROPRIETES CHAMP qui ne sont pas utilisées C_BOOLEEN($dontCare_f;$isIndexed_f;$isUnique_f) C_TEXTE($logHeader_t;$logRecord_t;$logfile_t) C_TEXTE($delim_t;$lf_t) C_HEURE ($logfile_h) C_TEXTE($tableName_t;$fieldName_t;$note_t) $delim_t:=caractere(tabulation) $lf_t:=caractere(retour chariot)+caractere(retour à la ligne) $logheader_t:="champs uniques sans index :"+$lf_t $logfile_t:=dossier 4D (Dossier Logs)+"UniqueNonIndex.txt" $logfile_h:=creer document ($logfile_t) Si (OK=1) ENVOYER PAQUET ($logfile_h;$logheader_t) $maxtablenumber_l:=lire numero derniere table Boucle ($currenttable_l;1;$maxtablenumber_l) Si (Est un numero de table valide ($currenttable_l)) $maxfieldcount_l:=lire numero dernier champ (Table($currentTable_l)) Boucle ($currentfield_l;1;$maxfieldcount_l) Si (Est un numero de champ valide($currenttable_l;$currentfield_l)) LIRE PROPRIETES CHAMP($currentTable_l;$currentField_l;$dontCare_l;\ $dontcare_l;$isindexed_f;$isunique_f;$dontcare_f) Si(($isUnique_f) & (non($isindexed_f))) $tablename_t:=nom de la table (Table($currentTable_l)) $fieldname_t:=nom du champ(champ($currenttable_l;$currentfield_l)) $logrecord_t:="["+$tablename_t+"]"+$fieldname_t+$lf_t ENVOYER PAQUET($logfile_h;$logRecord_t) Fin de si Fin de si Fin de boucle Fin de si Fin de boucle Fin de si FERMER DOCUMENT ($logfile_h) Conversion d'une base en 4D 2004 Les bases de données créées avec 4D 2004.x, 4D ou 4D Server, sont compatibles avec 4D version 14 (fichiers de structures et de données). Mais le saut étant très important, il faudra sans doute passer par une ou des versions intermédiaires, et à chaque fois utilisez le 4D Tools ou le Centre de Sécurité et de Maintenance (CSM). Avant la conversion, nous vous recommandons : De faire une copie de votre base de données ; 12

De vérifier l'intégrité des données et de la structure en utilisant l'utilitaire 4D Tools (pour compacter structure et données). Utilisez la version de 4D Tools qui correspond à la version 4D de votre base ; 4D Tools, "Réparer la structure", option "Régénérer tous les formulaires de la base: Si vous avez constaté des anomalies au niveau des formulaires ; Si vous avez une alerte vous demandant de désinstaller un composant, il s'agit d'un composant ancienne génération qui doit être désinstallé avec 4D Insider ; En 4D 2004, ouverture avec SHIFT enfoncé pour ré-analyser le contenu des méthodes et récupérer les méthodes perdues : Vérifiez les plug-ins (ils doivent être Universal Binary pour les tierce parties) ; Vérifiez que tous les segments soient présents sinon la conversion ne pourra pas se faire. Lorsque vous convertissez une base de données de 4D 2004, un dialogue de conversion apparaît automatiquement : Si vous cliquez sur "Détails", vous obtenez un dialogue d'informations sur le fichier de structure : 13

Dialogue d'informations sur le fichier de données : Dialogue d'informations sur les segments : les segments de fichiers de données n'existent plus dans 4D. Tous les segments seront automatiquement convertis et réunis dans un fichier de données unique. Dialogue d'informations sur les disques : 14

Dialogue "Options" où vous pouvez choisir de ne pas exécuter le code de la Méthode base Sur Ouverture : Apparaît ensuite le dialogue permettant de journaliser chaque table. Conversion de bases plus anciennes Pour les conversions de bases plus anciennes, voir les documents de conversion des précédentes versions : 4D v13 : "Conversion en 4D v13" et "Fonctionnalités obsolètes en 4D v14" : ftp://ftp-public.4d.fr/documents/products_documentation/lastversions/line_13/vf/pdf_format/conversion4dv13_fr.pdf ftp://ftp.4d.com/aci_product_reference_library/4d_product_documentation/pdf_docs_by_4d_product_a-z/4d/4d_v13/4dv13- Deprecated-Features.pdf 4D v12 : "Fonctionnalités obsolètes en 4D v12" (il n'y a pas eu de document "Conversion" pour cette version) : ftp://ftp-public.4d.fr/documents/products_documentation/lastversions/line_12/vf/pdf_format/4dv12-fonctionnalites-obsoletes.pdf 4D v11 : "Conversion en 4D v11 SQL" : /Line_11/Vf/PDF_Format/Conversion4Dv11SQL_r9.pdf Lorsque l'on convertit de versions très anciennes, il est souvent nécessaire d'utiliser des versions intermédiaires. Ce peut être des versions d'évaluation. Attention : Depuis 4D v11, pour activer la licence d'évaluation, votre connexion internet doit autoriser le protocole HTTPS. 15

Obsolescence au fil des versions Thème Remplacé par Statu 4D CHART SVG Supprimé en 4D v14 (zone de plug) Web area PHP GRAPHE SUR SELECTION Commande GRAPHE avec variable, ou SVG Supprimé en 4D v14 PICT Formats modernes. Le format PICT n'est plus utilisé en 4D v14. Vous pouvez utiliser la commande 4D Pack AP Is picture deprecated disponible depuis la version 13.2: Obsolète $old:= AP is picture deprecated (- >MyPictureVar) // image au format PICT (.pict) Si ($old=1) CONVERTIR IMAGE(MyPictureVar;".jpg") Fin de si QuickTime - QuickTime est désactivé par défaut dans 4D v14. Pour des raisons de compatibilité, vous pouvez l'activer en utilisant la commande: FIXER PARAMETRE BASE (Support QuickTime;1) ou FIXER PARAMETRE BASE (82;1) Obsolète et désactivé par défaut en 4D v14 Le support Quicktime sera désactivé dans une future version Barre d'outils automatique Un formulaire projet en fenêtre-palette Supprimé en 4D v14 4D PACK Commandes 4D Quelques commandes sont supprimées en 4D Pack v14 "Option f/alt f" ne peuvent plus s'utiliser API QuickDraw Une ligne de menu avec l'action standard associée " Retour au mode développement " ou Win : OPTION-SHIFT RIGHT CLICK Mac : OPTION-COMMAND RIGHT CLICK ou CTRL-OPTION-COMMAND-CLICK Nouveau plug-in SDK disponible pour les tierces parties Supprimé en 4D v14 Obsolète Fenêtre en mode "Noncompositing" Toutes les fenêtres sous Mac sont désormais Obsolète sur Mac en Mode Compositing. La constante Précision affichage - Supprimé en 4D v14 reels (32) utilisée par les commandes : FIXER PARAMETRE BASE and Lire parametre base Correcteur orthographique Cordial Correcteur orthographique Hunspell sur Supprimé en 4D v14 Windows Correcteur orthographique natifs sur OS X 16

L'éditeur bitmap de la bibliothèque d'images Raccourci ALT-Clic dans la case de fermeture d'une fenêtre sous Windows Sous-tables (dans les bases de données converties) Mode non-unicode (dans les bases de données converties) Numero de police Nom de police Ressources Mac cicn PICT Les fonctions de visualisation, tri, découpage, importation sont maintenues Ctrl-Alt-W Utiliser une table à part Passer à l'unicode L'utilisation des numéros QuickDraw pour identifier une police est obsolète. Donc les fonctions Numero de police et Nom de police sont obsolètes et la commande OBJET FIXER POLICE n'accepte plus un paramètre de type Entier Long pour la police. Le parametre est une Chaîne et vous devez spécifier le nom de police. Utiliser le dossier "Resources". Par compatibilité vous pouvez encore les utiliser dans les bases converties L'édition d'image est supprimée en 4D v14 Supprimé en 4D v14 Obsolète Obsolète Obsolète Obsolète L'accès en écriture sera prochainement supprimé. Attention : les commandes suivantes sont obsolètes : TABLEAU VERS LISTE DE CHAINES Créer fichier ressources SUPPRIMER RESSOURCE Lire ID ressource composant ECRIRE RESSOURCE IMAGE ECRIRE RESSOURCE ECRIRE NOM RESSOURCE ECRIRE PROPRIETES RESSOURCE ECRIRE RESSOURCE TEXTE ECRIRE RESSOURCE CHAINE... Altura Mac2Win Utiliser le code Windows natif Non supporté Anciennes plateformes Utiliser les apparences Système Supprimé en 4D v13 Mode web contextuel Utiliser le mode non-contextuel Supprimé en 4D v13 Zone de défilement List Box. Conversion automatique des zones Supprimé en 4D v13 de défilement en ListBox Motifs monochromes QuickDraw SVG Supprimé en 4D v13 (propriété des objets sur un formulaire) 4D Open Synchronisation, Web Services, SQL Pass Thru Supprimé en 4D v11 SQL 4D Draw SVG Supprimé en 4D v11 SQL (ce plug-in peut encore être chargé sous Windows avec 4D v13) 4D Chart Zone de plug-in 4D Chart La zone de plug-in 4D CHART est supprimée en 4D v14. Pour créer un graphe, nous recommandons de recevoir le graphe dans une image SVG (nouvelle syntaxe disponible depuis 4D v11). 17

Depuis 4D v11, il est possible d'utiliser la commande GRAPHE en lui passant en premier paramètre une variable de type image à la place de la zone de graphe. Ainsi les développeurs qui utilisent la commande GRAPHE pour afficher ou imprimer un graphe, peuvent aisément le transformer en SVG simplement en utilisant une variable image à la place de la zone de graphe. Il y a beaucoup d'avantages à utiliser le SVG : il est très puissant : on peut utiliser les gradients, la transparence, les rotations, les ombres, il est vectorisé et peut donc être redimensionné sans "pixellisation" ; il utilise les APIs du système, qui sont des APIs modernes de dessin ; il utilise du texte (essentiellement, XML) et il peut être manipulé facilement ; toutes les commandes du thème "Images" fonctionnent avec le SVG ; une image SVG peut être affichée dans une zone Web ; les commandes 4D natives et les méthodes du composant SVG peuvent être utilisées pour permettre à l'utilisateur final d'interagir avec le SVG ; Depuis 4D v13, l'image issue du SVG peut être facilement manipulée car chaque élément du graphe possède un ID SVG. Ceci permet de modifier l'image avant de l'afficher à l'utilisateur, ou permet des modifications de l'utilisateur. En plus du SVG, il y a d'autres moyens pour générer des graphes : la zone Web avec Javascript, ou la nouvelle commande PHP Executer qui ouvre la porte à quantité de codes disponibles, etc. Rappel : (dans 4D v13 seulement) 4D Chart doit être installé manuellement dans le dossier "Plugins". La commande GRAPHE ne fonctionne qu'avec une variable image en premier paramètre et non une zone de plug-in. Dans le menu Outils, deux commandes disponibles (Charts et 4D Chart) Le pop-up menu associé au bouton Outils. La destination Graphe dans l éditeur d états rapides. Création de formulaires automatiques : le bouton Graphe est supprimé par défaut sur les formulaires Liste, mais vous pouvez le rajouter avec l assistant. Dans la Liste des propriétés, si 4D Chart n est pas présent, les choix Graph et 4D Chart ne sont pas proposés. Commande GRAPHE SUR SELECTION supprimée La commande GRAPHE SUR SELECTION est supprimée. C_GRAPHE doit être remplacé par C_IMAGE La syntaxe : C_GRAPHE (zegraph) //ou C_ENTIER LONG GRAPHE (zearguments) est obsolète, et le plug-in doit être installé pour utiliser cette commande. Vous devez remplacer cette commande par : C_IMAGE (zegraph) //ou C_ENTIER LONG GRAPHE (zearguments) // -> utilise le SVG 18

Rendu SVG des graphes Le rendu SVG des graphes a été amélioré, et des identifiants sont attribués automatiquement aux différents éléments du graphe pour pouvoir les manipuler. Attention : Un graphe construit avec le moteur de rendu SVG (construit avec la commande GRAPHE et une variable image en 4D v11 ou 4D v12) n aura pas le même rendu en 4D v13 ou 4D v14. Il sera peut-être nécessaire de rectifier le format de l image ou d agrandir la taille de l image. PICT et QuickTime Le format "PICT" est un très ancien format Mac. Avant la version 11, 4D stockait toutes les images dans ce format, même sous Windows. Le format PICT est obsolète depuis que QuickDraw est obsolète (depuis 2005). Un point important à connaître à propos des PICT. Elles peuvent stocker ("encapsuler") l'information de deux façons : - soit en primitives (bitmap ou vectorisée) ; - soit sous un format plus moderne (JPEG par exemple), stockée dans une PICT en utilisant QuickTime. Pour cela, le développeur utilisait la commande COMPRESSER IMAGE. Cela signifie que même si toutes les images stockées dans le fichier de données avant 4D v14 sont des PICT, elles peuvent, en fait contenir du JPEG. Il est important que vos clients arrêtent l'utilisation des PICT, surtout parce que 4D a besoin d'altura (+ QuickTime si la commande COMPRESSER IMAGE est utilisé) pour lire une PICT sous Windows : ceci n'est pas optimisé, et nécessite l'installation de QuickTime. Lorsque vous migrez vos applications en 4D v13 ou 4D v14, vous devez utiliser la commande AP Is Picture Deprecated pour chaque champ image de votre data. Si le champ image encapsule une zone 4D Write ou 4D View, vous devez utiliser la commande COMPRESSER IMAGE avec le codec adéquat (voir la documentation). Nouvelle Commande de 4D PACK : AP Is Picture Deprecated De façon à préparer à la migration en version 14, nous avons introduit une nouvelle commande dans le plug-in 4D Pack (à partir de la version 13.2). Les développeurs pourront ainsi vérifier si les images dans leurs bases de données sont encodées dans un format qui requiert QuickTime. Si c'est le cas, ils peuvent convertir leurs images dans un format plus moderne, avant de passer en version 14. AP Is Picture Deprecated (mypict) -> résultat Paramètres Type Description MyPict Pointeur -> pointeur sur l'image à tester résultat Entier long <- 0 = le format est ok 1 = le format est obsolète Exemple: $old:=ap Is Picture Deprecated (->my_pict) Si ($old=1) CONVERTIR IMAGE (my_pict;".jpg") Fin de si Attention : il se peut que QuickTime soit nécessaire avant la conversion avec la commande CONVERTIR IMAGE car 4D utilise en priorité les codec système, puis QuickTime si le système ne connait pas le codec demandé (Pour info, les formats d'image suivants n'utilisent pas QuickTime : jpeg, png, tiff, gif, bmp, pdf, emf ). 19

Par défaut, QuickTime est désactivé en 4D v14 (Commande mise à jour : FIXER PARAMETRE BASE) FIXER PARAMETRE BASE ( {atable ;}selector ; value ) Nouveau sélecteur valeur 82: Prise en charge QuickTime 0 = QuickTime désactivé (defaut) 1 = QuickTime activé Barre d'outils automatique 4D v14 ne permet plus d'afficher la barre d'outils automatique du Mode Application. Vous pouvez la remplacer par un formulaire-projet dans une palette flottante. Les options concernant la barre d'outils n'apparaîtra plus dans certains dialogues : Dans 4D v13 : L'option "Icône barre d'outils" disparaît en 4D v14. La case à cocher "Afficher la barre d'outils" du dialogue Interface "Utilisateur" disparaît en 4D v14. Les commandes AFFICHER BARRE OUTILS et CACHER BARRE OUTILS sont désormais inactives. La fonction Hauteur barre outils retourne toujours 0 en Mode Application. Mais elle peut retourner la hauteur de la barre d'outils de 4D en Mode Développement. 20

Commandes 4D Pack implémentées dans 4D v14 4D PACK AP AVAILABLE MEMORY 4D: LIRE STATISTIQUES MEMOIRE qui retourne "Stack memory" et "Free stack memory" (nouveau dans 4D v14) AP HELP INDEX AP HELP ON HELP Ces fichiers d aide ne sont plus compatibles à partir de Windows Vista, et il n est plus conseillé de les utiliser. AP HELP ON KEY AP CLOSE HELP AP Create method 4D: METHODE FIXER CODE et METHODE FIXER ATTRIBUT AP Modify method AP Does method exist 4D: METHODE LIRE NOMS ($arrnames;"mymethod@") $exists:=(taille tableau ($arrnames)>0) //Vrai si la méthode existe AP Get picture type 4D: LISTE CODECS IMAGES ( TableauCodecs) $picture:= Est un fichier image (PictureFile)// vérifie le fichier avec l extension // Vrai si le codec de Picturefile Codec est présent dans le TableauCodecs Ou $picture:= Est un fichier image (PictureFile;*)// test le fichier sans l extension AP Get templates _AP External clock AP SET CLOCK inutilisé Deux nouveaux widgets dans la bibliothèque d'objets en 4D v14 AP Rec Dragger AP Timestamp to GMT AP SET PARAM AP Get param 4D : une nouvelle commande FIXER ICONE GLISSER peut être utilisée avec les images en 4D v14 $mydate:=chaine (Date du jour;iso Date GMT; Heure courante) // retourne 2013-05-06T12:19:23Z - Raccourci "Option f" / "Alt f" Ce raccourci est supprimé en 4D v14. Vous pouvez associer vos propres raccourcis ou utiliser : Mac : OPTION-COMMANDE CLIC DROIT ou CTRL-OPTION-COMMANDE-CLIC Win : OPTION-MAJUSC CLIC DROIT. 21

API QuickDraw et plug-ins tierce partie Il existe deux types de plug-ins : ceux qui utilisent les nouveaux API, et ceux qui utilisent les anciennes API (avec QuickDraw). Pour les plug-ins utilisant l'ancienne toolbox (avec QuickDraw) : pour maintenir la compatibilité, le rendu n'est plus fait directement par le port QuickDraw, comme dans les versions précédentes, mais par une zone horsécran GWorld QuickDraw dédiée au plug-in. Par conséquent, vous devez respecter certaines règles, comme par exemple l'interdiction de modifier le port courant fixé par le container (form object). Pour les plug-ins utilisant la nouvelle toolbox : seule la nouvelle toolbox est utilisée et non QuickDraw http://sources.4d.com/trac/4d_4dpluginapi/wiki/native_drawing Fenêtre en mode "Non-compositing" sur Mac A cause de l'obsolescence de QuickDraw, toutes les fenêtres sur Mac sont désormais obligatoirement en Mode Compositing. Les constantes concernant ce mode ne font donc plus rien, et nous avons changé leur nom : Mode compositing (fonction Creer fenetre) Form Mode compositing (fonction Creer fenetre formulaire) _0_Mode compositing _0_Form Mode compositing 22

Compatibilité des composants 4D v14 peut charger des composants 4D v13 sans qu'il soit nécessaire de les convertir ou d'afficher les dialogues de conversion. Rappel : les composants sont toujours ouverts en lecture seule. Il n'est pas nécessaire de recompiler les composants mais la conversion en version 4D v14 est seulement possible pour les fichiers.4db et non pour les fichiers.4dc. Le pointeur "self" retourné par les fonctions Self ou Objet lire pointeur (Objet courant) était cloisonné par le composant. Ce n'est plus le cas en 4Dv14: tous les composants partagent le même pointeur "self". Dialogue "Compatibilité" Les champs sont saisissables dans les dialogues Dans d'anciennes versions de 4D, il n'était pas possible de saisir des valeurs en utilisant des champs dans les dialogues., par exemple en utilisant la commande DIALOGUE. Cette limitation a été supprimée depuis 4D 2004. L'option est cochée pour les bases converties en 4D 2004 et décochée pour les bases créées à partir de 4D 2004. Par défaut, dans les bases créées en 4D v14 : les champs sont saisissables dans les dialogues. Boutons radio groupés par nom Dans les précédentes versions de 4D, la coordination d'un groupe de boutons radio était obtenue en donnant la même première lettre aux variables associées aux boutons. A partir de 4D 2004, le comportement a changé : pour coordonner 23

des boutons radios, ils doivent simplement être groupés dans l'éditeur de formulaire. Ce nouveau comportement est valable pour les boutons radios, boutons radios 3D et boutons radio image. Recharger le formulaire pour chaque enregistrement durant un IMPRIMER SELECTION Dans les précédentes versions de 4D, le formulaire utilisé avec un IMPRIMER SELECTION était rechargé à chaque enregistrement imprimé. Ceci permettait de réinitialiser tous les objets que le développeur avait pu modifier en Sur impression corps. Afin d'optimiser les performances, à partir de 4D 2004, le formulaire n'est pas rechargé à chaque enregistrement. Le développeur devra réinitialiser lui-même les objets qu'il souhaite. Nous vous conseillons vivement de décocher cette option dans vos bases converties. Décochez l'option et déplacez votre code pour qu'il fonctionne dans l'évènement Sur impression corps. Utiliser les commentaires 4DVAR au lieu des crochets Si cette option est cochée (valeur par défaut) la syntaxe à utiliser pour l'insertion d'expression 4D dans des pages HTML statiques est : <!--4DVAR MAVAR-->. Si cette case à cocher n'est pas cochée, la syntaxe à utiliser est ([MAVAR]) ce qui est une solution propriétaire utilisée dans les anciennes versions de 4D Server. Nous vous recommandons vivement de cocher cette option dans les bases converties. Ne pas utiliser le nouveau référencement des contextes Lorsque cette option est décochée (valeur par défaut), le serveur 4D place le numéro de contexte dans l'url de base des du document HTML envoyé. Avec l'ancien système (option cochée), le serveur 4D envoie le numéro de contexte pour chaque élément de la page, ce qui ralentit les traitements. Nécessite de redémarrer la base pour être effectif. Nous vous conseillons vivement d'utiliser le nouveau référencement des contextes. Supprimer le / sur les URLs inconnus Dans les anciennes versions de 4D, les URLs inconnus (URLs ne correspondant à aucune page existante ou à un URL spécial) étaient retournés dans les Méthodes-base Sur authentification Web et Sur connexion Web ($1) sans débuter par le caractère "/". Ce fonctionnement a été supprimé à partir de 4D 2004. Désormais tous les URLs commencent par un "/", sauf si vous cochez cette option. Interdire de glisser des données ne provenant pas de 4D A compter de 4D v11, 4D permet le glisser-déposer de selection, d'objets ou de fichiers provenant de l'extérieur de 4D, sauf si cette option est cochée. Cette possibilité reste possible pour les objets ayant l'option "Déposer automatique" et si le "déposer" concerne des objets automatiquement interprétables (comme le texte ou les images). Exécuter CHERCHER PAR FORMULE sur le serveur Exécuter TRIER PAR FORMULE sur le serveur A compter de 4D v11, les commandes CHERCHER PAR FORMULE, CHERCHER PAR FORMULE DANS SELECTION et TRIER 24

PAR FORMULE sont exécutées sur le serveur pour des raisons d'optimisation. CHERCHER PAR FORMULE ([latable];[ latable]lechamp= mavariable) Sera exécutée sur le serveur mais le contenu de la variable mavariable sera évaluée sur le poste client. En revanche, ce principe n est pas appliqué pour les formules utilisant des méthodes qui, elles-mêmes, font appel à des variables : dans ce cas la valeur des variables est évaluée sur le serveur. Ce fonctionnement pouvant affecter les algorithmes existants dans les bases converties, par défaut dans ce contexte ces commandes continuent d être exécutées sur le poste client. Pour retrouver l'exécution de ces commandes sur le serveur, cochez ces options. Autre précision : Si vous souhaitez bénéficier du nouvel algorithme dans une base convertie, il vous suffit de cocher ces options. Note : Cette option peut être définie par process via la commande FIXER PARAMETRE BASE. CHERCHER PAR FORMULE utilise jointures SQL A partir de 4D v11, les commandes CHERCHER PAR FORMULE et CHERCHER PAR FORMULE DANS SELECTION effectuent des jointures sur le modèle du SQL. Il n'est pas nécessaire qu'un lien existe entre les tables. Par défaut, ce fonctionnement est désactivé dans les bases converties. Cette option peut aussi être paramétrée en utilisant la commande FIXER PARAMETRE BASE. Autoriser les transactions imbriquées A partir de 4D v11, 4D accepte les transactions imbriquées sur un nombre illimité de niveaux. Ce nouveau fonctionnement pouvant générer des dysfonctionnements, il est désactivé par défaut dans les bases converties. Si vous voulez en bénéficier, il faut cocher cette option. Note : cette option n'a pas d'effet sur les transactions du moteur SQL qui sont toujours multi-niveaux. Mode Unicode Cette option permet d'activer ou de désactiver le mode Unicode. En mode non-unicode, c'est le jeu de caractères ASCII qui est utilisé. Par défaut les nouvelles bases sont en Mode Unicode. Pour les bases converties, elle est désélectionnée par défaut. Il est possible de faire cohabiter une base unicode avec un composant non-unicode (ou inversement) en mode interprété. On peut configurer le mode Unicode à l'aide de la commande FIXER PARAMETRE BASE. Nous vous recommandons vivement de cocher cette option dans vos bases converties (mais attention, certains comportements changent). Définir le point et la virgule comme caractères d'emplacement dans les formats numériques A partir de 4D v11, 4D utilise les paramètres régionaux du système pour les formats d'affichage numériques. 25

4D remplace automatiquement les "," et les "." par les caractères définis respectivement comme séparateur décimal et séparateur des milliers au niveau du Système. Dans les bases converties, par défaut, ce nouveau fonctionnement n'est pas actif car il génère des problèmes d'affichage des formats numériques qu'il faudra penser à modifier. Nous vous recommandons vivement de cocher cette option dans vos bases converties, mais attention, vous devrez changer les formats des nombres. A noter : avec 4D v14, l'utilisation de la touche "." du pavé numérique sous Windows a été différencié pour les champs de type "réel" et les champs de type "chaîne" : En 4D v12: que le champ soit numérique ou une chaîne, l'utilisation sur la touche "." du pavé numérique insérait le séparateur décimal défini au niveau du système, au moment de la frappe ; En 4D v13 : que le champ soit numérique ou une chaîne, l'utilisation sur la touche "." du pavé numérique insérait le séparateur décimal défini au niveau du système (mais la définition devait être faite AVANT le lancement de 4D) ; En 4D v14 : pour les champs de type Réel, l'utilisation de la touche "." du pavé numérique insère le séparateur décimal défini par le système. Pour les autres types de champs, l'utilisation de cette touche ajoute un point. Affectation automatique des variables Dans les précédentes versions de 4D, le serveur Web recopiait automatiquement les valeurs des variables envoyées grâce à un formulaire Web ou un URL dans des variables 4D si elles avaient le même nom. Pour des raisons d'optimisation et de contrôle, ce principe n'est plus maintenu à partir de 4D v14 : les valeurs des variables Web ne sont plus automatiquement assignées aux variables 4D. Pour des raisons de compatibilité, ce mécanisme est maintenu par défaut dans les bases créées avec une version antérieure à la version 13.4. Dans ce cas, vous pouvez le désactiver en décochant l'option Affectation automatique des variables : Ce mécanisme étant obsolète, nous vous recommandons vivement de décocher cette option dans les bases converties, et d'adapter votre code si nécessaire. Pour récupérer les variables envoyées avec un POST ou un GET, vous devez utiliser exclusivement la commande WEB LIRE VARIABLES. Pour récupérer des fichiers, vous devez utiliser les commandes WEB LIRE PARTIE CORPS et WEB Lire nombre parties corps. Note: l'affectation automatique est désactivée par défaut dans les bases créées à partir de la version de 4D 13.4. 26

Option de compatibilité QuickTime avec FIXER PARAMETRE BASE FIXER PARAMETRE BASE ( {latable ;} Prise en charge QuickTime; 1) Valeurs possibles : - 0 (défaut) = QuickTime désactivé, - 1 = QuickTime activé. Dans 4D à compter de la v14, par défaut les codecs QuickTime ne sont plus pris en charge. Par compatibilité, vous pouvez les réactiver dans votre base à l aide de ce sélecteur. La modification de cette option nécessite le redémarrage de la base. A noter toutefois que la prise en charge de QuickTime sera définitivement supprimée dans les prochaines versions de 4D. 27

Langage : commandes supprimées Comme conséquence logique de l'obsolescence de certaines technologies, voici la liste des commandes supprimées : Thème Commande A remplacer par 4D GRAPHE SUR SELECTION Commande GRAPHE(variableImage ) ou SVG 4D PACK AP AVAILABLE MEMORY 4D : LIRE STATISTIQUES MEMOIRE retourne "mémoire pile" (stack memory) et "mémoire pile disponible" (free stack memory). (new in 4D v14) AP HELP INDEX AP HELP ON HELP AP HELP ON KEY AP CLOSE HELP AP Create method AP Modify method Ces fichiers d'aide ne sont plus compatibles avec les récents OS. Nous déconseillons de les utiliser. 4D : METHODE FIXER CODE et METHODE FIXER ATTRIBUT AP Does method exist 4D : METHODE LIRE NOMS ($arrnames;"mymethod@") $exists:=(taille tableau ($arrnames)>0) //renvoie Vrai si elle existe AP Get picture type 4D : LISTE CODECS IMAGES ( codecarray) $picture:= Est un fichier image (PictureFilePath) // vérification avec l'extention du fichier // Vrai si le codec de l'image Picturefile est présent dans le tableau codecarray ou $picture:= Est un fichier image (PictureFilePath;*) // vérification sans l'extension du fichier AP Get templates _AP External clock AP SET CLOCK AP Rec Dragger AP Timestamp to GMT AP SET PARAM AP Get param inutilisé Deux nouveaux widgets "Time display area" en 4D v14 4D : FIXER ICONE GLISSER (peut être utilisé dans 4D v14 avec des images) $madate:=chaine (Date du jour ;ISO Date GMT; Heure courante) // retourne 2013-05-06T12:19:23Z // correspond à la norme ISO8601, contenant une date et une heure // en tenant compte de la zone de fuseau horaire (heure GMT) // A noter que le format ISO Date est obsolète. - 28

Langage : changement de noms de commandes OUVRIR FORMULAIRE IMPRESSION OUVRIR FORMULAIRE IMPRESSION("") en 4D v13 ferme le formulaire courant. -> FORM CHARGER Note: FORM CHARGER ("") en 4D v14 retourne une erreur. Vous devez utiliser la nouvelle commande FORM LIBERER, ou FERMER TACHE IMPRESSION OBJET ATTRIBUT TEXTE STYLE -> ST LIRE ATTRIBUTS OBJET FIXER ATTRIBUT TEXTE STYLE -> ST FIXER ATTRIBUTS OBJET Lire texte brut -> ST Lire texte brut OBJET FIXER TEXTE BRUT -> ST FIXER TEXTE BRUT OBJET Lire texte style -> ST Lire texte OBJET FIXER TEXTE STYLE -> ST FIXER TEXTE OBJET Lire nom enumeration -> OBJET Lire nom liste WA Executer Javascript -> WA Evaluer JavaScript OBJET FIXER NOM ENUMERATION -> OBJET FIXER LISTE PAR NOM 29

Modifications et changements de comportements en 4D v14 Utilisation de la touche "." du pavé numérique sous Windows Depuis 4D v11, le formatage des nombres peut se faire selon les préférences systèmes - Voir Options de Compatibilité pour les bases converties : 4D substitue alors automatiquement le : «.» par le séparateur système des décimales «,» par le séparateur système des milliers En 4D v12: que le champ soit numérique ou une chaîne, l'utilisation sur la touche "." du pavé numérique insérait le séparateur décimal défini au niveau du système, au moment de la frappe ; En 4D v13 : que le champ soit numérique ou une chaîne, l'utilisation sur la touche "." du pavé numérique insérait le séparateur décimal défini au niveau du système (mais la définition devait être faite AVANT le lancement de 4D) ; En 4D v14 : pour les champs de type Réel, l'utilisation de la touche "." du pavé numérique insère le séparateur décimal défini par le système. Pour les autres types de champs, l'utilisation de cette touche ajoute un point. Plug ins : généralisation du 64 bits et du multilingue 4D Write, 4D View, 4D Pack, 4D ODBC Pro, 4D for OCI existent maintenant en 64 bits sous Windows. 4D Write et 4D View sont désormais des plug-ins multilingues et seront chargés même si le seul langage disponible n'est pas identique à celui du 4D courant. Tous les plug-ins non-localisés (4D Pack, 4D Internet Commands, 4D For OCI et 4D ODBC Driver) peuvent être chargés par n'importe quel produit 4D localisé. Graphe 4D La syntaxe autorisée dans 4D est : GRAPHE ( graphpicture ; graphnumber ; xlabels {; yelements} {; yelements2 ;... ; yelementsn} ) Le plug-in 4D Chart est supprimé dans 4D v14, donc vous ne pouvez plus utiliser une zone de plug-in en premier paramètre mais une variable image oui. La commande GRAPHE SUR SELECTION est supprimée. 30

Modification du dialogue de recherche L'éditeur du "Chercher par formule" a été fusionné avec l'éditeur de "Recherche standard" 4D Server Nouvelle page "Moniteur Temps Réel" dans la fenêtre d'administration Une nouvelle page "Moniteur Temps Réel" de la fenêtre d'administration de 4D Server permet de vérifier en temps réel l'exécution des opérations longues comme les recherches séquentielles, l exécution de formules, etc. Optimisation de la mise à jour automatique du client A partir de la version 13.5, les champs UNIQUES doivent obligatoirement être indexés. Bien qu'il soit encore possible d'avoir une telle configuration au niveau de la structure (à des fins de maintenance), vous ne serez pas autorisé à créer /modifier un enregistrement d'un champ unique non indexé : la tentative d'enregistrer l'enregistrement génèrera une erreur (-9998 enregistrement unique existe, 1088 L'index est invalide ou manquant). pour créer les index manquants : http://kb.4d.com/assetid=77023 (en anglais), ou ci-desssous code en français : C_ENTIER LONG($maxTableNumber_l;$currentTable_l) C_ENTIER LONG($maxFieldCount_l;$currentField_l) Sous réserves de modifications 01/04/2015 31

C_ENTIER LONG($dontCare_l) // pour les valeurs du LIRE PROPRIETES CHAMP qui ne sont pas utilisées C_BOOLEEN($dontCare_f;$isIndexed_f;$isUnique_f) C_TEXTE($logHeader_t;$logRecord_t;$logfile_t) C_TEXTE($delim_t;$lf_t) C_TEXTE($tableName_t;$fieldName_t;$note_t) $maxtablenumber_l:=lire numero derniere table Boucle ($currenttable_l;1;$maxtablenumber_l) Si(Est un numero de table valide ($currenttable_l)) $maxfieldcount_l:=lire numero dernier champ (Table($currentTable_l)) boucle ($currentfield_l;1;$maxfieldcount_l) Si(Est un numero de champ valide($currenttable_l;$currentfield_l)) LIRE PROPRIETES CHAMP($currentTable_l;$currentField_l;$dontCare_l;\ $dontcare_l;$isindexed_f;$isunique_f;$dontcare_f) Si($isUnique_f) & (non($isindexed_f)) $tableptr:=table($currenttable_l) $fieldptr:=champ($currenttable_l;$currentfield_l) $tablename_t:=nom de la table($tableptr) $fieldname_t:=nom du champ($fieldptr) $indexname_t:="["+$tablename_t+"]"+$fieldname_t+" indexé car unicité" TABLEAU POINTEUR ($fieldsarray_p;1) $fieldsarray_p{1}:=$fieldptr CREER INDEX($tablePtr->;$fieldsArray_p;Index BTree standard;$indexname_t;*) Fin de si Fin de si Fin de boucle Fin de si Fin de boucle Techtip pour générer un fichier disque listant les champs uniques non-indexés : http://kb.4d.com/assetid=77024, (en anglais) ou ci-dessous code en français : C_ENTIER LONG ($maxtablenumber_l;$currenttable_l) C_ENTIER LONG ($maxfieldcount_l;$currentfield_l) C_ENTIER LONG ($dontcare_l) // For GET FIELD PROPERTIES values that are not used. C_BOOLEEN($dontCare_f;$isIndexed_f;$isUnique_f) C_TEXTE($logHeader_t;$logRecord_t;$logfile_t) C_TEXTE($delim_t;$lf_t) C_HEURE ($logfile_h) C_TEXTE($tableName_t;$fieldName_t;$note_t) $delim_t:=caractere(tabulation) $lf_t:=caractere(retour chariot)+caractere(retour à la ligne) $logheader_t:="champs uniques sans index :"+$lf_t $logfile_t:=dossier 4D (Dossier Logs)+"UniqueNonIndex.txt" $logfile_h:=creer document ($logfile_t) Si (OK=1) ENVOYER PAQUET ($logfile_h;$logheader_t) $maxtablenumber_l:=lire numero derniere table Boucle ($currenttable_l;1;$maxtablenumber_l) Si (Est un numero de table valide ($currenttable_l)) $maxfieldcount_l:=lire numero dernier champ (Table($currentTable_l)) Boucle ($currentfield_l;1;$maxfieldcount_l) Si (Est un numero de champ valide($currenttable_l;$currentfield_l)) LIRE PROPRIETES CHAMP($currentTable_l;$currentField_l;$dontCare_l;\ $dontcare_l;$isindexed_f;$isunique_f;$dontcare_f) Si(($isUnique_f) & (non($isindexed_f))) 32

Fin de boucle $tablename_t:=nom de la table (Table($currentTable_l)) $fieldname_t:=nom du champ(champ($currenttable_l;$currentfield_l)) $logrecord_t:="["+$tablename_t+"]"+$fieldname_t+$lf_t ENVOYER PAQUET($logfile_h;$logRecord_t) Fin de si Fin de si Fin de boucle Fin de si Journalisation des données et la gestion des clés primaires En 4D v14, la journalisation des données a complètement changé de façon à la rendre plus simple et plus sûre. Une des modifications les plus importantes est que chaque table, pour pouvoir être journalisée, doit avoir une clé primaire valide. - On peut choisir d'installer ces clés primaires dans une base 4D antérieure à 4D v14, avant de la convertir en 4D v14 ; l'assistant aide à définir les clés primaires pour chaque table dans une ancienne structure. - On peut souhaiter vérifier et fixer les clés primaires pour toutes les tables dans une structure 4D. L'assistant vous guide pour trouver les tables sans clés primaires ou avec une clé incorrecte, et vous aide à corriger les problèmes. L'assistant de clé primaire est disponible en 4D v14 comme composant intégré. Le dialogue se lance automatiquement après conversion : Ou vous pouvez réafficher ce dialogue, en cliquant, en structure, sur l'outil correspondant 33

Pour chaque table avec problème, l'assistant de clé primaire propose les actions suivantes : Ignorer Utiliser un champ existant Créer un nouveau champ Ne pas journaliser cette table Vous pouvez créer un nouveau champ (de type Entier Long ou UUID) : Dans le dialogue Inspecteur de la table, cochez l'option "Inclure dans le fichier d'historique" : Une nouvelle commande a été créée : INTEGRER FICHIER HISTORIQUE MIROIR ( cheminaccès {; numopération} ) Le premier paramètre doit être le chemin d'accès au fichier d'historique à intégrer, et le second paramètre est le numéro de l'opération qui indique le début de l'intégration. Si ce paramètre est omis, la commande intégrera la totalité du fichier d'historique. Exemple : INTEGRER FICHIER HISTORIQUE MIROIR ("C:\\Users\\user\\Desktop\\Mirror\\MyLogFile.journal";2) Lorsque vous créez une nouvelle table, 4D active automatiquement la journalisation pour cette table. Le language de 4D fournit un moyen d'activer ou de désactiver la journalisation pour une table existante. Exemple avec des commandes SQL dans une méthode 4D : ALTER TABLE a de nouveaux paramètres optionnels (en rouge): ALTER TABLE sql_name 34

{ADD column_definition [PRIMARY KEY] [TRAILING] DROP sql_name ADD primary_key_definition DROP PRIMARY KEY ADD foreign_key_definition DROP CONSTRAINT sql_name [{ENABLE DISABLE} REPLICATE] [{ENABLE DISABLE} LOG] [{ENABLE DISABLE} AUTO_INCREMENT] [{ENABLE DISABLE} AUTO_GENERATE] SET SCHEMA sql_name} Gestion du fuseau horaire Dans les précédentes version de 4D, une date ne gérait pas les fuseaux horaires locaux et fixait la date au fuseau horaire GMT+0 ; ainsi avec la date!23/08/2013! vous obteniez "2013-08-23T00:00:00Z". GMT: JSON Stringify(!23/08/2013!) => "2013-08-23T00:00:00Z" Heure locale : JSON Stringify(!23/08/2013!) => "2013-08-22T22:00:00Z" Nous avons changé ce comportement de façon à avoir le même comportement en 4D et en Javascript, et nous considérons qu une valeur C_DATE contient une heure locale et non GMT+0. Nouveau PARAMETRE BASE FIXER PARAMETRE BASE (85, 0) ou FIXER PARAMETRE BASE (Json fuseau horaire local ;0) -> permet de revenir à l ancien fonctionnement et ignorer le fuseau horaire local // 04/09/13 "MyDate":"2013-09-04T00:00:00Z" FIXER PARAMETRE BASE (85, 1) ou FIXER PARAMETRE BASE (Json fuseau horaire local 1) -> nouveau comportement qui prend en compte le fuseau horaire local (c est désormais le mode par défaut) // 04/09/13 {"MyDate":"2013-09-03T22:00:00Z"} // un jour avant! commande Date et format ISO // exemple date: 4 Septembre 2013 à 13h23 heure locale à Paris C_OBJET(Obj_DateIso) OB FIXER (Obj_DateIso;"MyDate";Date du jour) vdateiso:=ob Lire (Obj_DateIso;"MyDate") //2013-09-03T22:00:00Z vdate:=date(vdateiso) //04/09/13 35

$test1:=chaine(date du jour;iso date) //2013-09-04T00:00:00 // ne plus utiliser! $test2:= Chaine (Date du jour;iso date;heure courante) // 2013-09-04T13:23:13 $test3:= Chaine (Date du jour;iso date GMT) // 2013-09-03T22:00:00Z $test4:= Chaine (Date du jour;iso date GMT; Heure courante) // 2013-09-04T11:23:13Z QR : méthode de callback Vous pouvez utiliser une méthode-projet en paramètre de la commande QR REPORT (à partir de 4D v13.4) QR ETAT([MyTable]; ;Faux;Faux;Faux; mycallbackmethod ) mycallbackmethod (code en 4D v14): C_ENTIER LONG ($1;$2) // $1 id qr, $2 command menu used C_TEXTE($text) Si ($2=qr cmd generate) // 2008 qr cmd generate // 2501 qr cmd disk file destination //... etc QR FIXER DESTINATION ($1;qr text file;"mydoc.txt") QR EXECUTER COMMANDE ($1;$2) $text:=document vers texte ("MyDoc.txt") TEXT VERS DOCUMENT("MyDoc.txt";$text;"UTF-8") // à partir d une base non-unicode // ou TEXT VERS DOCUMENT// à partir d une base unicode Sinon QR EXECUTER COMMANDE ($1;$2) // pour exécuter tous les autres choix Fin de si Méthode Nouvelle valeur en paramètre METHODE FIXER CODE En métadonnées JSON dans l en-tête de la méthode, la commande ajoute l attribut "folder" E.g.: %attributes={"lang":"en","folder":"web"} METHODE FIXER ATTRIBUT ( chemin ; attribtype ; attribvaleur{;*}) Paramètre Type Description 36

chemin texte tableau texte - > Texte ou tableau texte contenant un ou des chemins d'accès de méthode(s)... attribtype Entier long - > Nouveau type d attribut 1024: Attribut nom dossier attribvaleur booléen / texte Texte du nom du dossier remplace AP Create method Un nouvel attribut vous permet d indiquer le nom du dossier et vous pouvez utiliser des paires Attribut/valeur avec cette commande : vfoldername:="web" vcode:="it is a test" METHODE FIXIER CODE ("MyMethod";vCode;*) METHODE FIXER ATTRIBUT ("MyMethod";Attribut invisible;faux;1024;vfoldername) ou METHODE FIXER ATTRIBUT ("MyMethod";Attribut invisible; Faux;Attribut nom dossier;vfoldername) LIRE STATISTIQUES MEMOIRE ( typeinfo ; tabnom ; tabvaleur ; tabnombre ) Paramètre Type Description typeinfo Entier long -> Stack memory Free stack memory tabnom Tableau texte <- titres tabvaleur Tableau réel <- valeurs tabnombre Tableau réel <- Nombre d objets concernés (si disponible) remplace AP AVAILABLE MEMORY!00/00/0000! Date nulle : les années s affichent sur 4 chiffres Type Source de données "Pop-up/drop down" et "Combo boxes" peuvent maintenant être associés 1 ) avec des champs. 2 ) avec des variables simples Exemple 1 : un champ texte peut être utilisé directement comme source pour un pop-up ou une combo-box. Il suffit de saisir le nom du champ à la place du nom de variable. 37

Exemple 2 : une couleur est stockée en tant que référence (par exemple une valeur de couleur RVB) : -"Enregistrer comme Référence" sera sélectionnée - le nom de la variable sera le nom du champ numérique ListBox Nouvelle propriété de retour à la ligne ; Notion d'héritage pour les valeurs d'attribut du niveau supérieur (Listbox pour la colonne, colonne pour la ligne, ligne pour la cellule) : valeur -255 ou constante Listbox hérité dans le ou les éléments du Tableau couleurs de fond, Tableau de styles, et Tableau de couleurs de polices. On peut fixer les styles, couleurs de polices et couleurs de fond par colonne ; Tabulable ; Ascenseurs automatiques Listbox sélection : Choix possible du formulaire de saisie ; Utilisation des actions standards comme «Ajouter sous-enregistrement»,«modifier sous-enregistrement» ou «supprimer sous-enregistrement»; Double-clic sur une ligne :«ne rien faire»,«modifier sous-enregistrement»;«supprimer sousenregistrement»; Utilisation des évènements formulaire «Sur double clic»,«sur ouverture corps» et «Sur affichage corps»; Nouvelles commandes : LISTBOX DUPLIQUER COLONNE LISTBOX DEPLACER COLONNE LISTBOX LIRE OBJETS LISTBOX FIXER STYLE LIGNE LISTBOX Lire style ligne LISTBOX FIXER COULEUR LIGNE LISTBOX Lire couleur ligne LISTBOX Lire tableau LISTBOX FIXER TABLEAU Listes hiérarchiques Nouvelle interface pour le contrôle du déployer et contracter En plus, sous Windows Vista, Windows 7 et Windows 8, nouveau look pour l élément sélectionné et nouveau comportement du survol. Ascenseurs automatiques. Affichage différent pour un pop-up menu hiérarchique associé à une liste 1 niveau ou une liste Sous réserves de modifications 01/04/2015 38

hiérarchique En 4D v14, si une liste est sur un niveau, elle est affichée en Pop-up/Dropdown liste (en 4D v13 elle était affichée de manière identique en combo box). Il y a une petite différence sous Windows, mais sans incidence sous Mac car Popup/Dropdown liste montre une liste "pop-up" et Combo box une liste "Dropdown". Autre point, quand une liste est hiérarchique, elle est affichée comme un menu. Le principal changement est que la hiérarchie n est plus limitée à un seul niveau. Dictionnaires Les dictionnaires Cordial ne sont plus utilisés pour les commandes SPELL Lire dictionnaire courant et SPELL LIRE LISTE DICTIONNAIRES (qui retourne un ID de dictionnaire Hunspell ou un ID du système de dictionnaire sous Mac). SPELL FIXER DICTIONNAIRE COURANT Par compatibilité, vous pouvez passer un ID de dictionnaire Cordial qui correspond à un ID de dictionnaire Hunspell. Cette commande accepte les codes BCP 47 ou ISO 639-1 et ISO 639-2. FIXER PARAMETRE BASE (81;?) ou FIXER PARAMETRE BASE (Correcteur orthographique;?) Valeurs possibles : 0 (défaut) = correcteur OS X natif (Hunspell désactivé) 1 = correcteur Hunspell actif. Ce sélecteur permet d activer le correcteur orthographique Hunspell sous Mac à la place du système natif. Sous Windows, ce sélecteur ne fait rien. Le choix est global à l application. Zone Web Accès aux méthodes 4D Une nouvelle option est associée à la zone Web Accès méthodes 4D : Cette option n est disponible que si l option Utiliser Web Kit intégré est cochée. Sinon cette option sera cachée et considérée comme non cochée. Accès à l inspecteur web C est le débogueur intégré de Web Kit. 39

- le Web Kit intégré doit être sélectionné pour la zone - le menu contextuel de la zone doit être activé - l usage de l inspecteur doit être expressément autorisé pour la zone à l aide de l instruction suivante : WA FIXER PREFERENCE (*;"WA";WA autoriser inspecteur Web;Vrai) Accès au Web kit intégré grâce à un objet spécifique Le Web Kit intégré fournit un objet appelé "$4d" qui peut être associé à une méthode 4D en utilisant la notation ".". Cette fonction recevra autant de paramètres que nécessaire par la méthode 4D, plus une fonction donnant un dernier paramètre. Cette fonction sera appelée de façon asynchrone dès que la méthode 4D sera terminée et recevra deux paramètres : - le résultat de la fonction dans le paramètre "$0" de la méthode 4D ; - ce paramètre est reçu et envoyé par 4D et peut être de n'importe quel type d'objet supporté par le JavaScript (chaîne, numérique, objet), incluant donc le nouveau type C_OBJET. - Un paramètre optionnel, "error", qui est un tableau d'objets contenant toutes les erreurs rencontrées. Chaque objet a trois propriétés : Message: description de l'erreur; en texte errcode : code d'erreur, en numérique componentsignature : quatre lettres de signature du composant interne, ex. "dbmg" pour base de données. Exemple 1 : Une méthode 4D appelée "today ne reçoit aucun paramètre et renvoie la date courante sous forme de chaîne : Code de la méthode "today" : C_TEXTE ($0) $0:=Chaine(Date du jour;interne date long ) A l'intérieur de la zone Web, le JavaScript contiendra le code ci-dessous : L'objet $4d appelera la méthode 4D en utilisant la notation ".". $4d.today() Nouveau sélecteur pour autoriser le dépôt d'url (4D v14 R2) Pour des raisons de sécurité, le changement du contenu d'une zone Web via le déposer d'un fichier ou d'un URL dans la zone n'est plus autorisé par défaut à compter de 4D v14r2. Le curseur de la souris affiche désormais une icône d'interdiction lorsque l'utilisateur tente de déposer un fichier ou un URL dans la zone. Dans les versions précédentes, il était nécessaire de mettre en place des filtres spécifiques, à l'aide de la commande WA FIXER FILTRES URL par exemple, pour contrôler ces actions. Si vous souhaitez autoriser cette fonction dans les applications 4D v14 R2, vous devez utiliser la nouvelle préférence WA autoriser déposer URL. WA FIXER PREFERENCE(*;"myarea";WA autoriser déposer URL;Vrai) Commandes modifiées pour pouvoir utiliser les C_OBJET BLOB VERS VARIABLE 40

VARIABLE TO BLOB Cette commande utilise la syntaxe JSON en UTF-8 pour le C_OBJET dans le BLOB. Si le C_OBJET contient des pointeurs, leurs valeurs déréférencées sont stockées dans le blob, pas les pointeurs. VARIABLE VERS VARIABLE ECRIRE VARIABLE PROCESS LIRE VARIABLE PROCESS Les pointeurs sont préservés. La commande envoie une copie du C_OBJET à l objet de destination. WEB ENVOYER BLOB WEB ENVOYER BLOB (nouveau type MIME) application/json ou text/json HTTP Get / request Reconnaissance automatique du JSON pour ces commandes en v14, si vous passez une variable C_OBJET pour le résultat ou si la requête retourne un type application/json". Modifiés également pour supporter les certificats serveur. WEB ENVOYER TEXTE Avec un nouveau paramètre : type MIME incluant application/json. WA EXECUTER FONCTION JAVASCRIPT WA EXECUTER FONCTION JAVASCRIPT (*;"Web Area";"JSON.stringify";variable;$object;$undefined) WA Evaluer JavaScript $Eval3:=WA Evaluer JavaScript(*;"Web Area";"toBeEvaluated_3";Est un objet) Méthode projet avec option Executer sur serveur peut utiliser les C_OBJET Si vous passez un C_OBJET en paramètre ou en valeur retournée, la syntaxe JSON est envoyée au serveur. S il y a des pointeurs dans le C_OBJET, ce sont leurs valeurs déréférencées qui sont envoyées, et non les pointeurs. Mémoriser géométrie 4D inclut une fonctionnalité automatique qui sauvegarde les spécificités d une fenêtre lorsqu elle est fermée (sa géométrie ), permettant ainsi à l utilisateur de retrouver son environnement de travail tel qu il l a quitté. Ces automatismes concernent les coordonnées de la fenêtre et la position des différents objets qu elle contient, ainsi que l état courant de certains objets comme les onglets. Pour cela, il suffit de cocher l option dans les Propriétés du formulaire : La couleur de contraste système devient obligatoire (optionnelle en 4D v13) 4D v13 : 41

Cette option, disponible en 4D v13 pour les formulaires "liste"convertis, a disparu en 4D v14 car elle est maintenant obligatoire. Après conversion en 4D v14, c'est donc obligatoirement la couleur de contraste système qui est utilisée. La couleur de contraste système entraîne un redessinement de la liste et l'enregistrement courant est déchargé La couleur de contraste système entraîne un changement de comportement : la liste est alors redessinée l'enregistrement courant est déchargé (la fonction Enregistrement chargé renvoie alors Faux). (En 4D v13, avec l'inversion vidéo la liste n'était pas redessinée et l'enregistrement courant restait chargé). Solution : rajouter explicitement dans votre code la commande CHARGER ENREGISTREMENT. Images Nouvel évènement sur les images Nouvel évènement sur les images Sur défilement image Le défilement des images est disponible pour les touches clavier : "pageup", "PageDown", "flèche", "home", "end". Opérateurs images & et Le fonctionnement de la superposition exclusive (&) et inclusive ( ) a été modifié pour suivre les modifications des librairies utilisées par 4D pour la gestion de l affichage. Superposition Exclusive: l opération & place désormais une image sur l autre. Pict3:= Pict1 & Pict2: Même résultat pour : COMBINER IMAGES ( pict3 ; pict1 ; Superposition ; pict2 ) Pict3:=Pict2& Pict 1: Surimposition Inclusive: l opérateur retourne désormais le masque résultant de la superposition de deux images avec la même taille. Pict3:= Pict1 Pict2: 42

Même résultat que : $equal:=images egales ( Pict1 ; Pict2 ; Pict3 ) Notez que les images Pict1 et Pict2 doivent avoir exactement les mêmes dimensions. Si les deux images ont des dimensions différentes, l opération produira une image blanche. Bibliothèque images Désormais la Bibliothèque image permet seulement de stocker les images, pas de les éditer. La ligne de menu Ouvrir est remplacée par la ligne Ajouter. Evènements Sur clic et Sur double clic Ces deux évènements sont désormais générés aussi pour les champs et variables saisissables. Zones multistyles Interaction des commandes sur les objets et les zones de texte multistyles 43

A partir de 4D v14,une nouvelle façon d'interagir a été définie entre les commandes génériques comme OBJET FIXER COULEURS RVB ou OBJET FIXER STYLE POLICE et les zones de texte multistyles. Dans les versions précédentes, l'exécution de ces commandes modifiaient le contenu de chaque balises personnalisées insérées dans la zone. Désormais, seules les propriétés par défaut sont affectées par ces commandes (ainsi que les propriétés stockées via les balises par défaut). Les balises personnalisées restent telles quelles. Par exemple, imaginons une zone de texte multistyles contenant des balises par défaut stockées : Le texte brut de la zone est le suivant : <span style="text-align:left;font-family:'segoe UI';fontsize:9pt;color:#009900">This is the word <span style="color:#d81e05">red</span></span> Si vous exécutez le code suivant : OBJET FIXER COULEUR (*;"myarea";-(noir+(256*jaune))) En 4D v14, la couleur rouge est préservée : 4D v14 Versions précédentes <span style="text-align:left;font-family:'segoe UI';font-size:9pt;color:#0000FF">This is the word <span style="color:#d81e05">red</span></span> <span style="font-family:'segoe UI';font-size:9pt;textalign:left;font-weight:normal;font-style:normal;textdecoration:none;color:#0000FF;"><span style="backgroundcolor:#ffffff">this is the word red</span></span> Les commandes suivantes sont concernées : OBJET FIXER COULEURS RVB OBJET FIXER COULEUR OBJET FIXER POLICE OBJET FIXER STYLE POLICE OBJET FIXER TAILLE POLICE Dans le contexte des zones multistyles n'utilisez ces commandes que pour traiter les styles par défaut. Pour gérer les styles lorsque la base est en exécution, utilisez les commandes du thème "Texte multistyle". Normalisation des fins de lignes dans les zones texte Afin d'assurer la compatibilité multiplate-forme des textes, 4D, à partir de la v14, normalise les fins de lignes afin qu'elles n'occupent qu'un simple caractère : \r (le retour-chariot). Cette normalisation se fait sur les variables ou champs texte, multistyles ou pas. Les fins de lignes non-natives ou utilisant un mélange de plusieurs caractères (par exemple \r\n') sont considérées comme un simple \r. Conformément à la norme XML, les commandes multistyles normalisent aussi les fins de lignes des variables texte non associées à des objets (fonctionnement identique aux versions précédentes de 4D). 44

Ce principe facilite l'utilisation des commandes de texte multistyles, ou de commande comme SELECTIONNER TEXTE dans un environnement multiplate-forme. Tenez compte de cette normalisation si vous manipulez des textes d'origine diverses. Rendu des textes (MacOS) Les frameworks utilisés pour le rendu de texte ont été mis à jour et unifiés dans 4D sous OS X depuis la version 13.4 (abondon des frameworks QuickDraw/Multi Lingual Text Editor et généralisation de l'utilisation de CoreText). Ceci peut entraîner de légères variations de rendu sous OS X dans les zones de texte converties, notamment au niveau des interlignages,et nécessiter une redimensionnement de la zone. Pointeur Self Le "self" pointeur retourné par les commandes Self et OBJET Lire pointeur (Objet courant) était cloisonné par composant. Ce n'est plus le cas en 4D v14: tous les composants partagent le même pointeur "self". Compilateur 4D n'est pas sensible à la casse et les noms de variables étaient passés en majuscule durant la compilation dans la méthode-projet générée avec l'option "Générer typage" du compilateur. Désormais, avec 4D v14, la compilation respecte la casse (mais elle n'est toujours pas sensible à la casse ou diacritique). Mode plein écran avec masquage automatique de la barre de menu principale sous OS X Sous OS X (à partir de la version OS X 10.7), une nouvelle option vous permet de passer en mode plein écran. Ou en utilisant la nouvelle constante : Creer fenetre formulaire ([Customers];"Form1";Form fenêtre standard + avec mode plein ecran Mac) Pour quitter le mode plein écran, placez votre souris en haut de l'écran et la barre de menu apparaîtra. Le bug est passé en "Standard Behaviour" avec cette explication de l'engineering: Plugs-ins 4D Write et 4D View : "Aller en pleine page" se limite en v4d v14 à la taille du formulaire Depuis 4D v14, le passage en pleine page (ligne de menu "Aller en pleine page" ou icone en haut à droite de la zone) n'est plus géré de la même façon (dans les versions précédentes on obtenait un agrandissement de la fenêtre, une occultation de la barre d'outils, et un changement de menu) : désormais l'agrandissement de la zone de plug-in se limite à la taille du formulaire. Le plugin passe simplement en pleine fenêtre et ne touche plus à l'interface de 4D (concerne 4D Write et 4D View). Internet Command et unicode 45

Les champs subject et body des commandes SMTP dans 4DIC utilisent désormais les caractères UTF-8 par défaut. On peut également gérer les ID des pièces jointes : SMTP_Attachment ( smtp_id ; filename ; encodetype ; deleteoption {;attachmentid }{;content-type}) -> résultat Web services Le support du protocole SOAP 1.2 est étendu, et les Web Services ont aussi des certificats server. Nouvelles commandes : HTTP FIXER DOSSIER CERTIFICATS. Modifications de commandes : WEB SERVICE APPELER : la variable OK est fixée à 0 et une erreur 901 "Server certificate invalid" peut être retournée. WEB SERVICE Lire infos ( typeinfos ): le Client Fault est renommé "Sender Fault et Server Fault est renommé "Receiver Fault. Mises à jour automatique des Clients - Optimisation de la mise à jour automatique du client - Journal des mises à jour - Nouvelles clés XML "AutoUpdate" (Windows) - Nouvelles commandes : - FIXER DOSSIER MISE A JOUR (chemindossier {; erreursdiscrètes}) - Lire chemin journal derniere mise a jour -> chaîne - REDEMARRER 4D {( délai {; message} )} Notation IPv6 4D v14 supporte la notation des adresses en Ipv6 pour le serveur Web, le serveur SOAP, et le serveur SQL. Le programme accepte soit les connexions IPv6 ou IPv4 lorsque la configuration "Adresse IP" d écoute du serveur est sur Toutes. Il faut être attentif aux deux points suivants : La notation Ipv6 utilise les ":", donc l'ajout des numéros de port peut prêter à confusion. Par exemple : 2001:0DB8::85a3:0:ac1f:8001 // adresse IPv6 2001:0DB8::85a3:0:ac1f:8001:8081 // adresse IPv6 avec numéro de port 8081 Pour éviter cette confusion, nous recommandons l'usage de la notation [ ] [2001:0DB8::85a3:0:ac1f:8001]:8081 // adresse IPv6 avec numéro de port 8081 Il n'y a plus d'avertissement de l'occupation du port TCP En fait, 4D Server ne détecte pas d'erreur dans ce cas parce que le port reste libre sur l'adresse IPv6. Mais il n'est pas possible d'y accéder via l'adresse Ipv4 de la machine,,ni via l'adresse locale : 127.0.0.1. Si votre serveur 4D ne répond pas sur le port défini, vous pouvez tester l'adresse : [::1] (équivalent sous Ipv6 de 127.0.0.1), et ajoutez un autre numéro de port pour tester un numéro de port autre que celui par défaut. Si 4D répond, il est probable qu'une autre application occupe le port IPv4. Générateur d'applications : Nouvelles clés XML pour intégrer la signature Mac sur OS X 46

Depuis OS X.7.5, Apple a introduit une nouvelle fonctionnalité de sécurité, Gatekeeper, qui contrôle les paramétrages pour savoir si l'application peut être lancée : Une nouvelle option du générateur d'applications 4D permet de générer des applications compatibles avec cette option : <Preferences4D> <BuildApp> <SignApplication> <MacSignature>true</MacSignature > </SignApplication> </BuildApp> </Preferences4D> Construire une application avec 4D Volume Desktop Nouveau comportement : si vous décochez les composants tels que 4D Progress, 4D SVG ou 4D Widgets dans le dialogue, ils ne seront pas insérés (contrairement à ce qui se passait en 4D v13). Nouveau paramètre ou nouvelle option FIXER PARAMETRE BASE FIXER PARAMETRE BASE ( {unetable ;}sélecteur ; valeur) 47

Sélecteur modifié 34: Enreg événements debogage valeurs Nouveau format de texte : 0 : désactive le fichier 1: mode v13 sans les paramètres mais avec les durées. 2 : mode v13 avec les paramètres et avec les durées. 4 : active le nouveau format tabulé. 2+4: active le fichier au format v14 avec les paramètres et les durées Nouveaux sélecteurs valeur 81: Correcteur orthographique 0 (défaut) = correcteur OS X natif (Hunspell désactivé) 1 = correcteur Hunspell actif (MacOS seulement). Ce sélecteur vous permet d activer le correcteur Hunspell sous MacOS, à la place du système natif de correction. Sous Windows, cette option ne fait rien. Cette option est globale à l application. 82: Prise en charge QuickTime 0 : désactivée (valeur par défaut) 1 : activée 85: Json fuseau horaire local 0 : GMT 1 = heure locale (valeur par défaut) WA Evaluer JavaScript Un nouveau paramètre (Type) est ajouté à la commande. (dans les versions précédentes, seules les chaînes étaient supportées). Exemple: $Eval1:=WA Evaluer JavaScript (*;"Web Area";"toBeEvaluated_1";Est un entier long) $Eval2:=WA Evaluer JavaScript (*;"Web Area";"toBeEvaluated_2";Est une variable chaine) $Eval3:=WA Evaluer JavaScript (*;"Web Area";"toBeEvaluated_3";Est un objet) $Eval4:=WA Evaluer JavaScript (*;"Web Area";"toBeEvaluated_3";Est une date WA EXECUTER FONCTION JAVASCRIPT ( {* ;}objet; fonctionjs ; résultat * {; param}{; param2 ;... ; paramn} ) Nouveau : Le résultat et les paramètres peuvent être de type Chaîne, Numérique, Date, ou Objet La manipulation de données de type complexe (objets, dates...) est possible uniquement si la zone Web utilise le Web Kit intégré comme moteur de rendu. ST Lire texte brut ({*;} objet {;}moderéf)-> Texte moderèf EntierLong 0 ST Références comme espaces 1 ST Expressions 4D comme valeurs 2 ST Expressions 4D comme sources 4 ST URL comme libellés 8 ST URL comme liens 16 ST Liens utilisateur comme libellés 32 ST Liens utilisateur comme liens 64 ST Balises comme texte brut 128 ST Balises comme code xml 85 ST Texte visible avec Expressions 4D comme valeurs 86 ST Texte visible avec Expressions 4D comme sources COPIER DOCUMENT ( nomsource ; nomdest {; nouvnom} {; *} ) Enumérations et listes 48

OBJET FIXER LISTE PAR NOM ( {* ;} objet {; typeliste}; énumération ) Paramètre Type Description * -> Si spécifié, objet est un nom d'objet (chaîne) Si omis, objet est une variable ou un champ objet Texte -> Nom d'objet (si* est spécifié) ou Variable (si* est omis) typeliste Entier long -> Type de liste : 0 : Liste énumération 1 : Liste obligations 2 : Liste exclusions Enumération Ou "" Texte -> Nom de l'énumération, définie en développement Ou ""(chaîne vide) pour dissocier l'énumération. LISTE VERS TABLEAU (nom de Liste Liste ID ; tableauvaleurs {;tableauréfelèments ) TABLEAU VERS LISTE tableauvaleurs ; nom de Liste Liste ID {; tableauréfelèments) Formulaire : objets OBJET Lire nom liste paramètre "typeliste" optionnel OBJET FIXER LISTE PAR NOM (OBJECT FIXER NOM ENUMERATION en 4D v13) paramètre "typeliste" optionnel Formulaire : gestion FORM LIRE OBJETS ( tabobjets {; tabvariables {; tabpages}} {; * optionpage} ) (4D v14 R2) optionpage Entier Long -> Form page courante Form toutes les pages Form hérité 4D Internet commands SMTP_Body (smtp_id ; msgcorps ; Option ) -> résultat Paramètre Type Description smtp_id Entier Long -> Référence du message msgcorps Texte Unicode -> Corps du message (en UTF-8) Pour utiliser un jeu de caractères spécifique, voir les commandes SMTP_SetPrefs et SMTP_Charset Option Entier long -> 0= remplacer (si msgcorps n'est pas vide) 1 = remplacer 2 = ajouter 4 = texte en HTML (texte brut par défaut) Résultat Entier <- Code d'erreur SMTP_Subject ( smtp_id ; messageobjet ; optionsuppression ) -> résultat Paramètre Type Description smtp_id Entier Long -> Référence du message 49

messageobjet Texte Unicode -> Objet du message (UTF-8 par défaut) Pour utiliser un jeu de caractères spécifique, voir les commandes SMTP_SetPrefs et SMTP_Charset optionsuppression Entier Long -> 0 : remplacer (si messageobjet est une chaîne vide, l'objet existant et son contenu sont conservés) 1 : remplacer(si messageobjet est une chaîne vide, l'objet existant et son contenu sont supprimés) 2 : supprimer ( messageobjet est la chaîne supprimée) Résultat Entier <- Code d'erreur SMTP_Attachment ( smtp_id ; nomfichier ; typeencodage ; supprimeroption {;IDAttachment }) -> résultat IDAttachment : dans les messages en HTLM seulement SMTP_QuickSend (nomserveur ; msgde ; msga ; msgobjet; message {; optionsession}{; port}{; nomutilisateur ; motdepasse}) -> résultat Paramètre Type Description / - 4D v14 : OptionSession Port (nouveau paramètre en 4D v13) nomutilisateur (nouveau paramètre en 4D v13) motdepasse (nouveau paramètre en 4D v13) Entier Long Entier Long Texte Texte -> 4 = texte HTML (sans utiliser SSL) 5 = texte HTML (en utilisant SSL) -> Indique le port à utiliser : Par défaut, c'est le port 25 (standard, non SSL) 465 pour du SSL utilisez 587 pour Exchange -> Prénom.nom (il faut obligatoirement un motdepasse) -> Mot de passe (il faut obligatoirement un nomutilisateur) résultat Entier <- Code d'erreur MSG_FindHeader permet aussi de retrouver le MessageID (pour information, pas de modification de la commande). Backup INTEGRER FICHIER HISTORIQUE MIROIR ( cheminaccès {; numopération} ) Utilisateurs et groupes Valider mot de passe ( utilisateur ; motdepasse {; digest} )-> Résultat Paramètre Type Description Utilisateur Entier long Texte -> Vous pouvez utiliser un nom d'utilisateur directement dans le premier paramètre. Mot de passe Chaîne -> Mot de passe digest booléen -> Vrai = mot de passe valide 50

Faux = mot de passe invalide Serveur Web WEB ENVOYER TEXTE ( textehtml {; type} ) Avec un nouveau paramètre type, permettant d'indiquer le type MIME (inclut le type application/json ). Changement de type de paramètre pour une commande existante OBJET FIXER POLICE OBJET FIXER POLICE n'accepte plus de paramètre en Entier Long pour les polices : le paramètre est désormais une chaîne et vous devez spécifier le nom de la police. OBJET FIXER POLICE ({*;} objet ; police ) Paramètre Type Description * -> Si spécifié = objet est un nom d'objet (chaîne) Si omis = objet est un champ ou une variable objet Texte -> Nom d'objet (si* spécifié) ou Champ ou Variable (si* omis) Police chaîne, Entier Long -> Nom de police ou numéro de police Les autres commandes utilisant les identifiants numériques pour les polices sont obsolètes : Numero de police ( policenom ) -> Résultat Nom de police ( numéro ) -> Résultat Nouvelle valeur pour un paramètre existant METHODE FIXER CODE METHODE FIXER CODE ( chemin ; code {; *} ) Si la première ligne du code d une méthode contient des métadonnées valides (exprimées en JSON), elles sont utilisées pour définir les attributs de la méthode et la première ligne n est pas insérée. Exemple de métadonnées : E.g.: %attributes={"lang":"en","folder":"web"} METHODE FIXER ATTRIBUT METHODE FIXER ATTRIBUT ( chemin ; typeattribut ; valeurattribut {; typeattribut2 ; valeurattribut2 ;... ; typeattributn ; valeurattributn}{; *} ) typeattribut LongInt 1024 Attribut nom dossier 51

LIRE STATISTIQUES MEMOIRE LIRE STATISTIQUES MEMOIRE ( typeinfo ; tabnoms ; tabvaleurs ; tabnombre ) TypeInfo Entier Long <- 1 Deux valeurs supplémentaires dans les informations générales : - "mémoire pile" (stack memory) - "mémoire pile disponible" (free stack memory) LISTE DES POLICES LISTE DES POLICES ( polices {; typeliste *}) TypeListe Entier Long 0 Polices systèmes 1 Polices favorites 2 Polices récentes OBJET FIXER / LIRE COULEURS RVB OBJET FIXER COULEURS RVB ( {* ;} objet ; couleuravantplan ; couleurarrièreplan {; couleurarrièreplanalt} ) CouleurArrièrePlan Ou couleurarrièreplanalt LongInt -16 Coul fond transparent Version application (4D v14 R2) Version application {( numbuild {; *} )} -> Résultat Avec paramètre Exemples Valeur retournée Version Commentaires 1310 4D 13.1 Ancien système de numérotation 1420 4D v14 R2 Version R, numéro court 4D v14 R2 * B0011420 4D v14 R2 Version R, numéro complet " 1430 4D v14 R3 Version R, numéro court 4D v14 R3 1401 4D v14.1 Version mineure, numéro court Première révision" bugfix" de 4D v14 * F0011401 4D 14.1 Version mineure, numéro complet " 1402 4D v14.2 Version mineure, numéro court Seconde révision "bugfix" de 4D v14 * B0011420 4D v14 beta R2 Version R beta, numéro complet * F0011430 4D v14 final R3 Version R finale, numéro complet 52

4D : Nouvelles commandes List Box LISTBOX DUPLIQUER COLONNE ( {* ;} objet ; positioncol ; nomcol ; variablecol ; nomentête ; varentête {; nompied ; variablepied} ) LISTBOX DEPLACER COLONNE ( {* ;} objet ; positioncol ) lorsque cette commande est appelée, l'évènement "Sur déplacement colonne" n'est pas généré. LISTBOX LIRE OBJETS ( {* ;} objet ; tabnomsobj ) LISTBOX FIXER STYLE LIGNE ( {* ;} objet ; ligne ; style ) LISTBOX Lire style ligne ( {* ;} objet ; ligne ) -> Résultat LISTBOX FIXER COULEUR LIGNE ( {* ;} objet ; ligne ; couleur {; typecouleur} ) LISTBOX Lire couleur ligne ( {* ;} objet ; ligne {; typecouleur} ) -> Résultat LISTBOX LIRE TABLEAUX ( {* ;} objet ; tabnomscols ; tabnomsentêtes ; tabvarcols ; tabvarentêtes ; tabcolsvisibles ; tabstyles {; tabnomspieds ; tabvarpieds} ) LISTBOX FIXER TABLEAU ( {* ;} objet ; typetab ; ptrtab ) Document TEXTE VERS DOCUMENT ( nomfichier ; texte {; jeucaractères {; moderetour}} ) Document vers texte ( nomfichier {; jeucaractères {; moderetour}} ) -> Résultat Feuilles de style LISTE FEUILLES DE STYLE ( tabfeuillesstyle ) LIRE INFOS FEUILLE DE STYLE ( nomfeuillestyle ; police ; taille ; styles ) Tableaux TABLEAU HEURE ( nomtableau ; taille {; taille2} ) TABLEAU BLOB ( nomtableau ; taille {; taille2} ) TABLEAU OBJET ( nomtableau ; taille {; taille2} ) Enumérations et listes hiérarchiques OBJET FIXER LISTE PAR REFERENCE ( {* ;} objet {; typeliste}; liste ) OBJET Lire liste reference ( {* ;} objet {; typeliste} ) -> Résultat Objets formulaire OBJET FIXER EVENEMENTS ( {* ;} objet ; tabevénements ; mode ) OBJET LIRE EVENEMENTS ( {* ;} objet ; tabevénements ) OBJET FIXER ACTION ( {* ;} objet ; action ) OBJET Lire action ( {* ;} objet ) -> Résultat OBJET FIXER MULTILIGNE ( {* ;} objet ; multiligne ) OBJET Lire multiligne ( {* ;} objet ) -> Résultat OBJET FIXER IMPRESSION TAILLE VARIABLE ( {* ;} objet ; taillevariable {; fixesousform} ) OBJET LIRE IMPRESSION TAILLE VARIABLE ( {* ;} objet ; taillevariable {; fixesousform} ) OBJET FIXER STYLE BORDURE ( * ; objet ; stylebordure ) OBJET Lire style bordure ( {* ;} objet ) -> Résultat OBJET FIXER FEUILLE DE STYLE ( {* ;} objet ; nomfeuillestyle ) OBJET Lire feuille de style ( {* ;} objet ) -> Résultat 53

OBJET FIXER CASE A COCHER TROIS ETATS ( {* ;} objet ; troisetats ) OBJET Lire case a cocher trois etats ( {* ;} objet ) -> Résultat OBJET FIXER VALEUR MINIMUM ( {* ;} objet ; valeurmini ) OBJET LIRE VALEUR MINIMUM ( {* ;} objet ; valeurmini ) OBJET FIXER VALEUR MAXIMUM ( {* ;} objet ; valeurmaxi ) OBJET LIRE VALEUR MAXIMUM ( {* ;} objet ; valeurmaxi ) OBJET FIXER TYPE INDICATEUR ( {* ;} objet ; indicateur ) OBJET Lire type indicateur ( {* ;} objet ) -> Résultat OBJET FIXER MENU CONTEXTUEL ( {* ;} objet ; menucontext ) OBJET Lire menu contextuel ( {* ;} objet ) -> Résultat OBJET FIXER SOURCE DONNEES ( {* ;} objet ; sourcedonnées ) OBJET Lire source donnees ( {* ;} objet ) -> Résultat OBJET FIXER ORIENTATION TEXTE ( {* ;} objet ; orientation ) OBJET Lire orientation texte ( {* ;} objet ) -> Résultat OBJET FIXER TEXTE EXEMPLE ( {* ;} objet ; texteexemple ) OBJET Lire texte exemple ( {* ;} objet ) -> Résultat OBJET FIXER COORDONNEES ( {* ;} objet ; gauche ; haut {; droite ; bas} ) OBJET Est un texte style ( {* ;} objet ) -> Résultat Gestion des formulaires Nom du formulaire courant -> Résultat FORM LIBERER OBJET Lire type ( {* ;} objet ) -> Résultat LISTBOX LIRE OBJETS ( {* ;} objet ; tabnomsobj ) Texte multistyle OBJET Est un texte style ( {* ;} objet ) -> Résultat ST FIGER EXPRESSIONS ( {* ;} objet {; débutsél {; finsél}}{; *} ) ST CALCULER EXPRESSIONS ( {* ;} objet {; débutsél {; finsél}} ) ST INSERER EXPRESSION ( {* ;} objet ; expression {; débutsél {; finsél}} ) ST INSERER URL ( {* ;} objet ; texteurl ; adresseurl {; débutsél {; finsél}} ) ST Lire type contenu ( {* ;} objet {; débutsél {; finsél {; débutbloc {; finbloc}}}} ) -> Résultat ST Lire expression ( {* ;} objet {; débutsél {; finsél}} ) -> Résultat ST LIRE URL ( {* ;} objet ; texteurl ; adresseurl {; débutsél {; finsél}} ) ST FIXER OPTIONS ( {* ;} objet ; option ; valeur {; option2 ; valeur2 ;... ; optionn ; valeurn} ) ST LIRE OPTIONS ( {* ;} objet ; option ; valeur {; option2 ; valeur2 ;... ; optionn ; valeurn} ) Objets et JSON C_OBJET ( {méthode ;} variable {; variable2 ;... ; variablen} ) TABLEAU OBJET ( nomtableau ; taille {; taille2} ) OB FIXER ( objet ; propriété ; valeur {; propriété2 ; valeur2 ;... ; propriétén ; valeurn} ) OB FIXER TABLEAU ( objet ; propriété ; tableau ) OB Lire ( objet ; propriété {; type} ) -> Résultat OB Lire type ( objet ; propriété ) -> Résultat OB FIXER NULL ( objet ; propriété ) OB SUPPRIMER ( objet ; propriété ) OB Copier ( objet {; résoudreptrs} ) -> Résultat OB LIRE TABLEAU ( objet ; propriété ; tableau ) OB LIRE NOMS PROPRIETES ( objet ; tabpropriétés {; tabtypes} ) OB Est defini ( objet {; propriété} ) -> Résultat OB Est vide ( objet ) -> Résultat 54

JSON Parse ( chaînejson {; type} ) -> Résultat JSON PARSE TABLEAU ( chaînejson ; tabobjet ) JSON Stringify ( valeur {; *} ) -> Résultat JSON Stringify tableau ( tab {; *} ) -> Résultat JSON VERS SELECTION ( latable ; objetjson ) Selection vers JSON ( latable {; lechamp}{; lechamp2 ;... ; lechampn}{; template}) -> Résultat Sélecteurs OUVRIR SELECTEUR COULEUR {( texte Fond )} OUVRIR SELECTEUR POLICE Polices FIXER POLICES RECENTES ( tabpolices ) OUVRIR SELECTEUR POLICE Mise à jour FIXER DOSSIER MISE A JOUR ( chemindossier {; erreursdiscrètes} ) Lire chemin journal derniere mise a jour -> Résultat REDEMARRER 4D {( délai {; message} )} Internet Commands SMTP_MessageID ( smtp_id ; message_id {; option} ) -> Résultat Web Services (Client) HTTP FIXER DOSSIER CERTIFICATS ( dossiercertificats ) HTTP Lire dossier certificats -> Résultat TimePicker Widget TimePicker DISPLAY SECOND HAND TimePicker LCD DISPLAY AMPM TimePicker LCD DISPLAY SECONDS TimePicker LCD SET COLOR TimePicker LCD SET MODE Web (4D v14r2) WEB Serveur est démarré Divers LIRE APERCU ACTIVITE ( {* ;} tabactivités tabuuid ; tabdébut ; tabdurée ; tabinfo {; tabsousop} ) FIXER ICONE GLISSER ( icône {; décalageh {; décalagev}} ) SUSPENDRE INDEX ( latable ) REACTIVER INDEX ( latable {; *} ) AFFICHER NOTIFICATION ( titre ; contenu {; durée} ) 55

INTEGRER FICHIER HISTORIQUE MIROIR ( cheminaccès {; numopération} ) Thèmes de commandes Nouveaux thèmes : JSON Objets (Langage) Texte multistyle Changement de nom : Le thème Propriétés des objets devient Objets (Formulaires). Nouvelles Méthodes base Composant Sur événement base hôte 1 Sur avant ouverture base hôte 2 Sur après ouverture base hôte 3 Sur avant fermeture base hôte 4 Sur après fermeture base hôte REST Sur authentification REST (nomutilisateur;motpasse;boolmodedigest)-> $0 (booléen : requête acceptée) Nouvel évènement Nouvel évènement sur les images : Sur défilement image Constantes Constantes renommées qr 4D Chart area XML Donnée 4D v13 _O_qr 4D Chart area XML DATA 4D v14 56

Nouvelles constantes pour des commandes existantes Creer fenetre formulaire Avec mode plein écran Mac Digest 4D Generer digest Polices favorites Polices récentes Polices système LISTE DES POLICES Liste énumération Liste obligations Liste exclusions OBJET FIXER LISTE PAR NOM WA FIXER PREFERENCE et WA LIRE PREFERENCE WA autoriser inspecteur Web Coul fond transparent OBJET FIXER COULEURS RVB Coul fond transparent TRANSFORMER IMAGE (4D v14r2) Form page courante Form toutes les pages Form hérité FORM LIRE OBJETS (4D v14r2) Nouvelles constantes pour de nouvelles commandes En rouge : nouvelles constantes En gris : les constantes qui existaient auparavant et que l'on peut utiliser avec les nouvelles commandes Sur activation Sur affichage corps Sur appel extérieur Sur appel zone du plug in Sur après frappe clavier Sur après modification Sur avant frappe clavier Sur avant saisie OBJET FIXER EVENEMENTS / OBJET LIRE EVENEMENTS 57

Sur bouton barre outils Mac Sur case de fermeture Sur chargement ligne Sur clic Sur début glisser Sur début survol Sur déposer Sur désactivation Sur données modifiées Sur double clic Sur entête Sur fermeture corps Sur fin survol Sur gain focus Sur glisser Sur impression corps Sur impression pied de page Sur impression sous total Sur libération Sur menu sélectionné Sur minuteur Sur modif variable liée. Sur nouvelle sélection Sur ouverture corps Sur perte focus Sur redimensionnement Sur survol Sur validation Sur clic flèche (Boutons 3D uniquement) Sur clic long (Boutons 3D uniquement) Sur contracter (Listes hiérarchiques et List box hiérarchiques) Sur déployer (Listes hiérarchiques et List box hiérarchiques) Sur action suppression (Listes hiérarchiques et List box) Sur clic entête (List box uniquement) Sur après tri (List box uniquement Sur clic pied (List box uniquement) Sur déplacement colonne (List box uniquement) Sur déplacement ligne (List box uniquement) Sur redimensionnement colonne (List box uniquement) Sur chargement ressource URL (Zones Web uniquement Sur début chargement URL (Zones Web uniquement) Sur erreur chargement URL (Zones Web uniquement) Sur filtrage URL (Zones Web uniquement) Sur fin chargement URL (Zones Web uniquement) Sur ouverture lien externe (Zones Web uniquement) Sur refus ouverture fenêtre (Zones Web uniquement) Sur défilement image (image) Activer événements autres inchangés Activer événements inactiver autres Inactiver événements autres inchangés 58

OBJET FIXER ACTION / OBJET Lire action Objet action Actualiser URL courant Objet action Afficher Presse papiers Objet action Ajouter sous enreg Objet action Aller à page Objet action Annuler Objet action Annuler édition Objet action Arrêter chargement URL Objet action Coller Objet action Copier Objet action Couper Objet action CSM Objet action Dernier enreg Objet action Dernière page Objet action Effacer Objet action Enreg précédent Objet action Enreg suivant Objet action Modifier sous enreg Objet action Ouvrir URL précédent Objet action Ouvrir URL suivant Objet action Page précédente Objet action Page suivante Objet action Premier enreg Objet action Première page Objet action Propriétés de la base Objet action Quitter Objet action Répéter Objet action Retour au mode Développement Objet action Séparateur auto Objet action Supprimer enreg Objet action Supprimer sous enreg Objet action Test application Objet action Tout sélectionner Objet action Valider2 Objet sans action standard Multiligne Auto Multiligne Non Multiligne Oui OBJET FIXER MULTILIGNE / OBJET Lire multiligne OBJET FIXER IMPRESSION TAILLE VARIABLE / OBJET LIRE IMPRESSION TAILLE VARIABLE Impression limitée avec report Impression limitée par le cadre Bordure Aucune Bordure Double Bordure Normal Bordure Relief Bordure Relief inversé Bordure Système Bordure Trait pointillé OBJET FIXER STYLE BORDURE / OBJET Lire style bordure 59

LIRE INFOS FEUILLE DE STYLE Normal Gras Italique Souligné Feuille de style automatique (valeur : automatic ) Gras et italique Gras et souligné Italique et souligné OBJET FIXER FEUILLE DE STYLE / OBJET Lire feuille de style Feuille de style automatique OBJET FIXER TYPE INDICATEUR / OBJET Lire type indicateur Indicateur Barber shop Indicateur Barre de progression Indicateur de progression asynchrone ST Début sélection ST Début texte ST Fin sélection ST Fin texte ST CALCULER EXPRESSIONS / ST FIGER EXPRESSIONS / ST FIXER ATTRIBUTS / ST LIRE ATTRIBUTS ST FIXER OPTIONS ST Mode affichage expression ST Valeurs ST Références ST Lire texte brut ST Balises comme code xml ST Balises comme texte brut ST Expressions 4D comme sources ST Expressions 4D comme valeurs ST Liens utilisateur comme libellés ST Liens utilisateur comme liens ST Références comme espaces ST Texte visible avec Expressions 4D comme sources ST Texte visible avec Expressions 4D comme valeurs ST URL comme libellés ST URL comme liens ST Type balise inconnu ST Type brut ST Type expression ST Type mixte ST Type Url ST Type utilisateur ST Lire type contenu 60

OBJET Lire type Objet type bouton 3D Objet type bouton image Objet type bouton inversé Objet type bouton invisible Objet type bouton poussoir Objet type bouton radio Objet type bouton radio 3D Objet type bouton radio image Objet type cadran Objet type case à cocher Objet type case à cocher 3D Objet type champ radio boutons Objet type combobox Objet type grille de boutons Objet type groupe Objet type image statique Objet type inconnu Objet type indicateur de progression Objet type ligne Objet type listbox Objet type listbox colonne Objet type listbox entête Objet type listbox pied Objet type liste hiérarchique Objet type matrice Objet type menu déroulant hiérarchique Objet type onglet Objet type ovale Objet type popup liste déroulante Objet type popup menu image Objet type rectangle Objet type rectangle arrondi Objet type règle Objet type saisie image Objet type saisie texte (pour les champs ou les variables texte, numérique, date et heure) Objet type séparateur Objet type sous-formulaire Objet type texte statique Objet type zone de groupe Objet type zone plug-in Objet type zone web Est un null JSON Est un objet Est un tableau objet OB Lire / OB Lire type / OB LIRE NOMS PROPRIETES TEXTE VERS DOCUMENT / Document vers texte Document inchangé Document avec format natif Document avec CRLF Document avec CR Document avec LF 61

LISTBOX FIXER TABLEAU / LISTBOX Lire tableau Listbox tableau couleur de fond Listbox tableau couleur de police Listbox tableau style Notion d'héritage pour les valeurs d'attribut du niveau supérieur (Listbox pour la colonne, colonne pour la ligne, ligne pour la cellule) : valeur -255 ou constante Listbox hérité dans le ou les éléments du Tableau couleurs de fond, Tableau de styles, et Tableau couleurs de polices. Listbox couleur de fond Listbox couleur de police LISTBOX FIXER COULEUR LIGNE / LISTBOX FIXER STYLE LIGNE 4D PACK 13.2 : nouvelle commande AP Is Picture Deprecated Pour vous préparez à la migration en version v14, une nouvelle commande a été ajoutée au plug-in 4D Pack à partir de la version 13.2. Cette fonction permet aux développeurs de contrôler si les images dans sa base sont encodées dans un format qui requiert QuickTime ou pas. Si c'est le cas, QuickTime étant obsolète, il leur est conseillé de convertir leurs images dans un format plus récent avant de passer en 4D v14. AP Is Picture Deprecated (monimage) -> résultat Paramètre Type Description monimage Pointeur -> pointeur vers l'image à tester résultat Entier Long <- 0 = le format est ok 1 = le format est obsolète Exemple: $old:=ap Is Picture Deprecated (->monimage) Si ($old=1) CONVERTIR IMAGE (monimage;".jpg") Fin de si Nouveau connecteur 4D/Wakanda Nouvelle Méthode-base : Sur authentification REST Nouvelle option dans le dialogue Web des "Propriétés" de la base : 62

Les propriétés de la table : Les propriétés du champ : Les propriétés de la méthode : 63