Un nouveau Webinaire est programmé jeudi 17 mars à 11h.
Dans cette session de 20 minutes, vous découvrirez les différentes possibilités pour automatiser des tâches, des traitements (services Windows, daemon Linux, tâches planifiées Windows, ...)
Après la diffusion en directe, la vidéo restera disponible avec ce même lien.
Retrouvez l'ensemble des webinaires sur notre site :
Le GDS (Gestionnaire de Sources) de WINDEV, WEBDEV et WINDEV Mobile permet le partage des projets entre Développeurs, tout en conservant un historique complet de toutes les modifications de tous les éléments (fenêtres, pages, états, requêtes, classes ...) des projets.
Cet historique complet est extrêmement pratique, car il permet de revoir à tout moment l'interface et/ou le code d'une précédente version. Il est accessible :
d'un simple clic sur le bouton "Historique" du volet "GDS" du ruban.,
par un clic droit sur l'élément dans l'Explorateur de projet.
Par défaut l'historique proposé permet de comparer la version en cours de l'élément du projet, avec ses précédentes versions. Par exemple lorsque l'on demande l'historique d'une fenêtre, le bouton "Comparer" permet de voir toutes ses différences avec ses précédentes versions ("faire un diff" !).
Mais l'historique d'un élément propose une autre possibilité, celle de comparer deux anciennes versions. Il suffit pour cela d'effectuer une sélection multiple (Ctrl+clic), afin de sélectionner les deux versions à comparer. Une miniature pour chaque version est alors montrée, et le bouton "Comparer" permet cette fois-ci d'avoir les différentes entre ces deux versions :
Les iPhone, iPad et iPod sous iOS sont mis à jour par l'application Apple iTunes. Une fois le périphérique connecté, il suffit de cliquer sur "Rechercher les mises à jour", afin d'avoir la dernière version disponible du firmware.
En phase de test, il peut être nécessaire de changer la version de iOS d'un périphérique, mais pour une version plus ancienne que celle installée. Par exemple ce jour je récupère deux iPhone 4 équipés de iOS 7, je souhaite en conserver un avec iOS 7, mais avoir le second sous iOS 6. Voici une façon de procéder :
Rechercher la version du firmware désiré, via Google. Il suffit de spécifier l'appareil, la version de iOS, et "ipsw", qui correspond à l'extension des fichiers contenant le système complet :
Une fois le téléchargement du bon Firmeware effectué, aux alentours de 1 Go, il suffit de connecter le périphérique, de lancer iTunes et de cliquer sur "Rechercher les mises à jour", mais en pressant la touche Shift sur un PC, "Commande" sur un Mac. Un sélecteur de fichiers est ouvert, il suffit de sélectionner le fichier".ipsw" téléchargé précédemment. iTunes fait le reste, secondé à la fin par l'assistant de démarrage de l'iPhone, l'iPad ou l'iPod.
A noter qu'il s'agit d'un processus entièrement Apple, il ne s'agit pas d'un domaine couvert par notre support. Mais ayant eu à faire la manipulation plusieurs fois, je tenais à la partager.
TÉLÉMÉTRIE : IDENTIFIEZ LES UTILISATEURS ! (WINDEV)
A partir de la version 210059, la gestion des utilisateurs évolue dans la télémétrie. Il est désormais possible de voir les statistiques de chaque utilisateur de façon indépendante.
La nouvelle fonction TélémétrieIdentifieUtilisateur permet de supprimer l'anonymisation des données pour un suivi personnalisé !
LOCALISEZ : • VOS CLIENTS, VOS PROSPECTS, ETC. • LES ZONES GÉOGRAPHIQUES À CIBLER (ZONES DE CHALANDISE) (WINDEV)
Le composant interne "Carte Etendue" permet d'exploiter au mieux le champ Carte de WINDEV.
La mise à jour du composant "Carte Etendue" permet de gérer des polygones, des cartes isochrones (ou zones de chalandise) et des cartes de chaleur (ou Heatmap).
DYNAMISEZ VOS FORMULAIRES WEBDEV AVEC UN "EYE MAGNET" ! (WEBDEV)
Lorsque vous proposez des formulaires Web dont certains champs sont obligatoires, il peut être intéressant d'indiquer à l'Internaute les champs essentiels avant même la validation, au fur et à mesure de la saisie. Voici un exemple simple de mise en évidence de champs.
ZONE RÉPÉTÉE "INFINIE" : CHARGEZ LES DONNÉES À LA DEMANDE
(WEBDEV)
Dans une zone répétée qui doit afficher un nombre important de lignes, il peut être intéressant d'effectuer un chargement petit à petit, à la demande de l'Internaute.
ANDROID : AFFICHER UN BADGE SUR L'ICÔNE DE VOTRE APPLICATION
(WINDEV Mobile)
Des messages en attente, de nouvelles actualités... les badges (ou pastilles) des icônes d'application permettent de mettre en avant la présence de nouveaux contenus sous iOS.
Sous Android, cette fonctionnalité n'est pas standard mais peut facilement être mise en place via une librairie externe.
PERSONNALISATION DU CLIC DROIT SUR UN FICHIER DANS WINDOWS
(WINDEV)
Les menus contextuels de l'explorateur Windows permettent de manipuler rapidement les fichiers et répertoires. La collection de procédures "COL_SHELL_ASSOCIATION" permet d'ajouter simplement des menus et options.
Cette fonctionnalité est très utile par exemple pour effectuer un traitement avec votre application (vérification, export, envoi, sauvegarde, etc.).
L'UTILISATEUR FINAL DÉPLACE LES OBJETS ! EXEMPLE "WD OBJETS GRAPHIQUES"
(WINDEV)
La personnalisation de l'interface par l'utilisateur (PIU) est une fonctionnalité de la version 21 appréciée des utilisateurs en tant que FAA.
Le WLangage permet également de gérer simplement cette fonctionnalité par programmation et ainsi de gérer en quelques lignes de code des interfaces graphiques complexes à mettre en oeuvre dans les versions précédentes !
DÉCOUPAGE CODE-IHM
(WINDEV, WEBDEV, WINDEV Mobile)
La maintenance d'un code est souvent simplifié grâce à un découpage optimal de ce code.
Ce découpage de code permet également de simplifier le passage d'une application WINDEV à WEBDEV ou WINDEV Mobile.
Voici une première approche, simple et rapide, pour réaliser ce découpage.
UN WEBSERVICE POUR LOGUER LES APPLICATIONS SUR UN SERVEUR UNIQUE
(WINDEV, WEBDEV, WINDEV Mobile)
Mettre en place des logs dans son application, c'est toujours utile.
Mais pouvoir les récupérer et les analyser facilement, c'est mieux !
Le groupe d'exemples "WD SuiviApplication" est un système clé en main pour centraliser vos logs d'applications via un Webservice dédié et les connecter au robot de surveillance.
LE SAVIEZ-VOUS ?
(WINDEV, WEBDEV, WINDEV Mobile)
• Récupérer le nom des champs dans l'éditeur de code
• Déclarer les membres d'une classe en 1 clic
• Accélérer l'affichage d'une page grâce au chargement différé d'images
QUESTIONS & RÉPONSES
(WINDEV, WEBDEV, WINDEV Mobile)
Astuces de programmation et d'utilisation.
"FUSIO" : ÉLÉGANCE & SIMPLICITÉ
(WINDEV, WEBDEV, WINDEV Mobile)
La LST 104 est livrée avec une charte graphique commune : “Fusio”. Cette charte est disponible pour les 3 produits, sous la forme d'un gabarit (WINDEV et WINDEV Mobile) et d'une ambiance (WEBDEV).
Cette charte est donc toute adaptée à des projets
multi-plateformes.
Afin de vous faire une idée sur le rendu de cette charte graphique, cette LST contient 3 projets d'exemples de mise en oeuvre (un par produit).
DIALOGUE MACHINE TO MACHINE (M2M) : 8 SOLUTIONS
(WINDEV, WEBDEV, WINDEV Mobile)
Le dialogue "Machine To Machine" regroupe toutes les interactions automatiques que peuvent avoir 2 applications entre elles.
Cet article détaille les solutions évoquées lors du webinaire "Machine to Machine (M2M) : comment le faire ?"
IOS : COMPILEZ ET DÉPLOYEZ EN 3 CLICS DEPUIS LE PC !
(WINDEV Mobile)
L'utilitaire "WMIOSBuild" permet de copier un projet iOS sur un Mac, de le compiler puis de déployer automatiquement l'application sur le périphérique connecté au poste de développement.
Fini les allers-retours entre le poste de développement et le Mac !
WEBDEV RESPONSIVE : DES ASTUCES POUR LES MODÈLES
(WEBDEV)
WEBDEV 21 fournit en standard des modèles de pages Responsive Web Design.
Ces modèles sont directement utilisables, mais il est également intéressant d'en comprendre le fonctionnement pour y trouver des astuces et des bonnes pratiques.
"WW_Modele_Responsive_WebDesign" est un exemple qui utilise une page basée sur le nouveau modèle Responsive Web Design "Blog".
PERSONNALISEZ VOTRE AGL !
(WINDEV, WEBDEV, WINDEV Mobile)
L'éditeur de code de WINDEV, WEBDEV et WINDEV Mobile peut être complètement personnalisé. Vous pouvez, par exemple, avoir un rendu plus sombre ou simplement personnaliser certaines couleurs pour adapter au mieux l'éditeur à votre vue et à vos goûts.
L'exemple "WD Personnalisation Editeurs" est livré avec différents thèmes de personnalisation.
APPLE WATCH : DÉVELOPPER UNE APPLICATION COMMUNICANTE
(WINDEV Mobile)
Une Apple Watch permet d'exécuter des applications simples pour dialoguer rapidement avec une application du téléphone.
Avec WINDEV Mobile, la création d'une application Apple Watch s'effectue simplement et peut ensuite communiquer avec l'application associée sur le smartphone.
BEST PRACTICE : DES TRAITEMENTS PLUS RAPIDES : PARALLÉLISER UNE BOUCLE
(WINDEV, WEBDEV, WINDEV Mobile)
L'optimisation d'une application est une tâche à laquelle tout développeur doit faire face. Mais comment rendre un traitement plus rapide ?
Comment détecter si un traitement peut être amélioré grâce aux tâches parallèles ?
Cet article propose une méthodologie simple
pour analyser un traitement et trouver la solution d'optimisation la plus efficace.
PROGRAMMATION OBJET : DESIGN PATTERN SINGLETON
(WINDEV, WEBDEV, WINDEV Mobile)
Un design pattern (ou patron de conception) est une organisation logicielle reconnue comme une bonne réponse à une problématique de programmation.
Le design pattern singleton permet de s'assurer qu'à un instant donné, une seule instance d'un objet est déclarée.
UTILISATION DES NOTES POUR RÉALISER UN TABLEAU KANBAN
(WINDEV)
Le champ "Note repositionnable" de WINDEV 21 est non seulement une FAA très utile pour les utilisateurs, mais est également un champ utilisable par les développeurs. Le champ "Note repositionnable" a notamment une propriété intéressante : être déplaçable dans l'interface, sans programmation.
Dossier spécial TDF Tech 2016
ENVIRONNEMENT : 10 NOUVEAUTÉS UTILES
En version 21, les éditeurs de WINDEV, WEBDEV et WINDEV Mobile disposent de nouvelles fonctionnalités pratiques. Voici 10 fonctionnalités, nouvelles ou non, que vous devez connaître !
LE CENTRE DE SUIVI DE PROJETS
Le Centre de Suivi de Projets permet de gérer les tâches, les incidents, les exigences, les retours clients... Cet outil offre de nombreuses fonctionnalités utiles au quotidien. Cet article présente 3 fonctionnalités immédiatement utiles.
HFSQL : 12 CONSEILS POUR OPTIMISER LA VITESSE
HFSQL est la base de données disponible en standard sur WINDEV, WEBDEV et WINDEV Mobile. Voici 12 conseils efficaces pour optimiser vos accès à une base HFSQL.
21 FONCTIONS WLANGAGE À CONNAÎTRE !
Le WLangage est un langage riche qui dispose de nombreuses fonctions utiles au quotidien. Le WLangage vous permet de développer plus vite, en ayant un code plus compact. Voici une sélection de fonctions, nouvelles ou méconnues, qui vous seront bientôt indispensables.
TÉLÉMÉTRIE : DES STATISTIQUES D'UTILISATION SUR VOS APPLICATIONS
À partir de la version 21, WINDEV propose des statistiques avancées sur l'utilisation de vos applications WINDEV grâce à la télémétrie. Avec la télémétrie, vous connaissez tout de vos applications déployées et vous pouvez facilement les améliorer.
PIU (PERSONNALISATION DE L'INTERFACE PAR L'UTILISATEUR)
Quoi de plus frustrant pour un utilisateur qu'une IHM mal adaptée : une zone de texte trop petite, des boutons indispensables non mis en avant, ... En version 21, l'utilisateur final a la possibilité de personnaliser complètement l'IHM directement depuis l'exécutable, en quelques clics. Et bien entendu, le développeur peut récupérer ces modifications pour les mettre en place dans une prochaine mise à jour.
LE CHAMP TABLEAU CROISÉ DYNAMIQUE (CUBE ROLAP)
Le champ Tableau croisé dynamique est un champ indispensable pour vos décisionnaires. Il présente de manière synthétique toutes les statistiques nécessaires à la prise de décisions. Avec WINDEV, en quelques clics, vous créez un champ Tableau Croisé dynamique complet et performant.
RESPONSIVE WEB DESIGN : MÉTHODOLOGIE
En partant d'un existant ou d'une nouvelle page, une bonne méthode permet de réaliser rapidement une page Responsive Web Design fonctionnant dans les différents types de périphériques : mobile, tablette ou bureau (desktop).
5 NOUVEAUTÉS MOBILES
WINDEV Mobile vous permet de développer pour tous les terminaux mobiles : tablettes et téléphones, sous iOS, Android, Universal Windows 10 App, ... La version 21 apporte son lot de nouveautés bien pratiques. En voici quelques-unes.
DE WINDEV À WINDEV Mobile
Passer d'une application Windows à une application mobile (Android, iOS...), c'est possible ! Il suffit de bien suivre les différentes étapes et de savoir comment traiter les différences de comportement. Suivez le guide !
DE WINDEV À WEBDEV
Passer une application Windows en une application Web, c'est également possible ! Les étapes sont sensiblement les mêmes que pour le passage en mobile. Suivez le guide (à nouveau) !
SCHÉMA : DE WINDEV À WINDEV Mobile OU WEBDEV
Le passage d'une application WINDEV en WINDEV Mobile et WEBDEV suit les mêmes étapes. Voici un schéma récapitulatif des différentes étapes présentées précédemment.
LE GDS : L'OUTIL INDISPENSABLE
Le GDS est un gestionnaire de sources élaboré qui permet de sauvegarder les sources, les historiques, les versions,... Primordial lors du développement en équipe, le GDS s'avère également très utile si vous travaillez seul. Voici 5 avantages à utiliser le GDS !
ÉDITEUR D'ÉTATS : 5 NOUVEAUTÉS UTILES
Dans la majorité des applications, les éditions ont une place importante : facture, formulaire, plaquette... En version 21, l'éditeur d'états évolue et vous propose de nouvelles fonctionnalités utiles au quotidien dans vos applications.
GÉNÉRATEUR DE GABARITS : CRÉEZ VOTRE CHARTE GRAPHIQUE
Le générateur de gabarits vous permet de créer votre propre charte graphique aux couleurs de votre entreprise ou de celles de vos clients. Cette fonctionnalité est particulièrement utile lors du développement de nombreux projets pour unifier la charte graphique des applications.
PCSCLOUD : VOS SOLUTIONS CLOUD
PCSCloud propose des plateformes CLOUD prêtes à l'emploi pour répondre à vos différents besoins : partager une base de données HFSQL, fournir des sites et des webservices, fournir des installations d'applications WINDEV, partager un GDS et des Centres de Contrôle, héberger un serveur de télémétrie.
LE CHAMP FIL : CONNECTEZ VOS CHAMPS
Mettre en place des IHM intuitives et dynamiques pour construire des workflow, des plans ou des diagrammes, c'est très facile grâce au champ Fil. Le champ Fil vous permet de mettre en place un lien visuel entre 2 champs.
LE CHAMP NOTE REPOSITIONNABLE
Le champ Note repositionnable permet d'intégrer dans vos applications un pense-bête toujours visible. Ce champ est très pratique pour avoir toujours à portée, dans l'application, un "mémento" sur un champ, un client...
RAD ONGLET DYNAMIQUE
En version 21, un nouveau type de RAD fait son apparition : il s'agit du RAD "Onglet dynamique" (ou RAD "Ruban"). La principale caractéristique de ce RAD est qu'il génère des fenêtres internes utilisées dans des onglets dynamiques. La navigation est effectuée à l'aide d'un ruban, automatiquement généré. Ce RAD est un "RAD Fenêtre".
GRAPHES : LES ASTUCES DE MARC
WINDEV permet de créer facilement et en standard des graphes élaborés sur vos données : courbe, aire, secteur, beignet, histogramme, etc. Voici quelques nouveautés de la version 21 sur les graphes ainsi que quelques astuces pour améliorer le rendu.
LE DYNAMIC SERVING
Le "Dynamic serving" permet d'accéder à deux pages différentes (une page pour PC, une page pour mobile) à partir d'une même URL. C'est une solution alternative (voire complémentaire) au "Responsive Web Design" pour rendre un site traditionnel "mobile friendly". Avec le "Dynamic serving", il n'est pas nécessaire de modifier les pages existantes : il suffit d'en rajouter pour les mobiles.
UNIVERSAL WINDOWS 10 APP
WINDEV Mobile vous permet de créer, à partir du même code source, des applications pour iOS, Android et Universal Windows 10 App (nouveau en version 21).
DE WINDEV À WINDEV Mobile OU WEBDEV : LES POINTS À CONTRÔLER
Si le passage d'une application WINDEV à une application WEBDEV ou WINDEV Mobile est rapide, il existe cependant différents points qui nécessitent des adaptations. En effet, certaines fonctionnalités diffèrent ou ne sont pas disponibles selon la plateforme. Voici une liste (non exhaustive) des principaux points à contrôler.
A partir du premier juin 2016, les nouvelles applications pour l'Apple Watch doivent être compilées avec le SDK watchOS 2 afin d'être soumises à l'Apple Store.
MAJ 9/5/2016 : à partir de WEBDEV 21 l'édition "Responsive Web Design" est également proposée. Complémentaire au "dynamic serving", elle permet pour les sites référencés d'être "mobile friendly". L'édition responsive est abordée dans le billet, "Edition des pages en mode Responsive Web Design...", l'édition en "zoning" décrite ci-dessous reste adaptée pour les sites qui n'ont pas à être "moblie friendly".
Le rendu des site dans les navigateurs est un vaste sujet, au fil des versions des navigateurs les technologies évoluent et donc les façons de développer les sites progressent. WEBDEV gomme la majeure partie des différences entres les moteurs de rendu des navigateurs, comme cela a souvent été abordé dans le blog (cf. "liens sur le même sujet" en fin de billet).
Cependant pour profiter pleinement de tout le "savoir-faire" de la génération des pages de WEBDEV, il est important d'utiliser ses solutions de mises en page les plus récentes. Voici donc les recommandations principales à appliquer pour la création de vos sites, mais également en "repassant" pour mise à jour sur les pages d'un site développé il y a quelques années :
Norme de génération, paramétrable dans le volet "Avancé" de la description du projet : utiliser HTML 5.
Les sites utiliseront ainsi le mode de rendu le plus récent des navigateurs, et non pas un de leurs modes de compatibilité.
Attention, bien vérifier que les pages utilisent la norme du projet :
Champs superposables : les supprimer ! S'il y a quelques années l'option "le champ peut être superposé" proposée pour tous les champs était pratique pour forcer la position d'un champ, à l'inverse avec les navigateurs actuels elle peut provoquer des effets inattendus sur les ancrages. Si un champ doit obligatoirement être au dessus d'un autre, seul le champ par dessus doit avoir l'option "le champ peut être superposé" cochée.
Superpositions invalides et erreurs d'IHM : toujours les activer ! Ces deux options sont fondamentales. Toute erreur d'ihm ou de superposition laissée dans un site, provoquera invariablement un positionnement erroné dans un navigateur ou un autre.
Positionnement et regroupement des champs : supprimer les cellules qui ne sont plus obligatoires maintenant grâce au zoning ! Surtout pour les sites créés avant la version 17, ou après sans utiliser le zoning, supprimer les cellules qui servaient à positionner les champs afin de les remplacer par des zones de mise en page :
Mention spéciale pour Internet Explorer : supprimer les méta "X-UA-Compatible = IE???". Avant la version 11 de IE, il n'était pas rare de devoir "forcer" le moteur de rendu de IE à utiliser un de ses nombreux modes de compatibilité afin d'avoir le bon résultat. De nombreuses pages contiennent pour cela une commande "méta-http" de type "X-UA-Compatible IE???". A partir du moment ou le site est maintenant généré en HTML 5 en appliquant les conseils ci-dessus, les commandes "méta" peuvent être retirées.
Exceptions pour confirmer la règle : - les sites sous IE toutes versions confondues utilisés dans un contexte Intranet sécurisé : FAQ 6 756. - les sites sous IE11 avec un mode de compatibilité précisé dans une stratégie de groupe : Activer le mode Entreprise et utiliser une liste des sites. Un "X-UA-Compatible IE???" peut être appliqué même s'il n'est pas dans le site ou les page...
Pour les nouvelles pages créées en version 19 il est facile d'utiliser directement le zoning et d'appliquer toutes ses recommandations.
Dans le cas de la reprise de pages existantes pour leur évolution, la tâche peut sembler complexe ou coûteuse en temps. En pratique grâce à la simplicité du mode d'édition en zoning, l'opération est rapide à condition de ne pas avoir peur d'y aller franchement. En cas de fausse manipulation un paire de Ctrl+Z ou une annulation de l'extraction du GDS permet tout de suite de faire marche arrière. En découle une méthodologie "radicale" pour "rajeunir" une page utilisant des cellules et superpositions :
s'assurer que les erreurs d'IHM et de superposition sont affichées,
éditer la description des cellules qui regroupent les champs dans la page,
utiliser le bouton "enlever" afin de supprimer les champs des cellules,
supprimer les cellules une fois qu'elles n'ont plus de champs,
passer sur le volet "Zoning" de l'éditeur de pages,
définir l'ancrage voulu pour la zone unique qui constitue la page,
utiliser "découper" et "subdiviser" afin de délimiter les différentes zones qui composent la page (les cellules utilisées précédemment),
ajuster couleurs de fond et cadres des différentes zones (si une couleur n'est pas affichée, c'est que l'affichage de la table de positionnement est en cours, ctrl+u permet de revenir à l'affichage des couleurs),
placer les différents ancrages de chaque zone (bandeau en haut, à droit, centrage dans le navigateur d'une des zones...),
repasser en édition de page,
sélectionner tous les champs (ctrl+A), dans la fenêtre de description volet "ihm" décocher "le champ peut être superposé",
ajuster les différents champs sur les zones.
C'est terminé !
La page utilise maintenant les solutions les plus actuelles : elle est plus rapide, son rendu sera plus fiable d'un navigateur à l'autre. Bien sûr WEBDEV assure toujours la compatibilité, il n'y a donc aucune obligation à reprendre "immédiatement" toutes les "anciennes" pages. C'est à faire progressivement pour l'existant.
Afin de publier une nouvelle application, ou une mise à jour d'une application WINDEV Mobile pour iOS, il faut donc bien vérifier que toutes les communications utilisent IPv6 :
remplacer toute utilisation d'une adresse IPv4 par un nom de serveur dans les communications :
HOuvreConnexion vers un serveur HFSQL client/serveur,
..Adresse pour consommer un webservice,
adresse donnée à HTTPRequete,
ouverture de sessions emails...
vérifier que les adresses IP stockées en base de données ne sont pas limitées aux 16 caractères des adresses IPv4.
L'éditeur de pages de WEBDEV propose à partir de la version 21 un mode d'édition "Responsive Web Design". Ce mode d'édition est une des solutions permettant d'avoir un site "mobile friendly", l'alternative étant le "dynamic serving". Dans ce mode, plutôt que de donner une position précise et fixe aux champs comme on peut avoir l'habitude de le faire dans des sites web existants, les champs sont répartis sur une "grille" et des "tranches". Cela n'ajoute pas de difficulté particulière, mais impose de bien réaliser les pages en gardant à l'esprit les mécanismes qui positionneront les champs à l'exécution.
Ensuite toujours garder à l'esprit les fondamentaux suivants :
1. Limiter la mise en page aux dimensions réellement utilisables. Cela va sans dire, mais ça va mieux en l'écrivant ! En effet comme une page Responsive Web Design s'adapte à la largeur du navigateur, au premier abord on se laisse tenter à vraiment vouloir un résultat "responsive" dans toutes les largeurs, mais vraiment toutes y compris celles qui rendront le site inexploitable car trop petit, ou trop grand !
Donc avant tout pour éviter de gérer les cas extrêmes, très petits et très grands il est conseillé dans la page de :
fixer une largeur minimale, dans l'onglet IHM, partie "largeur min". A ce jour 320px est adapté pour que la visualisation soit parfaite même sur les mobiles les plus petits.
indiquer une largeur au delà de laquelle la page sera centrée, et non plus étirée. Par exemple 980px pour la navigation depuis un poste de bureau : l'onglet IHM, partie ancrage, définir un ancrage en largeur adapté à la grille sans agrandissement.
2. La tranche bureau est la tranche de référence : dans cette tranche tous les champs doivent être bien positionnés...
Pour l'édition en mode mode Responsive Web Design, il est capital de bien dimensionner et positionner les champs dans la tranche bureau, car elle sert de tranche de référence. Tous les calculs pour la taille et la position partent de cette tranche de référence.
En particulier, dans cette tranche bureau les champs qui seront visibles dans la tranche mobile et/ou tablette mais invisibles en dans la tranche bureau, doivent tout de même être bien positionnés sans superposition invalide.
Rappel, un clic sur la tranche bureau permet de positionner la page dans sa largeur de référence. Pour modifier si besoin cette largeur il faut d'abord se mettre dans la tranche bureau, puis modifier la largeur de la page via la poignée bleue à droite et au centre de la page.
3. En mode Responsive Web Design tout bouge, et/ou change de taille en fonction de la taille du navigateur, et des autres champs présents dans la page. Ensuite il y a plusieurs "tranches" et dans chaque "tranches" les champs peuvent avoir une taille, une position et une visibilité différente grâce aux surcharges. A retenir :
La position d'un champ est directement liée à la position du champ juste à côté, et cela dans toutes les tranches. Donc nécessairement, indépendamment des surcharges et des tranches, deux champs qui sont à côté auront leurs déplacements liés. Il n'est jamais possible d'insérer un champ entre deux lors d'un changement de tranche.
Les champs avec une taille adaptée à la grille se positionnent toujours sur le même nombre de colonnes de la grille, quelque soit la tranche. Si par exemple en édition un champ occupe 6 colonnes de la grille dans la tranche bureau, il occupera également 6 colonnes dans la tranche tablette, et 6 colonnes dans la tranche mobile. Lorsque la largeur du navigateur change, c'est la largeur des colonnes de la grille qui est adaptée, provoquant ainsi l'ajustement des champs puisqu'ils restent toujours sur un même nombre de colonnes.
les champs qui ont une taille fixe occupent un nombre de colonnes variables, l'inverse des champs ancrés en largeur sur la grille, puisqu'ils ne changent pas de taille lorsque la largeur de la page change.
Pourquoi est-ce si important ? Parce que tous les champs ont leurs positions liées, et que l'on se retrouve rapidement dans une situation ou "un champ passe à la ligne tout seul" sans que l'on ne sache au départ pourquoi...
En effet, lorsque l'on édite sa première page en mode Responsive Web Design, on est généralement très vite confronté à ce résultat : un champ passe sous un autre au lieu de rester à sa droite comme l'on s'y attend. Exemple :
un champ de saisie pour une recherche a son ancrage en largeur adapté à la grille, sa taille est donc variable en fonction de la largeur du navigateur,
à sa droite un bouton permet de lancer une recherche, il a une taille fixe,
le champ de recherche qui est adapté à la grille occupe 40 colonnes sur les 48 de la page,
le bouton de recherche à la droite du champ occupe lui 4 colonnes en édition, sa largeur est fixe.
Lorsque la taille du navigateur va être plus petite que la taille d'édition (réduction de sa largeur pour passer successivement de la tranche bureau à la tranche tablette puis mobile), comme la largeur des colonnes de la grille se réduit proportionnellement à la largeur de la page dans le navigateur, le bouton de taille fixe va occuper 5 colonnes de la grille au lieu des 4 en édition, puis 6 colonnes, puis 7 (...) provoquant ainsi une réduction de l'espace entre le champ de saisie, et le bouton. Puis le bouton de taille fixe va prendre 9 colonnes, et là il ne rentre plus. L'espace devient insuffisant le bouton est "poussé" par le champ de recherche à la ligne du dessous.
Pour éviter ce cas extrême provoquant un passage à la ligne à l'exécution, il est donc important de bien positionner tous les champs dans la tranche bureau (tranche de référence) puis d'ajuster position et visibilité des champs au fur et à mesure que l'on change de tranche et/ou que l'on réduit la largeur du navigateur. Dans le volet "Affichage" du ruban, toujours cocher "Erreurs de superposition". De cette manière si un champ peut être "poussé" faute d'espace en exécution dans les navigateurs, un débordement sur un autre champ sera visible dans l'éditeur, avec une superposition invalide :
3. Le champs spécifique pour le placement des champs en mode Responsive Web Design : le champ barre de navigation.
Le champs barre de navigation permet de gérer spécifiquement la position de certaines zones, en dérogeant aux règles de placement des champs évoquées en 2. Typiquement grâce au champ barre de navigation, il est possible d'avoir un champ de saisie type recherche, avec un bouton à sa droite qui ne pourra pas lui passer dessous si l'espace vient à manquer. Le champ barre de navigation n'est pas exclusivement réservé au menu, et sa substitution par un bouton "hamburger".
Le champ barre de navigation est découpé en 3 zones horizontalement :
deux zones à gauche et à droite qui sont au choix fixes ou adaptées à la grilles selon l'option du volet IHM du champ,
une zone centrale dont la largeur sera déterminée en fonction de l'espace restant après placement de ses zones de gauche et de droite.
La particularité de ce champ c'est qu'il est ancré tout entier avec ses deux extrémités qu'elles soient fixes ou non. Le champ barre de navigation entier suit toujours toute la grille, il occupe toujours le même nombre de colonnes. En fonction de ses réglages ses zones de gauche et de droite sont positionnées, puis la zone centrale est placée dans l'espace restant en largeur. Le champ barre de navigation permet donc de faire cohabiter sur une même ligne horizontale, des champs ancrés à la grille, et des champs ayant une largeur fixe.
Dans l'exemple ci-dessus, afin d'éviter qu'un bouton soit "poussé" à la ligne de dessous, on pourra le placer dans la zone de droite d'un champ barre de navigation :
De cette manière à l'exécution quelque soit la largeur du navigateur, la zone du bouton ne sera pas réduite, le bouton aura toujours la place :
Les trois zones du champ barre de navigation, comme pour tout les champs de type conteneur, il y a à nouveau une grille avec le même nombre de colonnes que la grille de la page, ce qui permet l'ancrage des éléments qui se trouvent dans chaque zone.
4. Erreur d'IHM et/ou superposition : il faut les surveiller et corriger les erreurs d'IHM et de superposition constamment. Elles indiquent précisément tous les positionnements des champs qui pourraient provoquer un rendu inattendu dans certaines largeurs :
volet "Erreur de compilation" enfoncer le bouton "Afficher les erreurs d'IHM",
volet "Affichage" du ruban, cocher "Erreur de superposition".
Un nouveau Webinaire est programmé jeudi 12 mai à 11h.
Dans cette session de 20 minutes, vous découvrirez comment appeler un webservice REST pour récupérer les taux de change publiés par la BCE (Banque Centrale Européenne). Les taux de change sont actualisés tous les jours.?
Après la diffusion en directe, la vidéo restera disponible avec ce même lien.
L'aide de la fonction WiFiInfoConnexion vient d'être modifiée, suite à un changement apporté par Google à Android 6.
WiFiInfoConnexion permet de connaître l'adresse MAC par laquelle transite la connexion WI-FI, grâce au paramètre wifiAdresseMac. Cela reste vrai lorsque l'exécution se fait sous Android 4.x ou Android 5.x. Par contre à partir de la version 6 de Android, l'adresse MAC n'est plus accessible :
Si une application Android utilisait WifiInfoConnexion afin d'identifier le périphérique qui exécutait l'application, il est conseillé d'utiliser à la place la fonction SysIdentifiant.
Un nouveau Webinaire est programmé jeudi 26 mai à 11h.
Dans cette session de 20 minutes, vous découvrirez comment utiliser les classes abstraites du WLangage pour réaliser des interfaces et définir des conventions de programmation.
Après la diffusion en directe, la vidéo restera disponible avec ce même lien.
Retrouvez l'ensemble des webinaires sur notre site :
Cette version n'a pas encore subi le deuxième niveau de validation par le Service Qualité. Vous pouvez trouver une information complète sur les niveaux de validation sur notre site :
La version version "Update 3" de WINDEV, WEBDEV et WINDEV Mobile 21 est disponible en téléchargement en niveau 2 de validation par le service Qualité. Il s'agit de la version 210065n.
Un nouveau Webinaire est programmé jeudi 16 juin à 11h.
Dans cette session de 20 minutes, vous découvrirez comment utiliser des ressources externes (JQueryUI, Javascript widgets, ...) dans une page WEBDEV, et les manipuler en WLangage.
Après la diffusion en direct, la vidéo restera disponible avec ce même lien.
Retrouvez l'ensemble des webinaires sur notre site :
Ce billet rejoint un thème déjà abordé dans le blog, et revenant régulièrement à notre support : pourquoi la même application peut donner le résultat attendu sur 20 postes, mais sur le 21ième une différence apparaît (effet d'affichage, formatage de donnée, communication avec un périphérique, échange avec une base tierce, un webservice ...).
Dans ce cas bien sûr il faut orienter les recherches sur la configuration elle-même, et non pas sur l'application. Il ne faudrait pas inverser la tendance en modifiant l'application à la hâte, et se retrouver avec le bon résultat sur 1 poste, et non pas sur les 20...
Pour le cas des accès aux bases de données, c'est majoritairement une erreur sur la version du client de la base de données qui peut provoquer des différences (cf. Accès aux bases de données Client/Serveur, attention à la version du client). Et dans la quasi totalité des cas,une différence dans les dépendances de l'application sera à l'origine des complications.
Voici donc un bout de code que je conseille vivement de placer dans les applications, suivant le cas avec une option "avancée", ou une option d'administration, ou un raccourci caché. Il permet d'obtenir une liste complètes avec emplacements et versions des :
DLL du framework WINDEV,
DLL de Windows qui sont instanciées par l'application,
DLL des éventuels clients des bases de données utilisées,
composants externes.
Par comparaison entre un poste sain et une configuration récalcitrante, il devient ainsi immédiatement possible de repérer les différences : un client base de données trop ancien, un composant qui n'a pas été mis à jour, un framework chargé qui n'est pas celui pour lequel l'application est prévue...
strFramework est une structure sExtension est une chaîne sModule est une chaîne sRépertoire est une chaîne sVersion est une chaîne sVI est une chaîne sInfo est une Buffer FIN
TabDépendance est un tableau de strFramework UnElement est un strFramework
sListeProcessus est une chaîne nPID est un entier sAppli est une chaîne
sDLLInfo est une chaîne sDLLListe est une chaîne sNomDLL est une chaîne sInfoElement est une chaîne= [ Copyright : %1 Description : %2 Mode : %3 Société : %4 VI : %5 Commentaires : %6 ]
// Recherche du PID du programme en cours ... sListeProcessus =ExeListeProcessus(exePID,exeNomCourt) POUR TOUTE CHAINEsProcessus DE sListeProcessus SEPAREE PARRC nPID =ExtraitChaîne(sProcessus,1,TAB) sAppli =ExtraitChaîne(sProcessus,2,TAB) SIsAppli ~= (EnModeTest() ?"WDTST.EXE"SINONProjetInfo(piNomEXE))ALORS SORTIR FIN
// Récupération des DLL pour le PID trouvé ... sDLLListe =ExeListeDLL(nPID) POUR TOUTE CHAINEsDLL DE sDLLListe SEPAREE PARRC
// Récupération de la liste des composants utilisés par l'application... sComposantNom,sComposantChemin,sComposantRépertoire sont des chaînes POUR TOUTE CHAINEsUnComposant DE ComposantListe() SEPAREE PARRC sComposantNom =ExtraitChaîne(sUnComposant,1,TAB) sComposantChemin =ExtraitChaîne(sUnComposant,2,TAB) sComposantRépertoire =fExtraitChemin(sComposantChemin,fDisque+fRépertoire) UnElement.sModule =sComposantNom UnElement.sRépertoire =sComposantRépertoire UnElement.sVersion =ComposantInfo(sComposantNom,ciVersion,sComposantRépertoire) UnElement.sVI =ComposantInfo(sComposantNom,ciVersionInterne,sComposantRépertoire) UnElement.sInfo =ChaîneConstruit("Société émettrice : %1", ... ComposantInfo(sComposantNom,ciSociété,sComposantRépertoire), ComposantInfo(sComposantNom,ciCopyright,sComposantRépertoire), ComposantInfo(sComposantNom,ciLibellé,sComposantRépertoire), ComposantInfo(sComposantNom,ciVersion,sComposantRépertoire), ComposantInfo(sComposantNom,ciVersionCompatible,sComposantRépertoire), ComposantInfo(sComposantNom,ciVersionInterne,sComposantRépertoire), ComposantInfo(sComposantNom,ciVersionProjet,sComposantRépertoire), ComposantInfo(sComposantNom,ciNuméroPatch,sComposantRépertoire), ComposantInfo(sComposantNom,ciNomPhysique,sComposantRépertoire),"") TableauAjoute(TabDépendance, UnElement) FIN
// Visualisation du tableau dans une trace pour l'exemple // le plus simple est de déclarer en global le tableau TabDépendance // afin de le visualiser directement dans un champ table par databinding POUR TOUT ELEMENT UnElement DE TabDépendance Trace(UnElement.sModule+"//"+UnElement.sVersion) FIN
Le code est autonome et peut être directement copié/collé dans un bouton par exemple.
A partir de la version "Update 3" de WEBDEV 21, l'éditeur de pages lorsque l'édition est faite en mode Responsive Web Design, permet de visualiser les blocs de positionnement des champs.
Pour afficher les blocs de positionnement, sous le volet "Affichage", dans le groupe "Aide à l'édition", cliquez sur "Bloc de positionnement".
Il est très important de toujours conserver l'option active, afin de visualiser les blocs de positionnement, et les positions des champs les uns par rapport aux autres.
Dans la page illustrée ci-dessous, grâce à l'activation de la visualisation des blocs de positionnement, on voit pour le champ sélectionné :
le rectangle pointillé dans lequel l'éditeur regroupe les champs (le bloc de positionnement),
à droite de quel élément sera placé le champ : ici l'image sera toujours et dans tous les tranches alignée sur le bord gauche de la page,
en dessous de quel élément sera placé le champ : ici l'image sera toujours placée sous le libellé "Connexion" de la page. Attention, "au dessous" ici doit être pris au sens de la verticalité dans la page, pas de la superposition.
Ces informations sont très importantes, car la position des champs les uns par rapport aux autres est figée dans toutes les tranches : dans la tranche bureau, la tranche de référence, l'image est placée dans la page en appliquant ses ancrages et en fonction du libellé "Connexion". Dans toutes les tranches, l'image sera placée en fonction de la position du libellé "Connexion". On sait donc grâce à la visualisation des blocs de positionnement :
de quoi dépend la position d'un champ,
où un champ ne pourra pas être placé dans la tranche tablette, ou la tranche mobile.
Les erreurs d'IHM mentionnent les éventuelles erreurs de positionnement.
Astuce : l'ordre des champs les uns par rapport aux autres est figé dans toutes les tranches. Par contre, la visibilité des champs ainsi que leurs positions peuvent être surchargés. Dans un exemple comme ci-dessus, si l'on souhaite avoir dans une tranche un champ qui ne conserve pas sa position de référence définie par la tranche bureau, on peut utiliser deux champs et jouer sur leurs visibilités. Exemple pour avoir dans la tranche mobile une image placée avant le libellé "Connexion", alors qu'elle est après dans la tranche bureau :
l'image placée sous le libellé "Connexion" est rendue invisible dans la tranche mobile :
dans la tranche mobile, l'image créée spécifiquement pour cette tranche est rendue visible, l'inverse de l'image utilisée dans la tranche bureau.
Le champ carte d'une application WINDEV ou d'un site WEBDEV peut afficher le message "Oops! Something went wrong", à la place de la carte attendue :
C'est un changement datant du 22 juin 2016 dans les conditions d'utilisation des API Google Maps qui est à l'origine de cet affichage. Afin de rétablir l'affichage de la carte, Google impose maintenant de spécifier une "clé d'API" pour toutes les interrogations.
Aucune mise à jour de WINDEV ou WEBDEV n'est requise, il suffit d'utiliser les possibilités existantes afin de spécifier une clé d'API Google :
dans le cas d'une application WINDEV, appeler la fonction CarteLicenceGGL avant l'ouverture de la fenêtre contenant le champ carte : FAQ 13 035
dans le cas d'un site WEBDEV, appeler la fonction CarteLicenceGGL dans la page, ou spécifier la clé dans le volet "Avancé" de la description du projet : FAQ 13 033
Une clé d'API pour l'utilisation des API Google Maps peut être obtenue directement dans la console développeur de Google. Voici un mode opératoire valable sur le site actuel de Google (s'il est actualisé les libellés ou menu pourront changer, mais le principe restera le même) :
accéder au "Gestionnaire d'API" par le bouton "hamburger - Produits et Services" en haut à gauche,
dans la rubrique "Présentation",
suivre le lien "Google Maps JavaScript API" dans la zone "API Google Maps",
cliquer "Activer" si besoin afin d'activer l'API Google Maps Javascript API,
dans la rubrique "Identifiants",
dérouler le bouton "Créer des identifiants",
sélectionner "Clé d'API",
dans le cas d'un site WEBDEV sélectionner "Clé navigateur". Il est recommandé de préciser le domaine qui utilisera la clé pour le suivi des requêtes et éviter toute usurpation.
dans le cas d'une application WINDEV, sélectionner "Clé serveur". Il est recommandé de préciser l'adresse qui utilisera la clé pour le suivi des requêtes et éviter toute usurpation.
valider par le bouton "Créer" ou "Créer la clé d'API",
copier la clé à spécifier dans les applications et/ou sites.
Il faut souligner que les conditions et quotas ont évolué, il faut donc les vérifier en fonctions des sites et applications qui utilisent les services.
Les applications WINDEV Mobile pour iOS ou Android ne sont pas impactées par ces changements au niveau de l'affichage de la carte, car une licence était déjà indispensable pour la génération de l'application.
Une demande est régulièrement faite à notre support : comment recherche les champs qui utilisent une certaine requête du projet en source de données ?
C'est possible, et facile !
Il suffit dans le volet de recherche (Ctrl+F), d'indiquer une recherche dans "des éléments" à la place de "texte". L'interface propose ensuite tous les choix nécessaires :
appliquer cette règle aux éléments "champs de fenêtre",
limiter ou non la recherche à certains types de champs,
sélectionner les propriétés des champs et le critère de recherche...
Ici j'évoque la recherche des champs basés sur une requête, cela s'applique à toutes les propriétés des champs, ou des fenêtres. On peut par exemple rechercher toutes les fenêtres d'un projet pour lesquelles le mode d'affichage en grande police est resté en "ne pas agrandir", au lieu de "agrandir la fenêtre et les champs"...