PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

Nouveauté WINDEV, WEBDEV, WINDEV Mobile 22 !
Nouveau champ: Traitement de texte (TT)
Le champ "Traitement de texte" (TT) fait son apparition en version 22.
C'est un champ très puissant.
Grâce à ce nouveau champ, l'utilisateur final n'a plus à sortir de son application pour créer ses documents courants.
Il est inutile qu'un logiciel tiers soit installé sur la machine.
Ce nouveau champ est manipulable par programmation en WLangage, ce qui offre des possibilités très étendues de paramétrage et d'automatisation.
Le champ TT est bien entendu WYSIWYG.
L'AVIS DE L'EXPERT
  • Lire et écrire des .DOCX
  • Créer des PDF, créer des emails
  • Créer des propositions commerciales
  • Gérer les images et les tableaux
  • Sauver et recharger vos textes
  • Sauvegarde possible dans HFSQL
  • Correcteur orthographique
  • Impression
Pour les tâches courantes de gestion de textes, vos utilisateurs n'ont plus à sortir de leur application : gain de temps, interface homogène, aucun autre logiciel à installer/piloter/gérer.
Pour plus de détails, consultez Le champ Traitement de texte.
Champ TT : Ruban de mise en forme standard
Le champ TT utilise par défaut un ruban "standard".
Ce ruban propose les fonctionnalités habituelles d'un traitement de texte : ouverture, sauvegarde, mise en forme, zoom, édition, etc.
Ce ruban peut être masqué.
Le ruban affiché dans le champ TT peut également être personnalisé (voir nouveauté suivante).
Pour plus de détails, consultez Le champ Traitement de texte.
Champ TT : Ruban de mise en forme personnalisable
Ici ruban personnalisé avec 2 boutons
Ici ruban personnalisé avec 2 boutons "métier" : "Editer les CGV" et "Envoyer la proposition"

Le ruban du champ TT est livré sous forme de "source" (fenêtre interne).
Il est donc totalement modifiable.
Il est par exemple facile de créer un bouton "Envoi de la proposition" directement dans le ruban du champ TT !
Il est également possible de créer un bouton qui va chercher des données contextuelles dans l'ERP !
Pour plus de détails, consultez Le champ Traitement de texte.
Champ TT : Lecture et sauvegarde de .DOCx standard
Le champ TT lit et sauvegarde les documents au format standard Docx.
Les documents créés par le champ TT s'ouvrent donc avec les traitements de texte reconnaissant ce format : MS Word, OpenOffice, iWork, ...
De même les documents créés avec ces traitements de texte s'ouvrent via le champ TT.
Pour plus de détails, consultez Le champ Traitement de texte.
Champ TT : Lecture et sauvegarde dans HFSQL
Un fichier .Docx créé par le champ TT peut directement être sauvé dans un fichier de données HFSQL (Classic, Client/Serveur, Cloud, embarqué, cluster, ...).
Cette méthode de sauvegarde permet de gérer les documents aussi facilement que le reste des données : historique, archivage, recherche, indexation, ...
Pour plus de détails, consultez Le champ Traitement de texte.
Champ TT : Correcteur orthographique
Un correcteur orthographique en langue française et anglaise est fourni.
Il est possible de télécharger des dictionnaires pour de nombreuses langues.
Ce correcteur est intégré au champ TT et donc librement diffusable avec vos applications.
Correcteur intégré
Correcteur intégré
Pour plus de détails, consultez Le champ Traitement de texte.
Champ TT : Des fonctionnalités utiles
Le champ Traitement de Texte de la version 22 offre à l'utilisateur final les fonctionnalités permettant un usage efficace :
  • choix des polices de caractères, des tailles, des graisses, couleurs, mode majuscules, exposant, indice, ...
  • mise en page : format de papier, orientation de page, marges, bordure, couleur de fond de document, ...
  • définition des paragraphes : interligne, retrait, espace avant/après, retrait de première ligne, alignement, justification, bordures, ...
  • règles,
  • tabulations, taquets, points de suite,
  • puces, puces numérotées,
  • utilisation des styles,
  • liens hypertexte (Internet),
  • soulignage avancé (simple trait, double trait, ...),
  • en-têtes et pieds de page,
  • insertion de date,
  • gestion des tableaux,
  • copier/coller,
  • insertion d'images avec habillage,
  • zoom,
  • numérotation des pages,
  • export en PDF,
  • affichage des caractères de contrôle,
  • undo/redo,
  • impression.
Pour plus de détails, consultez Le champ Traitement de texte.
Champ TT : Transformez le document en HTML
Un document créé ou édité avec le champ TT peut être sauvé au format HTML.
Cela permet par exemple de l'utiliser dans un email.
Pour plus de détails, consultez Le champ Traitement de texte.
Champ TT : Créez des PDF
Le champ TT permet de sauver son contenu au format PDF.
Le fichier PDF généré peut être crypté et signé.
Pour plus de détails, consultez Le champ Traitement de texte.
Champ TT : Aperçu et Impression
Le champ TT affiche son contenu en WYSIWYG.
Avant d'imprimer le contenu d'un champ TT, il est possible de lancer l'aperçu avant impression (comme pour un état).
L'impression s'effectue à l'aide de la fonction iImprimeDoc ou de la fonction DocImprime.
Pour plus de détails, consultez Le champ Traitement de texte.
Champ TT: Lien avec l'éditeur d'états
Un document créé avec le champ TT peut être enchaîné avec un ou des états (par exemple les conditions générales de vente).
Pour plus de détails, consultez Le champ Traitement de texte.
Champ TT: Manipulation par programmation: interaction totale avec vos applications
Un des avantages du champ TT est qu'il est manipulable par programmation, en WLangage, comme tous les champs.
Les types avancés document, paragraphe, fragment et leurs nombreuses propriétés permettent de créer, modifier, récupérer des textes par programmation.
Toutes les possibilités de personnalisation et de paramétrage vous sont ouvertes, avec une maîtrise totale !
Il est également possible de vérifier par programmation un contenu saisi par l'utilisateur final avant impression, comme par exemple les montants saisis, pour l'avertir en cas d'incohérence.
Le code ci-dessous personnalise un document avec le nom du client et crée le PDF :
// Chargement du fichier docx
DocPropale est un Document = "C :\Commercial\Modele.docx"
// Remplacement du nom des clients dans le document
tabFragments est un tableau de Fragments = DocRecherche(DocPropale, "%NomClient%")
POUR TOUT fragment DE tabFragments
fragment..Texte = Client..Nom
FIN
// Export en PDF
DocVersPDF(DocPropale, "C :\Export\Propale_" + Client..Nom + ".pdf")
Un exemple de document TT sophistiqué
Un exemple de document TT sophistiqué
L'AVIS DE L'EXPERT
Exemples d'utilisation :
  • Générer une proposition commerciale en fonction des données dans des fichiers
  • Insérer des images par programmation
  • Modifier le formatage
  • Préparer un texte à personnaliser
  • Rechercher des textes dans des .DOCx archivés
  • Préparer des mailings totalement personnalisés
Pour plus de détails, consultez Le champ Traitement de texte.
22 nouveautés
Les tables sont très utilisées dans les interfaces des applications. Le champ Table est un champ primordial. En version 22, le champ Table évolue selon vos attentes.
Il y a forcément les nouveautés que vous attendez pour vos tables dans la liste qui suit !
Une fenêtre dans une ligne de table !
La version 22 de WINDEV permet de définir une fenêtre interne par ligne de table.
Cette fenêtre sera affichée par le clic sur la ligne, ou lors du survol (option) ou par programmation.
Le clic sur la ligne décale les lignes en dessous, et affiche la fenêtre.
Le contenu de cette fenêtre interne est totalement libre.
L’AV I S DE L’ E X P E R T
La fenêtre détail peut contenir :
  • une autre table (reliée à la ligne cliquée),
  • commandes du client,
  • produits de la commande,
  • historique des ventes, ...
Visuel: déplacement de colonnes matérialisé
En version 22, les déplacements de colonnes, redimensionnements de lignes, etc. par l'utilisateur final adoptent un comportement visuel fluide. Par exemple, les colonnes déplacées sont visualisées pendant leur déplacement.
Ce petit "plus" graphique enchante les utilisateurs finaux !
L'annulation du déplacement par l'utilisateur final est gérée (Ctrl+Z sur plusieurs niveaux).
L'effet visuel permet à l'utilisateur final de mieux visualiser son action
L'effet visuel permet à l'utilisateur final de mieux visualiser son action
Personnalisation des tables hiérarchiques
Le look des tables hiérarchiques peut être encore plus personnalisé.
En particulier, le picto de début de ligne peut ne pas être affiché, avec repositionnement automatique du texte.
Les tables affichées sont ainsi plus aérées.
Lorsque les pictos sont conservés, il est possible de définir leur image, et de spécifier une largeur d'affichage, pour gérer les alignements de manière personnalisée.
Table hiérarchique avec ou sans picto
Table hiérarchique avec ou sans picto
Cocher une colonne entière d'interrupteurs d'un seul clic
Les utilisateurs finaux vont apprécier cette petite nouveauté : en version 22, il est possible de cocher une colonne entière d'interrupteurs d'un seul clic (tous/aucun) !
Ce fonctionnement est également proposé pour les colonnes de sélecteurs.
Il n'y a rien à programmer, il s'agit d'une FAA.
Filtrer une colonne d'interrupteurs
Cette fonctionnalité permet de n'afficher "que" les lignes dont l'interrupteur est coché ou celles dont l'interrupteur est décoché.
Cela est utile pour améliorer la lecture des grandes tables.
Des images dans la table ? La table est plus rapide en 22 !
Une table peut afficher des données provenant de rubriques "mémo".
Si ces mémos contiennent des données de taille importante, il pouvait y avoir un temps de chargement perceptible par l'utilisateur final : chaque ligne devait être complètement chargée avant que le chargement de la ligne suivante commence.
En version 22, l'affichage des tables avec mémo est immédiat : le chargement du contenu des mémos est asynchrone, et ne ralentit pas l'affichage des lignes.
Des jauges personnalisées
Dans certains cas, une table doit afficher des données complexes, qui peuvent demander un peu de temps pour être calculées. Et l'on souhaite que l'affichage s'effectue séquentiellement.
En version 22, il devient possible de définir des jauges (de chargement dans cet exemple) personnalisées, par l'intermédiaire d'une fenêtre interne.
Affichez une jauge !
Affichez une jauge !
Table vide ? Une fenêtre d'avertissement s'affiche
Lorsqu'une table est vide (qu'elle ne ramène aucun enregistrement, aucune ligne), une fenêtre interne permet d'afficher un message personnalisé.
Par exemple : aucun élément n'a été sélectionné, aucun élément ne correspond à vos critères de recherche, ...
C'est plus informatif qu'une simple table vide !
Avertissez les utilisateurs !
Avertissez les utilisateurs !
Totaux et moyennes ? Et maintenant, Min, Max et formules personnalisées !
Vous le savez, l'utilisateur final peut ajouter lui-même des totaux et des moyennes sur les colonnes de table.
C'est une FAA très utile qui est très appréciée.
En version 22, l'utilisateur final peut également afficher les valeurs minimum et/ou maximum d'une ou plusieurs colonnes.
Et l'utilisateur final peut même utiliser des formules personnalisées qui auront été préalablement créées par les développeurs.
Des calculs personnalisés
Des calculs personnalisés

Pour plus de détails, consultez :
Ancrage des champs dans les ruptures
Autre nouveauté intéressante de la version 22 : les champs dans les ruptures peuvent être ancrés selon une colonne.
Lorsque la colonne est redimensionnée ou déplacée par l'utilisateur final, le champ de la rupture reste aligné avec la colonne.
Je veux du HTML dans mes tables !
La version 22 de WINDEV permet d'inclure directement du HTML dans les cellules de table (il n'est pas nécessaire de prévoir une colonne conteneur).
Les attributs HTML sont bien entendu interprétés : cela permet de créer des présentations sophistiquées, en récupérant par exemple des présentations en provenance d'Internet.
HTML dans un champ Table
HTML dans un champ Table

Soignez encore plus le look de vos tables
La version 22 de WINDEV permet de soigner de manière encore plus sophistiquée le look des tables :
  • il devient possible de modifier par programmation la couleur des titres de colonnes
  • il devient possible de définir des styles spécifiques pour les sur-entêtes de colonnes
  • les libellés de sur-entête sont modifiables par programmation
  • il est possible de spécifier la marge des titres
  • il devient possible de spécifier l'épaisseur et la couleur à appliquer à chacun des 4 côtés d'une ou des cellules de table.
Tables: Animation d'insertion
Une animation (optionnelle) permet de visualiser l'insertion de lignes dans une table, en animant le déplacement des lignes situées en dessous.
Pour plus de détails, consultez les pages d'aide suivantes :
Programmation des tables: 5 nouveautés utiles
  • Deux nouveaux événements pour la programmation des tables apparaissent en version 22.
    Le nouvel événement Initialisation de Rupture permet de définir les traitements d'initialisation facilement.
    L'événement Enroulé/ déroulé d'une rupture permet une programmation encore plus fine.
  • Il devient possible de créer ou redéfinir des ruptures sur table par programmation.
  • La nouvelle fonction WLangage TableDonneFocus simule le clic sur une ligne de table par programmation !
  • La nouvelle propriété VisibleEnExportEtImpression permet de spécifier qu'une ou plusieurs colonnes ne seront pas imprimées.
Tables: évolutions diverses
  • Positionner une ligne de table dans la partie visible (affichée) de la table. La nouvelle constante taVisible pour la fonction TablePosition rend une ligne de table visible de manière intelligente : si la ligne est déjà visible, rien ne bouge; si la ligne n'est pas visible, la table scrolle automatiquement pour rendre la ligne visible.
  • Une table sans sélection dispose de loupe sur les entêtes.
  • Les tables avec sur-entêtes disposent de loupes sur les entêtes.
  • Sur les tables en mode "affichage", les interrupteurs non cochés peuvent ne plus être visualisés (évite à l'utilisateur final de croire qu'il peut cliquer sur l'interrupteur pour le cocher).
De la granularité !
En version 22, la granularité des plannings et des agendas se libère !
Il est possible de définir en standard une granularité : à la journée, à la semaine, à la quinzaine, au mois, à l'année et même une granularité personnalisée. Tout devient possible (et facile).
Des heures ouvrables spécifiques à chaque ressource
Dans un même planning, il est possible de spécifier des heures ouvrables par défaut différentes pour chaque ressource !
Par exemple un praticien travaille de 8h00 à 18h00, et un autre de 9h30 à 21h00.
Il devient également possible de rajouter des périodes d'indisponibilité, par exemple pour la pause déjeuner.
Des heures ouvrables encore plus spécifiques !
En version 22, il devient également possible de spécifier des heures ouvrables spécifiques en fonction du jour de la semaine. Par exemple, les plages horaires seront différentes le lundi et le mardi.
Une plage d'affichage encore plus personnalisée
L'affichage peut être effectué en masquant des jours (par exemple en enlevant les week-ends), ou en enlevant des jours spécifiques, comme les jours fériés, ...
Une date donnée peut être masquée.
Un affichage encore plus sophistiqué
Lorsqu'un rendez-vous court sur plusieurs jours, il peut maintenant être affiché d'un seul bloc, sans rupture entre les jours : c'est plus joli et mieux compréhensible.
La largeur de l'ascenseur devient personnalisable.
Un cadre personnalisé (par un style) peut entourer le rendez-vous sélectionné.
Affichage pointu des rendez-vous
Un rendez-vous est composé d'un titre et d'un détail. Lorsqu'une de ces zones est vide, l'autre zone occupe maintenant l'espace libéré : cela permet de ne pas tronquer un texte alors qu'il y avait de la place.
Si les 2 zones sont remplies, leur taille peut s'adapter au contenu. Le cadre peut être personnalisé.
Programmation des plannings et Agendas: 3 nouveautés
Il n'y a pas de limites aux traitements que vous pouvez programmer !
  • L'événement DéplacementRessource permet d’interdire finement le déplacement du rendez-vous par l'utilisateur final.
  • Les fonctions WLangage PlanningPlageSélectionnée et AgendaPlageSélectionnée permettent de récupérer la plage horaire sélectionnée par l'utilisateur final.
  • Il est possible de modifier la couleur de fond, la police, la taille, ... d'une ressource par programmation.
De l'ordre dans les rendez-vous qui se chevauchent !
Lorsque plusieurs rendez-vous se chevauchent dans une même plage horaire, il devient possible de spécifier l'ordre d'affichage des rendez-vous avec la propriété RDV..Altitude.
Une utilisation plus puissante pour les utilisateurs finaux
  • La combinaison de touche Ctrl+Z permet à l'utilisateur d'annuler la dernière action effectuée, comme un déplacement de tâche par exemple.
  • Le déplacement d'un rendez-vous dans une zone non visible du planning ou de l'agenda est facilité par un scrolling automatique.
  • Il est possible de modifier le titre et contenu du rendez-vous.
Le mode "Mois" s'enrichit
La saisie directement dans le mode "Mois" devient possible.
En mode "Mois", il devient possible d'utiliser la fenêtre prédéfinie de vue du Rendez-vous.
Les boutons de changement de période sont affichables en mode "Mois" comme dans les autres modes.
La plage affichée s'adapte à l'espace disponible
Le nouveau mode "plage automatique" choisit automatiquement la plage affichée (mois, semaine, jour, ...) en fonction de la période définie et de la taille disponible pour le champ.
Ce nouveau mode permet par exemple de proposer un affichage optimisé sur téléphone et sur tablette sans rien avoir à coder.
Champs: des marges internes
En version 22, tous les types de champs peuvent bénéficier d'une marge (également appelée "blanc tournant", gouttière, ...) personnalisée.
4 marges différentes peuvent être spécifiées (une par côté).
Cela permet de personnaliser chaque style de champ.
Les marges haut, bas, gauche, droite sont toutes différentes ici !
Les marges haut, bas, gauche, droite sont toutes différentes ici !

Champ Tableur : 5 nouveautés
Le champ Tableur évolue en version 22.
Il propose 5 nouveautés :
  • nommage possible des cellules,
  • possibilité de figer les volets (fixer les zones d'entête de ligne de colonne),
  • nouveau traitement de Modification de cellule qui est déclenché lorsqu'une cellule est modifiée par l'utilisateur final,
  • 2 nouvelles fonctions WLangage pour supprimer des lignes et/ou des colonnes : TableurSupprimeLigne, TableurSupprimeColonne
  • 2 nouvelles propriétés pour modifier la hauteur des lignes et la largeur des colonnes : ..Hauteur, ..Largeur
Notes repositionnables : famille de fonctions WLangage
En version 22, la nouvelle famille de fonctions WLangage Note permet de créer par programmation des actions du type de celles qu'un utilisateur final peut exécuter : créer une note, la sauver, la positionner, ...
Bulle de survol des champs: évitez les débordements !
Par défaut, la taille de la bulle s'adapte au texte à afficher. Si le texte est long, la bulle peut être disproportionnée. En version 22, il est possible de fixer une taille maximale de bulle (en pixels).
Gantt: à l'heure !
Le champ Gantt propose un affichage avec la granularité "mois ou "semaine" ou "jour" ou "heure".
La granularité à l'heure est proposée
La granularité à l'heure est proposée
ID de champ : identifiant Windows
Chaque champ d'une fenêtre WINDEV dispose d'un identifiant interne Windows unique.
Cet identifiant unique est persistant entre 2 exécutions.
Cet identifiant permet d'être compatible avec les outils se basant sur ces identifiants, comme par exemple Jaws pour la lecture automatisée d'interface à destination des non-voyants.
Icônes : nouveautés diverses
  • Icônes : gestion de l'affichage HQ (haute qualité)
  • Icônes : gestion des planches au format BMP transparent (32 bits).
Nouveau type de série : courbe de tendance
WINDEV 22 permet de rajouter des courbes de tendance sur les graphes existants.
La nouvelle fonction WLangage grTypeSérie permet de définir le type de tendance : constante, moyenne, régression linéaire.
Une courbe de tendance
Une courbe de tendance
Personnalisation avancée des graphes de type Courbe
En version 22, la personnalisation des graphes de type Courbe devient plus sophistiquée.
On pouvait déjà personnaliser l'épaisseur du trait et sa couleur.
En version 22, il est maintenant possible de personnaliser :
  • le type de trait par série (pointillés, tirets, ...)
  • le type de points d'une série (forme, taille, couleur, ...)
  • le type d'un point particulier peut également être défini.
Epaisseur, type de courbe, points personnalisés par courbe
Epaisseur, type de courbe, points personnalisés par courbe

Graphe : les axes bougent
En version 22, les axes bougent !
L'axe n'est plus forcément calé sur le zéro.
La position de l'axe horizontal (abscisses) peut être spécifiée : "tout en haut" ou "tout en bas".
L'axe vertical (ordonnées) peut être positionné à droite du graphe.
En version 22, les repères des axes peuvent également être orthonormés (l'échelle est identique pour les 2 axes).
Ici l'axe est calé sur -40
Ici l'axe est calé sur -40

Nouveau type de Graphe : composite
WINDEV propose de très nombreux types de graphes.
Un nouveau type de graphe fait son apparition dans la version 22 de WINDEV.
Il s'agit du graphe "Composite".
Ce type de graphe permet de regrouper plusieurs types de graphes en un seul.
Par exemple :
  • un histogramme avec une courbe
  • plusieurs courbes avec un histogramme
  • un chandelier avec une aire
  • ...
Un graphe composite qui mélange des histogrammes, une aire, des courbes, ...
Un graphe composite qui mélange des histogrammes, une aire, des courbes, ...
Nouveau type de Graphe composite : comment le définir ?
Le nouveau graphe Composite se définit soit par la technologie des "7 onglets", soit par programmation.
Le type d'une série affichée peut être changé par programmation.
La nouvelle fonction WLangage grTypeSérie permet de définir ou de modifier le type de la série.
Il est possible de spécifier les couleurs, l'opacité, l'épaisseur, la taille, etc. des éléments.
Graphe : nouveautés diverses
  • Le zoom peut avoir ou pas une limite maximale.
  • La roulette de zoom fonctionne en survol du champ, même si le champ n'a pas le focus.
  • Les nouvelles constantes grCoordonnéeX, grCoordonnéeY, grCoordonnéeYSecondaire de la fonction WLangage grInfoXY permettent de récupérer la valeur de l’abscisse et de l'ordonnée de la position X Y (en pixels) dans le graphe.
  • Dans la bulle d'un graphe de type "Histogramme empilé", en plus du détail de chaque série, le total de la pile est également affiché !
GDS DRIVE : Votre GDS dans le cloud en 3 clics. partagez & sauvez vos projets
En version 22, mettre le GDS dans le cloud n'a jamais été aussi simple ! 3 clics, et hop, vous partagez vos projets à travers le monde, et ce à un tarif que vous n'osez pas imaginer : 2 euros(*) par mois par développeur !
Voir nouveautés sur le GDS.
Je thème
En version 22, 2 thèmes d'environnement différents sont proposés : un thème clair, un thème foncé.
Selon le type d'écran utilisé, ses réglages de contraste et de luminosité, selon la luminosité de la pièce, et selon le goût de chacun, chaque membre de vos équipes pourra choisir le thème qui convient le mieux !
Note : il est possible de choisir le thème "clair" et de passer uniquement l'éditeur de code en thème "noir".
Environnement clair
Environnement clair
Environnement foncé
Environnement foncé
Profondeur des champs superposés dans l'éditeur
En version 22, un menu "profondeur" fait son apparition.
Ce menu permet de gérer facilement des champs superposés dans l'éditeur.
Il s'ouvre par la combinaison de touches Shift + Clic sur des champs empilés.
Le menu affiche une vignette de chaque champ, et permet de sélectionner ces champs, avec accès au menu contextuel du champ.
Tout ce qu'il y a sous le champ
Tout ce qu'il y a sous le champ "Solde" : un libellé, une ZR, et le fond
Un nouveau Modifieur
Le modifieur est utile pour accéder et modifier rapidement les caractéristiques d'un ou plusieurs champs.
On peut le considérer comme un "raccourci" des "7 onglets" !
En version 22, le modifieur a été revu et profondément amélioré.
Modifieur: sélection multiple
Une des nouveautés attendues est la possibilité de modifier en une seule manipulation une caractéristique (ancrage, opacité, animation, taille, ...) d'un ensemble de champs.
Lorsque plusieurs champs sont sélectionnés, chaque caractéristique est affichée pour l'ensemble des champs : si la valeur est identique, elle est affichée, si les valeurs sont différentes, elles sont affichées dans une combo.
Le fait de sélectionner une de ces valeurs l'affecte à tous les champs.
Les modifications s'appliqueront à tous les champs sélectionnés, ou juste au champ spécifié
Les modifications s'appliqueront à tous les champs sélectionnés, ou juste au champ spécifié
Quand la propriété des champs sélectionnés a la même valeur pour tous les champs, la branche est repliée.
Si la propriété a des valeurs différentes, la branche est automatiquement dépliée. Il est possible de saisir une valeur identique pour tous les champs en une seule manipulation.
Modifieur: 5 nouveautés
  • En version 22, le modifieur bénéficie de fonctionnalités de recherche et de filtres.
  • Un ascenseur remplace les boutons de déplacement.
  • La roulette de la souris permet de se déplacer.
  • L'affichage du modifieur sur un écran 4K ou grande police est adapté à la résolution de l'écran.
  • Le modifieur peut agir sur un groupe de champs
Mon modifieur à moi
En version 22, il devient possible de créer son propre modifieur en sélectionnant les fonctionnalités à laisser visibles.
Chaque fonctionnalité du modifieur peut être épinglée dans l'environnement.
Des références croisées
En version 22, les références croisées prennent un coup de jeune!
L'interface est complètement revue, et devient beaucoup plus claire et intuitive.
Anticiper l'impact d'une modification est maintenant bien plus facile.
Par exemple, un simple clic droit dans l'explorateur sur un élément affiche la liste de ses utilisations.
L'arborescence permet de savoir où est utilisée la variable
L'arborescence permet de savoir où est utilisée la variable

Dimensionnement: saisie directe
La création d'un champ sous l'éditeur s'effectue graphiquement à la souris.
Dans certains cas, il peut être pratique de saisir directement la hauteur et la largeur du champ en pixels : c'est maintenant possible d'un simple clic droit sur la poignée correspondante du champ.
Rappel : il était déjà possible de spécifier ces valeurs dans la "fenêtre des 7 onglets" (qu'il faut ouvrir) et dans la "status bar" (qui est trop loin tout en bas!).
Rappelons également la touche magique F4 qui permet de ré exécuter la dernière manipulation (par exemple pour appliquer la même largeur à plusieurs champs), ainsi que les options "même hauteur" et "même largeur" dans le volet d'alignement du ruban.
Toutes ces possibilités sont offertes pour le confort et la productivité de manipulation.
Directement sur le champ de saisie : position ou taille au pixel
Directement sur le champ de saisie : position ou taille au pixel
Bulle de survol
La bulle de taille et position d'un champ évolue en version 22.
Elle devient plus sobre, affiche plus d'informations, et reste à sa place (elle ne gêne plus).
Bulle de survol
Que fait la police ? Elle s'affiche !
Une petite nouveauté de la version 22 très utile au quotidien : l'interface de sélection de la police de caractères est maintenant visuelle.
Sélection de la police de caractères
Créez, c'est sauvé !
En version 22, dès qu'une fenêtre (ou une page ou un état) est créée, elle est sauvée.
Cet automatisme permet de bénéficier dès la création d'une fenêtre de tous les automatismes de l'environnement : complétion automatique, ...
Un petit confort appréciable.
Un éditeur d'images intégré
On a tous eu à retoucher un jour une image, une icône, ... Bien sûr on peut utiliser un outil tiers, mais il faut l'installer sur la machine.
Quant à "Paint", présent en standard sous Windows, il rend des services mais il ne gère pas la transparence.
La version 22 s'enrichit donc d'un mini éditeur d'images intégré à l'environnement.
Sans sortir du projet, il devient possible d'éditer ses images et ses icônes.
Les fonctionnalités principales sont :
  • Recadrage, Redimensionnement
  • Symétrie, rotation
  • Texte
  • Calques, ordre, fusion, déplacement, visibilité
  • Accès aux icones du clipart (catalogue d'images livré)
  • Gestion des formats : jpg, png, bmp, gif, tiff, ico, ...
  • Conservation de la transparence
  • Pour les boutons, les cadres : génération des images 5 états (au repos, survol, enfoncé, grisé, focus)
  • Zoom + vignette d'aperçu
  • ...
L'AVIS DE L'EXPERT
Un véritable éditeur totalement intégré et toujours prêt à rendre service
Gère quasiment tous les formats d'image
Conserve et gère la transparence
La génération facile des images "5 états" rendra de grands services !
L'éditeur d'images de la version 22
L'éditeur d'images de la version 22
Nouveau : Un éditeur d'images intégré
Lorsque l'on développe, on a toujours besoin d'un éditeur d'images
Avec la version 22, inutile d'utiliser une application tierce : l'éditeur d'images est intégré à votre environnement.
Un ruban et des volets donnent accès aux fonctionnalités.
L'éditeur d'images est connecté au GDS.
Un éditeur orienté développeur: "5 états", icônes, transparence, ...
Cet éditeur d'images est orienté "développeur", c'est-à-dire qu'il privilégie les fonctionnalités utiles en développement.
Par exemple la gestion de la transparence permet de superposer des images différentes.
Ou le support du format ICO permet de créer des icônes pour ses applications !
Les calques permettent de superposer des images ou des textes facilement.
La génération d'images "5 états" rendra également de grands services !
Un confort sans précédent
Une image à modifier? Clic droit sur l'image dans l'éditeur de fenêtres, l'éditeur d'images s'ouvre, vous faites les modifications, vous sauvez et hop, l'image est mise à jour dans le projet.
Plusieurs images peuvent être éditées simultanément.
Fonctionnalités principales de l'éditeur d'images
  • Redimensionnement
  • Recadrage
  • Rotation
  • Symétrie
  • Zoom
  • Crayon
  • Gomme
  • Lasso
  • Texte, Texte RTF
  • Remplissage
  • Gestion de la transparence (couche alpha)
  • Sélection en rectangle ou au lasso
  • Copier/Couper/Coller
  • Génération d'une image en 5 états à partir de l'image courante
  • Réglages des contrastes et de la luminosité
  • Transformation d'une couleur en transparent
  • Transformation d'une couleur en une autre
  • Conversion en noir et blanc
  • Modification de la saturation
  • Modification des teintes
  • Ajout automatique d'un halo
  • Ajout automatique d'une ombre portée
  • Sauvegarde dans le format d'origine de l'image (png, jpg, ...)
  • Sauvegarde dans un format .wdpic avec conservation des calques
  • Gestion des calques
  • Création d'un calque :
    • vierge
    • à partir d'une image du catalogue
    • à partir d'une image du disque
    • à partir du contenu du presse-papiers
    • à partir d'un autre calque (duplication)
  • Déplacement du contenu d'un calque
  • Aplatissement des calques
  • Fusion de calques
  • Déplacement de l'ordre des calques (ordre des calques = z-order)
  • Pipette
  • Fenêtre de zoom avec déplacement
  • "Clic droit..éditer" directement depuis un champ Image dans une fenêtre
  • ...
WINDEV 22 est signé
En version 22, tous les modules composant la version 22 sont signés.
Cela permet de respecter la politique de sécurité de certaines entreprises, et de s'assurer qu'aucun virus ne s'est installé.
Un environnement commun à WINDEV et WINDEV Mobile
En version 22, il devient possible d'ouvrir des projets WINDEV Mobile dans WINDEV (il est nécessaire de posséder les licences adéquates).
Il devient également possible de créer un projet qui possède des configurations WINDEV et des configurations WINDEV Mobile.
Pour éditer un projet ou une configuration WINDEV Mobile, il n'est plus nécessaire de sortir de WINDEV et de lancer WINDEV Mobile.
La réutilisabilité de l'existant est facilitée.
Les manipulations à effectuer sont réduites.
Des fenêtres communes
Avant la version 22, pour éditer une fenêtre WINDEV dans WINDEV Mobile, il fallait l'importer dans WINDEV Mobile.
Il y avait ensuite 2 versions de la fenêtre.
En version 22, il devient facile de partager directement une fenêtre (ou une fenêtre interne) entre un projet WINDEV et un projet WINDEV Mobile, ou entre 2 configurations d'un même projet.
C'est surtout utile pour les applications destinées à fonctionner sur PC et sur tablette (Windows, iOS, Android, UWP).
La nouveauté "Adaptive Design" des fenêtres WINDEV 22 est ici très utile (voir nouveauté 205).
Code, classe, requête, analyse, état, ... en accès simultané
Avec les anciennes versions, il était (bien sûr) possible de partager des éléments de projets entre WINDEV et WINDEV Mobile.
Mais il fallait changer d'éditeur en permanence, fermer le projet, et le rouvrir dans l'autre environnement.
C'était quand même très contraignant, ...
En version 22, tout cela appartient au passé, on édite les fenêtres, le code, les classes, les requêtes, les états, ... depuis le même environnement, que l'on travaille sur la version Windows, Linux, iOS, Android, UWP, ...
L'écriture d'applications multi-plateformes est beaucoup plus agréable.
Compilation multi-configurations
En version 22, une nouvelle option permet d'indiquer que toutes les configurations du projet doivent être compilées systématiquement : celles de WINDEV et de WINDEV Mobile (iOS, Android, ...), en même temps.
Rappel : le projet est compilé à chaque retour à la ligne dans l'éditeur de code, à chaque sauvegarde (Ctrl+S), ...
Ainsi les éventuelles erreurs de compilation dans une configuration donnée apparaissent immédiatement.
Time-tracker (gestion du temps): new look
Vous le savez, les éditeurs permettent de suivre de manière précise le temps passé sur chaque projet, sur chaque tâche.
Un "time tracker" est intégré dans les éditeurs.
En version 22, l'ergonomie du time tracker s'améliore.
Suivi des tâches passées: impression
Pour les prestataires qui facturent au temps passé, la version 22 du Centre de Contrôle de Suivi de Projets permet d'imprimer la liste des tâches déjà réalisées, par projet et par membre de l'équipe.
(Pour les tâches à venir, utiliser le diagramme de Gantt, qui indique les liens entre les tâches)
Le détail du temps passé
Le détail du temps passé
Messagerie intégrée
Une messagerie sécurisée est intégrée à l'environnement de développement. En version 22, cette messagerie est directement accessible depuis un onglet du Centre de Suivi de Projets.
Création d'états sur "zone répétée"
En version 22, il devient automatique de créer des états basés sur une Zone Répétée.
Une fois positionné sur la Zone Répétée, il suffit de créer l'état.
Un état est généré avec tous les champs de la Zone Répétée.
Tout est ensuite modifiable et personnalisable.
A l'exécution, l'état est rempli automatiquement avec les données de la Zone Répétée.
Créez les états d'un clic

Créez les états d'un clic
Créez les états d'un clic

Libellé justifié
Les champs de type "Libellé" peuvent maintenant être justifiés.
C'était une demande souvent exprimée !
Exemple de libellé justifié

Champ RTF : imprimez les tableaux et les images
Une coche dans la "7 onglets" permet de demander l'impression des tableaux et/ou des images présents dans un document RTF.
Par défaut ces éléments ne sont pas imprimés.
Imprimez en couleurs via le masque ("7 onglets")
En version 22, la définition d'un masque d'affichage/impression s'enrichit.
Il est maintenant possible de spécifier une couleur d'impression.
Par exemple un nombre positif sera imprimé en bleu, et un nombre négatif sera imprimé en rouge.
Pratique !
Masque d'affichage : je décide bleu si nombre positif, rouge si nombre négatif ...
Masque d'affichage : je décide bleu si nombre positif, rouge si nombre négatif ...

... et le résultat dans une table : les nombres négatifs sont facilement identifiables !
... et le résultat dans une table : les nombres négatifs sont facilement identifiables !

Remplacement d'un nom de champ par sa valeur dans un libellé. Et maintenant en HTML
Dans un libellé, l'éditeur d'états permet de saisir le nom d'un champ afin qu'il soit remplacé par sa valeur. Il suffit de spécifier le nom du champ (ou rubrique, ...) entre crochets et %.
Bonjour Monsieur [%NOM%&]
En version 22, cette fonctionnalité est étendue aux champs HTML.
Personnalisez automatiquement les textes HTML
Personnalisez automatiquement les textes HTML
Bulles de l'éditeur
Bulle dans l'éditeur d'états
Bulle dans l'éditeur d'états

Les bulles de l'éditeur d'états s'enrichissent.
La bulle affiche des informations supplémentaires pour les états :
  • propriété WLangage correspondante.
  • disponibilité dans la plateforme (Windows, Linux, iOS, ...).
  • valeurs en multilangue.
  • ...
Le champ Libellé: fédérateur
Le champ "Libellé" de l'éditeur d'états devient plus homogène.
Il inclut maintenant les champs "rubrique", "RTF" et "HTML" de l'éditeur d'états. Les champs existants sont transformés en champs "Libellé avec liaison".
L'exécution de l'état n'est pas impactée, il s'agit simplement d'une présentation plus logique de l'état source.
Etat : divers
Dans la fenêtre des "7 onglets" : les fonctionnalités non disponibles dans une configuration sont grisées, et une bulle est affichée.
Affichage des Rubriques
En version 22, l'affichage des rubriques d'un fichier de données (colonne de table) peut s'effectuer selon les critères suivants :
  • ordre logique,
  • ordre physique dans le fichier de données
  • ordre alphabétique
Une loupe de recherche est disponible.
Rubriques affichées dans l'ordre alphabétique
Assistance à la saisie des tables dont le nom est un mot réservé
Lorsque le nom d'une table (fichier de données) est un mot réservé du langage SQL (par exemple USER), l'éditeur de requêtes rajoute automatiquement les "quotes" autour du nom pour éviter les erreurs de syntaxe.
Par exemple : from ‘USER'
Edition visuelle des Expressions dans les jointures
La version 22 de l'éditeur visuel de requêtes permet de définir visuellement des expressions dans les jointures.
Ce type de requêtes pouvait bien entendu être saisi directement en code SQL.
En version 22, tout devient plus simple pour ces requêtes sophistiquées.
Définition visuelle des paramètres dans les ‘group by'
La version 22 de l'éditeur de requêtes permet de définir visuellement des paramètres pour l'ordre SQL ‘GROUP BY'.
Inutile de saisir le code SQL pour définir ces paramètres.
Votre GDS dans le cloud d'un clic: GDS Drive
En version 22, installer son GDS dans le cloud devient simplissime.
Directement depuis l'environnement, il suffit de cliquer sur le choix "GDS Drive", de saisir ses identifiants, d'indiquer les informations de paiement et le tour est joué !
2 euros par mois par développeur (100 Gigas de stockage par compte), sans aucun engagement, ...
L'AVIS DE L'EXPERT
  • Travail au bureau et à domicile
  • Sauvegarde automatique des projets
  • Partage de projets entre développeurs
GDS dans le cloud, mais source des projets où vous voulez: sur vos machines et dans le cloud
Les sources de vos projets sont toujours sur vos machines. Le GDS permet de stocker toutes les versions de vos projets dans le cloud, mais vous restez dépositaire de vos sources. Le meilleur des 2 mondes !
GDS: optimisé pour le cloud
La vitesse d'intégration et d'extraction ainsi que les manipulations à effectuer ont été optimisées pour un plus grand confort lors d'une utilisation du GDS à distance.
GDS: le diff est moins timide, ...
En version 22, le Diff affiche des informations supplémentaires.
Par exemple, lorsqu'une procédure a été ajoutée, en plus de le signaler, le Diff affiche le code de la procédure.
Il en est de même pour les images, il les affiche.
GDS: le report en 1 clic (merge)
En un seul clic, les modifications effectuées sur une branche peuvent être visualisées, et intégrées dans le tronc.
Exemple de report

Le GDS compare automatiquement la version de départ (01A ici) à la version à merger (01C) pour reporter ces différences dans la version 02B.
Il n'est plus nécessaire de comparer manuellement la version 02B et la version 01C pour trouver les différences effectuées dans la branche 01 afin de reporter ces différences.
GDS: des branches bien visibles !
En version 22, une édition graphique des branches fait son apparition.
Une couleur peut être fixée pour chaque branche.
Cette visualisation offre une vision synthétique de la vie du projet.
Un mode d'affichage permet de ne pas afficher les ré-intégrations intermédiaires pour une vision des branches encore plus synthétique !
Cette nouveauté apporte un confort d'utilisation dont on ne peut plus se passer.
Chaque ré-intégration peut devenir une branche (créez des branches à posteriori)
Vous souhaitez créer une branche à partir d'une ré-intégration qui a déjà été effectuée ? C'est facile, il suffit de cliquer sur le rond !
Elaguez les branches mortes
Avant la version 22, supprimer une branche pouvait être fastidieux.
En version 22, lorsqu'une branche devient inutile, il suffit d'un clic droit (et d'une confirmation, ...) pour supprimer cette branche.
Une branche peut devenir le tronc
Il peut arriver qu'une branche ait à devenir le tronc de développement. La version 22 permet cette opération d'un clic.
Rappel de la couleur de la branche
Vous travaillez en même temps sur plusieurs branches, vous ouvrez plusieurs éditeurs en parallèle. Comment ne pas se tromper de branche ?
La version 22 apporte la solution : le nom de la branche et sa couleur sont visualisés de la même couleur.
Nom et couleur de la branche
Nom et couleur de la branche

Rappel
L’intégration continue permet d’automatiser toutes les tâches souvent pénibles et coûteuses en temps de création de version : compilation, test, création d’install, nettoyage des fichiers, déploiement, ...
Possibilité de mettre les automates en pause
En version 22, il est possible de mettre les automates en Pause.
Cela permet de laisser le plan d'action en cours finir de s'exécuter pour qu'il ne soit pas en erreur. Et ensuite, lors de la pause effective, pouvoir arrêter les automates : changement de machine, mise à jour, etc…
Tu veux ma photo ? Ben, oui !
L'extraction des libellés à traduire affiche maintenant l'éventuelle image de la fenêtre qui inclut le libellé.
Le traducteur (la traductrice) peut ainsi voir le contexte dans lequel se trouve le texte, grâce à une visualisation d'une copie-écran de la fenêtre.
Image et texteImage et texte
Extraction de plusieurs langues en une seule opération
En version 22, WDMSG permet d'extraire l'ensemble des langues du projet (ou un sous-ensemble) en une seule opération.
Sélection des éléments du projet: nouvelle interface
L'interface de sélection des éléments du projet devient encore plus ergonomique.
L'arborescence proposée est identique à celle de l'explorateur de projets, avec les éléments dans le même ordre.
Un petit plus bien pratique.
L'ensemble des manipulations est également optimisé.
Connexion automatique à Google, Facebook, Dropbox, Twitter, Instagram , ... (OAuth 2)
La nouvelle fonction WLangage AuthIdentifie permet de se connecter et s'identifier en une ligne de code à de nombreuses applications qui supportent le protocole OAuth2 :
  • Google
  • Facebook
  • Dropbox
  • Twitter
  • Instagram
  • Microsoft OneDrive
  • Office 365
  • Pinterest
  • Spotify
  • ...
Exemple de code :
MonAuthentification est un OAuth2Paramètres
// Informations fournies par le service lors de l'enregistrement de l'application
MonAuthentification..ClientID = "0123456789"
MonAuthentification..ClientSecret = "9876543210"
MonAuthentification..URLAuth = ""
MonAuthentification..URLToken = ""
// Demande d'authentification : ouvre la fenêtre de login
MonToken est un AuthToken = AuthIdentifie(MonAuthentification)
Selon les services proposés par chaque application, il est possible de transmettre des éléments à ces applications.
Par exemple : poster automatiquement un Tweet, récupérer un fichier dans DropBox, envoyer une photo sur Instagram, ...
Mettez des Undo/ redo dans vos applications
En version 22, il devient possible de gérer le "UNDO" (et le REDO) dans vos applications.
Les nouvelles fonctions WLangage FenEdDéclareUndo, FenEdDo, FenEdRedo et FenEdUndo permettent de gérer les UNDO (et les REDO) en cascade.
Exemple de code :
// Déclaration du Undo
FenEdDéclareUndo(AnnulerOpération, Client.IDClient)
// Gestion du Undo
PROCEDURE INTERNE AnnulerOpération(nIDClient)
SI HLitRecherchePremier(Client, IDClient, nIDClient) ALORS
SourceVersEcran()
FIN
FIN
Affectation Tuple = Tableau
En version 22, il devient possible d'affecter plusieurs variables à partir d'un tableau.
NombreCommandes, NombreDevis, NombreFactures sont des entiers
// Récupération des valeurs à partir du tableau
(NombreDevis, NombreCommandes, NombreFactures)=tabStatsJour
"POUR TOUT" sur un tableau
En version 22, il devient possible d'effectuer un PPOUR TOUT sur un tableau statique.
Exemple de code :
CodeProduit est une chaîne
// Parcours du tableau des codes produit
POUR TOUT CodeProduit DE ["RF354373","RF874257","RF143287"]
 // traitement
...
FIN
Paramètre de procédure: tableau statique
En version 22, on peut manipuler directement un tableau de valeurs passé en paramètres à une procédure.
Exemple :
TraiteProduit([124545,2487425,5454721])
PROCEDURE TraiteProduit(CodesProduit)
// Accès au 2ème code
SI CodesProduit[2] = 2487425 ALORS
// Cas particulier à gérer
FIN
Fonctions WLangage: un tableau dynamique en paramètre
Les fonctionnalités qui attendent un tableau de valeurs (fonctions HLitRecherche et dérivées : HFiltre, ...) autorisent désormais un tableau dynamique. On peut ainsi remplir ce tableau dynamique avant l'appel de la fonction.
Il est toujours plus facile de préparer ses paramètres à l'avance !
Les fonctions TableauCherche et TableauTrie acceptent les tableaux d'enregistrements
En version 22, les fonctions TableauCherche et TableauTrie acceptent les tableaux d'enregistrements.
Chaînes: construction plus facile d'une chaîne par programmation
Dans le code d'une application, il arrive souvent que l'on ait à construire le contenu d'une chaîne. Par exemple "Bonjour Monsieur Machin".
En version 22, pour insérer le nom ("Machin") il suffit de saisir le [%NomDeLaVariable%] directement dans la chaîne.
Il n'est plus nécessaire d'effectuer de concaténation de chaînes ou d'utiliser la fonction ChaineConstruit (pour la gestion du multilangue).
Exemple de code :
// Demande de confirmation du client
SI OuiNon(Oui,"Confirmez-vous la création du client [%sNomClient%]") = Non ALORS
RETOUR
FIN
Découpage de chaîne facile
La nouvelle fonction ChaîneDécoupe permet de découper facilement une chaîne selon différents séparateurs, et de récupérer tous les morceaux en une seule instruction.
Découpage de chaînes

Hashage de chaînes
Le WLangage gérait déjà les standards de hashage MD5, SHA, TIGER, WHIRLPOOL.
En version 22, le standard Bernstein est également supporté.
Pour plus de détails, consultez l'aide des fonctions HashChaîne et HashVérifieChaîne.
Insérer une image directement dans le code HTML: Encodage base 64, base 64 url, base 85
Les nouvelles fonctions WLangage Encode et Décode permettent d'encoder (et décoder) des chaînes, des buffers, des images (et n'importe quoi!) dans de nombreux formats.
Par exemple, il devient possible de transformer une image jpeg en une chaîne "texte" qui peut être incluse dans du code HTML ! Dans cet exemple il n'y a plus de fichier externe pour l'image !
Cette méthode permet également de passer des paramètres binaires à une URL.
Et permet beaucoup d'autres utilisations ...
Le lion n'est pas une image, mais un code source !
Le lion n'est pas une image, mais un code source !

Tableaux associatifs : accès aux propriétés
La version 22 du WLangage permet d'accéder directement (sans variable locale) aux propriétés d'éléments stockés (objets, structures, champs, ...) d'un tableau associatif.
JSON supporte nativement les tableaux associatifs
En version 22, la gestion des tableaux associatifs lors de la sérialisation et/ou désérialisation de chaines au format JSON dans des classes WLangage est gérée.
Cela évite d'avoir à traiter soi-même le cas des tableaux associatifs.
Signature de PDF existants
La nouvelle fonction WLangage PDFSigne permet de signer un document PDF existant, créé avec WINDEV ou avec un logiciel tiers.
La signature est de type "approbation" (chaque lecteur donne son accord).
Il est possible d'insérer un texte et une image correspondants au certificat.
Fonctions GPS
Les fonctions WLangage de la famille GPS sont maintenant disponibles dans WINDEV 22.
Notes repositionnables : famille de fonctions WLangage
En version 22, la nouvelle famille de fonctions WLangage Note permet d'exécuter par programmation des actions du type de celles qu'un utilisateur final peut exécuter : créer une note, la sauver, la positionner, ...
Source de données : nommage automatique
Une variable de type "source de données" est identifiée par son nom.
Dans le cas des membres de classe, le WLangage génère un nom interne différent pour éviter les conflits.
POO : nouvelle syntaxe d'appel du constructeur de la classe de base et des membres
Afin de simplifier la lecture du code (et ne plus confondre avec une déclaration de constructeur), la syntaxe d'appel évolue en version 22 :
base :constructeur(p1,p2)
peut être utilisé à la place de la syntaxe historique
constructeur base(p1,p2)
Le code existant est toujours reconnu.
POO : appel d'une autre syntaxe d'un constructeur
Un constructeur peut avoir plusieurs syntaxes.
Par exemple un constructeur peut avoir une syntaxe sans paramètres et une syntaxe avec des paramètres.
En version 22, il est possible d'appeler une syntaxe d'un constructeur depuis une autre syntaxe.
POO : singleton
Un singleton est une classe instanciée une seule fois et de manière globale.
La déclaration d'un singleton dans le code de déclaration d'une classe devient bien plus simple.
WLangage: nouveautés diverses
  • En version 22, il est possible de récupérer les options du menu contextuel de FAA d'un champ grâce à la nouvelle fonction FaaMenuContextuelVersChaine.
  • La copie homonymique sur les structures est disponible.
  • La compilation conditionnelle est disponible pour distinguer le mode ANSI et le mode UNICODE.
  • La nouvelle constante SupprimeToutSablier permet de supprimer tous les sabliers activés en une seule commande !
L'avis de l'expert
Faire rejouer les tests automatiques avant chaque déploiement permet de s’assurer de l’absence d’effets de bord. C’est un réflexe qui améliore la qualité de vos logiciels, et fait gagner un temps de maintenance inouï!
Un tout nouvel éditeur, tout nouveau tout beau
En version 22, l'éditeur de tests automatiques est remis à neuf !
L'interface change pour à la fois plus de facilité d'utilisation et plus de puissance.
Vos équipes n'auront plus d'excuses pour ne pas créer de tests automatiques !
La création des tests s'effectue visuellement par enregistrement de manipulations.
L'outil de tests est intégré et le langage à utiliser (éventuellement) pour éditer les tests est directement le WLangage ... que vos équipes connaissent déjà.
Editeur de tests: simplification de l'interface
En version 22, l'interface de l'éditeur de tests automatiques prend un coup de jeune !
L'interface devient plus intuitive, et plus puissante à la fois : par exemple l'arborescence permet de regrouper les tests.
Testez ce que vous voulez !
En version 22, il devient possible de créer un test sur ce que l'on veut ! Il n'est plus obligatoire d'associer un test à un objet.
Editeur de tests : interface simplifiée
Une erreur dans un test ? Elle s'affiche avec les erreurs de compilation. Merci
Vos équipes restent dans un mode de fonctionnement connu.
Tout est intégré.
Historique des résultats
En version 22, l'historique de passage des tests est conservé.
Il est possible de consulter tous les comptes-rendus, et retrouver toutes les erreurs qui ont pu avoir lieu lors des exécutions précédentes.
Copie d'écran automatique en cas d'échec de test
Une copie d'écran est systématiquement enregistrée lorsqu'une erreur survient pendant un test.
Cette copie d'écran permet de voir l'avancement du test lors du déclenchement de l'erreur, ainsi que le contenu de l'interface.
La copie d'écran est conservée dans l'historique des tests (voir nouveauté précédente).
Copie d'écran lors d'une erreur de test
Le code coverage, c'est quoi ?
Le code coverage est la mesure de la couverture des tests réalisés sur une application.
Chaque ligne de code qui a été exécutée est considérée comme "testée". (Ce qui ne signifie pas que le test est réussi, cela signifie uniquement que la ligne a été exécutée).
Il s'agit à la fois des tests "manuels" (exécution des lignes de code lors d'un GO par exemple), et des tests automatiques.
Le code coverage permet de détecter les lignes de code d'une application qui n'ont jamais été exécutées.
Ces lignes de code se trouvent dans tous les objets :
  • fenêtre
  • champ
  • procédure
  • méthode
  • "bout de code"
  • ...
Le code coverage donne une bonne idée du niveau de test du code d'une application.
Visualisation du code coverage
Le taux de couverture est visualisé à plusieurs endroits :
  • tableau de bord du projet
  • explorateur de projet, au niveau de chaque élément.
  • directement sous l'éditeur de code : une couleur indique les lignes exécutées.
Les lignes en fond bleu ont été exécutées (donc considérées comme testées)
Les lignes en fond bleu ont été exécutées (donc considérées comme testées)
Travail en équipe
Le code coverage est agrégé entre tous les membres de l'équipe via la base des Centres de Contrôle.
Les statistiques par membre de l‘équipe sont également mémorisées.
Consommez et/ou créez des Webservices
Une application WINDEV permet de consommer des Webservices SOAP et des Webservices REST.
Il est également facile de créer des Webservices.
Les Webservices SOAP se créent avec WINDEV ou WEBDEV.
Les Webservices REST se créent avec WINDEV et WEBDEV (voir nouveauté 898).
Déplacement de procédure et de méthode
Avant, les procédures et les méthodes étaient affichées dans leur ordre de création, ce qui pouvait être gênant pour l'organisation logique du code.
En version 22, il devient (enfin) possible de déplacer une procédure !
Création de procédure au clavier
Avec les anciennes versions, pour créer une procédure, il fallait forcément se positionner avec la souris sur la "bonne" ligne dans l'explorateur de projet. Ce qui pouvait être fastidieux sur les gros projets.
En version 22, il suffit de se positionner à la fin d'une procédure, et de taper le prototype de la procédure à créer.
La nouvelle procédure est automatiquement créée après la procédure en cours.
Dernière ligne de code ? Saisissez en pleine page !
Petite nouveauté qui rendra bien plus confortable la saisie de code en bas de page : lors de la saisie de code en dernière ligne de l'écran, tout en bas, la ligne peut remonter en haut de l'écran (touche Flèche bas).
On dispose ainsi d'une zone de saisie vide au dessous de la ligne, ce qui est plus agréable.
C'est par exemple utile quand on ajoute une procédure à une collection ou une méthode à une classe.
Personnalisez l'éditeur
En version 22, personnaliser l'éditeur de code est plus facile.
Les paramètres de personnalisation sont sauvés dans un fichier (.sco), ce qui permet de transmettre ces paramètres à un autre poste.
Police fixe, police proportionnelle, et changement de couleurs de mots-clés
Police fixe, police proportionnelle, et changement de couleurs de mots-clés

Editeur de code fond noir
Quel que soit le thème choisi pour l'environnement, il est possible de choisir un affichage du code en fond noir.
Editeur de code en noir
Editeur de code en noir

F2 (définition de méthode): améliorations
Appel de méthode : quelle classe de l'héritage sélectionner?
En version 22, la nouvelle fenêtre de sélection de la classe est bien plus pratique.
Sélection automatique de code par niveau de bloc
L'éditeur de code de la version 22 permet la sélection automatique de blocs de code.
La combinaison de touches Ctrl+Alt+Flèche Haut sélectionne le bloc au dessus du curseur, autant de fois que demandé.
La combinaison de touches Ctrl+Alt+Flèche bas dé-sélectionne le bloc, de la même manière.
Il devient bien plus facile de déplacer un bloc de code (un SI .. ALORS .. SINON par exemple)
Sélection d'un bloc de code

Enroulez et déroulez le code
En version 22, il devient possible d'enrouler et dérouler les traitements de son choix.
Enrouler ou dérouler des traitements

La couleur : 1 clic ou RVB 255 0 0 = rouge ?
Sous l'éditeur de code, la saisie d'un code RVB affiche un carré de la couleur définie.
Cela permet de corriger des erreurs de frappe.
Un clic sur le carré de couleur permet d'ouvrir un sélecteur de couleurs pour changer la couleur dans le code.
Le carré affiche la couleur
Le carré affiche la couleur

Ascenseur visuel
L'ascenseur visuel signale maintenant les erreurs de compilation et les résultats de recherche.
Les lignes contenant une erreur de compilation sont signalées par un surlignage rouge.
Les lignes contenant un élément recherché sont matérialisées par un surlignage en orange.
Le trait rouge identifie une erreur de compilation
Le trait rouge identifie une erreur de compilation

Saisie des expressions régulières + facile
En version 22, il devient possible de sauvegarder ses propres expressions régulières directement dans l'assistant pour les réutiliser ultérieurement.
Un aperçu visuel de l'expression régulière est affiché.
Mémorisez vos définitions graphiques d'expressions régulières
Mémorisez vos définitions graphiques d'expressions régulières

Synchronisation automatique de l'explorateur
En version 22, il devient possible de demander à l'explorateur de projets de suivre le code.
Lors de l'exécution de code en mode "pas à pas", affichage automatique des Warnings d'audit dynamique
Afin d'améliorer la qualité du code produit, la version 22 du débogueur affiche automatiquement les "Warnings" de l'audit dynamique.
Cela signale des risques potentiels du code.
Le développeur choisit alors de les prendre en compte ou pas.
Les erreurs invisibles deviennent visibles
Les erreurs invisibles deviennent visibles
JSON affiché en formaté
Lors du débogage d'une variable contenant du JSON, le débogueur affiche le contenu JSON avec une indentation.
XML affiché en formaté
Lors du débogage d'une variable contenant du XML, le débogueur affiche le contenu XML avec une indentation logique.
Point d'arrêt dans un modèle ? Stop dans tous les dérivés du modèle
En version 22, lorsqu'un point d'arrêt est positionné dans le code d'un modèle (de fenêtre ou de champ), le débogueur s'arrêtera dans toutes les fenêtres ou tous les champs qui dérivent de ce modèle.
XML
Sauvegarde avec mise en forme
En version 22, il devient possible de créer un fichier XML avec une présentation :
  • indentation,
  • retour chariot.
La lecture "humaine" en est énormément facilitée !
Audit statique personnalisé
En version 22, il devient possible de sélectionner les éléments sur lesquels lancer un audit.
Cela est utile sur les grands projets, afin de réduire les délais d'exécution de l'audit, ainsi que les conseils générés.
Cela est utile également lorsqu'une partie de l'application est encore non finalisée, pour ne pas auditer cette partie.
Anciennes analyses
L'audit statique identifie maintenant les analyses créées avec une ancienne version, dont les formats internes ne sont pas optimisés.
L'audit propose alors de passer les "Analyses" au format actuel, ce qui améliore très sensiblement les performances dans le GDS.
Audit dynamique: traitements interdits dans les threads signalés
L'audit dynamique signale les accès interdits à l'IHM depuis les threads.
Rappel : pour des raisons de synchronisation, un thread ne devrait pas accéder à l'interface des fenêtres. Il faut revenir dans le thread principal (avec la fonction WLangage ExecuteThreadPrincipal) pour effectuer les accès sur l'IHM.
Un "trigger d'application" : notification de modification de fichier de données
La version 22 de HFSQL permet d'appeler une procédure cliente lorsqu'un de ces 2 événements se produit sur un serveur :
  • modification d'un fichier de données,
  • modification d'un enregistrement du fichier de données (d'une ligne de la table).
Cette fonctionnalité permet de déclencher un traitement (une vérification, un message d'alerte, ...) à chaque modification de données, y compris entre applications.
Requête : forcer la clé de parcours
Les clés de parcours d'une requête sont déterminées et optimisées par HFSQL.
Dans certains cas particuliers on peut être amené à vouloir utiliser une clé de parcours spécifique.
La version 22 de HFSQL permet de définir ces clés.
Attention : dans ce mode, la vitesse des requêtes n'est plus automatiquement optimisée. Il ne faut donc utiliser ce mode que dans des cas particuliers !
Mise à jour automatique (ou pas) de serveur HFSQL
Le serveur HFSQL évolue régulièrement : soit à l'occasion d'un changement de version majeure (comme la nouvelle version 22), soit à l'occasion de versions intermédiaires (update 1, update 2, ...).
En version 22, il devient possible d'automatiser la mise à jour des serveurs HFSQL :
  • vérifier à intervalles réguliers si une mise à jour est disponible, et l'installer
  • mettre à jour automatiquement en cas de changement de numéro de version (21 vers 22 par exemple).
  • ...
Mise à jour personnalisée d'un ensemble de serveurs HFSQL
Lorsque l'on gère un ensemble de serveurs HFSQL, après avoir validé une version spécifique, on veut en général mettre à jour tous les serveurs en exploitation.
La version 22 permet cette opération de manière automatique.
Chaque serveur vérifie selon la fréquence paramétrée s'il doit ou non se mettre à jour selon la volonté du gestionnaire du parc.
Si la version du serveur installée est différente de la version du serveur proposée, le serveur se met à jour.
"Modif auto" (SDD) : savoir ce qui va se passer dans la modif auto avant de la lancer
La fonctionnalité de maintien automatique de la structure des bases de données ("Modif Auto.") affiche plus d'informations en version 22 !
Avant de s'exécuter, la "Modif Auto" affiche une fenêtre d'information indiquant les modifications de structure qui seront effectuées.
Si plusieurs mises à jour successives doivent être appliquées (vieille version mise à jour), la fenêtre l'indique.
Modif auto : Modifications de structures

Duplication de base: facile en 22
En version 22, une base de données HFSQL peut être dupliquée par la nouvelle fonction WLangage HDupliqueBaseDeDonnées.
Les droits des utilisateurs sont également dupliqués.
Vitesse des requêtes : détection des clés nécessaires sur base en exploitation
La version 22 de HFSQL sait optimiser la vitesse des requêtes selon leur exploitation réelle.
Pour les requêtes exécutées souvent, ou qui consomment beaucoup de ressources, le moteur de HFSQL version 22 effectue des traitements d'optimisation en tâche de fond.
Le moteur de HFSQL détermine les clés et clés composées à ajouter pour optimiser les performances des requêtes.
Les clés à rajouter sont signalées au DBA, au responsable du projet et à toute personne désignée.
L'ajout de la clé doit être validé avant d'être effectué. HFSQL ne force aucun ajout.
Le gain de performances peut être spectaculaire.
En effet, les performances dépendent du contenu effectif des bases de données (et des index) du site d'exploitation.
Note : cette fonctionnalité est disponible en mode 64 bits, qui est le mode le plus répandu.
Les suggestions vous sont envoyées directement par mail
Les suggestions vous sont envoyées directement par mail

Meilleure vitesse des requêtes : les conseils de l'expert
Avant de prendre en compte les optimisations, attendez que les bases de données soient suffisamment alimentées.
Il ne faut pas exécuter ces optimisations sur des bases de tests ou des bases en cours de remplissage.
En effet, les données réelles de la base de données influent énormément sur les optimisations de performance.
Il faut donc utiliser des bases de données "en vitesse de croisière", avec des données réelles en quantité suffisante.
Si vous éditez un progiciel, notez que les optimisations (les clés supplémentaires à définir) peuvent varier d'un site d'exploitation à un autre.
Meilleure vitesse des requêtes: mise en oeuvre pratique
Lors de la mise en oeuvre du processus d'optimisation, il faut veiller à bien renseigner les coordonnées des personnes qui vont recevoir les comptes-rendus d'optimisation.
Nous vous conseillons d'indiquer les destinataires suivants :
  • le chef de projet
  • le DBA
  • un représentant du client.
Installation facile sous Linux : DOCKER
Dans le monde Linux, Docker est un système d'empaquetage d'applications.
Une ‘image Docker' contient tous les fichiers nécessaires à l'exécution d'une application : un serveur HFSQL, un serveur Web, une base big data, ou une application classique.
Une image du serveur HFSQL Client/Serveur version 22 est disponible dans le "hub docker" (le site officiel qui référence les images).
Pour créer l'image, un script (un docker file ) est défini. Ce script est également fourni.
Ce conteneur Docker permet par exemple de déployer le serveur HFSQL dans Amazon EC2, Microsoft Azure, et sur tout serveur Linux.
Installation facile sous Linux : apt-get
Une autre méthode pour installer facilement des applications sous Linux est la possibilité d'utiliser la commande de script (Shell) apt-get.
En version 22, le serveur HFSQL peut être installé automatiquement en utilisant cette commande.
Nouvelles fonctions supportées
En version 22, le Cluster HFSQL supporte les nouvelles fonctions : hChargeParamètre, hSauveParamètre, hSupprimeParamètre.
Ces fonctions permettent de gérer des paramètres personnels tels que configuration des triggers ou de procédures stockées : email de destinataire, statistiques à calculer, ...
Nouvelles fonctions en SQL
La version 22 de HFSQL supporte 5 nouveaux ordres SQL :
  • SYSTEM_USER
  • CURRENT_TIMESTAMP
  • GETUTCDATE
  • USER_NAME
  • GETDATE
GROUP BY : paramètre accepté
L'ordre SQL GROUP BY accepte maintenant les paramètres.
C'est utile quand une expression contenant un paramètre est utilisée dans le SELECT.
ORDER BY de rubriques qui ne sont pas dans le select
Il devient possible de trier une requête SQL à l'aide d'une rubrique qui n'est pas présente dans le Select (rubrique qui ne sera pas affichée).
Support des constantes WLangage dans les requêtes SQL
Les requêtes SQL peuvent contenir des fonctions WLangage.
En version 22, les constantes du WLangage sont également supportées dans les requêtes.
Nouveau : Tableau de bord
Le nouveau tableau de bord du serveur HFSQL permet d'avoir une vision synthétique du contenu d'un serveur.
Le tableau de bord permet également d'agir sur les paramètres du serveur.
Qu'est-ce qui s'exécute en ce moment sur le serveur ?
En version 22, le tableau de bord du serveur HFSQL affiche les traitements qui sont en cours sur le serveur : sauvegardes, tâches planifiées, ...
Ces informations sont utiles pour analyser la charge du serveur à un instant donné.
Amélioration de l'ergonomie du CC
Le Centre de Contrôle HFSQL se bonifie avec l'âge !
En plus des nombreuses fonctionnalités offertes en version 22, le CC devient encore plus facile à utiliser :
  • Multi-sélection
  • ...
Affichage des "log serveur" immédiat
Les log de serveur HFSQL contiennent la liste des commandes exécutées par le serveur : requêtes, sauvegardes, tâches planifiées, parcours, ...
En version 22, la consultation de ces logs est immédiate, ce qui est bien agréable !
Récupérer à distance une sauvegarde
En version 22, il devient possible de récupérer la sauvegarde d'un serveur HFSQL à distance.
De l'action !
Depuis le Tableau de Bord HFSQL il devient également possible de :
  • Crypter une base de données sans lancer de Modif Auto
  • Activer et désactiver les règles d'intégrité
  • Dupliquer une base de données, avec ses droits.
MongoDB
MongoDB est une base NoSQL orientée documents.
MongoDB stocke des documents au format JSON dans des "collections". Une collection est un ensemble de documents.
MongoDB propose des méthodes évoluées de recherche de ces documents.
MongoDB propose le "map reduce".
MongoDB : connecteur natif
Une nouvelle famille de fonctions et de types avancés WLangage permet de gérer facilement les bases mongoDB.
Connexion, liste des connexions, informations sur connexions, recherche, tri, ajout, etc.
La programmation s'effectue facilement, en WLangage.
MongoDB : liste des fonctions
La nouvelle famille de fonctions Mongo permet de gérer les bases MongoDB nativement en WLangage.
MongoDB : liste des types
La nouvelle famille de types Mongo permet d'affiner la programmation des bases MongoDB nativement en WLangage.
MongoDB : GridFS
GridFS est un système de fichiers distribués gérés par MongoDB.
Les nouvelles fonctions MongoGridFS permettent de lire, écrire et supprimer des fichiers dans GridFS.
Connecteur natif (accès natif) à SQL Server
En plus des versions historiquement supportées, le connecteur natif à SQL Server fonctionne également avec les dernières couches clientes "SQL Server Native Client 11.0 et 13" (de SQL Server 2014 et 2016).
Version minimum requise
  • Version 22
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire