tdf tech 2013 - pcsoft - windev, webdev, windev mobile

47

Click here to load reader

Upload: adriano-boller

Post on 15-Apr-2017

378 views

Category:

Software


21 download

TRANSCRIPT

Page 1: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

TDF Tech 2013 Support de cours

Page 2: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

Le document que vous avez entre les mains n’a pas la finalité de remplacer les documentations techniques ou commerciales livrées avec WINDEV, WEBDEV ou WINDEV Mobile.

Ce document n’est pas un cours d’auto-formation, mais uni-quement un support “papier” de la présentation technique que vous avez suivie.

Ce document a été réalisé par l’équipe de la LST.

TDF TECH 2013 - www.pcsoft.fr - 3

Page 3: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

TDF TECH 2013 SOMMAIRERetrouvez dans ce support de cours les sujets abordés lors du TDF Tech 2013.Le code source des différentes applications et projets indiqués dans ce support de cours est présent sur le DVD du TDF Tech 2013.

4 Sommaire

8 PC SOFT à votre service

10 WINDEV Présentation rapide de WINDEV et de ses fonctionnalités

12 WEBDEV Présentation rapide de WEBDEV et de ses fonctionnalités

14 WINDEV Mobile Présentation rapide de WINDEV Mobile et de ses fonctionnalités

18 Windows 8 : évitez la tuile avec WINDEV La création d’applications pour le mode tuile de Windows 8 (Modern UI) demande certaines adaptations pour respecter

l’IHM et le comportement par défaut. Voici un guide des bonnes pratiques à suivre.

20 Application Windows 8 : déployer sur le Windows store Votre application Windows 8 (Modern UI) est prête et fonctionnelle.

Vous pouvez maintenant la publier sur le Windows Store de Microsoft pour en faire profiter la communauté. Déployons ensemble une application.

22 Sécurisez vos applications avec le groupware utilisateur Pour sécuriser l’accès à vos applications, WINDEV propose en standard le groupware utilisateur.

Vous pouvez ainsi mettre en place des droits d’accès sur les fenêtres, les champs et les états de vos applications.

25 Personnalisez le groupware : analyse, fenêtres, code, ... Le groupware en mode automatique, c’est bien.

Mais si vous souhaitez paramétrer la gestion des utilisateurs et droits plus précisément, WINDEV vous offre la possibilité de tout personnaliser (analyse, fenêtres, code, ...) !

ImportantUne version supérieure à la version 180046j est requise pour utiliser les exemples présents sur le DVD.

4 - TDF TECH 2013 - www.pcsoft.fr

26 API Google Traduction : activation et utilisation Dans une application multilingue, la traduction des messages peut être effectuée via l’outil WDMSG ou

directement dans l’éditeur. À partir des versions 18, il est possible d’utiliser le service de traduction “Google Traduction” pour traduire les éléments directement dans l’éditeur. En quelques clics, votre application est multilingue !

28 HyperFileSQL : autoriser la réplication automatique Gestion d’un serveur secondaire, de filiales, d’un serveur pour les accès distants, etc.

La réplication de serveurs HyperFileSQL permet de synchroniser automatiquement plusieurs serveurs distants sans programmation.

30 HyperFileSQL : mettre en place une réplication Une fois le serveur “maître” configuré pour autoriser l’utilisation de la réplication, il ne reste plus qu’à utiliser

l’assistant intégré au Centre de Contrôle HyperFileSQL pour mettre en place une réplication serveur à serveur : 0 ligne de code !

32 Serveur HyperFileSQL : administration avancée L’administration d’un serveur HyperFileSQL s’améliore encore en version 18 et vous permet de bénéficier de

nouvelles fonctionnalités : restriction d’accès, système de notifications, calcul automatique des statistiques des fichiers, ... Avec les serveurs HyperFileSQL, vous gérez !

34 Mais que fait cette requête ? Let me EXPLAIN ! L’exécution d’une requête SQL est une suite d’actions (parcours, filtrage, tri, ...).

HyperFileSQL optimise le choix de l’ordre des actions à effectuer en fonction des index définis. La fonction EXPLAIN permet d’obtenir le détail du plan d’exécution d’une requête en fonction des données réelles.

36 Nouveautés éditeurs : ruban, «diff» d’images et recherche En version 18, les éditeurs bénéficient de nouveautés indispensables qui facilitent le développement au

quotidien. Petit tour d’horizon de 3 nouveautés incontournables : le ruban, le «diff» d’images et la recherche nouvelle génération.

38 Coup d’œil sur 18 nouvelles fonctions des versions 18 Les versions 18 proposent des centaines de nouvelles fonctions et syntaxes pour vous aider dans vos

développements. Voici une sélection de nouveautés apparues en version 18 et qui vont vous servir au quotidien. Lisez attentivement, vous allez sûrement en découvrir !

TDF TECH 2013 - www.pcsoft.fr - 5

Page 4: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

TDF TECH 2013SOMMAIRE (SUITE)

42 Fonctionnalités avancées, code simplifié ! Le WLangage simplifie l’utilisation et la mise en place de fonctionnalités avancées.

Voici 5 exemples concrets de nouvelles fonctionnalités avancées qui vont vous aider au quotidien !

44 Des raccourcis utilisés, du temps économisé WINDEV, WEBDEV et WINDEV Mobile regorgent de raccourcis pratiques dans les différents éditeurs.

Voici une sélection de raccourcis utiles et souvent méconnus.

46 Créer un tableau croisé dynamique : facile et rapide avec l’assistant ! Le champ Tableau croisé dynamique est un champ décisionnel puissant qui affiche dynamiquement les données

calculées issues de différents fichiers d’une base de données. Grâce à un assistant simple et intuitif, ce champ peut être mis en place en quelques secondes. Démonstration en images !

48 Tableau croisé dynamique Le champ Tableau croisé dynamique est un champ décisionnel inévitable.

Petit tour d’horizon des possibilités offertes.

50 WINDEV & Big Data : exemple d’utilisation de «MongoDB» WINDEV permet d’accéder à toutes les bases de données :

HyperFileSQL bien entendu, mais également Oracle, MySQL, DB2, etc. Mais saviez-vous que vous pouvez même manipuler des données issues de bases “Big Data” ?

52 WEBDEV : tout pour faire un site dans l’air du temps WEBDEV permet la mise en place rapide de sites beaux et fonctionnels.

Et si votre site a besoin d’un relooking, avec les fonctionnalités WEBDEV et quelques astuces, vous pouvez le mettre au goût du jour facilement et rapidement. Suivez le lifting d’un site pas à pas et retrouvez le résultat dans l’exemple “WW_Precilia_Voyages_TDF18”.

56 WEBDEV : le champ Agenda En version 18, WEBDEV s’enrichit d’un nouveau champ de gestion du temps : le champ Agenda.

Vos sites WEBDEV classiques, AWP et PHP vont pouvoir en profiter !

57 WEBDEV : le champ Table hiérarchique Le champ Table hiérarchique est le subtil mélange des champs Table et Arbre.

Déjà présent en WINDEV, ce champ arrive dans sa version Web pour offrir à vos sites plus de possibilités.

58 WEBDEV : tâches planifiées et tâches différées En version 18, WEBDEV permet de mettre en place des tâches (chaque tâche étant une procédure WLangage)

directement sur le serveur. Les tâches différées permettent de déporter des traitements qui prennent du temps sur le serveur d’application WEBDEV : l’envoi d’un email ou le calcul de statistiques par exemple. Les tâches planifiées permettent d’exécuter de façon régulière une opération donnée : l’envoi d’un mailing sur les promotions en cours par exemple.

6 - TDF TECH 2013 - www.pcsoft.fr

60 Installation d’applications dans le CLOUD : accessibilité maximum ! Vos utilisateurs sont éparpillés partout dans le monde ? Vos commerciaux itinérants n’ont pas accès à votre réseau ?

Grâce à PCSCloud, vous mettez vos applications à disposition de tout le monde, sur Internet. Et en plus, elles sont toujours à jour ! Petit détour par les nuages, en images.

62 Android : Widgets, nouveaux champs, accès à l’agenda, ... La version 18 de WINDEV Mobile apporte son lot de nouveautés pour les plates-formes Android : la création de

Widgets, les champs Calendrier et Zone multiligne, le dessin d’itinéraires sur cartes, l’accès à l’agenda, ... Suivez le guide !

66 Android : programmation d’une Smartwatch (SONY) Vous souhaitez être notifié discrètement sur des événements importants ?

Avec WINDEV Mobile, vous pouvez développer facilement et rapidement une application compatible avec les Smart-watch !

68 Développer une application pour Windows Phone 8 WINDEV Mobile permet de développer des applications pour Android, iOS, Windows CE et même pour Windows

Phone ! Le développement d’applications pour Windows Phone 8 nécessite la connaissance de certains mécanismes et certaines spécificités. Voici un bref descriptif des points importants à connaître.

70 Applications iPhone/iPad : plus intuitives, plus ergonomiques WINDEV Mobile 18 offre de nombreuses nouveautés utiles et immédiatement utilisables pour iPhone/iPad :

l’impression PDF, l’accès aux contacts, les fenêtres popup, le champ Carte, le champ Multimédia, ...

AnnexesI Internationalisation d’applications avec WDMsg

II HyperFileSQL : 3 conseils pour optimiser les accès aux bases de données

III Sécurité des données et des applications : 12 conseils

IV Raccourcis principaux de WINDEV et WINDEV Mobile

V Raccourcis principaux de WEBDEV

TDF TECH 2013 - www.pcsoft.fr - 7

Page 5: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

PC SOFT à votre service

Assistance DirecteUn complément efficace du Support Technique GratuitTout projet important ou stratégique doit bénéficier d’une “Assistance Directe” !

L’Assistance Directe permet d’une part de bénéficier d’un contact téléphonique immédiat avec un ingénieur spécialisé, et d’autre part de choisir les sujets à traiter, et ce pour une durée que vous définissez vous-même. Cela vous permet de résoudre immédiatement les sujets qui vous posent problème.

Le contact téléphonique est garanti sous 8 heures ouvrables, ce qui vous permet une meilleure efficacité. Ce service est disponible sur abonnement.

Contactez le service commercial pour plus d’informations (Fabrice CHAMBON au 04-67-032-032).

Support Technique Gratuit

Le site du support technique gratuit (www.pcsoft.fr/st) met gratuitement à votre disposition un ensemble d’informations destinées à vous aider à mieux développer :• les FAQ • les téléchargements• les forums développeurs professionnels (News Group)Vous avez une question ? Contactez  le Support Technique Gratuit PC SOFT !• Avec  l’utilitaire RequêteAuST (média conseillé). Votre requête sera généralement traitée sous 48 heures.• Par téléphone au 04.67.03.17.17 (préparez votre numéro de série et votre question svp) ou par courrier.Envoi par email : merci de ne pas attacher de fichiers de taille supérieure à 10 Mo sans l’accord préalable de votre destinataire. Sinon votre fichier sera refusé par le système.

ConsultingProfitez de l’expérience d’un ingénieur de PC SOFT sur votre siteUn consulting PC SOFT peut être délégué chez vous, pour une durée de 1 à 5 jours, un ingénieur PC SOFT connaissant à la fois votre domaine et les outils que vous utilisez.L’ingénieur PC SOFT répond directement à vos questions, travaille sur votre projet réel et votre configuration réelle. Vous obtenez les réponses précises qui vous font gagner un temps précieux, et vous assurent des bonnes orientations technologiques et méthodologiques.

Notre conseil ? Commandez 1 jour de consulting pour 100  jours de développement.

Et, chaque année, prenez l’habitude de faire venir ( juste 2 jours) chez vous un ingénieur PC SOFT, pour profiter d’une expertise de toutes les nouveautés.Sur votre projet, dans vos locaux, en votre présence, l’ingénieur PC SOFT valide l’analyse, vous montre des nouveautés utiles dans votre cas de figure, vous propose des optimisations de votre code, valide vos modes d’utilisation, ... Vous serez ravi de l’efficacité de son intervention ! Budgétez d’ores et déjà la prochaine intervention !

Un assistanat vous fait gagner des journées de développement!Quelques exemples de sujets traités :• Simplification du code et mise en place de nouvelles techniques : HyperFileSQL Client/Serveur, Sockets, Webservices, Composants, Patchs, Configurations, …• Transformation de modules développés avec WINDEV en Webservices.• Optimisation de traitements avant la recette de l’application, validation d’analyse avant de débuter une application.

FormationSéminaires de formation pour WINDEV, WEBDEV et WINDEV MOBILEPC SOFT organise à Paris, chaque semaine, des séminaires de formation à WINDEV, WEBDEV et WINDEV Mobile, de différents niveaux : Prise en main, Perfectionnement, Expert, Client/Serveur, ...

Ces séminaires, animés par des salariés PC SOFT expérimentés (compétence assurée !), permettent de découvrir et de maîtriser WINDEV, WEBDEV et WINDEV Mobile selon un plan efficace.Consultez le calendrier des séminaires joint à cette LST (le détail des stages et les contenus pédagogiques sont disponibles sur notre site Web : www.pcsoft.fr), vous trouverez LA formation adaptée à votre expérience et à votre besoin.

Suivre une formation organisée par PC SOFT est toujours rentable : c’est se donner les moyens de maîtriser WINDEV et WEBDEV dans les meilleurs délais, ou d’en découvrir la face cachée, encore plus puissante !Inscrivez-vous vite! Ces séminaires peuvent également être organisés dans vos locaux, en France et à l’étranger.Le montant de ces formations est déductible du “1,5 % Formation”.

N’hésitez pas à nous  contacter : une journée de consulting est toujours rentable pour vos développements.

8 - TDF TECH 2013 - www.pcsoft.fr

Présentation

TDF TECH 2013 - www.pcsoft.fr - 9

Page 6: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

WINDEVPrésentation rapide de WINDEV 

et de ses fonctionnalités

WINDEV permet de dévelop-per simplement tout type d’applications Windows et Linux dans les domaines de

la gestion, de l’industrie, du médical, etc.

PrésentationLes applications développées peuvent inclure l’accès à des bases de données.WINDEV propose un puissant moteur de base de données : HyperFileSQL.

Il est conseillé d’utiliser HyperFileSQL pour vos applications afin d’obtenir les meilleures performances dans vos traitements de fichiers. Une version HyperFileSQL Client/Serveur est aussi disponible.

L’environnement de développement intégré de WINDEV se compose de différents éditeurs :· Un éditeur de projet permettant de visualiser le tableau de bord du projet.· Un éditeur d’analyses permettant l’accès à tout type de bases de données (HyperFileSQL, HyperFileSQL Client/Serveur, xBase, MySQL**, AS/400*, Oracle*, SQL Server*, Access**, 

ODBC, OLE DB, ...).· Un éditeur UML permettant une modéli-sation objet de vos données et traitements.· Un éditeur d’IHM avec correcteur d’interface en temps réel.· Un éditeur de code évolué (avec assis-tants, vérification du code saisi, coloration syntaxique, aide contextuelle, …) incluant un puissant débogueur.· Un éditeur de requêtes pour les sélections d’enregistrements dans les fichiers.· Un éditeur d’états.· Un éditeur d’aide.· Un éditeur d’installation.· Un éditeur de dossier technique.* accès natif optionnel, ** accès natif inclus.

Les outilsDes outils facilitant le développement sont également fournis (WDMAP, WDSQL, ...) ainsi que de nombreux exemples et assistants réutilisables.

Des Centres de Contrôle permettent la gestion du cycle de vie de vos applications ainsi que

leur administration.

Une aide en ligne vous guide tout au long du développement de votre application. Cette aide inclut également une aide à la correction d’erreurs.

Les différents éditeurs seront utilisés, depuis la définition d’une analyse jusqu’à l’installation, en passant par toutes les phases du dévelop-pement (création des fenêtres, des états, des traitements...), sans oublier les sauvegardes.

Les bases de donnéesLe moteur HyperFileSQL sera utilisé pour les fichiers de données des applications. La base de données HyperFileSQL est disponible en mode Classic ou Client/Serveur et est libre-ment diffusable avec les applications WINDEV.

L’utilisation d’autres moteurs de bases de données est également possible sur le même principe.

10 - TDF TECH 2013 - www.pcsoft.fr TDF TECH 2013 - www.pcsoft.fr - 11

Page 7: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

WEBDEVPrésentation rapide de WEBDEV

et de ses fonctionnalités

WEBDEV est un AGL (Atelier de Génie Logiciel) orienté déve-loppement de sites Intranet et Internet.

WEBDEV permet de développer tout type de sites dynamiques incluant l’accès à des bases de données. Il permet aussi de développer des sites semi-dynamiques et statiques ou PHP.

Présentation de WEBDEVWEBDEV est composé de différents éditeurs :• Un éditeur de projet permettant de visualiser et d’agir sur le graphe du projet.• Un éditeur de pages.• Un éditeur d’analyses permettant l’accès à tout type de bases de données (HyperFileSQL, HyperFileSQL Client/Serveur, MySQL**, xBase, AS/400*, Oracle*, SQL Server*, Access**, OLE DB, ....).• Un éditeur de code évolué  (avec assis-tants, vérification du code saisi, coloration syntaxique, aide contextuelle, …) incluant un puissant débogueur.• Un éditeur de styles incluant police, couleur, 

position, etc.• Un éditeur de requêtes pour les sélections d’enregistrements dans les fichiers.• Un éditeur d’états.• Un éditeur de dossier technique reprenant intégralement toutes les informations tech-niques de votre projet.• Un éditeur d’installation.* accès natif optionnel, ** accès natif inclus

L’éditeur d’installation assure la mise en place des sites créés, ainsi que leur maintenance. Cet outil permet de réaliser une installation sur le serveur via FTP ou par média physique (CD, Zip, etc.).Des outils facilitant le développement sont également  fournis  (WDMAP, WDOUTIL, WDSQL, etc.) ainsi que de nombreux exemples et assistants réutilisables.

Les principaux éditeurs sont utilisés, depuis la définition d’une analyse jusqu’à l’installation, en passant par toutes les phases du dévelop-pement (création de pages, traitements, états, etc.), sans oublier les sauvegardes.

Les Concepts Internet

Les différents services de l’Internet

Le terme Internet regroupe plusieurs services d’utilisation différente :• FTP (File Transfer Protocol) est un service permettant de transférer des fichiers d’un ordinateur vers un autre à travers Internet.• SMTP (Simple Mail Transfer Protocol) permet d’envoyer des messages ou mails à un utilisa-teur défini. Chaque utilisateur doit disposer d’une adresse email qui lui sert de boîte aux lettres.• HTTP (HyperText Transfer Protocol) est un protocole de niveau application qui est utilisé pour le transfert de pages sur Internet.

Chacun de ces services nécessite un ges-tionnaire de services installé sur un serveur :• Le gestionnaire de services FTP gère l’héber-gement des fichiers, les droits d’utilisation des fichiers et la réponse aux demandes en provenance des autres postes.• Le gestionnaire de services SMTP prend en charge les demandes d’envoi de messages et

12 - TDF TECH 2013 - www.pcsoft.fr

le routage vers les serveurs POP (réception des messages) concernés.• Le gestionnaire Web / Http permet l’héber-gement des pages et répond aux demandes de consultation de la part des postes client.

Le Web en détailLes pages Web sont visualisées sur un poste par  l’intermédiaire  d’un navigateur Web (Internet Explorer, FireFox, Chrome, Safari, Opera, etc.).

Le navigateur interprète le contenu des fichiers au format HTML décrivant les pages. On parle de pages HTML.WEBDEV génère automati-quement le code HTML et Javascript.Il  est  possible  d’afficher directement une page dans un navigateur en tapant son URL dans la zone adresse du navigateur.

L’URL (Uniform Resource Locator) correspond au che-min d’accès de la page sur le serveur qui l’héberge, par exemple :http://www.monserveur.com/page3.htm

Si l’URL ne correspond pas à une adresse valide, une erreur de connexion est retournée dans l’écran du navigateur.

Si l’URL est valide, la page demandée s’affiche dans le navigateur. L’utilisateur peut alors déclencher une action en cliquant sur un lien ou un bouton. La requête correspondante est alors envoyée au serveur qui l’analyse.

Le lien permet de lancer le chargement d’une autre page ou bien de lancer une application Web.

Site statique, semi-dynamique ou dynamique ?• Le  site  statique est  composé de pages conçues à l’avance de manière définitive. Dans ce cas, le contenu des pages n’évoluera pas dynamiquement en fonction d’un choix de l’utilisateur.• Un site semi-dynamique est un site statique composé de pages conçues à l’avance mais enrichies par une base de données. Dans ce cas, le contenu des pages n’évoluera pas dynamiquement en fonction d’un choix de l’utilisateur. L’un des meilleurs exemples est un catalogue de pièces détachées.

• Un site dynamique est constitué de pages enrichies de données provenant d’une base de données. Il est nécessaire d’exécuter des traitements d’accès aux données sur le serveur permettant de constituer la page.

WEBDEV permet de développer des sites dynamiques composés de pages, de traite-ments serveur (accès aux bases de données, calculs, etc.) et de traitements exécutés par le navigateur (contrôles, traitements répé-titifs, etc.).WEBDEV permet aussi de développer des sites statiques et semi-dynamiques.

Fonctionnement d’un site WEBDEVUn site WEBDEV dynamique, hébergé sur un serveur, peut être exécuté en appelant une URL particulière depuis un navigateur, par exemple :• pour un site WEBDEV dynamique «Intranet» : “http://www.monserveur.com/monappli”.• pour  un  site  WEBDEV  dynamique «Internet» AWP : “http://www.monserveur.com/mapage.awp”.• pour  un  site  WEBDEV  dynamique «Internet» PHP : “http://www.monserveur.com/mapage.php”.

Pour gérer la partie dynamique des sites, WEBDEV utilise un serveur d’applications. Le serveur d’application WEBDEV est un service (ou daemon sous Linux) qui construit dyna-miquement les pages du site et les envoie au navigateur par l’intermédiaire du serveur Web.

Principe de programmation WEBDEVLe débit entre le serveur Internet et le poste client est plus lent qu’avec un réseau local classique. Les échanges de données entre le poste client et le serveur doivent donc être réduits pour que le site puisse s’exécuter sans ralentissement. WEBDEV permet de différen-cier les traitements exécutés sur le serveur et les traitements exécutés sur le poste client.

1. Les traitements sur le serveurLes traitements exécutés sur le serveur sont les traitements principaux de l’appli-

cation. Ils concernent la ges-tion de la base de données (HyperFileSQL et HyperFileSQL Client/Serveur, xBase, AS/400, Oracle, SQL Server, Access, OLE DB, ...) et les traitements de calcul.Ces traitements sont écrits en WLangage.

2. Les traitements sur le poste clientLes traitements exécutés sur le poste client sont les traite-ments de contrôle de saisie, de vérification qui ne néces-sitent pas d’accéder au ser-veur. Ces traitements utilisent uniquement les informations contenues dans la page. Ces traitements peuvent être écrits en Javascript ou WLangage. 

Dans ce dernier cas, WEBDEV se charge de convertir automatiquement le code WLangage en Javascript pour qu’il puisse être exécuté par le navigateur.

3. Administrateur WEBDEVL’administrateur WEBDEV est un exécutable installé sur le serveur.L’administrateur permet de configurer le nombre de connexions autorisées en même temps pour le serveur, par site, par utilisateur. Il permet aussi de fixer le temps maximum d’exécution d’une requête et le temps limite pour la déconnexion des utilisateurs inactifs.L’administrateur peut à tout moment afficher la liste des utilisateurs connectés au site.

TDF TECH 2013 - www.pcsoft.fr - 13

Page 8: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

WINDEV MOBILEPrésentation rapide de WINDEV Mobile

et de ses fonctionnalités

WINDEV Mobile  permet  de développer simplement tout type d’applications desti-nées à être utilisées sur un

Smartphone, un téléphone ou une tablette Android, un téléphone Windows Phone, un iPhone ou un iPad et la plupart des terminaux mobiles (Pocket PC, Symbol, Psion, ...).

PrésentationLes applications développées peuvent accéder à des bases de données.WINDEV Mobile  inclut un puissant moteur de base de données : HyperFileSQL Mobile.

Il est conseillé d’utiliser HyperFileSQL pour vos applications afin d’obtenir les meilleures performances dans vos traitements de fichiers. Une version HyperFileSQL Client/Serveur est aussi disponible.

WINDEV Mobile permet également d’accé-der aux bases de données SQLite pour  les applications Android.

EnvironnementL’environnement de développement intégré de WINDEV Mobile se compose de différents éditeurs :• Un éditeur de projet permettant de visualiser et d’agir sur le graphe du projet.• Un éditeur d’analyses permettant l’accès à tout type de bases de données (HyperFileSQL, HyperFileSQL Client/Serveur, ...).• Un éditeur UML permettant une modéli-sation objet de vos données et traitements.• Un éditeur d’IHM avec correcteur d’interface en temps réel.• Un éditeur de code évolué  (avec assis-tants, vérification du code saisi, coloration syntaxique, aide contextuelle) incluant un puissant débogueur• Un éditeur de requêtes pour les sélections d’enregistrements dans les fichiers.• Un éditeur d’états.• Un éditeur d’installation.• Un éditeur de dossier technique reprenant intégralement toutes les informations tech-niques de votre projet.

Des outils facilitant le développement sont  également  fournis  (WDREGISTRE, WDCAPTURE, WDSYNCHRO, ...) ainsi que de nombreux exemples et assistants réutilisables.

Des Centres de Contrôle permettent la gestion du cycle de vie de vos applications ainsi que leur administration.

Une aide en ligne vous guide tout au long du développement de votre application. Cette aide inclut également une aide à la correction d’erreurs. Une version Internet et actualisée de l’aide en ligne est disponible à l’adresse «http://doc.pcsoft.fr».

Le moteur HyperFileSQL Mobile sera utilisé pour les fichiers de données de l’application.

L’utilisation d’autres moteurs de bases de données est également possible sur le même principe.

14 - TDF TECH 2013 - www.pcsoft.fr TDF TECH 2013 - www.pcsoft.fr - 15

Page 9: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

16 - TDF TECH 2013 - www.pcsoft.fr

Support de cours

TDF TECH 2013 - www.pcsoft.fr - 17

Page 10: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple “WSA Commandes TDF18” (présent sur le DVD). Ce projet est disponible en deux versions (WINDEV et WINDEV Mobile).

Création du projetPour créer un projet “Windows 8 (Modern UI)”, il suffit de choisir “Application Windows Store Apps” dans l’assistant de création de projet de WINDEV ou WINDEV Mobile.

La création d’applications de ce type nécessite la présence d’un SDK spécifique.Pour plus de détails sur la création de projet  “Windows  Store  apps”,  consul-tez l’aide en ligne : “http://doc.pcsoft.fr/fr-FR/?1000020286”.

Pour faciliter la mise en place de l’IHM de l’ap-plication, un gabarit spécialement adapté à ce type d’applications est livré avec WINDEV 

et WINDEV Mobile : le gabarit “Win 8 Blue”.

Ce gabarit est automatiquement sélectionné par défaut à la création d’un projet Windows Store apps.

Particularités dans la conception des fenêtresMicrosoft a publié un guide qui répertorie les bonnes pratiques en matière de conception d’IHM pour Windows 8. Le document complet est disponible à cette adresse :“http://msdn.microsoft.com/en-us/library/windows/apps/hh465424.aspx”.

Voici quelques-uns des points importants (utilisés pour créer l’exemple) pour permettre à vos IHM d’adopter un look “Windows 8”.

DimensionsLes fenêtres doivent être développées avec une résolution de 1024x768. C’est en effet la résolution minimale des périphériques. Pensez

à ancrer les champs pour les résolutions supérieures.

TitreLe libellé titre doit utiliser une police précise : “SegoeUI Stylistic Set 20 light”.

La ligne de base du titre de la fenêtre se situe à 100 pixels du haut de la fenêtre.

MargesLa fenêtre doit présenter différentes marges de positionnement :• le bord gauche du titre est à 120 pixels du bord gauche de la fenêtre.• le contenu de la fenêtre commence à 140 pixels du haut et à 120 pixels de la gauche.• la marge basse varie entre 50 et 130 pixels.• il n’y a pas de marge droite.• la grille d’alignement des champs a un pas de 5 pixels. Pour modifier la grille d’aligne-ment de l’éditeur de fenêtres, sous le volet “Accueil”, dans le groupe “Environnement”,

La création d’applications pour le “mode tuile” de Windows 8 (Modern UI) demande certaines adaptations pour respecter  l’IHM et  le comportement par défaut. Voici un guide des bonnes pratiques à suivre.

WINDOWS 8 :ÉVITEZ LA TUILE AVEC WINDEV

18 - TDF TECH 2013 - www.pcsoft.fr

déroulez “Options” et sélectionnez “Options de l’éditeur de fenêtres...”.Attention :• les options de grille sont des options de l’éditeur, communes à tous les projets.• la modification du pas est prise en compte uniquement à l’ouverture de l’éditeur de fenêtres. Le pas ne sera donc pas modifié pour les fenêtres déjà ouvertes.

Espacement des champsSelon la composition des champs de la fenêtre, différents espacements sont à respecter :• si  le contenu est constitué de colonnes, celles-ci sont séparées de 40 pixels et l’écart entre l’image et le texte de la colonne est de 10 pixels.• si le contenu est constitué de lignes, celles-ci sont séparées de 10 ou 20 pixels.• si la fenêtre contient plusieurs groupes de champs, ceux-ci sont espacés de 80 pixels.

Boutons d’actionLes actions sur une fenêtre sont regroupées en bas dans une zone de menu. Cette zone occupe toute la largeur de la fenêtre.

Pour créer cette zone de menu, vous pouvez utiliser un libellé de style “LIB_Fond_Bas”.

Il suffit de l’ancrer “en largeur et en bas”. Les boutons sont alors posés sur ce libellé.

Le texte de ces boutons utilise une police “Segoe UI Light 5 Blanc”.

MenuLes applications WSA n’ont généralement pas de fenêtre de menu, sauf si cela est réellement nécessaire.

Dans la majorité des cas, l’application présente immédiatement des données utilisables.Dans notre exemple, l’application s’ouvre immédiatement sur la liste des clients.

Modèle de fenêtresPour faciliter la création de fenêtres en respec-tant les bonnes pratiques énoncées ci-dessus, l’exemple “WSA Commandes TDF18” propose un modèle de fenêtres “FENMOD_Windows8” qui contient :• les règles de positionnement,• le titre de la fenêtre, dans la police requise,• un bandeau en bas pour les boutons d’ac-tions.

Vous pouvez facilement réutiliser ce modèle dans vos différentes applications Windows Store apps.

Spécificités de développementEn plus des règles d’ergonomie données par Microsoft, il existe certaines spécificités dans le développement avec WINDEV et WINDEV Mobile :• la fonction Ouvre n’est pas disponible. Il est nécessaire d’utiliser la fonction OuvreFille.Pour traiter la valeur renvoyée par une fenêtre fille, utilisez le traitement de fenêtre “Fermeture d’une fenêtre fille”.• les  fonctions Erreur ou Info ne sont pas disponibles. Pour afficher des informations à l’utilisateur, vous pouvez utiliser le système de toast (fonction WLangage ToastAffiche).

La fonction WLangage TuileAjoute permet de modifier dynamiquement le contenu de la “tuile” d’une application.MaTuileLarge est une TuileMaTuileLarge.Type = tuileLargeMaTuileLarge.Modèle = ... tuileModeleTexteMaTuileLarge.Titre = “WSA Commandes”MaTuileLarge.Texte =... “Cdes : ”+HNbEnr(Commande)MaTuileLarge.RetourALaLigne = FauxTuileAjoute(MaTuileLarge)

Zone de menu (Style “LIB_Fond_Bas”)

Titre (SegoeUI Stylistic Set 20 light)

Boutons au style du gabarit “Win 8 Blue”

Présentation immédiate de données utilisables (pas de menu)

Marges spécifiques

Tuile personnalisable

TDF TECH 2013 - www.pcsoft.fr - 19

Page 11: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

1. Certification localeAvant tout déploiement, il est nécessaire de valider l’application sur le poste de déve-loppement avec le “Kit de certification des applications Windows”.

Ce  kit  peut  être  téléchargé  à  l’adresse suivante : “http://go.microsof t .com/fwlink/?LinkID=263703”.

La certification locale de l’application se déroule en plusieurs étapes :1. Dans WINDEV ou WINDEV Mobile, géné-rez l’application et installez-la en locale sur la machine.2. Depuis l’écran de démarrage, lancez l’outil “Windows App Cert Kit”.3. Dans l’assistant, choisissez l’option “Valider une application Windows Store”.

4. Choisissez ensuite votre application.5. Cliquez sur le bouton “Suivant” et attendez la fin du test. Il est recommandé de ne pas utiliser la machine pendant la validation.6. À la fin de l’assistant, enregistrez le compte-rendu dans un fichier.7. Si l’assistant affiche “REUSSITE”, vous pouvez soumettre l’application au Store.Dans le cas contraire, le rapport vous indiquera les problèmes rencontrés.

2. Critères de certificationLes critères utilisés pour certifier les appli-cations sont présentés ici : “http://msdn.microsoft.com/fr-fr/library/windows/apps/hh694083.aspx”.

N’hésitez pas à vous reporter à cette page 

pendant le développement de votre appli-cation ou si l’assistant de certification locale échoue.

3. Création d’un compte développeur MicrosoftPour soumettre une application, vous devez disposer d’un compte de développeur Microsoft.

Il existe deux types de comptes,  individuel ou entreprise :• les développeurs “individuels” sont limités à la proposition d’applications Windows Store Apps.• les développeurs “entreprises” peuvent sou-mettre des applications Windows Store Apps mais également des applications de bureau.

Le site de Microsoft détaille les différences entre les deux types de compte.

Pour créer un compte développeur :• allez  sur  le  Centre  de  développement Windows Store Apps  (http://go.microsoft.com/fwlink/p/?LinkID=245786).• connectez-vous avec votre compte Microsoft (compte Live ou Hotmail). Si vous ne disposez pas de compte Microsoft, créez-en un.

Vous pouvez alors suivre les étapes de l’assis-tant d’inscription :• choisissez le type de compte : c’est ici que vous devez décider de créer un compte indi-viduel ou d’entreprise.Attention : le type de compte choisi est définitif.• renseignez les paramètres du compte. En plus de vos informations personnelles (nom, prénom, téléphone, ...), vous devrez choisir le nom d’affichage de l’éditeur. C’est le nom de l’éditeur qui sera affiché dans le store pour vos applications.Bien entendu, vous devez spécifier un nom pour lequel vous avez des droits.• acceptez le contrat. L’assistant vous affiche 

Votre application Windows 8 (Modern UI) est prête et fonctionnelle.Vous pouvez maintenant la publier sur le Windows Store de Microsoft pour la commercialiser ou en faire profiter la communauté.Déployons ensemble une application.

APPLICATION WINDOWS 8 : DÉPLOYER SUR LE WINDOWS STORE

20 - TDF TECH 2013 - www.pcsoft.fr

le prix de l’inscription (37 €, hors taxes et frais supplémentaires, au moment de la rédaction de cet article).• confirmez l’achat et payez en ligne.

Voilà, votre compte développeur Microsoft est créé.

Vous pouvez à présent accéder au tableau de bord pour soumettre une application.

Important : si vous souhaitez soumettre des applications payantes, il est nécessaire de configurer un compte de dividende (compte sur lequel sera versé l’argent de vos ventes).

4. Soumission pour un déploiement sur le StoreDepuis le tableau de bord de vos applications, vous pouvez alors soumettre une application.Le tableau de bord de vos applications est disponible à cette adresse : ”https://appdev.microsoft.com/StorePortals/fr-FR/Home/Index”.

Pour soumettre une application au Store, cliquez sur le lien “Soumettre une application”.La soumission d’une application s’effectue en 7 étapes  [Fig. 1] (toutes ne seront pas détaillées ici).

Le nom de votre application, telle qu’elle apparaîtra dans le store, est un nom unique.Ce nom devra être utilisé dans l’assistant de génération de WINDEV.

Les caractéristiques de l’application à ren-seigner sont :• le prix de l’application,• les pays dans  lesquels  l’application sera disponible,• la date de disponibilité minimale. Même si elle est certifiée, l’application ne sera pas proposée avant cette date.• la catégorie dans laquelle l’application sera répertoriée,• la configuration matérielle nécessaire  (le cas échéant).

Vous devrez ensuite indiquer la classe d’âge

correspondant à votre application, de “Jeunes enfants (3+)” à “Adultes (18+)”.

Si votre application utilise le chiffrement, vous devrez l’indiquer.Attention : une requête HTTPS est consi-dérée comme du chiffrement.

Vous pouvez alors générer  les packages pour le Windows Store avec WINDEV. Dans l’assistant de génération, choisissez l’option “Générer l’application pour Windows Store”.

Vous devez saisir votre nom complet d’éditeur ainsi que votre identifiant. Ces informations sont disponibles dans le tableau de bord de votre compte développeur Microsoft, dans la rubrique “Profil > Compte” :• le nom d’éditeur est celui que vous avez choisi lors de la création du compte.• votre identifiant est un GUID.Saisissez également le nom de l’application que vous avez réservé.

WINDEV vous propose alors de créer votre certificat de développement pour cette appli-cation : cliquez sur “Créer le certificat”.

Dans la fenêtre “Create Private Key”, vous devez choisir un mot de passe pour protéger la clé privée de votre certificat. Ce mot de passe doit être ressaisi dans la fenêtre “Enter Private Key”.

À la fin de la création du certificat, installez

celui-ci sur votre poste en suivant les instruc-tions de l’assistant.

WINDEV génère deux fichiers :• <NomAppli>_ARM.appxupload• <NomAppli>_X86.appxuploadCes deux fichiers doivent être uploadés sur le site Web.

Une fois les fichiers uploadés, il est néces-saire de saisir différentes informations sur l’application :• sa description,• ses fonctionnalités,• des captures d’écran (au moins une),• des mots-clés pour faciliter la recherche de l’application dans le Store,• des informations de copyright et de licence.

Attention : certaines informations sont obligatoires.

Vous pouvez également ajouter un bref texte pour guider les testeurs de l’application lors de la phase de validation manuelle.Ces informations peuvent contenir, par exemple, un nom d’utilisateur et un mot de passe de test.

Pour finaliser le déploiement, cliquez sur le bouton “Soumettre pour certification”.Le compte-rendu de certification vous sera envoyé par email.

Soumettre une application WINDEV sur le store se fait simplement, en 7 étapes clé(chaque étape indique le temps nécessaire à sa réalisation)

Fig. 1

TDF TECH 2013 - www.pcsoft.fr - 21

Page 12: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

SÉCURISEZ VOS APPLICATIONS AVEC LE GROUPWARE UTILISATEURPour sécuriser  l’accès à vos applications, WINDEV propose en standard le groupware utilisateur.Vous pouvez ainsi mettre en place des droits d’accès sur les fenêtres, les champs et les états de vos applications.Cet article détaille les différentes options du groupware utilisateur.

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple “WD GPU TDF18” (présent sur  le DVD).

Mise en place du groupware utilisateurPour mettre en place le groupware utilisateur, un clic suffit : sous le volet “Projet”, dans le groupe “Projet”, cliquez sur “Groupware Utilisateur”.

IntégrationDans la fenêtre de paramétrage du groupware, onglet “Intégration”, il est possible d’indiquer que l’application utilise le groupware utili-sateur en mode automatique ou en mode personnalisé :• en mode automatique, WINDEV se charge de tout, il suffit de configurer les accès des utilisateurs.• en mode personnalisé, l’IHM et le fonction-nement du groupware utilisateur peuvent être entièrement personnalisés (voir page 25).

En mode automatique, les fenêtres du groupware utilisateur peuvent utiliser auto-matiquement  le gabarit de  l’application.  Il suffit de cocher l’option “Appliquer le gabarit du projet sur les fenêtres lors de l’exécution”.Pour conserver un aspect identique entre toutes les fenêtres de l’application, nous vous conseillons de toujours cocher cette option si vous utilisez le groupware utilisateur en mode automatique.

Rappel : le gabarit d’une application permet de définir le style des fenêtres et des champs pour assurer une cohérence dans l’IHM.WINDEV  est  livré  en  standard  avec  des dizaines de gabarits et la LST (la “Lettre du Support Technique”) en propose deux nou-

veaux à chaque numéro, soit 8 par an.Si vous souhaitez mettre en place le groupware avec les options par défaut, il suffit alors de valider la fenêtre de description : le groupware utilisateur est en place !

Vous pouvez également modifier les diffé-rentes options du groupware utilisateur, en parcourant les différents onglets de la fenêtre de configuration.

ExécutionDans l‘onglet “Exécution”, il est possible de choisir le type de lancement du groupware utilisateur :• le lancement automatique, qui va afficher la fenêtre de connexion au groupware dès le lancement de l’application.• le  lancement manuel, qui est utile s’il est nécessaire d’exécuter du code avant le lancement du groupware utilisateur. Le groupware pourra alors être lancé manuel-lement via la fonction WLangage gpwOuvre.

Notre astuce : pour faciliter les tests et débo-gages de l’application, l’onglet “Exécution” propose de saisir un login (et son mot de passe) à utiliser en mode “Go”. De cette façon, la connexion au groupware est automati-quement effectuée en mode test (et vous ne vous énervez pas à saisir les identifiants à chaque test).

Localisation des fichiersLa base de données du groupware est, bien entendu, en HyperFileSQL.Vous pouvez choisir de l’utiliser en mode Classic ou en mode Client/Serveur.

Il suffit, dans l’onglet “Fichiers” de la fenêtre de paramétrage du groupware, de :• choisir le mode souhaité,• saisir  les paramètres (répertoire ou  infor-mations de connexions).Important : les informations de localisation

saisies s’appliquent uniquement en mode “Lancement automatique”. Si vous avez choisi d’utiliser le mode “Lancement manuel” du groupware, utilisez les fonctions WLangage gpwOuvre et gpwOuvreConnexion.

L’onglet “Fichiers” permet également de :• modifier  le mot de passe des fichiers du groupware utilisateur (par défaut, ce mot de passe est “PCSGPW2001”),• activer un historique de connexions.

Type d’identification

Pour éviter de dupliquer les logins et mots de passe, le groupware utilisateur peut se baser automatiquement sur des identifications existantes : LDAP ou Windows.

Dans l’onglet “Identification”, il suffit de sélec-tionner le type d’identification souhaité et de fournir les paramètres de l’annuaire dans le cas d’une identification par LDAP.

Si plusieurs applications utilisent le groupware utilisateur, il est bien entendu nécessaire de s’identifier pour chacune d’elles. L’onglet “Identification”  propose  une  option  très utile pour ce cas de figure : “Authentification unique (SSO)”.

Avec cette option, un utilisateur s’identifie une seule fois (dans la première application lancée) ! Les autres applications utilisant le groupware utilisateur se connecteront auto-matiquement avec l’utilisateur indiqué.

Si vous utilisez une authentification Windows avec l’option “SSO”, vos utilisateurs n’ont aucun login à saisir : la connexion est auto-matique.Dans ce cas, pour paramétrer le groupware, il est nécessaire que la session Windows ait été ouverte avec un utilisateur qui est superviseur.

22 - TDF TECH 2013 - www.pcsoft.fr

Configuration des utilisateurs et accèsLorsque le groupware utilisateur est para-métré, la configuration des utilisateurs et des accès est effectuée en exécution, en se connectant avec un compte “superviseur”.

Lors du premier lancement, il est nécessaire d’utiliser  l’utilisateur “SUPERVISEUR” et de choisir un mot de passe pour cet utilisateur.

Après identification, un utilisateur qui est superviseur du groupware aura le choix entre lancer l’application et configurer le groupware.

Groupes et utilisateursLe groupware utilisateur permet de définir des groupes et des utilisateurs, selon des règles simples :• un utilisateur peut appartenir à plusieurs groupes (ou à aucun).• un  groupe  peut  avoir  plusieurs  sous-groupes,• un groupe ne peut avoir qu’un seul groupe “parent”.

Pour affecter un utilisateur à un groupe, il suffit de déplacer la ligne de l’utilisateur (table de gauche) sur le groupe souhaité (arbre de droite), par simple “drag and drop” [Fig. 1].Et pour positionner un groupe comme sous-groupe d’un autre, il suffit de le déplacer sur le groupe “parent”, directement depuis l’arbre, par “drag and drop” encore une fois.

Cette hiérarchie “groupes / utilisateurs” per-met de définir un héritage dans les droits d’accès.

Par exemple, dans notre configuration :

• le groupe “Secrétaire” héritera des droits d’accès du groupe “Commercial”,• l’utilisatrice “Loreleï” bénéficiera des droits d’accès du groupe “Secrétaire”.

Gestion des droitsLa définition des droits peut être effectuée sur les groupes et les utilisateurs.

Notre astuce : pour faciliter et accélérer la définition des droits d’accès, commencez toujours par définir les droits des groupes

“parents”, puis ceux des sous-groupes et enfin ceux des utilisateurs.

La définition des droits commence par auto-riser ou interdire l’accès aux fenêtres et états de l’application [Fig. 2] : il suffit de cliquer sur les boutons “Autoriser  l’accès” et “Interdire l’accès”.

Important : si vous interdisez l’accès à une fenêtre, pensez à bloquer tous les moyens d’accès à cette fenêtre (en grisant les boutons, options de menu, ... adéquats). Si un utilisateur a la possibilité d’ouvrir une fenêtre à laquelle il n’a pas accès, une erreur fatale sera affichée.

Un pictogramme (affiché en haut à droite de

chaque fenêtre et état) indique le droit d’accès de la fenêtre / de l’état en cours :•  : accès autorisé.•  : accès interdit.•  : accès autorisé par héritage.•  : accès interdit par héritage.

Attention : si l’accès à un élément est expli-citement autorisé (option “Autoriser l’accès”) pour un groupe, il ne peut pas être interdit pour un sous-groupe ou un utilisateur du groupe. Il est par contre possible d’auto-riser un élément qui est interdit dans le groupe “parent”.

Si une fenêtre ou un état est autorisé pour

Fig. 2

Fig. 3

Pour chaque utilisateur et groupe, vous pouvez autoriser ou interdire l’accès à une fenêtre ou à un état ...

... et pour chaque fenêtre et état, vous pouvez rendre inaccessible ou invisible n’importe quel champ ou groupe de champs.

Fig. 1

L’affectation des groupes et utilisateurs se fait simplement par “Drag and Drop”.

TDF TECH 2013 - www.pcsoft.fr - 23

Page 13: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

le groupe ou l’utilisateur, il est alors possible de définir l’état de chaque champ, bouton, menu, option de menu, etc. [Fig. 3].

L’état de l’élément peut être celui défini par défaut dans l’IHM ou un état particulier :• inactif,• grisé• invisible.

Bien entendu, l’état d’un champ défini dans un groupe est automatiquement reporté aux sous-groupes et aux utilisateurs du groupe.

Important : si un utilisateur appartient à deux groupes ayant chacun défini un état différent pour un même champ, c’est toujours l’état le moins restrictif qui est appliqué.L’ordre des états, du moins restrictif au plus restrictif, est :• “Défaut” (valeur fixée dans l’IHM ou dans le groupe parent),• “Inactif”,• “Grisé”,• “Invisible”.Par exemple, un champ “Grisé”  (dans un groupe 1) et “Invisible” (dans un groupe 2) sera simplement “Grisé”.

Récupération des données au format 17Si vous avez déjà intégré le groupware uti-lisateur dans un projet avant les versions 18, deux possibilités s’offrent à vous :• soit vous souhaitez conserver le groupware tel qu’il est.Il vous suffit alors de cocher l’option “Mode compatible  17 et  inférieur” dans  l’onglet “Intégration” de la description du groupware.Mais vous ne bénéficierez pas des nouvelles fonctionnalités du groupware présentées dans les pages précédentes.• soit vous souhaitez bénéficier des fonction-nalités du nouveau groupware des versions 18, sans perdre vos données existantes.Il vous suffit alors de passer par la récupération des données.

Pour importer des données existantes, il est nécessaire de se connecter avec un utilisateur qui est superviseur (l’utilisateur “SUPERVISEUR” par exemple).

Dans l’onglet “Récupération de données” de la fenêtre principale du groupware, il est alors possible de sélectionner le type de la base

de données qui contient les informations du groupware à importer. Il suffit d’indiquer :• le mot de passe du groupware à importer. Si vous ne l’avez pas modifié, le mot de passe est “PCSGPW2001”.• les  informations  de  localisation  des fichiers (les répertoires pour des fichiers en HyperFileSQL Classic ou  les paramètres de connexions au serveur dans les autres cas).

Notre conseilPassez au nouveau groupware utilisa-teur sans hésiter !Attention toutefois, dans certains cas, il est nécessaire de conserver le groupware en mode compatible :• si  l’application partage  les données du groupware avec une autre application qui utilise le groupware version 17 et inférieure,• si  l’application partage  les données du groupware avec un site WEBDEV.

SÉCURISEZ VOS APPLICATIONS (SUITE)

Mise en place d’un verrouillage automatiqueMettre en place un système de mot de passe sur une application : c’est bien !

Mais si l’utilisateur est amené à quitter son poste régulièrement, il peut être judicieux de mettre en place un système de verrouillage automa-tique de l’application.

WINDEV propose cette fonctionnalité, en standard.

Le verrouillage dans l’application peut être mis en place :• soit de façon automatique, après un certain temps d’inactivité,• soit par programmation (lors d’un clic sur un bouton par exemple).

Mise en place automatiquePour mettre en place le verrouillage de façon automatique, il suffit, dans l’onglet “Avancé” de la description du projet, de cocher la case “Verrouiller l’application si elle reste inactive” et de spécifier au bout de quelle durée d’inactivité l’application se verrouillera.

Mise en place par programmationPour activer le verrouillage par programmation, il suffit d’utiliser, dans le code d’initialisation du projet, la fonction VerrouAppliDélai en lui donnant en paramètre la durée d’inactivité avant verrouillage.

Pour verrouiller immédiatement l’application, lors d’un clic de l’utilisateur par exemple, vous pouvez utiliser la fonction VerrouAppliBloque.

// L’application sera automatiquement verrouillée// après 10 minutes d’inactivitéVerrouAppliDélai(10)...// Bloque immédiatement l’applicationVerrouAppliBloque()

24 - TDF TECH 2013 - www.pcsoft.fr

PERSONNALISEZ LE GROUPWARE : ANALYSE, FENÊTRES, CODE, ...Le groupware en mode automatique, c’est bien. Mais si vous souhaitez paramétrer  la gestion des utilisateurs et droits plus précisément, WINDEV vous offre la possibilité de tout personnaliser (analyse, fenêtres, code, ...) !

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple “WD GPU TDF18” (présent sur  le DVD).

Mise en placePour mettre en place le groupware utilisateur en mode “personnalisé”, il suffit de choisir ce mode d’intégration dans la fenêtre de description du groupware utilisateur.

Lorsqu’un projet utilise le groupware utilisa-teur en mode personnalisé, un composant interne “WDGPU” est automatiquement inté-gré au projet.

Ce composant interne contient tous les élé-ments utilisés par le groupware :• la fenêtre d’identification (“FEN_GPU_Login”),• la fenêtre de configuration (“FEN_GPU_Prin-cipale”),• l’analyse du groupware,• une collection de procédures proposant 

plusieurs fonctions utiles,• une classe de gestion de contexte.

Tous ces éléments peuvent être modifiés : vous pouvez parfaitement ajouter une rubrique dans le fichier “GPU_Utilisateur” ou ajouter des contrôles sur certains champs par exemple.

Dans le projet “WD GPU TDF18”, la personna-lisation du groupware a permis de mémoriser l’email de chaque utilisateur :• une rubrique “Email” a été ajoutée au fichier “GPU_Utilisateur”,• un champ de saisie “Email” a été ajouté dans la fiche de saisie d’un utilisateur (plan 2 de la fenêtre “FEN_GPU_Principale”),• un bouton “Email” a également été ajouté sur le plan de gestion des utilisateurs (plan 1 de la fenêtre “FEN_GPU_Principale”). Il est ainsi possible d’envoyer un email à un ou plusieurs utilisateurs du groupware (rappel du mot de passe, etc.).

ÉvolutionsÀ partir du moment où le composant interne “WDGPU” est intégré dans un projet, ce projet ne bénéficiera plus des évolutions appor-tées au groupware utilisateur.

Nous vous conseillons donc de passer en mode “groupware personnalisé” avec pré-caution et uniquement dans le cas où vous souhaitez y apporter des modifications impor-tantes. Dans le cas contraire, privilégiez tou-jours le groupware en mode automatique.

Si vous intégrez le composant interne “WDGPU”,  il existe  toutefois une solution pour récupérer les diverses évolutions du groupware utilisateur : effectuez une compa-

raison de projet entre votre projet qui inclut vos modifications et le même projet qui inclut un composant interne sans modification.

Pour cela :1. Faites une copie de votre projet.2. Dans ce projet “copie”, supprimez le com-posant interne “WDGPU”.3. Demandez ensuite à réintégrer ce compo-sant en passant par la fenêtre de paramétrage du groupware (il suffit d’ouvrir et de revalider la fenêtre pour forcer l’intégration du com-posant interne).4. Lancez la comparaison de projets : sous le volet “Projet”, dans le groupe “Autres actions”, déroulez “Comparer” et sélection-nez “Comparer deux projets...”.

Demandez alors à comparer le projet courant avec le projet “copie”.5. Dans la fenêtre de “Gestion/Résolution des différences” [Fig. 1], vous avez accès à toutes les différences entre les éléments de votre composant interne modifié et les éléments du composant interne “standard”.

Vous pouvez alors facilement récupérer les évolutions du composant interne “standard” qui vous intéressent.

Fig. 1

TDF TECH 2013 - www.pcsoft.fr - 25

Page 14: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

En version 18, la traduction des libellés et messages peut maintenant être réalisée en utilisant le service “Google Traduction”. Vous pouvez alors rapi-

dement traduire votre projet.

Important : le service “Google Traduction” est un service payant.

Avant d’utiliser une fonctionnalité reliée à des services Google, nous vous conseillons vivement de vous reporter à la licence d’uti-lisation de ce service. Certaines restrictions peuvent s’appliquer. Le contenu des licences peut varier avec le temps.

Les liens et termes indiqués dans cet article peuvent être modifiés depuis la rédaction de cet article.

Notre conseil :Pour gérer la traduction de vos applications professionnelles, privilégiez les outils WDMsg et WDTrad : vos traductions sont plus homogènes et tiennent comptent du contexte de l’application.

Activation du service “Google Traduction”L’utilisation du service de traduction de Google nécessite de posséder un compte Google.

Une fois connecté avec votre compte Google, rendez-vous sur la page de gestion des API Google :  “https://code.google.com/apis/console/”.

Accédez à la page des “Services” et cliquez sur le bouton “OFF” du service “Translate API”. Le bouton affiche alors “ON”, indiquant l’activation du service.

Le service de traduction étant un service payant, il est nécessaire de renseigner des informations de facturation valides.Pour cela, ouvrez la page “Billing” et rensei-gnez le moyen de paiement de votre choix.Remarque : pensez à valider le lien dans l’email de confirmation qui vous sera envoyé.

Dans la page “API Access”, vous pouvez main-tenant récupérer la clé qui permet d’utiliser les services activés (dans notre cas, le service de traduction).

Retrouvez plus de détails sur la page d’aide associée : “http://doc.pcsoft.fr/?2036003”.

Activation dans WINDEVBien entendu, “Google traduction” étant un service payant auprès de Google et nécessitant une clé, l’option de traduction correspondante n’est pas activée par défaut dans WINDEV.

Pour activer cette option, il suffit d’ouvrir les options générales de WINDEV : sous le volet “Accueil”, dans le groupe “Environnement”, déroulez “Options” et sélectionnez “Options générales de WinDev...”.Dans l’onglet “Traductions”, sélectionnez le moteur de traduction “Google Traduction” et renseignez la clé API obtenue précédemment.

Et ... c’est tout ! Vous allez pouvoir bénéficier du service de traduction directement dans votre AGL préféré.

Traduction dans l’éditeurLorsque  le moteur de  traduction “Google traduction” est actif, un bouton est dis-ponible dans les différents éditeurs (fenêtres, états, ...) pour tous les textes qui peuvent être traduits : libellé d’un champ, contenu

initial, bulle d’aide, titre de fenêtres, ressources multilingues, etc.Ce bouton est disponible :• dans le bandeau qui affiche le texte pour une langue.

Lors du clic sur le bouton, un menu contextuel permet de sélectionner la langue d’origine à utiliser pour la traduction. Bien entendu, seules les langues dont le libellé est renseigné sont proposées.

• en bas de  la  fenêtre de description de l’élément (fenêtre, champ, ressources mul-tilingues,...).

Lors du clic sur le bouton, une fenêtre de traduction spécifique est ouverte.

Cette fenêtre permet de demander rapide-ment des traductions à partir d’une langue de référence.

Il  suffit de choisir  la  langue de  référence (champ combo en haut) puis de cliquer sur le lien “Demander la traduction” pour les langues souhaitées.

Remarque : si une erreur survient lors de la demande de traduction au service de Google (service non activé, quota dépassé, etc.), un message sous forme de toast est affiché indiquant l’erreur renvoyée par le service de traduction de Google.

Dans une application multilingue, la traduction des messages peut être effectuée via l’outil WDMSG ou directement dans l’éditeur.À partir des versions 18, il est possible d’utiliser le service de traduction “Google Traduction” pour traduire les éléments directement dans l’éditeur. En quelques clics, votre application est multilingue !

API GOOGLE TRADUCTION : ACTIVATION ET UTILISATION

26 - TDF TECH 2013 - www.pcsoft.fr

Pour traduire le libellé d’un champ de saisie, deux possibilités :

• Soit je clique directe-ment sur le bouton de la langue à traduire et je choisis la langue de référence

• Soit je clique sur le bouton de la fenêtre de description et je récu-père la traduction avec le lien “Demander la traduction”

TDF TECH 2013 - www.pcsoft.fr - 27

Page 15: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

HYPERFILESQL : AUTORISER LA RÉPLICATION AUTOMATIQUE

Gestion  d’un  serveur  secondaire,  de  filiales,  d’un  serveur  pour  les  accès distants, etc.La  réplication  de  serveurs  HyperFileSQL  permet  de  synchroniser automatiquement plusieurs serveurs distants sans programmation.

1 Se connecter au serveur principalLa connexion doit s’effectuer via le Centre de Contrôle

HyperFileSQL.

Pour pouvoir modifier les options de configuration du serveur HyperFileSQL,  il est nécessaire d’utiliser un utilisateur de  type “Administrateur” disposant des droits suivants :• droit de paramétrer le serveur,• droit de définir et de réaliser une réplication entre 2 serveurs HyperFileSQL.

2 Autoriser la réplication monodirectionnelle

Ce serveur sera-t-il répliqué ? C’est-à-dire, est-ce que les données de ce serveur seront synchronisées / envoyées sur un autre serveur ?

Ici, c’est le serveur “principal”, il faut donc cocher l’option “Le serveur est maître”.

3 Autoriser la réplication bidirectionnelle

Ce serveur pourra-t-il recevoir des données d’un autre serveur ? C’est-à-dire, est-ce que ce serveur pourra être synchronisé à partir d’un autre serveur ? (nécessaire si des applications écrivent sur les serveurs abonnés !).

Ici, les autres serveurs vont envoyer de nouvelles données, il faut donc cocher l’option “Le serveur est abonné”.

28 - TDF TECH 2013 - www.pcsoft.fr

5 Sécurisation de la réplicationLa transmission des données entre les serveurs est sécurisée

par un mot de passe complémentaire, spécifique à la réplication. Ce mot de passe est obligatoire et doit être identique sur les 2 serveurs configurés pour effectuer une réplication bidirectionnelle.

6 Gestion des priorités entre serveurs

Pour pouvoir gérer les conflits de modifications (détaillés dans le sujet suivant), les serveurs HyperFileSQL peuvent utiliser une notion de priorité de serveurs.

La priorité d’un serveur HyperFileSQL est représentée sous la forme d’un entier : plus cet entier est petit, plus le serveur est prioritaire.

7 La configuration du serveur est terminée

Le serveur est prêt : il peut utiliser la réplication, sans avoir a être redémarré.

Le sujet suivant va détailler la mise en place d’une réplication bidi-rectionnelle entre deux serveurs depuis un serveur configuré selon la procédure décrite dans ce sujet.

4 Gestion des ports de communication

Les serveurs ont besoin de deux ports pour pouvoir utiliser la réplication :• leur port d’accès “classique” (4900 par défaut),• le port d’accès à la réplication, uniquement dans le cas d’un serveur “abonné” (4996 par défaut).

Pensez à ouvrir ces ports dans le pare-feu.

TDF TECH 2013 - www.pcsoft.fr - 29

Attention !La mise en place de  la  réplication entre plusieurs serveurs HyperFileSQL nécessite quelques adaptations de l’application (identifiant automatique, ...). Consultez l’aide en ligne (http://doc.pcsoft.fr/fr-FR/?1000020588) pour plus d’informations !

Page 16: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

HYPERFILESQL : METTRE EN PLACE UNE RÉPLICATION

Une fois le serveur “maître” configuré pour autoriser l’utilisation de la réplication, il ne reste plus qu’à utiliser l’assistant intégré au Centre de Contrôle  HyperFileSQL  pour  mettre  en  place  une  réplication  serveur  à serveur : 0 ligne de code !

1 Lancement de l’assistantSur le serveur “maître”, le lien “Cliquer ici pour créer une nou-

velle réplication de serveur” apparaît et permet de lancer l’assistant de création et de configuration de la réplication.

Il est également possible d’intégrer le paramétrage de la réplication dans une application. Dans ce cas, il suffit d’utiliser la nouvelle famille de fonctions WLangage HRSxxx.

2 Choix du type de réplicationLa réplication peut être soit :

• monodirectionnelle : le serveur maître envoie les données modifiées au serveur abonné.• bidirectionnelle : le serveur maître envoie les données modifiées au serveur abonné mais récupère également les modifications effectuées sur le serveur abonné.

Ce choix dépend de l’utilisation du serveur “abonné”.

Remarques :• un serveur “maître” peut avoir plusieurs serveurs abonnés.• un serveur “abonné” d’une réplication peut être “maître” pour une autre réplication.

3 Serveur de destination / abonnéUne fois le type de réplication choisi, il suffit de définir le

serveur “abonné” (le serveur destinataire) en indiquant :• l’adresse ou le DNS du serveur destination (par exemple “monser-veur.pcscloud.net”),• le port utilisé pour l’envoi des données (par défaut 4996),• le mot de passe de la réplication (défini dans la configuration du serveur).

30 - TDF TECH 2013 - www.pcsoft.fr

5 Copie initiale des données du serveur maître ?

Par défaut, le serveur abonné ne contient pas les données initiales du serveur maître. Seules les modifications sont alors envoyées au serveur abonné.

Pour créer un serveur abonné complet, il suffit d’indiquer dans l’assistant d’effectuer une copie initiale des données du serveur maître.

6 Planification de la réplicationLa réplication peut s’effectuer soit :

• de manière périodique, par exemple, tous les jours à 1h du matin.• de manière continue, en mode streaming !

Le mode streaming permet de faire les modifications en temps quasi-réel ! “Quasi-réel” car  les modifications se font de manière asynchrone, c’est-à-dire que le serveur va noter ce qu’il doit envoyer et régulièrement, envoyer ces modifications aux serveurs répliqués.

Rappel : pour avoir plusieurs serveurs “synchrones”, il suffit d’utiliser la version cluster de HyperFileSQL.

7 Résolution des conflitsQue faire en cas de conflit entre les données des différents 

serveurs ? Plusieurs règles sont possibles :• le plus récent est prioritaire,• utiliser la priorité du serveur (défini dans sa configuration),• utiliser une procédure stockée.

Astuce : pour que les serveurs puissent gérer correctement les conflits, il est nécessaire de synchroniser les horloges des serveurs (serveurs de temps NTP par exemple).

C’est terminé ! La réplication démarre automatiquement !

4 Que faut-il répliquer ?Bien entendu, il est possible d’indiquer les éléments à répliquer.

Il est possible de répliquer soit :• l’ensemble du serveur,• une seule base de données,• une sélection de bases et / ou de fichiers.

TDF TECH 2013 - www.pcsoft.fr - 31

Synchronisation des horloges des serveursPour mettre en place une réplication, il est nécessaire de synchroniser les hor-loges des différents serveurs répliqués. Cette synchronisation d’horloge repose sur le protocole NTP. Pour plus d’informations sur les serveurs de temps NTP, consultez sous Windows le  lien “http://support.microsoft.com/kb/816042/fr” et sous linux la documentation du daemon “ntp”.

Page 17: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

SERVEUR HYPERFILESQL :ADMINISTRATION AVANCÉE

L’administration  d’un  serveur  HyperFileSQL  s’améliore  encore  en  version 18 et vous permet de bénéficier de nouvelles fonctionnalités : restriction d’accès, système de notifications, calcul automatique des statistiques des fichiers, ...Avec les serveurs HyperFileSQL, vous gérez !

Restreindre l’accès au serveur HyperFileSQLDe nombreuses fonct ionnal i tés de HyperFileSQL garantissent  la  sécurité de vos données :• la gestion des droits, au niveau du serveur, de la base de données et également des fichiers,• le cryptage des données et de la connexion,• et nouveauté des versions 18 : la limitation des connexions à certaines adresses  IP ou noms de domaine.

PrincipeLes restrictions d’adresses IP s’effectuent au niveau des groupes ou des utilisateurs.

Il est alors possible de gérer des filtres précis selon les utilisateurs :• la passerelle d’une filiale pour un groupe d’utilisateur,• une adresse IP spécifique pour  l’adminis-trateur,• etc.

Remarque : pour effectuer une restriction directement au niveau du serveur, pour tous les utilisateurs, il est plus “efficace” de faire cette restriction au niveau du firewall de la machine. Cela permet de limiter la charge du serveur HyperFileSQL.

Note : Le tableau de bord PCSCloud permet de gérer le filtrage par IP au niveau du serveur, pour chaque type d’accès (HyperFileSQL, accès Web, accès FTP, etc.).

Mise en œuvreLa  limitation par  IP de  l’accès au serveur HyperFileSQL s’effectue depuis le Centre de 

Contrôle HyperFileSQL, dans les propriétés d’un utilisateur ou d’un groupe.

Par exemple, sur  la copie d’écran [Fig. 1], l’administrateur ne peut se connecter que depuis le réseau “.tdfteam.com”.

Pour modifier les restrictions d’accès d’un utilisateur ou d’un groupe, il suffit de cliquer sur le bouton “Ajouter” de l’onglet “Restrictions d‘accès par adresse IP”.

Il est alors possible d’ajouter : • une adresse IP,

• une plage d’adresses IP,• un nom DNS,• un nom de sous-domaine.

NotificationsIl peut arriver qu’un serveur HyperFileSQL rencontre un problème lors de l’exécution d’une tâche planifiée ou d’une réplication : par exemple, si l’espace disponible est insuffisant pour réaliser l’opération.

Comment savoir que le serveur a rencontré un problème ?

À partir de la version 18, les serveurs HyperFileSQL disposent d’un système de notifications qui vous permet d’être immé-diatement prévenu en cas de problème.

Fig. 1

32 - TDF TECH 2013 - www.pcsoft.fr

ConfigurationLa configuration du système de notifications peut être réalisée via le Centre de Contrôle HyperFileSQL ou par programmation.

Depuis le Centre de Contrôle, dans l’on-glet “Configuration”, choisissez l’option “Notifications”.

Commencez par renseigner les paramètres de configuration du serveur SMTP (envoi par email) et des Centres de Contrôle (envoi par WDBal).

Vous pourrez alors définir les destinataires (email et WDBal) [Fig. 2] en précisant pour chacun le niveau de gravité à partir duquel le destinataire doit être prévenu :• avertissement,• erreur,• critique.

Un destinataire avec un niveau de gravité “avertissement” recevra toutes les notifica-tions (avertissement, erreur, critique) alors qu’un destinataire avec un niveau de gravité “critique” recevra uniquement les notifications critiques.

Notre conseilActivez toujours les notifications sur :• vos serveurs HyperFileSQL les plus sen-sibles, notamment ceux en accès distant (cloud, etc.).• vos serveurs répliqués; les notifications permettent d’être prévenu si les serveurs ont des heures déphasées, si la création d’un replica échoue, ...

Pour configurer l’envoi de notifications par programmation, il suffit d’utiliser les fonctions HNotifXXX du WLangage :• HNotifConfigure permet de configurer les paramètres du serveur SMTP et des Centres de Contrôle.// Paramètres d’envoi des// notifications par email// NB : la connexion au serveur// doit être ouverteHNotifConfigure(cnxConnexion, hNotifEmail, “SERVEURENVOI:25”, “usernotif”, “mdp”, “[email protected]”, Faux)

• HNotifAjouteDestinataireXX permet d’ajouter des destinataires,// Le responsable doit être // prévenu de toutes les erreursHNotifAjouteDestinataireEmail(... cnxConnexionCS, “[email protected]”, hNotifAvertissement)

• ...

Historique des incidents et notifica-tionsPour chaque problème rencontré par le serveur HyperFileSQL, une notification est enregistrée (et envoyée si des destinataires ont été configurés).

L’historique des notifications d’un serveur est consultable depuis le Centre de Contrôle HyperFileSQL mais également par program-mation :• depuis le Centre de Contrôle, il suffit d’ouvrir l’onglet “Notifications”.• par programmation,  il suffit d’accéder au fichier “Alert.fic” de la base de données sys-tème du serveur.// Connexion au serveurcnxConnexion est une ConnexioncnxConnexion..Serveur=... “MonServeur”cnxConnexion..Utilisateur=... “admin”cnxConnexion..MotDePasse=... “”cnxConnexion..BaseDeDonnées=... “__System”cnxConnexion..Provider=... hAccèsHFClientServeur// Accès au fichier Alert.ficsdAlert est une Source de DonnéesSI HDéclareExterne(“Alert.fic”, sdAlert,cnxConnexion) ALORS // Lecture / récupération // des notifications ...

HAnnuleDéclaration(sdAlert)FIN

Remarque :L’aide en ligne propose le code complet pour récupérer toutes les notifications d’un serveur. Consultez la page sur les notifications :“http://doc.pcsoft.fr/?1000017311”.

Notre astuceIl est possible de supprimer les notifications à tout moment (via le Centre de Contrôle et même par programmation).Lorsque vous avez résolu le problème remonté par une notification (ajout d’espace disque pour une sauvegarde par exemple), pensez à supprimer la notification associée.Vous conservez ainsi uniquement les notifi-cations “à traiter”.

Recalcul des statistiquesLes statistiques des fichiers de données sont utilisées pour optimiser les recherches en fonction des données réelles contenues dans la base.

Il est donc important de recalculer régulière-ment ces statistiques pour optimiser les accès (voir le sujet “HyperFileSQL : 3 conseils pour optimiser les accès aux bases de données” dans la partie “Annexes” de ce support de cours).

En version 18, le serveur HyperFileSQL opti-mise automatiquement les index lorsqu’il est disponible et qu’aucun accès n’est effectué sur la base de données : la nuit, le week-end, etc.

Les statistiques de vos fichiers sont donc toujours à jour et vos requêtes sont toujours exécutées de manière optimale par rapport à vos données !

Pour rendre les notifications efficaces, inutile de tout envoyer à tout le monde.Pensez simplement à mettre une personne en destination des avertissements !

Fig. 2

TDF TECH 2013 - www.pcsoft.fr - 33

Page 18: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

MAIS QUE FAIT CETTE REQUÊTE ?LET ME EXPLAIN !

L’exécution  d’une  requête  SQL  est  une  suite  d’actions  (parcours,  filtrage, tri, ...). HyperFileSQL optimise le choix de l’ordre des actions à effectuer en fonction des index définis.La fonction EXPLAIN permet d’obtenir  le détail du plan d’exécution d’une requête en fonction des données réelles.

Projet d’illustrationLes projets utilisés pour illustrer ce sujet sont :•  l ’exemple  “WD  Analyseur  Explain HyperFileSQL” (livré dans le DVD et en stan-dard  avec WINDEV),  nommé  “analyseur EXPLAIN” dans l’article.• l’exemple “WD Exemple Explain TDF18” (livré dans le DVD), nommé “exemple” dans l’article.

Le mot-clé EXPLAINLe mot-clé EXPLAIN permet de récupérer le plan d’exécution qui est utilisé par le moteur HyperFileSQL pour exécuter une requête.

Ce plan d’exécution dépend des données réelles de la base de données.

Pour obtenir le plan d’exécution d’une requête SQL, il suffit de positionner le mot-clé “EXPLAIN” en tout début de requête et de lancer son exécution.

Le résultat est une chaîne au format XML qui explique le plan d’exécution de la requête.

Pour faciliter la lecture de ce résultat, WINDEV livre en standard  l’exemple “WD Analyseur Explain HyperFileSQL” qui permet d’afficher le déroulement de la requête sous forme d’un organigramme.

Analyse d’un cas concretPour bien comprendre l’intérêt du EXPLAIN et quand  l’utiliser,  l’exemple “WD Exemple Explain TDF18” propose de tester et d’analyser une requête précise sur des données simples.

La requêteDans notre exemple, la requête “REQ_Test” est anormalement lente. Cette requête permet de récupérer la liste des clients ayant passé une commande de plus de 150 000 € depuis 2003.

Cette requête met plus de 2 secondes à s’exécuter.

Pourtant, les fichiers sont optimisés pour la requête et les statistiques sont à jour (les fichiers sont entièrement remplis au lancement de l’exemple).

Explain de la requêteDans ce cas, il est nécessaire d’analyser le plan d’exécution fourni par le EXPLAIN, à l’aide de l’analyseur EXPLAIN par exemple.

Lancez l’analyseur et, dans l’onglet “Ouvrir une analyse (HyperFileSQL Classic)”, renseignez :• le chemin de l’analyse du projet (fichier “WD Exemple Explain TDF18.wdd”),• le chemin qui contient les données (réper-toire “Exe”),• le code SQL de la requête.Remarque : ces différentes informations sont fournies par l’exemple.

Cliquez sur le bouton “Lancer l’analyse de la requête” pour analyser le plan d’exécution de la requête.

Le résultat de l’analyse est disponible dans son format d’origine (XML) mais également dans une visualisation graphique, plus simple à comprendre.

Dans notre exemple, l’analyse par le EXPLAIN révèle que :• le fichier “Client” est traité en premier (il est situé le plus à gauche),• le fichier “Client” est complètement parcouru (il est en rouge).

Le plan d’exécution de la requête est donc le suivant :• tous les enregistrements du fichier “Client” sont lus,• pour chaque “Client”, toutes ses “Commande” sont lues,• pour chaque “Commande”, les critères sont vérifiés (dans notre cas, le montant doit être supérieur à 150 000 euros et la date supérieure au 1er janvier 2003).

Bien que la rubrique “DateCommande” soit clé, celle-ci n’est pas utilisée en premier par le plan d’exécution. Pourquoi ? Simplement parce que le nombre de clients est inférieur au nombre de commandes passées depuis 2003. Le parcours le plus court est donc de passer par le fichier “Client”.

Modification automatiqueL’idéal ici serait que le parcours s’effectue sur le montant TotalTTC (les commandes à plus de 150 000 € sont plutôt rares !). Pour cela, il suffit de passer la rubrique TotalTTC en “clé avec doublons” :• soit en modifiant l’analyse et en effectuant une modification automatique des données (SDD),• soit en utilisant  la syntaxe SQL “CREATE INDEX” qui permet de créer dynamiquement une clé sur le fichier. C’est cette solution qui est utilisée dans l’exemple.CREATE INDEX TotalTTCON COMMANDE (TotalTTC)

Vous pouvez maintenant retester la requête : c’est beaucoup plus rapide !

Pour comprendre cette différence, effectuez à nouveau une analyse EXPLAIN via l’analyseur EXPLAIN : la requête parcourt maintenant le fichier “Commande” en premier et utilise la nouvelle clé fraîchement créée !

34 - TDF TECH 2013 - www.pcsoft.fr

J’ai une requête qui liste les commandes de plus de 150 000 € passées depuis 2003.Plus de 2 secondes pour une requête qui ne concerne que quelques enregistrements ?L’outil d’optimisation des requêtes ne remonte aucun souci et mes sta-tistiques sont bien à jour.C’est suspect !

>2s

<300ms

Je lance l’analyseur EX-PLAIN sur ma requête.Le fichier “Client” est complètement par-couru ! Pourquoi ?Les données contiennent plus de commandes depuis 2003 que de clients, le parcours le plus court est donc de passer par “Client”.Mais pourquoi le par-cours ne passe-t-il pas par “Commande” ?

Parce que la rubrique TotalTTC n’est pas clé !En passant la rubrique TotalTTC en clé (via la commande SQL “CREATE INDEX”), le parcours de ma requête est optimal : moins de 300 ms.

La requête utilise la nouvelle clé pour parcourir directement le fichier Commande !

TDF TECH 2013 - www.pcsoft.fr - 35

Page 19: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

NOUVEAUTÉS ÉDITEURS : RUBAN, “DIFF” D’IMAGES ET RECHERCHE

En version 18, les éditeurs bénéficient de nouveautés indispensables qui facilitent le développement au quotidien.Petit tour d’horizon de 3 nouveautés incontournables :le ruban, le “diff” d’images et la recherche nouvelle génération.

Le rubanLe ruban de la version 18 remplace à la fois le menu et les barres d’icônes.

Cet affichage présente énormément d’avan-tages :• les options y sont classées par thème. La recherche d’une option est plus simple et plus intuitive.• le ruban est contextuel. En passant d’un éditeur à un autre, le ruban s’adapte pour proposer les options adaptées à l’éditeur en cours (éditeur de fenêtres, éditeur de code, éditeur d’analyses, etc.).Les volets contextuels sont facilement identifiables : ils sont colorés (jaune sous WINDEV, bleu sous WEBDEV et orange sous WINDEV Mobile) !Les autres volets (Accueil, Projet, GDS, Tests automatiques, Outils) sont des volets per-manents : ils sont toujours visibles. Ils sont identifiables par leur libellé blanc.• les  icônes  les plus usuelles sont mises en évidences, elles sont plus grandes et donc facilement identifiables. Vous gagnez du temps. Par exemple, dans le volet “Création” de l’éditeur de fenêtres, les icônes des champs les plus utilisés sont plus grosses : champ de saisie, libellé, bouton, image, ...

Notre astuce : si vous souhaitez repasser ponctuellement en mode menu et barre d’ou-tils, ces options sont toujours disponibles. Il suffit d’utiliser le raccourci “Ctrl + Shift + R” pour passer d’un mode à l’autre.

Le ruban intègre également une recherche rapide de fonctionnalités (le bouton en haut à droite de l’éditeur) : il suffit de saisir

l’action à effectuer et l’éditeur trouve tout seul ce que vous voulez faire et le fait !C’est un gain de temps précieux et une fonc-tionnalité vite indispensable.

“Diff” d’images (GDS)La fonctionnalité “différence d’images” permet de comparer deux versions d’une même image, pour visualiser les différences [Fig. 1].

Cela permet de contrôler les modifications apportées à une image (par le service infogra-phie par exemple) avant de récupérer l’image sur le poste de développement.

Pour mettre en évidence les différences entre les deux images, il suffit de jouer sur l’opacité avec le curseur en bas.

Pour afficher uniquement les différences, il suffit de positionner l’opacité à 0 %.

La rechercheEn version 18, la recherche a bien évolué : elle est plus complète, plus rapide, plus intuitive. Vous allez vraiment gagner du temps !

Rappel des raccourcis de recherche :• “Ctrl + F” : lance une recherche.• “Ctrl + Maj + F” : force une recherche dans tout le projet.• “Ctrl + Alt + F” : force une recherche dans l’élément courant.

Voici une présentation rapide des nouveautés les plus intéressantes de la recherche :• les résultats de la recherche bénéficient de la coloration syntaxique, pour une lecture

plus agréable.• les résultats sont présentés de façon arbo-rescente par élément du projet. Il est possible d’enrouler et de dérouler pour avoir plus ou moins de détails.• il est possible de regrouper les occurrences d’une même ligne [Fig. 2]. Il suffit de cliquer sur les boutons :

Si le terme recherché apparaît plus d’une fois dans une ligne de code donnée, il n’est pas forcément utile d’afficher plus d’une fois cette ligne dans le résultat.• l’éditeur peut conserver jusqu’à 5 fenêtres de recherche en parallèle.• les dernières recherches sont mémorisées et il est possible d’épingler une recherche pour toujours l’avoir à portée.

Type de rechercheLa recherche permet de retrouver :• du texte (c’est la fonction la plus utilisée),• une expression régulière,• les codes cibles conditionnels (pour retrouver tous les codes Java par exemple),

36 - TDF TECH 2013 - www.pcsoft.fr

• les dernières modifications effectuées par un ou plusieurs collaborateurs pour une période donnée (aujourd’hui, hier, etc.).• des éléments de l’aide.

Affiner les résultatsPour affiner les résultats, il est possible dans un premier temps d’utiliser les options de recherche proposées par le volet de recherche [Fig. 3].

Il est possible de rechercher :• dans le code (code source, chaînes, com-mentaires) et/ou l’IHM (champs, liaisons, ...).• pour l’élément courant, tous les éléments du projet, certains éléments du projet, ...• dans la configuration en cours, dans toutes les configurations, ....• avec  la prise en compte de  la casse, des accents, ...

Pour affiner encore plus la recherche, il est possible de saisir bien plus que les termes à rechercher dans la zone de recherche :• pour ne pas tenir compte de mots dans la recherche, il suffit d’ajouter ces termes préfixés du signe “-”.Par exemple, “Position -HSauvePosition -HRetourPosition” permet de rechercher toutes les occurrences de “Position” autres que “HSauvePosition” et “HRetourPosition”.• il est possible de saisir des caractères jokers dans la recherche : le point d’interrogation et l’étoile pour remplacer un ou plusieurs caractères.Par exemple, “Client.* = ” permet de recher-cher toutes les affectations de rubriques du fichier “Client”.

Fig. 3

Fig. 2

Fig. 1

TDF TECH 2013 - www.pcsoft.fr - 37

Page 20: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

COUP D’ŒIL SUR 18 NOUVELLES FONCTIONS DES VERSIONS 18

Les versions 18 proposent des centaines de nouvelles fonctions et syntaxes pour vous aider dans vos développements.Voici une sélection de nouveautés apparues en version 18 et qui vont vous servir au quotidien. Lisez attentivement, vous allez sûrement en découvrir !

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple “WD DixHuit TDF18” (présent sur le DVD).

Ajouter un surtitre de colonnesUn surtitre de colonne [Fig. 1] permet d’ap-porter une notion de “regroupement” aux colonnes.

C’est très utile pour identifier en un coup d’œil les colonnes qui affichent des informations complémentaires par exemple.

Pour ajouter un surtitre, il suffit d’utiliser la fonction TableAjouteSurtitre en précisant :• le champ Table concerné,• la colonne sur laquelle doit débuter le sur-titre,• la colonne sur  laquelle doit  se  terminer le surtitre. Cette colonne est incluse sous le surtitre.• le libellé du surtitre.// Ajoute un surtitre// de la colonne COL_Canada// à la colonne COL_EtatsUnisTableAjouteSurtitre(...

TABLE_CA, COL_Canada..Nom, COL_EtatsUnis..Nom, “Amérique du nord”)

Supprimer les lignes sélectionnées d’une tableSupprimer les lignes sélectionnées dans une table, c’est toujours un risque d’erreur : les indices des lignes changent, il faut penser à parcourir la table depuis la fin, ...

Avec la fonction TableSupprimeSelect, vous supprimez en une ligne de code toute la sélection d’une table.// Supprime toutes les lignes // sélectionnées de la tableTableSupprimeSelect(... TABLE_CA)

Remplacer plusieurs chaînesVous avez besoin de remplacer plusieurs caractères dans une chaîne ? En version 18, fini de multiplier les appels à la fonction Remplace !

La fonction Remplace a évolué et accepte maintenant en paramètres un ensemble de chaînes (tableau) à remplacer par une autre.// Pour remplacer 4 chaînes,// en version 17,// il fallait 4 appels à la// fonction RemplacesTexte = ... Remplace(sTexte, “\\”, “ ”)sTexte = ... Remplace(sTexte, “//”, “ ”)sTexte = ... Remplace(sTexte, “\”, “ ”)sTexte = ... Remplace(sTexte, “/”, “ ”)

// En version 18,// 1 appel suffitsTexte = Remplace(sTexte, [“\\”,“//”,“\”,“/”], “ ”)

Verrouiller la session WindowsLa fonction WLangage SysArrête permettait déjà d’éteindre le poste, de le redémarrer ou de fermer la session Windows en cours.En version 18, cette fonction permet main-tenant de verrouiller  la  session Windows en cours.

Fig. 1

38 - TDF TECH 2013 - www.pcsoft.fr

// Verrouille la sessionSysArrête(... sysVerrouilleSession)

Cela permet de sécuriser facilement les appli-cations.

Transposer du texte brut en texte au format RTF par programmationAvant les versions 18, pour convertir un texte au format RTF, il fallait passer par un champ de saisie au format RTF.

Maintenant, il suffit d’utiliser la fonction WLangage TexteVersRTF.// Création du texte RTFsTexteRTF est une chaîne = ... TexteVersRTF(“WINDEV est un outil formidable” + RC + “Le développement devient un jeu d’enfant”)

// Sauvegarde du texte dans // un document RTFfSauveTexte(fRepExe() +fSep()+ “MonDoc.rtf”, sTexteRTF)

Cette fonction est donc très utile pour les Webservices et les services qui fonctionnent sans IHM.

Cette fonction est également très utile en WEBDEV puisque  le  champ de  type RTF n’existe pas.

Remplir dynamiquement les champs Interrupteur et SélecteurEn version 18, il est maintenant possible de remplir les options d’un champ Interrupteur par programmation grâce à la famille de

fonctions InterrupteurXXX.Important :Pour que les options soient toujours serrées quel que soit leur nombre, utilisez la propriété CompacteOption : si une option est rendue invisible ou est supprimée, les options sont “compactées”, ce qui évite les effets de trous entre les options.// Compacte les optionsINT_Parfums..CompacteOption=... Vrai// Ajoute des options au champ// InterrupteurInterrupteurAjoute(... INT_Parfums, “Caramel Tchou Tchou”)InterrupteurAjoute(... INT_Parfums, “Chocolat Brownie Fondu”)...// Supprime l’option par défautInterrupteurSupprime(... INT_Parfums, 1)

Le principe est identique pour le champ Sélecteur : il suffit d’utiliser la famille de fonctions SélecteurXXX.

Convertir des coordonnées géographiquesLe système de coordonnées géographiques comprend 2 composantes, la latitude et la longitude, qui s’expriment chacunes en degrés, minutes, secondes. Cette notation, basée sur le système sexagésimal, est compréhensible par un humain et correspond à celle fournie par les GPS.

Mais en informatique, c’est la notation déci-male qui est fréquemment rencontrée.Par exemple, les cartes “Google Maps” utilisent le système décimal.

Pour convertir  les coordonnées d’un GPS 

en coordonnées de carte (et inversement), les versions 18 proposent deux nouvelles fonctions :• SexagésimalVersDécimal,• DécimalVersSexagésimal.// Conversion de// coordonnées sexagésimales// en coordonnées décimalesInfo(... “Latitude : ” + SexagésimalVersDécimal(... “43°38’23’”), “Longitude : ” + SexagésimalVersDécimal(... “3°50’17’’”))

Générer un mot de passeProgrammer une procédure qui génère un “vrai” mot de passe, réellement aléatoire, ce n’est pas forcément évident.

La fonction GénèreMotDePasse permet de récupérer un mot de passe aléatoire et à forte sécurité !

Il suffit de préciser en paramètre la longueur du mot de passe souhaité. // Génère un mot de passe// aléatoire de 12 caractères Info(GénèreMotdePasse(12))

Il est également possible de restreindre  la génération à un jeu de caractères donnés.// Génère un mot de passe ne// contenant que des voyellesInfo(GénèreMotdePasse(8, “aeiouyAEIOUY”))

Copier une partie de tableauLa fonction TableauCopie permettait de copier le contenu d’un tableau dans un autre.Il est maintenant possible de copier unique-

TDF TECH 2013 - www.pcsoft.fr - 39

Page 21: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

COUP D’ŒIL SUR 18 NOUVELLES FONCTIONS DES VERSIONS 18 (SUITE)ment une partie du tableau : il suffit de préciser l’indice de début de copie et le nombre de valeurs à copier.// Tableau contenant tous les// mois de l’annéetabMois est un tableau de chaînes = [“Janvier”, “Février”, “Mars”, “Avril”, “Mai”, “Juin”, “Juillet”, “Août”, “Septembre”, “Octobre”, “Novembre”, “Décembre”]// Tableau qui contiendra les// mois du printempstabPrintemps est un tableau de chaînes

// Récupère les 3 mois// du printemps// Recopie 3 valeurs// à partir de la 4ème valeurTableauCopie(... tabMois, tabPrintemps, 4, 3)

Inverser les éléments d’un tableauPour inverser un tableau, la méthode consis-tait à :• parcourir le tableau depuis la fin en rem-plissant un tableau temporaire,• recopier  le  tableau  temporaire dans  le tableau initial.

En version 18, la fonction TableauInverse permet d’inverser tous les éléments d’un tableau en une seule opération.

// Tableau contenant tous les// mois de l’année dans l’ordretabMois est un tableau de chaînes = [“Janvier”, “Février”, “Mars”, “Avril”, “Mai”, “Juin”, “Juillet”, “Août”, “Septembre”,

“Octobre”, “Novembre”, “Décembre”]

// Inverse le tableauTableauInverse(tabCompteur)

Remarque :Si vous utilisez des tableaux triés, vous pou-vez utiliser indifféremment les fonctions TableauTrie et TableauInverse.

Ecrire un nombre en lettresSi vous éditez des documents administratifs ou des chèques [Fig. 2] par exemple, la fonction NombreEnLettres est faite pour vous.

Cette fonction permet d’écrire en texte un nombre donné : il suffit de lui préciser le montant à convertir et éventuellement le nom de la monnaie et des centimes.// Conversion du montant// en lettresLIB_MONTANT = ... NombreEnLettres(278.35, “euros”, “centimes”).

// Le libellé contient : // deux cent soixante-dix-huit euros // et trente-cinq centimes

Convertir une variable DateHeure en chaîneAvant les versions 18, pour convertir une variable de type DateHeure en chaîne, il fallait :•  récupérer  la partie date de  la  variable (via la propriété PartieDate) et appeler DateVersChaîne,• puis récupérer la partie heure (via la propriété 

PartieHeure) et appeler HeureVersChaîne.dhMaintenant est une DateHeure

// En version 17Info(... DateVersChaîne(... dhMaintenant..PartieDate, “JJ/MM/AAAA”) +“ ”+ HeureVersChaîne(... dhMaintenant..PartieHeure, “HH:mm”))

En version 18, la fonction DateVersChaîne accepte des variables de type DateHeure.dhMaintenant est une DateHeure

// En version 18Info(... DateVersChaîne(... dhMaintenant, “JJ/MM/AAAA HH:mm”))

Là où il fallait 2 appels de fonctions et l’utilisa-tion de 2 propriétés, 1 seul appel de fonction suffit : le code est encore simplifié !

Récupérer la date du premier jour de la semaineConnaître la date du lundi d’une semaine donnée, c’est bien pratique pour se posi-tionner dans un champ Planning ou Agenda par exemple.

La fonction WLangage SemaineVersDate permet de renvoyer la date du lundi à partir d’un numéro de semaine et d’une année.// Affiche la date du lundi// de la 12ème semaine// de l’année 2012Info(“Le lundi de la semaine 12

Fig. 2

40 - TDF TECH 2013 - www.pcsoft.fr

en 2012, nous étions le : ”+ DateVersChaîne(... SemaineVersDate(12,2012)))

Remarque :La fonction SemaineVersDate respecte la norme “ISO 8601”, qui définit les règles sui-vantes :• une semaine commence le lundi,• les jours de chaque semaine sont numérotés du lundi au dimanche (lundi = 1, dimanche = 7),• la semaine 1 est celle qui contient le premier jeudi de l’année.

Convertir une date en langage naturelAfficher “demain”, “hier” ou “dans 1 semaine” au lieu d’une date dans son format origi-nal (JJ/MM/AAAA), c’est plus clair et plus agréable à lire.

En version 18, pour convertir une date en lan-gage naturel, c’est très facile : il suffit d’utiliser la fonction DateVersChaîne avec la nouvelle constante maskDateDuréeRelative.// Définit la date de demaindDemain est une DatedDemain..Jour++

// Affiche// Le <DateDuLendemain>,// c’est demainInfoConstruit(... “Le %1, c’est %2”,

DateVersChaîne(dDemain), DateVersChaîne(dDemain, maskDateDuréeRelative))

Remarque :Les fonctions WLangage  InfoConstruit et ErreurConstruit permettent de faciliter la lecture du code et de simplifier le code des boites de dialogue.

PersonnalisationLe format des libellés renvoyés est défini pour chaque langue du projet et peut être entièrement personnalisable.

Pour personnaliser un libellé, dans l’onglet “Langues” de la description du projet, posi-tionnez-vous sur l’onglet “Dates” et cliquez sur le bouton “Dates et Heures en langage naturel...”.

Dans la fenêtre qui s’affiche [Fig. 3], tous les libellés par défaut sont affichés.Vous pouvez alors personnaliser tout ou partie des libellés en langage naturel.

Par exemple, le libellé pour “Dans plus d’une minute dans la même journée” peut être défini par :• “dans Rmm minute(s)” (valeur par défaut),• “dans moins de Rmm minute(s)”,• “dans quelques instants”,• ...

Gérer le WiFiDéjà disponible sous WINDEV Mobile pour Android, une nouvelle famille de fonctions fait son apparition sous WINDEV en version 18 : la famille WiFiXXX.

Ces fonctions permettent de gérer facilement la communication WiFi :• détection des points d’accès,• connexion à un réseau• ...// Liste les réseaux WiFisListe = WiFiListeRéseau()...// Se connecte à un réseau WiFiConnecte(nIDRéseau)

Le Saviez-Vous ?Toute plate-forme confondue (Windows, Linux, Android, OS, Java, etc.), le WLangage comporte plus de :• 2900 fonctions,• 600 propriétés,• 200 types de variable et mots.

Pensez toujours à rechercher dans l’aide en ligne : la fonction que vous cherchez existe déjà certainement !

L’aide en ligne, c’est par là : “http://doc.pcsoft.fr”.

Fig. 3

TDF TECH 2013 - www.pcsoft.fr - 41

Page 22: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

FONCTIONNALITÉS AVANCÉES, CODE SIMPLIFIÉ !

Le WLangage  simplifie  l’utilisation  et  la mise  en  place  de  fonctionnalités avancées.Voici 5 exemples concrets de nouvelles fonctionnalités avancées qui vont vous aider au quotidien ! zipAjouteListeFichier(...

“MonArchive”,sListeFichier)// Fermeture de l’archivezipFerme(“MonArchive”)

4 Opérateurs + et - : enchaînez les procédures

Les opérateurs “+” et “–” peuvent mainte-nant être utilisés sur les variables de type Procédure.

Il est ainsi possible de gérer facilement une liste de procédures à appeler.

En un seul appel, vous pouvez alors exécuter toutes les procédures de cette liste.// Définit une procédure qui// sera exécutée en cas d’erreurprocEnCasDErreur est une PROCEDURE

// Par défaut, l’erreur est :// - mémorisée dans un fichierprocEnCasDErreur = ... MémoriseDansLog// - envoyée par email // (au responsable)procEnCasDErreur += EnvoiEmail// - envoyée par SMS// (éventuellement)SI gbModeCritique ALORS procEnCasDErreur += EnvoiSMSFIN

L’appel à la procédure procEnCasDErreur effectuera en réalité 2 ou 3 appels :• MémoriseDansLog,• puis EnvoiEmail,• puis EnvoiSMS (si l’application est en mode critique)....// En cas d’erreurSI ErreurDétectée ALORS // Exécute la procédure // procEnCasDErreur procEnCasDErreur(... ErreurInfo())FIN

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple “WD Expert TDF18”  (présent sur le DVD).

1 Inférence de type : un code clarifié

L’inférence de type, c’est un terme un peu compliqué pour désigner quelque chose qui rend la déclaration de variable “on ne peut plus simple” !

Vous ne précisez pas le type de la variable, WINDEV le déduit automatiquement.  Il suffit d’utiliser le mot-clé soit :soit <nomvariable> = <valeur>

Et cela fonctionne avec tous les types simples :• chaîne de caractères,// Déclare une variable// et lui affecte une chaînesoit Texte = “WINDEV c’est bien”

// La même déclaration,// plus “traditionnelle” :// c’est plus long !Texte est une chaîne = ... “WINDEV c’est bien”

• valeurs numériques,// Déclare des variables et// affecte des valeurs réellessoit y = 54.2soit z = 28.1

// Déclare une variable// résultant d’une opération// entre deux réelssoit w = y + z

• ...

Le code source est réduit, encore plus clair et la relecture du code est facilitée.

2 Accès FTP sécurisé (SFTP, FTPS, ...)

À partir des versions 18, WINDEV gère le FTP sécurisé pour le transfert de fichiers.

Deux protocoles sont supportés :• le protocole SFTP (principalement utilisé par les serveurs Unix et Linux),• le protocole FTPS/FTPES  (utilisé par  les serveurs Web IIS par exemple).

La fonction FTPConnecte attend 2 paramètres supplémentaires dans le cas d’une connexion en mode SFTP :• la clé privée,• le mot de passe de cette clé.

Les autres fonctions FTPxxx restent identiques que le serveur soit sécurisé ou non.// Connexion sécurisée // en mode SFTP : port 22.nPort est un entier = 22

// Nombre de secondes au bout// desquelles la requête de// connexion au serveur FTP// est abandonnéenDélai est un entier = 20

// Effectue la connexionFTPConnecte(... “sftp://MonServeur”, “utilisateur”,“motdepasse”, nPort, Vrai, nDélai, CléPrivée, MotpasseClé)

3 Compression 7z : une compression efficace

WINDEV peut maintenant utiliser le format de compression 7z.

L’avantage de ce format de compression, c’est sa très haute performance : il permet de générer des archives en moyenne 30% plus compactes.

Le format de compression 7z fonctionne en groupant les fichiers (selon leur extension) et en conservant les tables de compression entre chaque fichier. Les fichiers de même extension ont généralement des éléments communs (par exemple les fichiers HTML ont des balises identiques : body, div, etc.), la compression est donc meilleure.

Pour fonctionner efficacement, la compres-sion doit donc utiliser une liste de fichiers ou de répertoires : il est donc fortement déconseillé d’ajouter les fichiers un par un à l’aide de la fonction zipAjouteFichier.

Utilisez toujours des fonctions qui ajoutent les fichiers par paquets : zipAjouteListe-Fichier ou zipAjouteRépertoire.// Création de l’archive 7zzipCrée(“MonArchive”, fRepExe()+“\MonArchive.7z”)

// Ajout d’un répertoirezipAjouteRépertoire(... “MonArchive”, “C:\ASauvegarder\”)

// Ajoute une liste de fichierssoit sListeFichier = ... fListeFichier(... fRepExe()+[“\”]+“*.PDF”)

42 - TDF TECH 2013 - www.pcsoft.fr

3 Compression 7z : une compression efficace

WINDEV peut maintenant utiliser le format de compression 7z.

L’avantage de ce format de compression, c’est sa très haute performance : il permet de générer des archives en moyenne 30% plus compactes.

Le format de compression 7z fonctionne en groupant les fichiers (selon leur extension) et en conservant les tables de compression entre chaque fichier. Les fichiers de même extension ont généralement des éléments communs (par exemple les fichiers HTML ont des balises identiques : body, div, etc.), la compression est donc meilleure.

Pour fonctionner efficacement, la compres-sion doit donc utiliser une liste de fichiers ou de répertoires : il est donc fortement déconseillé d’ajouter les fichiers un par un à l’aide de la fonction zipAjouteFichier.

Utilisez toujours des fonctions qui ajoutent les fichiers par paquets : zipAjouteListe-Fichier ou zipAjouteRépertoire.// Création de l’archive 7zzipCrée(“MonArchive”, fRepExe()+“\MonArchive.7z”)

// Ajout d’un répertoirezipAjouteRépertoire(... “MonArchive”, “C:\ASauvegarder\”)

// Ajoute une liste de fichierssoit sListeFichier = ... fListeFichier(... fRepExe()+[“\”]+“*.PDF”)

zipAjouteListeFichier(... “MonArchive”,sListeFichier)// Fermeture de l’archivezipFerme(“MonArchive”)

4 Opérateurs + et - : enchaînez les procédures

Les opérateurs “+” et “–” peuvent mainte-nant être utilisés sur les variables de type Procédure.

Il est ainsi possible de gérer facilement une liste de procédures à appeler.

En un seul appel, vous pouvez alors exécuter toutes les procédures de cette liste.// Définit une procédure qui// sera exécutée en cas d’erreurprocEnCasDErreur est une PROCEDURE

// Par défaut, l’erreur est :// - mémorisée dans un fichierprocEnCasDErreur = ... MémoriseDansLog// - envoyée par email // (au responsable)procEnCasDErreur += EnvoiEmail// - envoyée par SMS// (éventuellement)SI gbModeCritique ALORS procEnCasDErreur += EnvoiSMSFIN

L’appel à la procédure procEnCasDErreur effectuera en réalité 2 ou 3 appels :• MémoriseDansLog,• puis EnvoiEmail,• puis EnvoiSMS (si l’application est en mode critique)....// En cas d’erreurSI ErreurDétectée ALORS // Exécute la procédure // procEnCasDErreur procEnCasDErreur(... ErreurInfo())FIN

5 Énumération et Combinaison : contrôle et sécurité

Les énumérations et les combinaisons sont deux nouveaux types du WLangage qui apportent un contrôle et une sécurité du code importante. En un mot : inévitable !

Remarque : les énumérations et combinai-sons sont ici présentées de façon succincte. N’hésitez pas à consulter l’aide en ligne à ce sujet, qui fourmille d’informations sur l’utili-sation de ces deux types.

Le type EnumérationUne énumération est un ensemble de valeurs.

Une variable de type Enumération peut être affectée uniquement avec une des valeurs de l’énumération.

Prenons l’exemple d’une application qui gère des automates :• les différents états possibles pour un auto-mate sont : en marche, en arrêt, en mainte-nance, en panne.• à un moment donné, un automate peut être uniquement dans un seul état.

Le type Enumération est donc tout adapté pour gérer les états de l’automate.// Définit une Enumération// pour gérer les états// d’un automateEtatAutomate est une Enumération Marche Arrêt EnMaintenance EnPanneFIN

Pour utiliser cette Enumération, il suffit de déclarer une variable de type EtatAutomate.// Déclaration d’une variable// de type EnumérationEtatPoste1 est un EtatAutomate

// Le poste 1 est en marcheEtatPoste1 = Marche

L’utilisation d’énumérations présente deux avantages :• si un développeur tente d’affecter une autre valeur que celles définies par l’énumération, une erreur de compilation apparaît.Le code est ainsi plus sécurisé.• la saisie assistée propose automatique-ment les valeurs possibles.

Le type CombinaisonLe type Combinaison repose sur le même principe que les énumérations, mais permet de combiner les valeurs.

Par exemple, le type d’ouverture d’un fichier peut être représenté par une combinaison : un fichier peut être ouvert avec création automatique et/ou en lecture et/ou en écriture et/ou avec suppression.// Déclarer une combinaisonTypeOuverture est une Combinaison Création Lecture Ecriture SuppressionFIN

Tout comme pour le type Enumération, il suffit de déclarer une variable de type TypeOuverture et de lui affecter une com-binaison de valeurs définies.// Déclaration d’une variable// de type CombinaisonActionFichier est un TypeOuverture

// Le fichier sera ouvert// en lecture et en écritureActionFichier = ... Lecture + Ecriture

Bien entendu, le type Combinaison pré-sente les mêmes avantages que le type Enumération.

LA LETTRE DU SUPPORT TECHNIQUE PC SOFT - 43

Page 23: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

DES RACCOURCIS UTILISÉS,DU TEMPS ÉCONOMISÉ

WINDEV, WEBDEV  et WINDEV Mobile  regorgent  de  raccourcis  pratiques dans les différents éditeurs.Voici une sélection de raccourcis utiles et souvent méconnus.

Dans l’éditeur de code, une fonctionnalité très utile est la sélection en colonne. Pour effectuer une sélection en colonne, il suffit de maintenir la touche Alt appuyée lors d’une sélection par la souris.

Cette fonctionnalité permet également de saisir un texte commun sur plusieurs lignes (très utile pour renseigner rapidement les “CAS” d’un “SELON”)

Faire une sélection de code en colonne

Le marquage de ligne est une fonctionnalité particulière-ment utile pour identifier des lignes à analyser ultérieure-ment, par exemple pendant un débogage.

Pour placer une marque dans le code, c’est Ctrl + F7.

Pour atteindre les marques suivantes et précédentes, les raccourcis sont F7 et Shift + F7.

Marquer des lignes de code

44 - TDF TECH 2013 - www.pcsoft.fr

D’autres raccourcis ....• Pour parcourir les erreurs de compilation, il existe des raccourcis très pratiques : F12 (pour se positionner directement sur l’erreur de compilation suivante dans l’éditeur de code) et Shift + F12 (pour se positionner sur l’erreur précédente).• Pour parcourir les résultats de la recherche, les raccourcis sont F3 et Shit + F3.• Lorsque  plusieurs  éléments  (fenêtres, requêtes, états, etc.) sont ouverts dans l’édi-

teur, il est possible de tous les fermer à l’excep-tion de celui actuellement en visualisation : c’est le “Ferme tout sauf moi” accessible via le raccourci Ctrl + Alt + W.• Le “Copier-Coller multiple” permet de copier plusieurs lignes de codes et de toutes les recoller par la suite. Il suffit d’utiliser le rac-courci Ctrl + Shift + V pour choisir le code à coller dans l’historique.

Une liste plus complèteLe PDF des principaux raccourcis de WINDEV, WEBDEV et WINDEV Mobile est disponible dans l’aide en ligne (http://doc.pcsoft.fr ; sous la section “Principaux raccourcis clavier” de la page d’accueil) et également dans la partie “Annexes” de ce support de cours.

Pour obtenir la liste complète des raccourcis, sous le volet “Accueil”, dans le groupe “Aide en ligne”, déroulez “Aide” et sélectionnez “Raccourcis clavier”.

En version 18, les raccourcis, Ctrl + M et Ctrl + Shift + M permettent respectivement de passer la sélection en minus-cules et en majuscules.

C’est un raccourci très pra-tique pour uniformiser des noms de variables ou des chaînes de caractères.

Passer du code en majuscules / minus-cules

Le raccourci Alt + Entrée permet d’ouvrir la fenêtre de description du champ en cours de manipulation : • depuis l’éditeur de fenêtres (champ sélectionné), • depuis l’éditeur de code (lorsque le curseur est posi-tionné sur le nom du champ).

Ouvrir la description du champ en cours

TDF TECH 2013 - www.pcsoft.fr - 45

Page 24: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

CRÉER UN TABLEAU CROISÉ DYNAMIQUE : FACILE ET RAPIDE AVEC L’ASSISTANT !Le champ Tableau croisé dynamique est un champ décisionnel puissant qui affiche dynamiquement les données calculées issues de différents fichiers d’une base de données.Grâce à un assistant simple et intuitif, ce champ peut être mis en place en quelques secondes. Démonstration en images !

1 Définition des cellules (valeurs)La première étape de l’assistant de création d’un champ

Tableau croisé dynamique consiste à définir les cellules, c’est-à-dire les valeurs qui seront affichées dans le champ.

Ces valeurs seront issues d’un unique fichier de données appelées “fichier source” (par exemple, un fichier de ligne de facture).

Il est possible de définir autant de valeurs que souhaité, ce qui permet d’afficher différentes informations complémentaires.

Attention toutefois à ne pas afficher trop d’informations, ce qui rendrait le tableau croisé dynamique inexploitable (“trop d’informa-tions tue l’information”).

Une valeur est définie par deux éléments :• le type de calcul à réaliser (combo “Afficher”) : somme, moyenne, nombre d’enregistrements, valeur minimum, valeur maximum.• la source de la valeur (combo “Source”) : la source peut être une rubrique du fichier source ou le résultat d’une procédure.

Si vous utilisez une procédure, cette procédure doit absolument :• attendre au moins un paramètre : la valeur passée en paramètre sera une rubrique du fichier source ou d’un autre fichier (liaison multifichier).• renvoyer une valeur numérique.

2 Définition des en-têtes de colonnesLes en-têtes de colonnes sont les regroupements qui seront

affichés en haut du tableau croisé dynamique.Généralement, les colonnes sont utilisées pour afficher les regrou-pements de date (année, mois, etc.).

Pour définir un en-tête de colonne, il suffit de sélectionner la ou les rubriques à afficher. Ces rubriques peuvent être issues de n’importe quel fichier de l’analyse.

Notre astuce : utilisez au maximum les rubriques dans le fichier source, pour éviter les parcours de fichier inutiles.

46 - TDF TECH 2013 - www.pcsoft.fr

4 Source affichéePour chaque en-tête, il est possible de définir la source affichée.

Tout comme pour les valeurs, un en-tête pourra être :• une rubrique d’un fichier de l’analyse,• ou le résultat d’une procédure (cette procédure peut renvoyer une  valeur numérique ou une chaîne de caractères).

Remarques :• Si  la source affichée est une rubrique de  type date, WINDEV propose automatiquement des regroupements utiles : année, semestre, trimestre, quinzaine, mois, jour.• Les procédures ne sont pas disponibles dans  l’assistant. Elles peuvent être utilisées uniquement depuis la description du champ.

5 Et pour les en-têtes de lignes ?La définition des en-têtes de lignes s’effectue exactement

de la même manière que les en-têtes des colonnes :1. vous sélectionnez les rubriques à afficher,2. vous vérifiez le cheminement utilisé,3. vous définissez la source affichée.

Lorsque les colonnes et lignes sont définies, il suffit de valider l’assis-tant de création du champ Tableau croisé dynamique !

6 Tableau croisé dynamique prêt !Et voila ! En quelques clics seulement, le tableau croisé dyna-

mique est créé et prêt à l’emploi.

Bien entendu, tout ce qui a été défini dans l’assistant (valeurs, colonnes, lignes, etc.) peut être modifié par la suite dans la fenêtre de description du champ.

Le champ peut maintenant être personnalisé : modifications des styles, affichage de totaux, personnalisation des cellules par pro-grammation, etc.

3 Liaisons entre valeurs et en-têtesLorsque les rubriques d’origine des en-têtes sont sélectionnées,

l’assistant affiche, pour chaque en-tête, le cheminement de la liaison entre la valeur d’origine et l’en-tête sélectionné.

Ce cheminement est déduit automatiquement par WINDEV en fonction des clés et liaisons de chaque fichier.

Remarque : il est possible que le cheminement détecté par WINDEV ne soit pas le cheminement attendu (par exemple si certains fichiers comportent plusieurs clés ou liaisons). Pensez donc à bien vérifier le cheminement et à le corriger au besoin.

TDF TECH 2013 - www.pcsoft.fr - 47

Page 25: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

TABLEAU CROISÉ DYNAMIQUELe champ Tableau croisé dynamique est un champ décisionnel inévitable.Petit tour d’horizon des possibilités offertes.

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple  “WD TableauCroiséDynamique TDF18” (présent sur le DVD et livré en stan-dard avec WINDEV).

Fonctions de manipulationLa famille de fonctions TCDxxx permet de manipuler un tableau croisé dynamique par programmation.

Remplir le tableauPar défaut, un champ Tableau croisé dyna-mique  est  créé  avec  un  bouton  “BTN_Calculer” qui effectue un appel à la fonction TCDCalculeTout. Cette fonction permet de remplir le champ par recalcul complet.// Remplit le TCD// en recalculant toutTCDCalculeTout(TCD_Statistiques)

Selon le volume de données et les regroupe-ments définis, le calcul des données à afficher

peut prendre un peu de temps.

Dans ce cas, au lieu de demander un recalcul des données à chaque affichage, il est pos-sible de sauvegarder et de recharger le tableau croisé dynamique.

Il suffit d’utiliser les fonctions TCDSauve et TCDCharge. Le tableau croisé dynamique est sauvegardé dans un fichier ayant pour extension “.tcd”.// Sauvegarde le champ// avec sauvegarde de l’IHMTCDSauve(TCD_Statistiques, fRepExe() +[“\”]+ “MonTableau.tcd”, tcdAvecIHM)...// Recharge le tableau// à partir du fichierTCDCharge(TCD_Statistiques, fRepExe()+[“\”]+ “MonTableau.tcd”)

Si votre tableau croisé dynamique affiche des données régulièrement mises à jour, n’hésitez pas à utiliser la fonction TCDCalculeMiseAJour. Cette fonction per-met de recalculer uniquement une partie

des données à partir d’une date donnée.

Il est donc possible de recharger un tableau croisé dynamique précédemment sauve-gardé avec TCDCharge et ne mettre à jour que les données les plus récentes grâce à TCDCalculeMiseAJour.// Met à jour les données// modifiées depuis hierdHier est une DatedHier..Jour--TCDCalculeMiseAJour(... TCD_Statistiques, dHier)

Attention : cette fonction peut être utilisée uniquement si le tableau croisé dynamique possède une colonne, une ligne ou un filtre de type date.

Enrouler, déroulerLes en-têtes de ligne et de colonne peuvent être enroulés et déroulés pour afficher les valeurs avec plus ou moins de détails :• TCDEnroule et TCDEnrouleTout per-mettent respectivement d’enrouler un en-tête ou tous les en-têtes• TCDDéroule et TCDDérouleTout per-

48 - TDF TECH 2013 - www.pcsoft.fr

mettent respectivement de dérouler un en-tête ou tous les en-têtes.

ExportIl est possible d’exporter le contenu du champ Tableau croisé dynamique vers Excel via la fonction WLangage TCDVersExcel.// Exporte le tableau vers Excel// en conservant la // mise en formeTCDVersExcel(TCD_Statistiques, fRepExe()+[“\”]+“Export.xls”, taAvecMiseEnForme)

FAALe champ Tableau croisé dynamique bénéficie bien évidemment des FAA (Fonctionnalités Automatique de l’Application).

Rappel :Les fonctionnalités automatiques de l’appli-cation (FAA) permettent d’ajouter des fonc-tionnalités à votre application sans aucune ligne de code. Il suffit de cocher les options appropriées afin de bénéficier de ces fonc-tionnalités. Par défaut, la majorité des fonc-tionnalités sont activées.

Les FAA du tableau croisé dynamique per-mettent de :• copier le contenu d’une cellule, d’une ligne, d’une colonne, de tout le champ,• exporter le contenu du champ vers Excel,• charger une sauvegarde du tableau croisé dynamique (fichier “.tcd”),• enregistrer le contenu dans un fichier “.tcd”• restaurer la taille et les regroupements d’ori-gine du champ.

Masque d’affichagePour faciliter la lecture du tableau croisé dyna-mique, il est possible de modifier les masques d’affichage des valeurs. Cette fonctionnalité est très utile si votre tableau affiche plusieurs valeurs. Vous pouvez par exemple ajouter un suffixe “Quantité :” ou “Moyenne :”.

Modifier le style d’une cellule par programmationLe champ Tableau croisé dynamique étant un champ décisionnel, il est intéressant de pouvoir mettre en avant les chiffres importants du tableau pour faciliter la lecture de l’utili-sateur : afficher en rouge un chiffre d’affaires insuffisant ou au contraire afficher en vert un chiffre record.

Il suffit pour cela, dans le traitement “Affichage d’une cellule” du champ, de manipuler les valeurs en modifiant leurs propriétés.// Hachure les cellules// sans donnéeSI VAL_Qté = 0 ALORS VAL_CA..StyleFond = ... styleHachureDiagonaleGauche VAL_Qté..StyleFond = ... styleHachureDiagonaleGaucheFIN

Pour mettre en forme une valeur, il faut sou-vent tenir compte des en-têtes de lignes et de colonnes et de leur niveau d’affichage : si la cellule correspond à une valeur mensuelle ou trimestrielle, un chiffre d’affaires ne sera pas considéré comme insuffisant pour le même montant.

Pour savoir si un en-tête est visible ou non, il suffit de tester sa valeur : si la valeur est étoile (“*”), l’en-tête n’est pas visible (il est replié).SELON Vrai // Affichage au mois CAS COL_Mois <> “*” // CA de 500.000 € au moins SI VAL_CA >= 500000 ALORS VAL_CA..CouleurFond=VertPastel SORTIR SELON

// Affichage au trimestre CAS COL_Trimestre <> “*” // CA de 1.500.000 € au moins SI VAL_CA >= 1500000 ALORS VAL_CA..CouleurFond=VertPastel SORTIR SELON ...FIN

Définir et appliquer des filtresLes filtres permettent de restreindre tempo-rairement le contenu du tableau croisé dyna-mique (par exemple pour afficher uniquement les données d’une famille de produit).

La mise en place d’un filtre s’effectue en deux étapes :1. Dans un premier temps, le filtre doit être défini dans la description du tableau croisé dynamique.Dans l’onglet “Contenu”, cliquez sur la table “Filtre d’affichage (TCDFiltre)” puis sur le bou-ton “Ajouter” et définissez la rubrique sur laquelle sera basé le filtre.

2. Par programmation, il suffit alors d’appeler la fonction TCDFiltre en précisant :• le champ Tableau croisé dynamique,• le nom du filtre d’affichage,• la valeur du filtre à appliquer.// Filtre sur la famille produitTCDFiltre(TCD_Statistiques, COL_Filtre_Libellé, “Chemisette”)

Nos astuces :• Pensez toujours à proposer l’annulation du filtre (via un bouton ou une option du champ combo). Il suffit de passer chaîne vide (“”) en valeur à la fonction TCDFiltre.• Nommez toujours de façon intelligible les en-têtes et filtres du champ pour les diffé-rencier rapidement dans l’éditeur de code.

Utiliser une procédure comme “Source affichée”Les valeurs et en-têtes peuvent être des rubriques de fichiers mais également des résultats de procédures (globales à l’appli-cation ou locales à la fenêtre qui contient le champ).

Toute procédure peut être utilisée à condi-tion que :• elle accepte au moins un paramètre,• elle renvoie une valeur (de type numérique pour les valeurs, de type chaîne pour les en-têtes).

Dans notre exemple, la procédure Continent est utilisée comme source affichée d’en-tête de ligne.

Cette procédure attend en paramètre un pays et renvoie le continent associé.

TDF TECH 2013 - www.pcsoft.fr - 49

Page 26: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

WINDEV permet d’accéder à  toutes  les bases de données  : HyperFileSQL bien entendu, mais également Oracle, MySQL, DB2, etc.Mais saviez-vous que vous pouvez même manipuler des données issues de bases “Big Data” ?

WINDEV & BIG DATA : EXEMPLE D’UTILISATION DE “MONGODB”

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple “WD BigData TDF18” (présent sur le DVD).Ce projet nécessite la présence d’une base MongoDB sur le poste. Consultez le para-graphe “Installer une base MongoDB” pour plus d’informations.

Le “Big Data”, c’est quoi ?Big Data est une appellation qui désigne des ensembles de données tellement volumineux qu’il devient difficile de les gérer avec un SGBDR traditionnel.

Dans ce cas, les bases de données utilisées sont de type “NoSQL”.

Ces bases sont très à la mode depuis quelques années : Hadoop, Riak, Cassandra, MongoDB, ...

ParticularitésEn plus de l’aspect “volume important”, les bases NoSQL ont d’autres points communs :• les enregistrements n’ont pas tous la même structure (il n’y a pas d’analyse),• ces bases sont capables de se déployer en grappe sur des dizaines ou des centaines de serveurs pour absorber facilement une montée en charge.

Ces bases possèdent malheureusement des points auxquels il faut faire particulièrement attention :• elles ne sont pas relationnelles : c’est donc au développeur de gérer l’intégrité par pro-grammation,• elles ne sont pas interrogeables en SQL (chaque base propose son langage de requê-tage),• certaines bases ne garantissent pas la disponibilité des données en permanence.

Installer une base MongoDBPour installer une base MongoDB de test, il suffit de suivre les instructions suivantes :1. Téléchargez la dernière version de la base depuis  le site Web “http://www.mongodb.org/downloads”. La base est disponible en version 32 bits et 64 bits.

2. Décompactez le contenu de l’archive zip dans le répertoire “C:\Program Files\MongoDB”.

3. Créez le répertoire qui contiendra la base de données (par exemple : “C:\BaseMongoDB”).

4. Créez un fichier de configuration “C:\BaseMongoDB\mongo.conf” (ce fichier peut être vide par défaut).La syntaxe du fichier de configuration est détaillée ici : “http://docs.mongodb.org/manual/reference/configuration-options/”.

50 - TDF TECH 2013 - www.pcsoft.fr

5. Lancez le moteur de la base avec la ligne de commande suivante :mongod.exe --dbpathC:\BaseMongoDB --configC:\BaseMongoDB\mongo.conf

WINDEV & MongoDBL’exemple “WD BigData TDF18” est un exemple d’utilisation d’une base NoSQL : une base MongoDB.

La base MongoDB est une base “orientée document”.Pour simplifier, elle peut être représentée comme une sorte de tableau associatif qui relie une clé à un document.Un document est lui-même un tableau asso-ciatif (couples clés, valeurs).Dans la terminologie de MongoDB, on parle de collection de documents.

Le composant interne “MongoDB” de l’exemple contient tous les éléments pour se connecter à une base MongoDB et la manipuler.

ConnexionLa connexion à la base s’effectue via la fonction MongoDBConnecte, qui attend le nom de la connexion (utilisé par les autres fonctions), l’adresse et le port du serveur ainsi qu’un timeout de réponse.// Connexion à la base // de donnéesMongoDBConnecte(... CxMongo, “127.0.0.1”, *, 30000)

Ajouter des enregistrements de testsLa fonction AjoutAuto de la fenêtre “FEN_TableauDeBord” permet d’ajouter des enre-gistrements aléatoires pour faciliter le test du composant interne.

Parcourir une collectionLe parcours d’une collection s’effectue via la fonction MongoDBInitParcours. Cette fonction attend en paramètre :• la collection à parcourir,• un critère de filtrage et de tri (variable de type STRequete).stReq est un STRequetestCritereDateSys est un STFiltreDate// Filtre les avis du jourstCritereDateSys.DateAvis[MONGODB_OP_SUPERIEUR_OU_EGAL] = DateSys()stReq.$query = stCritereDateSys

// Le tri se fera sur la clé DateAvis,// de façon décroissantestReq.$orderby[“DateAvis”] = ... MONGODB_TRI_DESC// Initialise un parcours “Recherche”// sur la collection “avis”// de la base “client”MongoDBInitParcours(“Recherche”, CxMongo,“client.avis”,stReq,10)

Le parcours peut ensuite être effectué simple-ment avec la fonction MongoDBLitSuivant.stAvis est un STAvisConsoTANTQUE MongoDBLitSuivant(... “Recherche”, stAvis) ...FIN

Map ReduceUne des caractéristiques des bases comme MongoDB est de pouvoir fonctionner sur des grappes de serveurs. Cela permet de paralléliser certaines opérations.

Le Map Reduce est une technique de pro-grammation qui exploite cette spécificité.Dans notre exemple, cette technique est employée pour le calcul de la note moyenne d’un produit.

Le Map Reduce consiste à découper le travail en deux étapes :1. L’étape de Map est une fonction qui sera appliquée sur chaque enregistrement de la

collection de données et qui retourne un couple “clé, valeur”. Dans notre exemple, la fonction retourne le nom du produit et sa note.// La fonction de map extrait// les couples (Nom, Note)sFctMap est une chaîne = [ function(){ emit(this.NomProduit,this.Note); };]

Remarque : la fonction de Map est écrite en Javascript (c’est le langage de requêtage de MongoDB).

2. L’étape de Reduce, c’est une autre fonction qui va rassembler les résultats du Map pour chaque valeur de clé et retourner un résultat.Dans notre exemple, la fonction de Reduce se contente de calculer la moyenne des notes.// La fonction reduce calcule// la moyenne des notessFctReduce est une chaîne = [ function(cle,tabValeur){ return Array.avg(tabValeur); };]

Le résultat du Map Reduce est donc la note moyenne du produit.

Accès universelAvec WINDEV, vous disposez de la base de données HyperFileSQL bien entendu, mais vous avez éga-lement accès à toutes les bases du marché grâce aux accès natifs ou par OLE DB / ODBC :• SQL Server,• Oracle,• Informix,• DB2, • Progress,• SQL Azure,• MySQL,• AS/400,• Sybase, • PostgreSQL,• SQLite,• ...

TDF TECH 2013 - www.pcsoft.fr - 51

Page 27: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

WEBDEV : TOUT POUR FAIRE UN SITE DANS L’AIR DU TEMPS

WEBDEV permet  la mise  en  place  rapide  de  sites  beaux  et  fonctionnels. Et  si  votre  site a besoin d’un  relooking, avec  les  fonctionnalités WEBDEV et quelques astuces, vous pouvez le mettre au goût du jour facilement et rapidement. Suivez le lifting d’un site pas à pas et retrouvez le résultat dans l’exemple “WW_Precilia_Voyages_TDF18”.

Une ambiance sobreLe choix de l’ambiance est primordial pour votre site puisque cette ambiance permet de vous identifier auprès de votre public :• une ambiance sobre comme “Elegant” donnera à votre site un look épuré et professionnel.• une ambiance pleine de pep’s comme “Spicy” donne à votre site un look jeune et dynamique.

Le choix de l’ambiance est effectué soit à la création de projet, soit dans la fenêtre de des-cription du projet existant. Pour notre site, nous allons choisir “Elegant”.

Et n’oubliez pas de choisir une palette de couleurs en accord avec votre charte !

52 - TDF TECH 2013 - www.pcsoft.fr

Une occupation de l’espace grâce aux ancragesLes zones présentes dans les pages et les modèles bénéficient des ancrages. Un ancrage permet de définir le comportement d’une zone (ou d’un champ) en fonction du redi-mensionnement du navigateur (ou du contenu du champ).

Pour donner un côté actuel à notre site, l’idée est d’ancrer les haut et bas de page en largeur afin qu’ils occupent toute la largeur du navigateur. Cette mise en forme permet d’éviter l’effet du site “posé” dans le navigateur.

Pour ancrer une zone, dans l’éditeur de pages, passez en mode “Zoning” puis faites un clic droit sur la zone à ancrer. Pour notre exemple, l’ancrage à appliquer est donc un ancrage en “Largeur” et “Adapter au navigateur”.

Une image de fond pour habiller la page...Une image de fond de page permet de mettre en avant l’entreprise, un produit phare ou encore une promotion en cours.Cette image permet également d’habiller le contenu central du site, le liant ainsi parfaitement au navigateur.

Pour positionner une image de fond, ouvrez la description de la page ou du modèle de pages. Dans l’onglet “Style”, choisissez l’élément “Fond du navigateur” et sélectionnez l’image de fond à utiliser.

Bien entendu, n’utilisez pas d’images trop chargées qui nuiraient à la lisibilité globale du site et veillez au poids de votre image (pour ne pas ralentir l’affichage de la page).

... et une transparence des zonesSi vous utilisez une image de fond qui occupe complètement la page, il est intéressant de ne pas “couper” cette image avec les zones de textes. Pour que l’image soit visible et pour conserver une lisibilité des zones, il est possible de jouer sur l’opacité des zones.

Dans notre exemple, l’opacité de toutes les zones a été modifiée à 90% : l’image de fond est bien visible et les zones du site s’intègrent parfaitement à cette image.

TDF TECH 2013 - www.pcsoft.fr - 53

Page 28: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

Une réglette dans l’air du tempsAvec les versions 18, les champs Réglettes disposent maintenant de nombreux styles pour s’adapter à tous les sites. Et chaque ambiance propose ses propres styles !

Pour changer le style d’un champ Réglette, comme pour tous les autres champs, il suffit de sélectionner l’option “Choisir un style WebDev” du menu contextuel (clic droit sur le champ).

Des polices personnaliséesPour accentuer davantage le look de votre site et renforcer son identité, vous avez la possibilité d’utiliser des polices (“fonts”) autres que les polices standard utilisées sur le Web. Vous pouvez par exemple utiliser des polices proposées par les “Google Webfonts” qui sont des polices mises gratuitement à disposition et utilisables dans des sites Internet.

Pour utiliser une police personnalisée, ouvrez la description d’un champ (libellé par exemple) et utilisez le bouton “...” près de la combo “Police”. Cliquez sur le bouton “Nouveau” puis sur le bouton “Importer une police” : vous aurez alors le choix entre importer une police présente sur le poste ou une police de Google Webfonts.

Important : lorsque vous choisissez une police de Google Webfonts, celle-ci est automatique-ment installée sur le poste de développement, pour avoir un rendu réel de la police en édition.

Un menu complet ... Le menu d’un site est le point d’accès central du site : il doit donc être à la fois clair et complet.Si le champ Menu permet de mettre rapidement en place des accès, sa variante “menu popup” offre l’avantage de pouvoir afficher des options visuelles.

Un “menu popup” est simplement un champ Menu dont chaque option affiche une page popup (à la place des sous-options). Vous pouvez alors remplir la popup avec différents champs : images, liens, etc.

Pour paramétrer un menu popup, ajoutez d’abord un champ Menu avec les différentes options souhaitées.Vous pouvez alors créer les différentes pages popup correspondantes aux différentes options. Pour créer une popup, sous le volet “Création”, dans le groupe “Conteneurs”, cliquez simplement sur le bouton “Popup” : vous pouvez alors éditer la popup comme une page classique.Enfin, dans la description de chaque option du menu, onglet “IHM”, choisissez la page popup à afficher lors d’un clic sur l’option.

... et animéLes popup peuvent avoir un effet lors de leur ouverture et de leur fermeture. Pour obtenir un effet “affichage de menu”, nous vous conseillons d’utiliser un effet “Balayage vers le bas” lors de l’ouverture de la popup.Pour définir un effet sur une popup, dans l’onglet “Style” de la description de la popup, choisissez l’élément “Effets”. Choisissez un effet “Balayage” et paramétrez-le (via le bouton “Détail”) avec un sens “Balayage vers le bas” pour le déclenchement “Affichage de la popup”.

54 - TDF TECH 2013 - www.pcsoft.fr

Un champ Potentiomètre convivial et intuitifLe champ Potentiomètre est un champ idéal pour choisir graphi-quement une valeur (potentiomètre linéaire) ou un intervalle de valeurs (potentiomètre d’intervalle) : par exemple un budget minimum et maximum dans une recherche. Il remplace avantageusement des champs de saisie et offre une navigation plus fluide en permettant à l’Internaute de se passer de son clavier.

Pour ajouter un potentiomètre, sous le volet “Création”, dans le groupe “Champs graphiques”, déroulez “Potentiomètre” et sélectionnez le type de potentiomètre désiré.

Pour récupérer les valeurs du potentiomètre, il suffit d’utiliser les propriétés Valeur (potentiomètre linéaire) ou ValeurInférieure et ValeurSupérieure (potentiomètre d’intervalle).// Montants sélectionnés par le potentiomètre d’intervalleLIB_MontantInférieur = POTI_Budget..ValeurInférieureLIB_MontantSupérieur = POTI_Budget..ValeurSupérieure

Des petits arrangements qui font toute la différenceWEBDEV permet de personnaliser votre site à 100 %. Et comme ce sont souvent les petits détails qui font la différence entre un site “joli” et un site “très joli”, voici deux modifications très simples pour accentuer encore plus le style de votre site.

Cadre de zone de saisieSi votre site dispose de champs de saisie (formulaire d’inscription ou de contact par exemple), n’hésitez pas à les personnaliser en adaptant leur cadre au look.Dans notre site, les cadres ont été légèrement arrondis et une ombre interne a été ajoutée : la modification est très discrète mais bien visible.

Le bouton calendrier personnaliséPour les champs de saisie de type date qui affichent un bouton calendrier, il est bon de savoir que l’image du calendrier est personnalisable.

Des effets discrets qui donnent de la viePour chaque champ d’une page, il est possible de définir des effets en fonction de l’état du champ. Cette fonctionnalité permet de casser le côté parfois trop statique des pages.Il est par exemple possible de faire clignoter (légèrement) un lien promotion ou de faire apparaître un bouton en fondu.

Dans la page de résultats de recherche de notre site, un effet de grossissement au survol a été appliqué aux images des hôtels.

Notre conseil : ne surchargez pas vos pages en effets.Un effet bien placé sur deux ou trois champs essentiels suffit généralement.

TDF TECH 2013 - www.pcsoft.fr - 55

Page 29: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

WEBDEV :LE CHAMP AGENDAEn  version  18,  WEBDEV  s’enrichit  d’un  nouveau  champ  de  gestion  du temps : le champ Agenda. Vos sites WEBDEV classiques, AWP et PHP vont pouvoir en profiter !

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple “WW_TamesBoat_TDF18” (présent sur le DVD).

PrésentationÀ l’instar du champ Planning, déjà présent dans WEBDEV depuis la version 17, le champ Agenda permet de représenter des rendez-vous avec un affichage au jour, à la semaine ou au mois. À la différence du planning, l’agenda permet de gérer les rendez-vous d’une seule et unique ressource (les rendez-vous d’une personne, les réservations d’un yacht, ...).

Dans notre exemple, ce champ affiche les réservations au mois d’un yacht.

Remplir un AgendaLe champ Agenda peut être rempli soit à partir d’une source (fichier, requête, variable) soit par programmation.

Remplissage à partir de fichiersPour remplir un agenda à partir d’un fichier de données, il suffit de sélectionner le fichier source dans l’assistant de création du champ.

L’assistant détecte alors automatiquement les rubriques à utiliser pour les informations obligatoires du champ [Fig. 1].Pour les données qui n’ont pas pu être détec-tées, vous pouvez directement sélection-

ner vous-même la rubrique à utiliser. Bien entendu, il est possible d’utiliser une rubrique du fichier source mais également une rubrique d’un autre fichier relié [Fig. 2].

Important : la détection automatique des rubriques dépend à la fois du nom et du type des rubriques du fichier. Lors de la définition de l’analyse, pensez donc à nommer de façon intelligible les différentes rubriques et à utiliser des types adaptés (rubriques de type Date ou DateHeure pour le début et la fin d’un rendez-vous).

Il est bien entendu possible de choisir  la 

source et les rubriques à utiliser sur un champ Agenda existant, depuis l’onglet “Contenu” de la description du champ.

Remplissage par programmationLe champ Agenda peut également être rempli par programmation. Il suffit pour cela d’utili-ser la fonction AgendaAjouteRendezVous ainsi que le type de variable RendezVous du WLangage.NouvelleResa est un RendezVous// Titre du rendez-vousNouvelleResa.Titre =... “Réservation confirmée” // Date de début et finNouvelleResa.DateDébut = ... “20130302”NouvelleResa.DateFin = ... “20130309”// Ajoute le rendez-vous au champAgendaAjouteRendezVous(... AGD_ACTUEL, NouvelleResa)

Les fonctions AgendaLes fonctions AgendaXXX du WLangage permettent de manipuler le champ Agenda.N’hésitez pas à consulter l’aide en ligne pour plus de détails.

Fig. 1

Fig. 2

56 - TDF TECH 2013 - www.pcsoft.fr

WEBDEV :LE CHAMP TABLE HIÉRARCHIQUELe champ Table hiérarchique est le subtil mélange des champs Table et Arbre. Déjà présent en WINDEV, ce champ arrive dans sa version Web pour offrir à vos sites plus de possibilités.

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple “WW_TamesBoat_TDF18” (présent sur le DVD).

PrésentationLe champ Table hiérarchique est le rappro-chement du champ Table et du champ Arbre :• l’affichage est basé sur  la structure d’un champ Table (colonne, ligne, cellule).• une colonne de type Arbre permet de définir une notion de hiérarchie.

Dans notre exemple, ce champ est utilisé pour représenter les réservations de yachts :• les  différentes  colonnes  de  la  table contiennent les informations propres à chaque bateau (nombre de cabines, disponibilité, etc.).• les nœuds de la colonne hiérarchique per-mettent de regrouper les bateaux sur leur île d’attache, les îles étant elles-mêmes regrou-pées par archipel.

Remplir un champ Table hiérarchiqueLe champ Table hiérarchique peut être rempli soit à partir d’une source (fichier, requête, variable) soit par programmation.

Remplissage à partir de fichiersPour remplir une table hiérarchique à partir de fichiers de données, il suffit de sélectionner les différentes sources de chaque niveau de hiérarchie.

Cette opération peut être réalisée soit dans l’assistant de création du champ, soit directe-ment dans l’onglet “Contenu” de la description d’un champ existant.

Pour définir les différents niveaux, partez toujours du niveau de hiérarchie le plus haut.Lorsque vous choisissez une source, WEBDEV détecte automatique la liaison avec la source précédente en fonction des liaisons définies dans l’analyse.

Dans notre exemple, le niveau le plus haut est l’archipel, puis l’île et enfin le bateau [Fig. 1].

Remplissage par programmationPour remplir un champ Table hiérarchique, il suffit d’utiliser les fonctions :• TableAjouteLigne pour les nœuds prin-

cipaux, c’est-à-dire le premier niveau hié-rarchique,• TableAjouteFils pour les niveaux de hié-rarchie suivants.nLigneZoneEnCours est un entiernLigneIleEnCours est un entier// Ajoute une zone// (premier niveau de hiérarchie)nLigneZoneEnCours = ... TableAjouteLigne(... TABLEH_Zones, “Antilles françaises”) // Ajoute une île à la zone// (deuxième niveau de hiérarchie)nLigneIleEnCours = ... TableAjouteFils(... TABLEH_Zones, nLigneZoneEnCours, “Marie-Galante”)

Notre astuce :Vous pouvez personnaliser les images des nœuds via les propriétés ImageEnroulée et ImageDéroulée.Il suffit d’utiliser ces propriétés avant l’ajout de lignes via les fonctions TableAjouteLigne et TableAjouteFils.// Définit les imagesTABLEH_Zones..ImageEnroulée=... “icone_archipel.png”TABLEH_Zones..ImageDéroulée=... “images\icone_archipel.png”

Fig. 1

TDF TECH 2013 - www.pcsoft.fr - 57

Page 30: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

En version 18, WEBDEV permet de mettre en place des tâches (chaque tâche étant une procédure WLangage) directement sur le serveur.Les tâches différées permettent de déporter des traitements qui prennent du  temps  sur  le  serveur d’application WEBDEV  :  l’envoi d’un email  ou  le calcul de statistiques par exemple.Les tâches planifiées permettent d’exécuter de façon régulière une opération donnée : l’envoi d’un mailing sur les promotions en cours par exemple.

WEBDEV : TÂCHES PLANIFIÉES ET TÂCHES DIFFÉRÉES

Exemple de tâche planifiée : Tous les jours de la semaine, à 3h, un email de relance est envoyé aux clients qui n’ont pas confirmé leur réservation.

Pour indiquer à une procédure qu’elle doit s’exécuter en tâche planifiée, il suffit de cliquer sur le bouton dans le bandeau de l’éditeur de code, de sélectionner l’option “Tâche planifiée (WebDev)” et de planifier les exécutions de la tâche : mois, jour(s), horaire(s).Il est également possible de définir une durée maximale d’exécution de la tâche.

Aux horaires programmés (3h du matin, tous les jours de la semaine), la procédure RelanceTousClients est automatiquement lancée par le serveur WEBDEV.

58 - TDF TECH 2013 - www.pcsoft.fr

Exemple de tâche différée : Quand l’Internaute valide sa réservation, un email de confirmation lui est envoyé. L’envoi réel de l’email est effectué en différé sur le serveur. L’Internaute n’est ainsi pas “bloqué” pendant l’envoi.

Pour indiquer à une procédure qu’elle doit s’exécuter en différé, il suffit de cliquer sur le bouton dans le bandeau de l’éditeur de code, de sélectionner l’option “Tâche différée (WebDev)”. Il est alors possible de définir une durée maximale d’exécution de la tâche et d’indiquer si la tâche va utiliser ou non HyperFileSQL (“copie” du contexte).

(1) Lorsque l’utilisateur confirme sa réservation....

(2)... la procédure EnvoiEmailClient est exécutée sur le serveur WEBDEV ...

(3) ... et l’Internaute peut pour-suivre immédiatement sa navi-gation, sans attente.

TDF TECH 2013 - www.pcsoft.fr - 59

Page 31: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

INSTALLATION D’APPLICATIONS DANS LE CLOUD : ACCESSIBILITÉ MAXIMUM !

Vos utilisateurs sont éparpillés partout dans le monde ? Vos commerciaux itinérants n’ont pas accès à votre réseau ?Grâce à PCSCloud,  vous mettez  vos applications à disposition de  tout  le monde, sur Internet. Et en plus, elles sont toujours à jour !Petit détour par les nuages, en images.

1 Création de l’installation CLOUDPour lancer la création de l’installation de votre application,

sous  le volet  “Projet”, dans  le groupe “Génération”, cliquez sur “Procédure d’installation”.

Dans l’assistant qui se lance, définissez les informations de génération de l’exécutable puis passez à l’étape “2 - Installation”.

Pour pouvoir déployer une application dans le CLOUD, sélectionnez le type d’installation “Installation par HTTP(S) ou CLOUD” (ou “Installation multisite”, qui est basée sur l’installation par HTTP).

2 Type de déploiement : immédiatSur le plan de choix du type de déploiement, choisissez

“Déployer immédiatement dans le CLOUD”.

Remarque : si vous souhaitez effectuer le déploiement ultérieurement, choisissez “Créer un package de déploiement”. Il suffira de lancer le package créé et de suivre l’assistant.

3 Choix de la plateformeL’assistant d’installation vous invite alors à saisir les paramètres

de connexion de votre compte CLOUD. Si vous ne disposez pas encore d’un compte CLOUD, cliquez sur le lien “Je n’ai pas de compte CLOUD” pour en créer un.

Vous pouvez alors lister vos plateformes (bouton “Lister les pla-teformes”) et choisir celle sur laquelle l’installation sera déployée.

Important : seules les plateformes configurées pour être “Serveur d’installation” sont listées. Pour configurer une plateforme, rendez-vous sur votre portail PCSCloud.

Remplissez les différents plans de l’assistant et validez.

Remarque : pour plus de sécurité, que vous déployiez dans le CLOUD ou sur un réseau local, nous vous conseillons fortement de signer numériquement vos installations, ainsi que vos exécutables.

60 - TDF TECH 2013 - www.pcsoft.fr

4 Déploiement automatiqueA la fin de l’assistant, l’installation est créée et automatiquement

déployée dans le CLOUD sur la plateforme choisie.

Remarque : le déploiement de l’installation s’effectue par FTP et peut prendre quelques minutes (qualité de la connexion, taille de l’application et donc de l’installation, etc.)

À la fin du déploiement, l’assistant affiche un lien d’accès à la page de téléchargement.

5 Page de téléchargementLa page de téléchargement est une page automatiquement

générée par WINDEV qui contient simplement un lien vers le fichier d’installation (fichier INSTALL.EXE).

Vous pouvez donc transmettre l’adresse de cette page à vos utilisateurs ou, si vous possédez un site, récupérer simplement le lien du bouton “TELECHARGER” et  l’utiliser pour proposer  le téléchargement depuis votre site.

Ce  lien est de  la  forme “http://<nom_plateforme>.pcscloud.net/INSTALL/<nom_application>/INSTALL/INSTALL.EXE”.

6 Lancement de l’installation (poste utilisateur)

L’installateur qui est téléchargé va permettre d’installer directement l’application (ou l’installation serveur en cas d’installation multisite) directement sur le poste en cours.

Et voilà : vos utilisateurs seront toujours à jour de vos applications.

Merci le CLOUD !

Note : depuis le tableau de bord CLOUD, il est possible de mettre en place un filtrage des IP autorisées.

Le Cloud permet de déployer vos installations, sites WEBDEV, Webservices et bases de données HyperFileSQL.Le Cloud, c’est une plateforme matérielle préconfigurée mise à votre disposition : vous n’avez pas à vous préoccuper du matériel, de la maintenance, des licences, de la sécurité du serveur.Et vous accédez à vos données de n’importe où dans le monde !

PCSCloud gère pour vous !

Toutes les informations sur le Cloud sont disponibles à cette adresse : “www.pcscloud.net”.

TDF TECH 2013 - www.pcsoft.fr - 61

Page 32: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

ANDROID : WIDGETS, NOUVEAUX CHAMPS, ACCÈS À L’AGENDA, ...

La version 18 de WINDEV Mobile apporte son lot de nouveautés pour les plates-formes Android  :  la création de Widgets,  les champs Calendrier et Zone multiligne, le dessin d’itinéraires sur cartes, l’accès à l’agenda, ...Suivez le guide !

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple “Android Immo TDF18”, spécialement adapté aux tablettes (présent sur le DVD).

Widget AndroidUn widget Android est une fenêtre qui est toujours visible directement sur le bureau de la table ou du téléphone.Un widget permet d’afficher des informations simples et utiles à l’utilisateur : l’heure d’un prochain rendez-vous, un rappel, etc.

Pour créer un widget avec WINDEV Mobile, c’est très simple : il suffit de créer une nouvelle fenêtre et de sélectionner l’option “Vierge pour widget”.Il  est  également possible de passer  une fenêtre existante en fenêtre “widget” : dans la fenêtre de description de la fenêtre, onglet “Détail”, cochez simplement l’option “Widget (Android)”.

Attention : un widget est géré par le sys-tème, ce qui provoque des comportements spécifiques.Certaines fonctionnalités sont bloquées (par exemple, la fonction OuvreFille n’est pas disponible).

La fonction WLangage WidgetLanceAppli permet de lancer l’application depuis le wid-get. Cette fonction attend en paramètre le nom de la fenêtre à ouvrir dans l’application et les paramètres éventuels à passer à la fenêtre.

// Ouvre l’application sur la// fenêtre de rechercheWidgetLangeAppli(FEN_Recherche)

L’affichage du widget est rafraîchi à 3 moments précis :• après l’ajout d’une nouvelle instance du wid-get sur l’écran d’accueil,• après un clic sur un bouton ou une image du widget,• après la mise à jour du contenu du widget.

La fonction WLangage WidgetAffiche per-met de rafraîchir manuellement l’affichage.// Rafraîchit l’affichage de la// fenêtre widget en coursWidgetAffiche()

Notre astuceSi vous utilisez du code commun entre widget et fenêtres classiques, vous pouvez utiliser la fonction WLangage EnModeWidget, pour savoir si l’exécution est en mode widget.De façon générale, les fonctions EnModeXXX permettent d’identifier précisément la plate-forme d’exécution courante pour adapter le code au besoin.

Accès rapide dans les zones répétéesDans une zone répétée qui contient de nom-breuses lignes (liste de contacts, de produits ou de biens), il peut être intéressant de pro-poser un accès rapide à l’utilisateur.

Cet accès rapide consiste à afficher une réglette alphabétique qui peut être survo-

lée. Lorsque l’utilisateur survole une lettre donnée, la zone répétée est automatiquement positionnée sur la première ligne indexée par cette lettre.

Pour activer cet accès rapide, dans l’onglet “Détail” de la zone répétée, il suffit de cocher “Déplacement rapide” et de sélectionner l’attribut qui sera indexé.

Dans notre exemple, la zone répétée contient les villes de recherche, triées par ordre alpha-bétique.L’attribut indexé est donc naturellement l’attri-but “ATT_Nom” qui contient le nom de la ville.

62 - TDF TECH 2013 - www.pcsoft.fr

Image en portait ou paysage ?Lorsqu’une photo est effectuée par un appareil (téléphone ou appareil photo numérique), des informations Exif sont ajoutées.Ces données Exif fournissent différentes informations sur la capture et notamment l’orientation de la photographie : portrait ou paysage.Ces données peuvent être utilisées dans les champs Image pour adapter automatique-ment l’image et l’afficher correctement.

Il suffit de cocher l”option “Orienter selon les données Exif de l’image”.

Images chargées en arrière-planPour accélérer l’affichage d’interfaces conte-nant des images volumineuses, il est possible de demander à charger les images en arrière-plan [Fig. 1].

Utilisé dans une zone répétée, le charge-ment en arrière-plan, permet un déplacement

rapide dans les zones répétées affichant des images.Pour que le chargement d’une image s’effec-tue en tâche de fond, il suffit de cocher l’option “Chargement en tâche de fond” dans l’onglet “Détail“ de la description du champ Image.

Important : par défaut, les images affichées dans une zone répétée sont automatique-ment chargées en tâche de fond.

Champ Zone multiligneLe champ Zone multiligne est un champ issu de l’univers iOS (iPhone/iPad). Il permet d’afficher des regroupements de champs :• des options de  recherche  (cas de notre 

exemple),• des données sur un contact,• etc.

Dans notre exemple, le champ Zone multiligne est utilisé dans la fenêtre de recherche et contient les options de recherche de biens :• un champ de saisie de recherche,• un interrupteur pour choisir le type de bien,• une zone répétée des villes,• un bouton “Rechercher”.

Pour plus de détails sur la création et la mani-pulation du champ Zone multiligne, n’hésitez pas à consulter l’aide en ligne ou le support de cours du TDF 2012 (disponible sur le site de PC SOFT et en dossier spécial de la LST 88).

Accès aux rendez-vousEn version 18, il est possible d’accéder facilement aux rendez-vous du téléphone

Pour les images chargées en tâche de fond, une image de chargement apparaît tant que l’image définitive n’est pas complètement chargée.

Fig. 1

TDF TECH 2013 - www.pcsoft.fr - 63

Page 33: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

ANDROID (SUITE)

(ou de la tablette) à l’aide des fonctions RendezVousXXX et du type de variable RendezVous du WLangage :• RendezVousListeCalendrier permet de récupérer tous les calendriers de l’utilisateur.// Liste tous les calendriers// de l’utilisateurtabCalendriers est un tableau de Calendrier = ... RendezVousListeCalendrier()

• RendezVousListe permet de récupérer, pour une période donnée, les rendez-vous d’un calendrier à partir de son nom.// Liste les rendez-vous de demain// sur le calendrier demandétabRDV est un tableau de RendezVoustabRDV = RendezVousListe(... MonCalendrierPro, dDemain)

• RendezVousAjoute permet d’ajouter un rendez-vous dans un calendrier de l’utilisateur.

// Paramètre le rendez-vousMonRendezVous est un RendezVousMonRendezVous.Titre = ... “RDV M. JACOB”MonRendezVous.DateDébut = ... “20130301080000”MonRendezVous.DateFin = ... “20130301103000”// Ajoute le rendez-vous// au calendrierRendezVousAjoute(... MonCalendrierPro, MonRendezVous)

Champ CalendrierLe champ Calendrier est un champ standard très visuel, idéal pour aider l’utilisateur à la

saisie d’une date.Pour créer un champ Calendrier, rien de plus simple : vous le prenez depuis le ruban et vous le glissez sur la fenêtre, à l’emplacement voulu. Et voilà !

Dans l’onglet “Style”de la description du champ [Fig. 2], vous avez accès aux différents élé-ments du champ Calendrier : vous pouvez donc modifier le rendu très simplement et vous avez immédiatement l’aperçu.

Champ Carte et itinéraireLe champ Carte de WINDEV Mobile permet d’afficher automatiquement une carte pour Android (et pour iOS) [Fig. 3].

Grâce aux fonctions CarteXXX du WLangage, il était déjà possible d’afficher une position précise (CarteAffichePosition) et d’ajouter des marqueurs (CarteAjouteMarqueur).

En version 18, il est maintenant possible d’ajouter un itinéraire avec la fonction CarteAjouteItinéraire.

Cette fonction attend en paramètres :• le nom du champ carte sur lequel l’itinéraire doit être affiché,• la liste des positions de l’itinéraire,• le mode de calcul de l’itinéraire (automobile, cycliste, piéton),• la couleur, l’opacité et l’épaisseur du tracé de l’itinéraire.gPositionBien est une géoPositiongPosition est une géoPosition

// Affichage de l’itinéraire// entre la position courante// et le bien immobilier// (trajet automobile)CarteAjouteItinéraire(CARTE_Bien, [gPosition, gPositionBien], itinéraireAutomobile)

L’onglet “Style” du champ Calendrier permet d’avoir un aperçu rapide du rendu visuel.

Fig. 2

64 - TDF TECH 2013 - www.pcsoft.fr

Remarque :La liste des positions doit être passée via un tableau qui peut contenir :• des chaînes de caractères décrivant  les adresses en clair (“Avenue des Champs Elysées, Paris, France” par exemple),CarteAjouteItinéraire(CARTE_Bien, [“3 rue de puech villa, Montpellier,France”, “142 Avenue des Champs Elysées, Paris, France”], itinéraireAutomobile)

• des variables de type Adresse décrivant l’adresse,MonAdresse est une AdresseMonAdresse..Ville = “Paris”MonAdresse..Pays = “France”MonAdresse..Rue = ... “Avenue des Champs Elysées”

• des variables de type géoPosition indiquant la position géographique du point,• des variables de type Marqueur indiquant les positions à relier (les marqueurs seront automatiquement ajoutés à la carte si néces-saire).MaPosition est une géoPositionMaPosition..Latitude = 43.613708 MaPosition..Longitude = 3.876972MonMarqueur est un MarqueurMonMarqueur..Position = MaPosition

Vous connaissez WINDEV et souhaitez vous lancer dans le développement Android ?Suivez notre formation spécifique !“WINDEV MOBILE : DÉVELOPPEMENT D’APPLICATIONS ANDROID“

Le champ Carte permet d’afficher des marqueurs et des itinéraires.Tout est paramétrable : vous choisissez les images, les couleurs, ...

Fig. 3

TDF TECH 2013 - www.pcsoft.fr - 65

Page 34: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

Vous souhaitez être notifié discrètement sur des événements importants ?Avec  WINDEV Mobile, vous pouvez développer facilement et rapidement une application compatible avec les Smartwatch !

ANDROID : PROGRAMMATION D’UNE SMARTWATCH (SONY)

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple “Android Sony Smartwatch TDF18” (présent sur le DVD).

Présentation de la montreLes smartwatch sont des montres qui dia-loguent avec un smartphone pour afficher des informations du téléphone :• les messages mails ou SMS,• la météo,• les  notifications  de  réseaux  sociaux (Facebook, Google+, etc.)• ...

La montre et le téléphone sont connectés en BlueTooth : il suffit donc que le téléphone soit à portée, dans une poche ou une sacoche par exemple.

La smartwatch de Sony, qui fonctionne avec des smartphones Android, permet de béné-ficier d’un écran déporté mais également d’effectuer des actions lors d’une notification.

Les notifications sont signalées par une vibra-tion de la montre.

Et en plus, elle donne l’heure !

Présentation de l’exempleAvec WINDEV Mobile, vous pouvez aisément développer des applications pour ce type de matériel : il suffit de mettre en place un projet Android pour votre téléphone !

L’exemple permet de suivre des valeurs bour-sières et de définir des alertes de valeurs : par exemple pour être notifié si une action arrive à un montant donné.

L’exemple permet également de demander l’achat ou la vente de l’action une fois la notification effectuée.

Les alertes et les ordres d’achats et de ventes sont effectués directement sur la montre.

SDKPour effectuer les notifications sur la montre, il est nécessaire d’utiliser le SDK de la montre fourni par Sony.

Ce SDK est disponible sur le site :“http://developer.sonymobile.com”

Pour faciliter le test de l’exemple, les éléments utiles (fichiers .jar) du SDK ont été directement copiés dans le répertoire “SDK” de l’exemple.

66 - TDF TECH 2013 - www.pcsoft.fr

Mise en œuvreTous les appels à ce SDK ont été regrou-pés dans la collection de procédures “COL_SonySmartExtension”.

Il suffit donc d’utiliser les fonctions proposées par cette collection.

Mise en place d’une notificationLa fonction SWNotificationAjoute permet d’envoyer une notification à la montre.

Cette fonction attend en paramètre une struc-ture de type SWNotification.

Cette variable permet de préciser :• le titre de la notification,• le sous-titre,• le message,• une image/pictogramme,• une image de fond,• le libellé de chacun des 3 boutons qui seront affichés dans la notification. Ces boutons sont optionnels : vous pouvez choisir d’en utiliser seulement un ou de ne pas en utiliser du tout.// Création de la notificationSWNotif est une SWNotification

// Définit les éléments texteSWNotif.sTitre = “WIND”SWNotif.sSousTitre = “CAC40”SWNotif.sMessage = [ 806,19 EUR +4,99 EUR +0,62 %]

// Définit les éléments visuelsSWNotif.sImageJointe = ... “fleche_up.png”SWNotif.sImageDeFond = ... “fond_up.png”

// Définit les libellés des boutonsSWNotif.sNomBoutonCallback1=... “Vendre”SWNotif.sNomBoutonCallback2=... “Acheter”SWNotif.sNomBoutonCallback3=... “Ignorer”

// Ajout de la notificationSI SWNotificationAjoute(SWNotif) ALORS ToastAffiche(“Notification ajoutée”)SINON Erreur(“Erreur lors de l’ajout de la notification.”)FIN

Remarque :L’affichage de la montre étant restreint, pré-férez des textes courts, simples et significatifs.

Définir les callbackPour définir les traitements appelés lors d’un clic sur les boutons (procédure call-back),  il  suffit  d’utiliser  les  3 procédures SWNotificationCallbackX fournies par la collection de procédures :• SWNotificationCallback1 pour le bou-ton 1,• SWNotificationCallback2 pour le bou-ton 2,• ...

Remarque :Certaines informations de l’application sont définies dans le code JAVA de la collection de procédures.Par exemple, pour modifier le nom de l’extension, vous devez modifier la variable EXTENSIONNAME.public static final String EXTENSIONNAME = ... “WM Sony”;

Génération de l’applicationLors de la génération de l’application Android, plusieurs points doivent être respectés :• sur  le plan  “Intégration de  fichiers”,  les images utilisées par la notification doivent être intégrées. Attention : il est nécessaire d’intégrer les deux images utilisées par le type SWNotification mais également les images génériques déclarées dans le code Java.

• sur le plan “Intégration de librairies”, il est nécessaire d’intégrer les deux fichiers .jar (“smartextensionapi.jar” et “smartextensio-nutils.jar”) du répertoire “SDK”.

• le manifeste de l’application doit être modi-fié (ajout d’une permission spécifique, d’un service et d’un receiver) via la fenêtre d’édition avancée [Fig. 1].Ces modifications permettent de déclarer la montre comme extension du téléphone et d’établir la liaison entre les deux.

L’édition avancée du manifeste permet de réaliser des applications Androidencore plus poussées !

Fig. 1

TDF TECH 2013 - www.pcsoft.fr - 67

Page 35: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple “WP RetourAuto TDF18” (présent sur le DVD).

Installation du SDK pour Windows PhoneComme pour un développement Android, il est nécessaire d’installer des outils externes pour générer et déployer des applications Windows Phone.

Pour générer et tester des applications pour Windows Phone, il est nécessaire d’installer le SDK Windows Phone à partir du site de Microsoft : ”http://create.msdn.com/”.

La génération d’une application Windows Phone 8 peut être effectuée uniquement depuis un poste Windows 8.

Bien entendu, il est tout à fait possible de développer et de tester (via le simulateur

WINDEV Mobile) l’application depuis un poste ne disposant pas de Windows 8.

Particularités du développement pour Windows PhoneLe développement d’applications pour Windows Phone avec WINDEV Mobile pré-sente certaines spécificités dues au système d’exploitation.

Gabarit, images et thèmesSeul le gabarit “Windows Phone 7” de WINDEV Mobile peut être utilisé. Ce gabarit propose les styles adaptés au look Windows Phone.

Les utilisateurs de téléphones sous Windows Phone ont la possibilité de changer le thème de couleur du téléphone. Par exemple, il est possible de passer d’un texte blanc sur fond noir à un texte noir sur fond blanc.

Cette possibilité ajoute une contrainte gra-

phique pour les développements :• il est préférable d’utiliser des couleurs unies pour les icônes des applications.• les couleurs des  icônes dans  la barre de menu seront changées automatiquement en fonction du thème utilisé si les images utilisées sont blanches sur transparent. Nous vous conseillons d’utiliser les images du cata-logue de WINDEV Mobile.• les icônes et images des applications peuvent être modifiées par programmation en fonction du thème en cours d’exécution sur le téléphone. Pour cela, il suffit d’utiliser la fonction SysThème du WLangage.// Si le thème est “light”SI SysThème() = stThèmeLight ALORS // Utilise une image “claire” IMG_Photo = “image_claire.jpg”FIN

Gestion des donnéesLe système d’exploitation Windows Phone ne permet pas d‘utiliser une base de données.

WINDEV Mobile permet de développer des applications pour Android, iOS, Windows CE et même pour Windows Phone !Le  développement  d’applications  pour  Windows  Phone  8  nécessite  la connaissance de mécanismes et certaines spécificités.Voici un bref descriptif des points importants à connaître.

DÉVELOPPER UNE APPLICATION POUR

WINDOWS PHONE 8

68 - TDF TECH 2013 - www.pcsoft.fr

Pendant l’exécution de l’application, les don-nées peuvent être mémorisées dans des tableaux de classes ou de structures.

Pour mémoriser et réutiliser ces données d’une exécution à l’autre, vous pouvez les mémoriser dans un fichier.

Pour la mémorisation, il est possible d’écrire dans un fichier avec les fonctions fSauveTexte ou fEcritLigne.// Créé le fichiernFic est un entier = ... fCrée(“memo.txt”)// Sauvegarde une information// (remplace les RC de la // chaîne initiale)sChaine = Remplace(sChaine, RC, “<RC>”)fEcritLigne(nFic, sChaine)// Ferme le fichierfFerme(nFic)

Et pour recharger les informations, il suffit de relire le fichier, avec les fonctions fCharge-Texte ou fLitLigne.

Remarque : pour mémoriser les valeurs de paramètres de l’application, il est possible d’utiliser les fonctions SauveParamètre et ChargeParamètre.

Des fenêtres fillesTout comme sous Android et iOS, les fenêtres doivent être ouvertes avec la fonction WLangage OuvreFille.// Ouvre la fenêtre de retour du// véhicule sélectionnéOuvreFille(FEN_Retour_Véhicule, ZR_Vehicule)

Important :Avant de fermer une fenêtre fille, pensez à actualiser (si nécessaire), les informations de la fenêtre appelante.

Test et mise au point de l’application : conseilsLors du développement d’une application pour Windows Phone, plusieurs modes de tests sont possibles :• dans le simulateur de WINDEV Mobile,• dans l’émulateur Windows Phone,• directement sur le terminal !

A. Le simulateur WINDEV MobileLe but du simulateur est de mettre au point le code WLangage de l’application et son fonctionnement général.

En effet, l’aspect graphique n’est pas totale-ment identique mais permet l’utilisation du débogueur.

B. L’émulateur Windows PhoneL’émulateur permet de tester le comportement réel d’une application dans son environne-ment de manière rapide.

Cependant, il faut bien voir quelques diffé-rences par rapport à un test réel :• La vitesse du processeur est celle de l’ordi-

nateur de développement et non celui d’un terminal mobile.• L’utilisation à la souris ne donne pas toutes les indications sur l’ergonomie tactile de l’application.• Les spécificités de l’appareil (clavier phy-sique, rotation de l’écran...) peuvent ne pas être gérées.

Il est donc indispensable de tester une appli-cation Windows Phone sur un terminal réel même après un développement utilisant l’émulateur.

C. Effectuer un test directement sur un mobilePour déployer une application sur un terminal Windows Phone sans passer par le “market”, il est nécessaire d’enregistrer le terminal sur le site de Microsoft.

Pour cela, il est nécessaire d’obtenir une licence de développement (payante auprès de Microsoft) permettant d’enregistrer un nombre limité de téléphones (la limite est de 3).

Cette licence de développement sera égale-ment nécessaire pour déployer une applica-tion sur le market de Microsoft.

Une fois le terminal enregistré, il suffit d’utiliser l’option correspondante dans la barre d’outils : l’application sera installée puis automatique-ment lancée sur le terminal.

TDF TECH 2013 - www.pcsoft.fr - 69

Page 36: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

WINDEV Mobile  18 offre de nombreuses  nouveautés  utiles  et  immédiatement utilisables pour iPhone/iPad : l’impression PDF, l’accès aux contacts, les fenêtres popup, le champ Carte, le champ Multimédia, ...

APPLICATIONS IPHONE/IPAD :PLUS INTUITIVES,

PLUS ERGONOMIQUES

Projet d’illustrationLe projet utilisé pour illustrer ce sujet est l’exemple “iOS Morea Piscine TDF18” (présent sur le DVD).

Changement de fenêtres par balayageLe balayage permet de modifier le contenu d’une fenêtre d’un simple mouvement de doigt : un mouvement vers la gauche et vous passez à la fiche client suivante.Cette fonctionnalité permet de proposer des interfaces réellement intuitives.

Le balayage de fenêtres internes est géré

automatiquement par WINDEV Mobile !

Créer une fenêtre interneDans un premier temps, il est donc nécessaire de créer une fenêtre interne “fiche”.

Dans notre exemple,  la fenêtre interne “FI_Produit” contient les champs de présentation d’une piscine (titres, images, etc.).

Les champs doivent être reliés aux rubriques d’un fichier de données ou d’une requête.

Dans notre exemple, les champs sont reliés à la requête “REQ_Produits”.

Activer le balayagePour afficher une fenêtre interne dans une fenêtre, le champ à utiliser est le champ

70 - TDF TECH 2013 - www.pcsoft.fr

“fenêtre interne”.La description du champ fenêtre interne, onglet “IHM”, contient  les options relatives au balayage [Fig. 1] :• l’option “Autoriser le changement de contenu par balayage” qui permet d’activer le balayage,• la taille du cache que l’application doit gar-der. La taille du cache correspond au nombre d’éléments déjà chargés que l’application peut conserver en mémoire.

Notre conseilSauf cas spécifique, conservez la valeur par défaut de 3 éléments en cache.Cela permet d’avoir en cache l’élément pré-cédent, l’élément courant et l’élément sui-vant et ainsi d’éviter les temps de latence au changement d’élément.

Dans l’onglet “Contenu”, il est important de spécifier que la source de remplissage de la fenêtre interne est un fichier ou une requête (dans notre cas, la requête “REQ_Produits”).

Lors du balayage, WINDEV Mobile va automa-tiquement avancer ou reculer dans la requête

pour afficher l’enregistrement en cours.

La gestion du balayage nécessite donc 0 ligne de code !

Afficher des fenêtres internes diffé-rentesSi le balayage permet de passer d’une fiche à l’autre, il peut également permettre d’afficher une fenêtre interne complètement différente.

Par exemple, une fenêtre interne affiche les informations d’un client, une autre fenêtre interne affiche la liste de ses commandes. Le balayage peut alors permettre de passer de la fiche à la liste très simplement.

Dans ce cas, le balayage doit être défini par programmation avec les fonctions WLangage FIListeXXX :• FIListeAjoute permet d’ajouter une fenêtre interne à la liste des fenêtres internes par-courue,• FIListePosition permet d’afficher une fenêtre interne donnée,• ...// Ajoute la fenêtre interne// “fiche client”FIListeAjoute(FI_DétailsClient, FI_FicheClient)// Ajoute la fenêtre interne// “liste commande”FIListeAjoute(FI_DétailsClient, FI_ListeCommandes)

// Positionne la fenêtre interne // sur la “fiche client”FIListePosition(... FI_DétailsClient,1)

Fenêtre popupLes fenêtres popup sont des fenêtres non maximisées qui sont généralement utilisées

pour afficher des informations supplémen-taires de la fenêtre en cours : une image, des options supplémentaires, etc.

Dans notre exemple, la fenêtre “FEN_Medias” qui permet d’afficher les photos de piscine en grand est une fenêtre popup.

Pour créer une fenêtre popup, il suffit de cocher l’option “Fenêtre non maximisée” dans la description de la fenêtre, onglet “Style”.

Pour ouvrir une fenêtre popup, c’est la même fonction WLangage que pour  les  autres fenêtres : OuvreFille.// Ouvre la popup de// visualisation de photosOuvreFille(FEN_Médias, ATT_IDProduit, ZR_Medias)

Remarque :Lors de l’affichage d’une fenêtre popup, il est possible d’afficher une flèche : il suffit de cocher l’option “Fenêtre avec flèche” de l’onglet “Style” de la description de la fenêtre.Cette flèche désigne généralement le champ à l’origine de l’ouverture de la popup.

Champ MultimédiaLe champ Multimédia permet de jouer des fichiers vidéo de différents formats :• AVI,• WMV,• MP4,• ...

La manipulation d’un champ Multimédia s’ef-fectue grâce aux fonctions MultimédiaXXX du WLangage :• MultimédiaOuvre,• MultimédiaJoue,• ...// Ouvre la vidéoMultimédiaOuvre(... MM_Video, “vidéos\mavideo.mp4”)

Dans notre exemple, le champ Multimédia est utilisé pour afficher une vidéo du produit en cours de visualisation, tout simplement.

Fig. 1

TDF TECH 2013 - www.pcsoft.fr - 71

Page 37: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

APPLICATIONS IPHONE/IPAD (SUITE)

Champ CarteLe champ Carte permet d’afficher une carte, bien entendu, mais également :• des marqueurs,• des itinéraires,• etc.

Dans notre exemple, la carte permet d’afficher l’emplacement de tous les distributeurs de la marque (voir fenêtre “FEN_Carte”) [Fig. 3].Remarque :Le champ Carte s’adapte automatiquement à la version iOS du périphérique et fonctionne

quelle que soit la carte à utiliser :• une carte Apple (version iOS 6 et supérieure),• une carte Google (version  iOS antérieure à la version 6).

Pour manipuler le champ Carte, il suffit d’uti-liser les fonctions CarteXXX du WLangage :• CarteAjouteMarqueur pour ajouter un marqueur sur la carte,• CarteAffichePosition pour centrer la carte sur une position précise.• ...tPosition est une géoPositiontMarqueur est un Marqueur

// Ajout des distributeursPOUR TOUT Distributeur // Définit la position tPosition.Latitude = ... Distributeur.Latitude tPosition.Longitude = ... Distributeur.Longitude

// Mémorise la position du // marqueur et lui donne // un nom tMarqueur.Position = ... tPosition tMarqueur.Nom = ... Distributeur.Nom // Ajoute le marqueur CarteAjouteMarqueur(... CARTE_Distributeurs, tMarqueur)FIN// Centre et zoomeCARTE_Distributeurs..Zoom = 5tPosition.Latitude = 47.021461tPosition.Longitude = 2.548828CarteAffichePosition(... CARTE_Distributeurs, tPosition)

Le champ Carte vous permet d’afficher une carte quel que soit le type de carte utilisé par IOS (carte Apple ou Google).Vous pouvez afficher des marqueurs, des itinéraires, ... en quelques lignes de code seulement !

Fig. 3

72 - TDF TECH 2013 - www.pcsoft.fr

Impression PDFL’impression au format PDF se fait simplement en imprimant un état (fonction iImprimeEtat) en précisant le format de destination (fonction iDestination).

L’impression terminée, il suffit d’utiliser la fonction LanceAppliAssociée pour ouvrir automatiquement le fichier PDF sur le péri-phérique avec le viewer associé.// Format de destination : PDFiDestination(iPDF)

// Imprime l’état// avec paramètresiImprimeEtat(... ETAT_DétailsProduit, REQ_Produits.IDProduit, REQ_Produits.IDProduit)

// Affiche le PDF généréLanceAppliAssociée(... iDernierFichier())

Notre astucePour manipuler le dernier fichier imprimé, utilisez la fonction iDernierFichier.

La fonction WLangage iImprimePDF permet d’imprimer le contenu d’un fichier PDF à partir d’une application iPhone/iPad.

Cette fonction ouvre la fenêtre système du périphérique qui permet de sélectionner l’imprimante à utiliser, le nombre de copies à réaliser, etc.// Format de destination : PDFiDestination(iPDF)

// Imprime l’état// avec paramètresiImprimeEtat(... ETAT_DétailsProduit, REQ_Produits.IDProduit, REQ_Produits.IDProduit)

// Imprime le PDF généréiImprimePDF(iDernierFichier())

Accéder aux contactsLes contacts téléphoniques du périphérique peuvent être manipulés très simplement à l’aide des fonctions ContactXXX.

Sous iOS (comme sous Android) certaines fonctions ContactXXX permettent d’utiliser directement l’application native de gestion des contacts :• ContactAffiche : ouvre la fiche d’un contact,• ContactCréé : ouvre la fenêtre de création de contact,• ContactEdite : ouvre la fiche d’un contact en édition,• ContactSélectionne : affiche la liste des contacts.

Les autres fonctions (ContactAjoute, ContactModifie, ContactListe, etc.) per-mettent de manipuler les contacts en passant par une variable Contact intermédiaire.

Notre astucePour ajouter ou éditer un contact, utilisez de préférence les fonctions qui manipulent l’application native.Vous bénéficierez ainsi automatiquement de toutes les fonctionnalités propres au système d’exploitation (rubriques supplémentaires, contrôles, ...).

Vous connaissez WINDEV et souhaitez vous lancer dans le développement iOS ?Suivez notre formation spécifique !“WINDEV MOBILE : DÉVELOPPEMENT D’APPLICATIONS IOS“

TDF TECH 2013 - www.pcsoft.fr - 73

Page 38: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

AU SOMMAIRE DE LA LST 92

• Mise en vente de produits sur eBay (Webservice),• Géolocalisation et suivi de terminaux Android,• Réaliser une saisie avancée directement depuis une table,• Les bonnes pratiques pour développer une application multiplate-forme pour tablette (iOS / Android),• 2 Gabarits et 2 Ambiances (et leurs palettes de couleurs),• Les rubriques “Questions & Réponses”, “Trucs & Astuces” et “Le Saviez-Vous ?”,• ... et encore beaucoup d’autres sujets !

Pas encore abonné ? C’est le moment !

74 - TDF TECH 2013 - www.pcsoft.fr

ABONNEZ-VOUS !

PROGRAMME EXEMPLE désigne tout logiciel source fourni avec la LST, et en particulier celui qui inclut ce texte.

Le PROGRAMME EXEMPLE est fourni dans un but didactique.

L’utilisation de ce programme s’effectue sous l’entière responsabilité de son uti-lisateur. La responsabilité de PC SOFT ne pourra en aucun cas être mise en cause si le PROGRAMME EXEMPLE ne fonctionne pas tel que vous l’attendez, ou pour quelque raison que ce soit.

Tout détenteur d’une licence WINDEV 17 et/ou WEBDEV 17 et/ou WINDEV Mobile 17 enregistrée peut utiliser et/ou modifier ce PROGRAMME EXEMPLE en respectant les conditions suivantes :• Les PROGRAMMES EXEMPLE peuvent être inclus dans des applications sauf mention contraire dans l’article de présentation et/ou le programme fourni.• Toute mention se rapportant à PC SOFT ou à WINDEV ou à WEBDEV devra être supprimée, afin qu’aucun doute ne puisse subsister dans l’esprit d’un utilisateur final.

• Si les applications sont destinées exclusi-vement à un usage interne au site physique de la société abonnée à la LST, il n’y a pas de contrainte particulière à l’utilisa-tion du PROGRAMME EXEMPLE dans les applications.• Si le PROGRAMME EXEMPLE est destiné à être diffusé, à titre gratuit ou payant, par quel que moyen que ce soit, ce PROGRAMME EXEMPLE doit être inclus dans une application dont 90% au moins des fonctionnalités de cette application est constituée d’éléments autres que des PROGRAMMES EXEMPLE provenant d’une LST.

Il est donc interdit, par exemple, de modifier légèrement un PROGRAMME EXEMPLE et de le diffuser. Il est interdit de copier le contenu de cette LST, en partie ou en totalité, par quelque moyen que ce soit et quel que soit le but. Il est interdit de dupliquer et/ou diffuser et/ou transmettre toute ou partie du CD / DVD.

Une LST est destinée à l’usage unique de la personne qui y est abonnée.

Il est interdit de prêter, louer ou vendre “la LST” (CD et / ou magazine). Il est interdit de diffuser par quelque moyen que ce soit les codes sources accompagnant une LST.

Le suppor t technique pour ce PROGRAMME EXEMPLE est accessible à travers le service ‘‘Assistance Directe” uniquement. Malgré les soins appor-tés à sa rédaction, ce document n’est pas contractuel. Les copies d’écran sont indicatives. PC SOFT se réserve le droit d’améliorer et de modifier ses produits à tout moment.

LICENCE LST

L13115Tarif modifiable sans préavis

Bulletin d’abonnement à retourner avec votre règlement à :

PC SOFTLettre du Support TechniqueBP 44 40834197 MONTPELLIER Cedex 05France

En cas de paiement par carte bancaire, vous pouvez nous faxer votre abonne-ment au :+33 (0) 4 67 03 07 87

Je choisis un abonnement “LST PC SOFT” pour :

FRANCE Métropolitaine □ 1 an - 4 N°+ 4 DVD : 159 euros HT; 190,16 euros TTC □ 2 ans - 8 N°+ 8 DVD : 279 euros HT ; 333,68 euros TTC

AUTRE (exp. par avion) □ 1 an - 4 N°+ 4 DVD : 175 euros HT □ 2 ans - 8 N°+ 8 DVD : 299 euros HT

□ Je règle par chèque. J’autorise PC SOFT à débiter sur ma carte VISA/MasterCard la somme de : ..................... Euros□ Je règle par Carte Bancaire. Cryptogramme : □□□Numéro complet de la carte : la carte expire : mois année□□□□□□□□□□□□□□□□ □□ □□□□Signature obligatoire du détenteur de la carte :Nom du détenteur de la carte : ..........................................................

Vos Nom & Prénom : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Vo t re Soc ié té : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Votre Adresse préc ise : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Code Posta l : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V i l le : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Pays : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Te l : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Ad resse Ema i l : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

À partir du numéro : ..............

Ci joint mon règlement de : ............. Euros TTC Note : une facture acquittée est systématique-ment adressée.

Restez informésFournissez votre email et recevez des informations régulières en plus de la LST.

La LST fournit tous les trimestres des informations, mises à jour et trucs et astuces sur les différents produits PC SOFT.Pour obtenir automatiquement des informations entre deux LST, fournissez votre adresse email à PC SOFT. Vous serez ainsi régulièrement prévenu :• des nouvelles versions disponibles en téléchargement.• des nouvelles FAQ disponibles sur le site de PC SOFT.• ...N’hésitez pas à envoyer un email à PC SOFT ([email protected]) pour indi-quer vos coordonnées électroniques.Votre adresse email ne sera utilisée que par PC SOFT.

TDF TECH 2013 - www.pcsoft.fr - 75

Page 39: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

76 - TDF TECH 2013 - www.pcsoft.fr

Annexes

TDF TECH 2013 - www.pcsoft.fr - 77

Page 40: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

您好,欢迎到文待悟(BONJOUR, BIENVENUE DANS WINDEV)

WINDEV,  WEBDEV  et  WINDEV  Mobile  permettent  de  développer  des applications  multilingues.  Des  outils  (WDMsg,  WDTrad,  ...)  permettent également de faciliter la traduction des ressources de vos applications.Petit guide pas à pas pour traduire vos applications.

1 Préparer le projet à être traduit

Langues de l’applicationLa gestion des langues de l’application est accessible dans la fenêtre de description du projet, onglet “Langues” [Fig. 1].

Il est possible d’ajouter  jusqu’à 64  langues dans une application.Vous disposez même de 20 langues person-nalisées pour des langues spécifiques : vous pouvez donc livrer une version ch’ti de votre application !

Pour chaque langue du projet, il est possible de définir les options linguistiques (format d’affichage) pour :• les nombres,• les monétaires,

• les heures,• les dates,• les durées,• ...

Par défaut, ce sont les options linguistiques du PC de l’utilisateur qui sont utilisées.

Lors de la validation de la description du projet, toutes les langues sélectionnées sont automatiquement ajoutées aux éléments du projet (fenêtres, champs, collections de procédures, ...) [Fig. 2].

Messages multilanguesPar défaut, les chaînes présentes dans l’éditeur de code ne sont pas traduites.

Pour qu’une chaîne soit traduite, il est néces-saire de la convertir en message multilangue.

Cette opération peut être effectuée par le menu “Code .. Message Multilangues .. Convertir les chaînes simples en messages

multilangues”. WINDEV va parcourir tout le code source des éléments demandés (projet, élément courant, etc.) et demander pour chaque chaîne si elle doit être convertie.

Attention : ne convertissez que les chaînes qui sont des messages à destination des utilisateurs (Info, Erreur, etc.) et pas les chaînes internes au fonctionnement de l’application.Le code risquerait de ne plus fonctionner et les ressources seraient extraites, et donc traduites, inutilement.

// Message d’information// à traduireInfo(“Aucune donnée” )...// Chaînes internes// ne pas traduireINILit(“PARAM”, “SAUV”, “”, sFichierINI)

78 - TDF TECH 2013 - www.pcsoft.fr

Notre astuce : pour convertir une chaîne en ressource multilangue directement, vous pouvez utiliser le raccourci “Ctrl + T”.

Les messages multilangues se distinguent des chaînes classiques par un petit drapeau en fin de chaîne.

Remarque : à partir de  la version 17,  il est possible d’affecter directement dans le code une chaîne avec du chinois, du grec, du russe, de l’hindi, ...

Notre conseilLorsqu’une chaîne est construite avec des paramètres, il est conseillé d’utiliser la fonction ChaîneConstruit plutôt que de concaténer les chaînes.

Cela facilitera la traduction, puisque le tra-ducteur disposera d’une phrase complète et pas de bouts de phrase.

De plus, les constructions grammaticales pouvant varier d’une langue à l’autre, la conca-ténation de bouts de phrase peut donner une phrase incorrecte.

Par exemple, prenons le message suivant :sMessage = “Le fichier a étémodifié le ”+ dDateModif +“ à ”+ hHeureModif +“ par ”+sAuteur

Dans ce cas, le traducteur aura 3 ressources : “Le fichier a été modifié le ”, “ à ” , “ par ”. sMessage = ChaîneConstruit(“Le fichier a été modifié le %1 à %2 par %3”,dDateModif,hHeureModif,sAuteur)

En utilisant la fonction ChaîneConstruit, le traducteur aura la ressource complète et pourra donc la traduire dans son intégralité en respectant les constructions grammaticales spécifiques à la langue.

Lorsque la langue a été appliquée à tous les éléments du projet et que tous les messages

multilangues ont été définis, l’application peut être traduite.

2 Traduire l’applica-tion avec WDMsg

La traduction de l’application peut être effec-tuée :• directement dans l’application au fur et à mesure (si le développeur est polyglotte).• à l’aide de l’API “Google Traduction” (voir l’article du support de cours).• à l’aide de l’outil WDMsg.

WDMsg permet de fournir un fichier de res-sources à traduire (à un cabinet de traduction par exemple).

WDMsg, c’est un module complémentaire de WINDEV qui industrialise la phase de traduction.

Cet outil :• extrait  toutes  les  ressources à  traduire : les libellés, les bulles de survol, les titres de fenêtre, les messages, etc.• traduit les ressources en s’appuyant sur un dictionnaire dynamique.

Fig. 2

Fig. 1

TDF TECH 2013 - www.pcsoft.fr - 79

Page 41: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

• gère ce dictionnaire dynamique et l’enrichit.• réintègre tout ce qui a été traduit dans le projet.

ExtractionPour lancer l’extraction des messages par WDMsg, sous le volet “Projet”, dans le groupe “Traduire”, déroulez “Traduire” et sélectionnez “Extraction des messages”.

L’assistant demande alors de choisir la langue à extraire. Cette langue sera la langue de référence pour le traducteur (certains cabinets traduisent uniquement à partir d’une langue donnée, l’anglais par exemple).

Il est possible d’extraire  les  ressources de tout ou partie d’un projet : il est possible par exemple de demander la traduction d’une seule fenêtre uniquement.

Notre conseilWDMsg peut effectuer l’extraction des res-sources soit dans un fichier texte, soit dans un fichier HyperFileSQL.Nous vous conseillons d’utiliser  le  fichier HyperFileSQL pour 3 raisons :• La rapidité : le chargement et l’enregis-trement des ressources sont beaucoup plus rapides dans ce format.• L’unicité : un fichier HyperFileSQL permet de gérer toutes les langues du projet. Avec le format texte, il faudra générer autant de fichiers qu’il existe de langues dans l’appli-cation.• La simplicité : quand vous passez par un cabinet de traduction qui a son propre outil de traduction, les processus d’import/export sont simplifiés avec le fichier HyperFileSQL. Il suffit en effet de parcourir le fichier pour récupérer les traductions à faire.

L’assistant d’extraction permet également de limiter le nombre d’extractions, en ne récupérant que les ressources ajoutées ou modifiées depuis la dernière extraction : moins de ressources à faire traduire, c’est autant d’heures de traduction non facturée et donc économisées !

TraductionPour lancer la traduction des messages, sous le volet “Projet”, dans le groupe “Traduire”,

déroulez “Traduire” et sélectionnez “Traduction des messages”.

L’outil WDTrad se  lance : c’est cet outil qui gère la phase de traduction proprement dite.Ce module est bien évidemment inclus avec WDMsg.  Il est donc possible de  le  fournir avec les fichiers à traduire aux traducteurs.

Nous ne détaillerons pas  ici  l’utilisation de WDTrad : nous vous invitons à vous reporter à l’aide ligne ou au support de cours du TDF Tech 2008.

RéintégrationLorsque la traduction est terminée, les res-sources peuvent être réintégrées dans le projet initial. Pour lancer la réintégration, sous le volet “Projet”, dans le groupe “Traduire”, déroulez “Traduire” et sélectionnez “Réintégration des messages”. Il suffit alors de préciser la langue à réintégrer.

3 Changer la langue du projet

Une fois les ressources réintégrées, il est pos-sible de changer la langue de l’application :• directement sous  l’éditeur. Cela permet d’avoir un rendu de l’application dans une langue. Il suffit pour cela d’utiliser le raccourci “Ctrl + Alt + L” (ou le menu “Affichage .. Langue affichée .. <Langue>”).• en exécution. Le changement de la langue utilisée dans une application est effectué par programmation via  la  fonction WLangage Nation.

Si votre projet est en version 17 ou infé-rieure et que la langue du projet est modifiée dans une fenêtre (par une option de menu par exemple), il est nécessaire d’appeler la fonction Utilise pour rafraîchir la fenêtre avec la nouvelle langue.À partir des versions 18, le changement de langue est automatiquement effectué par la fonction Nation.// Passe l’application en anglaisNation(nationAnglais)

Bien évidemment, lors du changement de langue, tous les champs s’adaptent à la langue et surtout à son sens d’écriture.

Par exemple, si l’application est traduite en arabe :• le menu de  l’application sera positionné à droite,• la saisie sera effectuée de droite à gauche, • etc.

4 Adapter la base de données

Dans une application qui gère différentes langues avec différents alphabets, il est néces-saire d’adapter les rubriques chaîne de la base de données.

Pour stocker des chaînes dans des alphabets non latins, il est en effet nécessaire d’utiliser des rubriques Unicode.

Rappel Ansi/Unicode :• La norme Ansi code 1 caractère sur 1 octet : la limite est donc de 255 caractères.• La norme Unicode code 1 caractère sur 2 octets : la limite monte donc à 65 535 carac-tères.

L’Unicode permet ainsi de gérer tous les alphabets existants.

Nos conseils1. Il n’est pas conseillé de passer en Unicode toutes les rubriques chaînes : passez unique-ment les rubriques nécessaires, qui stockeront des données dans des alphabets différents.

En effet, le passage d’une rubrique chaîne en Unicode augmente la taille des fichiers de données et donc ralentit légèrement l’accès aux données.

Par exemple, pour un produit :

Fig. 3

80 - TDF TECH 2013 - www.pcsoft.fr

• le libellé sera affiché dans plusieurs alpha-bets (dans les applications, sites, etc.) : donc la rubrique correspondante devra donc être Unicode.• la référence interne du produit, non visible par les clients, pourra rester en chaîne Ansi “standard”.

2. Lorsque le type d’une rubrique est “Unicode”, il est possible de spécifier un tri pour la rubrique :• si la rubrique est destinée à stocker une seule et unique langue, triez selon cette langue.• si  la rubrique est amenée à contenir dif-férentes langues, utilisez un tri multilingue [Fig. 3].

5 Passage en mode Unicode

Puisque les données sont au format Unicode, il est nécessaire de gérer ce format dans l’application :• les champs des  fenêtres doivent afficher des données Unicode,• les variables doivent manipuler ces données correctement. En effet, il n’est pas possible de manipuler des données Unicode avec des chaînes Ansi.

Pour faciliter cette adaptation, le projet peut être passé en mode Unicode.

Pour cela, dans la fenêtre de description de la configuration, onglet “Unicode”, il faut choisir l’option “Utiliser des chaînes UNICODE en exécution”  [Fig. 4]. Cela signifie que toute chaîne utilisée dans le code sera forcément une chaîne Unicode.

Attention : cette opération n’est pas une opération anodine. En effet, toutes les manipulations de chaînes ou de fichiers externes sont directement impactées.

Un audit importantLors du passage en mode “Unicode”, WINDEV réalise un audit du projet pour le passage en Unicode pour faciliter la transition et mettre en avant les traitements qui pourraient poser problème.

Par exemple :• la fonction ChangeAlphabet devient obso-lète. Elle peut donc être supprimée.• si  les fonctions fChargeTexte et fSauve-Texte manipulent des fichiers d’échange entre applications, il faut être sûr que les autres applications gèrent les fichiers en Unicode.

De même pour toutes les fonctions de mani-pulations de fichiers : fEcritLigne, fLitLigne, fEcrit, etc.• les appels d’API (par les fonctions API ou AppelDLL32) qui manipulent des chaînes ou des structures contenant des chaînes doivent être vérifiés : il faut appeler la version Unicode de l’API ou modifier les chaînes en chaîne Ansi.• etc.

L’audit remonte également des comporte-ments différents, qui sont moins sensibles :• l’utilisation des  fonctions Minuscule ou Majuscule.• la comparaison de chaînes via les fonctions 

Min, Max ou un opérateur de comparaison.

Pour relancer cet audit à tout moment, sous le volet “Projet”, dans le groupe ”Audit et performances”, déroulez “Audit d’édition” et sélectionnez “Assistant de passage à Unicode”.

Remarque : il est bien évidemment toujours possible d’utiliser une chaîne au format Ansi dans un projet “tout Unicode”.Il suffit de le préciser dans la déclaration de la variable.sMaChaineANSI est une chaîne ANSI

Fig. 4

Fig. 5

TDF TECH 2013 - www.pcsoft.fr - 81

Page 42: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

HYPERFILESQL3 CONSEILS POUR OPTIMISER LES ACCÈS AUX BASES DE DONNÉES

Dès que les volumes de données deviennent conséquents, le choix des bonnes clés est une garantie de performances et de constances de ces performances.

1 Utiliser des clés et des clés composées

Une clé, un index, est une rubrique triée par le moteur HyperFileSQL et qui va servir aux recherches, aux parcours, ...

Principe de fonctionnement des clésPour illustrer le fonctionnement des clés, voici un cas concret expliqué pas à pas.

Soit un fichier “Commande” qui contient comme rubriques (entre autres) :• une date,• un montant total.

Ce fichier contient plusieurs millions de com-mandes.

Une application souhaite interroger ce fichier par l’intermédiaire d’une requête pour récu-pérer les commandes :• qui datent d’aujourd’hui,• dont le montant est supérieur à 50 €.

Seules 25 commandes en base répondent à ces deux critères.

Voici le compor tement du moteur HyperFileSQL selon les clés définies (ou non définies).

Cas 1 : aucune clé, un parcours fastidieuxSi aucune clé n’est définie dans le fichier, le moteur HyperFileSQL n’a pas d’autres choix que de parcourir chaque enregistrement et de regarder si les deux critères (date et montant) correspondent à la demande.

Autrement dit, TOUS les enregistrements vont être parcourus. Plus le fichier com-porte d’enregistrements, plus la recherche sera longue.

Cas 2 : une clé définie sur la date, un parcours restreintPour accélérer la recherche, une clé (avec doublons) est définie sur la rubrique “date” du fichier “Commande”.

Dans ce cas, le moteur HyperFileSQL dispose d’un index qui lui indique, pour chaque date, les numéros des différents enregistrements qui correspondent.

Seuls les enregistrements qui corres-pondent à la date du jour vont donc être parcourus.

Mais pour chaque enregistrement parcouru, le deuxième critère (montant) doit être analysé.

Si 5 000 commandes ont été passées ce jour, 5 000 enregistrements seront tout de même parcourus, pour seulement 25 enregistre-ments ramenés.

82 - TDF TECH 2013 - www.pcsoft.fr

Cas 3 : une clé composée, un parcours optimiséPour optimiser la recherche, une clé composée des rubriques “date” et “montant” est créée.

Dans ce cas, le moteur HyperFileSQL dispose d’un index qui lui indique directement les numéros d’enregistrements qui correspon-dant à la date du jour et ayant un montant supérieur à 50.

Seuls les enregistrements correspondant aux deux critères souhaités sont lus : le parcours est optimisé !

2 Utiliser des clés discriminantes

L’utilisation de clés est donc un gage d’opti-misation des requêtes ... à condition de définir les bonnes clés !

Il est fortement déconseillé de créer toutes les clés composées possibles pour un fichier :• l’ajout de clés composées fait grossir l’index du fichier. Plus un index est conséquent, plus la lecture de celui-ci est ralentie. Au lieu d’opti-miser le traitement, cela risque de le ralentir.• le nombre  important de clés composées devient difficilement gérable et risque de perdre le développeur.Pour choisir les bonnes clés composées, WINDEV, WEBDEV et WINDEV Mobile mettent à disposition du développeur l’optimiseur de requêtes.

L’optimiseur de requêtes est disponible depuis le menu “Projet .. Audit d’édition .. Optimiser les requêtes du projet”.Il suffit de sélectionner les requêtes à analyser et l’éditeur indique les clés les plus discri-minantes. Pour ajouter directement les clés proposées, il suffit de cliquer sur le bouton “Appliquer les modifications”.

Bien entendu, il est possible de définir manuel-lement les clés composées, directement dans l’éditeur d’analyses. Un article sur le choix des bonnes clés com-posées est disponible dans la LST 81.

3 Recalculer les statistiques

Le troisième conseil pour optimiser les accès à une base de données est de recalculer régulièrement les statistiques sur les fichiers de données.

Ces statistiques sont utilisées pour optimiser les recherches en fonction des données réelles contenues dans la base.

Pour lancer le recalcul des statistiques, il est possible d’utiliser :• la fonction WLangage hStatsCalcule, pour effectuer un recalcul ponctuel par exemple,• le Centre de Contrôle HyperFileSQL, pour définir une tâche planifiée de recalcul heb-domadaire par exemple.

L’ajout de tâches planifiées est disponible dans l’onglet “Éléments planifiés”. Il suffit de 

cliquer sur le bouton “Nouveau” et de sélec-tionner “Nouvelle optimisation automatique des données”.

En version 18, le recalcul des statistiques est automatiquement effectué par le serveur lorsque la base n’est pas utilisée.

TDF TECH 2013 - www.pcsoft.fr - 83

Page 43: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

La sécurité des données et des applications, tout le monde en parle, mais comment faire concrètement ?

SÉCURITÉ DES DONNÉES ET DES APPLICATIONS : 12 CONSEILS

Cet article est composé de deux parties : “Sécuriser les données” et “Sécurisez l’exploitation des applications”. Vous retrouverez

ainsi 12 conseils pratiques à mettre en œuvre rapidement et simplement dans vos applica-tions sensibles.

Important : Bien entendu,  la première des sécurités est de sécuriser l’accès à la machine serveur (ou à ses disques de données) ainsi que le code source des applications et des mots de passe...

Sécuriser les données

1er conseil : protégez l’accès aux fichiers de données par un mot de passeCela peut sembler une évidence, mais c’est la première protection à mettre en œuvre sur des données sensibles. Pour associer un

mot de passe à un fichier de données, il est possible soit :• de le faire à la création du fichier (par les fonc-tions HCréation et HCréationSiInexistant).• de le spécifier par la fonction HPasse.• de  le  changer  depuis  l’éditeur  d’ana-lyses (option “Analyse .. Synchronisation .. Synchronisation de la Structure et des Données Déployées”).

2ème conseil : au niveau de la base de données, cryptez les donnéesPour des fichiers sensibles, il peut être inté-ressant de crypter les fichiers de données. Le cryptage des données d’un fichier, se configure dans l’analyse, dans l’onglet “Détail” de la description d’un fichier.WINDEV propose plusieurs types de cryptage :• Cryptage sur 128 bits.• Cryptage RC5 12 Boucles.• Cryptage RC5 16 Boucles.

Le cryptage RC5 16 boucles est le plus sécurisé, mais aussi celui qui prend le plus de temps.

Pour une utilisation courante, nous vous conseillons le cryptage sur 128 bits qui offre un niveau de sécurité conséquent pour un temps de traitement très faible !

Note : Pensez également à crypter les fichiers d’index et les mémos !

Notre conseil :Pour une sécurité maximale, vous pouvez cocher la case “Activer la sécurité renforcée”. L’activation de la sécurité renforcée va crypter les données sans stocker la clé de cryptage, dans le fichier. Mais attention, si vous cochez cette case, surtout, ne perdez pas votre mot de passe, il sera impossible de récupérer le contenu du fichier sans ce mot de passe.

3ème conseil : Cryptez la connexion à la base de donnéesLe cryptage des données est une sécurité en

84 - TDF TECH 2013 - www.pcsoft.fr

cas de vol de la machine serveur, ou du disque dur, mais il serait dommage d’avoir crypté les données et de les laisser transiter en clair sur le réseau : il faut crypter la connexion au serveur.

Pour cela, il suffit dans l’analyse de l’appli-cation cliente d’indiquer dans la connexion (onglet “Avancé”) le type de cryptage à utiliser (comme pour le 1er conseil sur le cryptage des données)...Cryptage = hCryptagexxx

Notre conseil : N’autorisez que les connexions sécurisées sur les serveurs de production. Cette restriction peut être mise en place grâce au mécanisme de droits de HyperFileSQL Client/Serveur.

4ème conseil : Pensez à définir des droits sur le serveur de base de donnéesLes droits permettent d’être sûr que n’importe qui ne pourra pas modifier vos données. Que ce soit via le Centre de Contrôle HyperFileSQL mais aussi depuis l’application (depuis une option de menu ou même un bouton rendu accessible par erreur dans l’application...).

La définition et la configuration des droits sur  une  base  de  données HyperFileSQL s’effectuent depuis le Centre de Contrôle HyperFileSQL (“CC180HF.exe”) ou par pro-grammation pour répondre à des besoins spécifiques.

Depuis le Centre de Contrôles HyperFileSQL, la configuration des droits d’accès se fait à trois niveaux dans l’onglet “Droits” correspondant :• Au niveau du serveur,• Au niveau de la base de données,• Au niveau du fichier de données.

Il est alors possible, pour chaque utilisateur ou groupe d’utilisateurs, de définir des droits, par exemple :• Droit de changer les droits,• Droit d’ajouter un enregistrement,• Droit de supprimer un enregistrement,• etc.

La politique de sécurité optimale est de tout interdire et de donner les autorisa-tions au fur et à mesure.

N’hésitez pas non plus à interdire complète-ment l’accès à certains utilisateurs ou groupes d’utilisateurs à des bases de données entières ou à des fichiers sensibles.

5ème conseil : Pensez à défi-nir un mot de passe pour le compte “Administrateur”Par défaut, le compte “Administrateur” n’a pas de mot de passe. Il est donc indispensable d’en mettre un avant de stocker des données sensibles. Comme pour tout mot de passe, le mot de passe du compte “Administrateur” sera de préférence un mélange de chiffres et de lettres suffisamment long et sans signification.

La définition ou le changement d’un mot de passe pour un utilisateur de base HyperFileSQL Client/Serveur s’effectue par le Centre de Contrôle HyperFileSQL (“CC180HF.exe”).

De même, il est conseillé de créer des groupes d’utilisateurs pour simplifier la gestion des droits par la suite.

Sécurisez l’exploitation des applicationsSécuriser les données se configure en partie au niveau de la base de données. Mais cela peut également correspondre à la sécuri-

sation des données dans l’application, par exemple pour une application sensible, éviter que n’importe qui puisse voir les données, désactiver  les exports (Excel, XML, etc.) sur des données sensibles, etc.

6ème Conseil : Activer le ver-rouillage d’applicationPour des applications sensibles comme des applications de comptabilité, médical, de gestion de paye, etc., nous vous conseillons de mettre en place un système de verrouillage de l’application. Ce verrouillage s’effectue avec les fonctions Verrouxxx du Wlangage.

Les fonctions Verrouxxx permettent de ver-rouiller l’application au bout d’un certain temps d’inactivité dans l’application, ou alors de la verrouiller à la demande.

Pour déverrouiller une application verrouillée, l’utilisateur devra saisir soit :• Un mot de passe défini par programmation.• Un mot de passe de session Windows (mode par défaut).

TDF TECH 2013 - www.pcsoft.fr - 85

Page 44: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

Pour verrouiller l’application, il est possible de :• Le faire par programmation avec la fonction VerrouAppliBloque du WLangage.• Le faire par programmation lors de la détec-tion d’une période d’inactivité grâce à la fonction VerrouAppliDélai.• L’activer sur  le projet  lors de  la détection d’inactivité par la fenêtre de description du projet.

La fonction VerrouAppliMotDePasse permet de spécifier le mot de passe à utiliser pour déverrouiller l’application. Si cette fonction n’est pas utilisée, le mot de passe à utiliser sera celui de la session Windows de l’utilisateur.

7ème conseil : Ne pas stocker les mots de passe des utilisa-teursLa mise en place de mots de passe est un point central de la sécurité, mais comment les stocker de manière sûre ?

Bien sûr, il est possible de stocker le ou les mots de passe dans un fichier de données crypté, mais il y a encore plus sûr : il suffit de ne pas stocker les mots de passe du tout...

L’idée ici est de ne pas stocker le mot de passe dans un fichier de données mais dans une clé de hashage du mot de passe.

Rappel : une clé de hashage, c’est une empreinte unique correspondant à une chaîne ou un fichier. Il est possible de gérer les clés de hashage à l’aide des fonctions HashXXX du WLangage : HashChaîne, HashFichier, etc.

Pour vérifier qu’un mot de passe est valide, il suffit de recalculer la clé de hashage et de la comparer avec celle stockée dans le fichier.

8ème conseil : Désactiver les FAA d’export des donnéesIl  est  possible  de  désactiver  les  FAA (Fonctionnalités Automatiques de l’Applica-tion) d’exports des données, avec la fonction DésactiveFAA.Cette désactivation peut être effectuée soit champ par champ, soit par fenêtre, soit pour tous les champs de l’application.Bien entendu, sur une application sensible, il est préférable de le désactiver pour tous les champs afin d’empêcher l’export de données sensibles.

9ème conseil : Ne pas garder les mots de passe en mémoirePour les applications vraiment très sensibles, nous vous conseillons, dans votre code, de conserver les informations sensibles unique-

ment le temps dont vous avez besoin !

Par exemple, lorsque vous n’avez plus besoin du mot de passe, remettez la variable le contenant à vide. Ce type de modification rendra la tâche plus difficile à une personne malveillante essayant d’analyser la mémoire de l’application à la recherche des mots de passe.

10ème conseil : Gérer les licences des applicationsPour contrôler les installations d’applica-tions commerciales mais également au sein de l’entreprise pour des raisons de sécurité et de maintenance, il est possible de gérer simplement des licences à l’aide de fonctions CléXXX du WLangage.

Les fonctions CléXXX permettent de calculer une clé d’activation logicielle à partir d’une clé initiale.

Le fonctionnement général de ces fonctions CléXXX est le suivant :• La clé initiale est calculée à partir de don-nées client, par exemple le numéro de série du disque dur... ou le numéro de licence de Windows. Ce calcul s’effectue avec la fonction CléGénèreCléInitiale.• Ensuite à partir de cette clé  initiale,  il est possible de générer une clé d’activation avec la fonction CléCalculeCléActivation.Cette phase d’activation est réalisée par une application tierce, en général via internet.• Et enfin, dans le code de l’application, le code vérifie que la clé d’activation correspond à la clé initiale avec la fonction CléCompareClé.

Retrouvez dans le volet “Exemples” de WINDEV, un exemple unitaire qui explique en détail comment utiliser les fonctions clé.

Note : pour protéger une application, il est également possible d’utiliser de clés phy-siques, dongle avec les fonctions HASPXXX du Wlangage.

11ème conseil : Signer les applicationsLa signature des exécutables est disponible depuis WINDEV 16. La signature d’une appli-cation permet d’être certain que l’application n’a pas été modifiée depuis sa génération.

Pour signer un exécutable, il suffit de l’indiquer lors du plan correspondant dans l’assistant de création de l’exécutable (sous réserve d’avoir un certificat installé sur le poste de développement).

Les certificats de signature d’applications peuvent être obtenus soit :• En les achetant à des organismes spécialisés comme Verisign.

• En  les générant, pour par exemple des applications diffusées en interne.

Note  : depuis WinDev 18,  il est également possible de signer les installations.

Pour obtenir plus de détails sur la signature d’applications, l’utilisation et la génération des certificats consultez la LST 80 (pages 16 et 17).

12ème conseil : Protéger les installationsPour des applications sensibles, la protection du programme d’installation par un mot de passe se justifie très naturellement : inutile que toute personne de l’entreprise puisse installer le logiciel des ressources humaines par exemple... C’est possible.

Une fois ce mécanisme mis en place, l’appli-cation pourra s’installer uniquement si le mot de passe est saisi.

Dans ce cas, la solution la plus simple est de ne fournir le mot de passe d’installation qu’à l’administrateur réseau, de manière à ce qu’il soit le seul à pouvoir installer une application !

Pour activer cette protection, il suffit de cocher “Protection par mot de passe” dans l’étape “Support” de la création de la procédure d’installation.

86 - TDF TECH 2013 - www.pcsoft.fr TDF TECH 2013 - www.pcsoft.fr - 87

Page 45: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

RACCOURCIS DE WINDEV, WEBDEV ET WINDEV MOBILE

Les pages suivantes présentent les principaux raccourcis de WINDEV, WEBDEV et WINDEV Mobile.

Pour les avoir toujours à portée de main, imprimez en recto-verso et pliez selon les pointillés.

Ces pages sont disponibles en version PDF dans l’aide en ligne (http://doc.pcsoft.fr), sous la section “Principaux raccourcis clavier” de la page d’accueil.

Pour obtenir la liste complète des raccourcis, sous le volet “Accueil”, dans le groupe “Aide en ligne”, déroulez “Aide” et sélectionnez “Raccourcis clavier”.

88 - TDF TECH 2013 - www.pcsoft.fr

PRIN

CIPA

UX

RACC

OU

RCIS

CLA

VIER

Racc

ourc

is co

mm

uns

à to

us

les

édite

urs

Racc

ourc

is d

e ge

stio

n de

s fic

hier

s

Racc

ourc

is d

’édi

tion

Racc

ourc

is p

our e

ffect

uer u

ne re

cher

che

Racc

ourc

is c

omm

uns

de l’

envi

ronn

emen

t de

déve

-lo

ppem

ent

Racc

ourc

is p

our e

ffect

uer d

es te

sts

Ctrl

NN

ouve

au

(Cré

atio

n d’

un

élé-

men

t).Ct

rl O

Ouv

rir (O

uver

ture

d’u

n él

émen

t).Ct

rl Sh

ift O

Ouv

rir u

n pr

ojet

.Ct

rl S

Enre

gist

rer

l’élé

men

t en

cou

rsd’

éditi

onCt

rl Sh

ift S

Enre

gist

rer s

ous

Alt S

Enre

gist

rer t

out

Ctrl

Shift

WFe

rmer

to

us

les

élém

ents

ouve

rts

Ctrl

Alt W

Ferm

er t

ous

les

élém

ents

sau

fce

lui e

n co

urs

(«Fer

mer

tout

sau

fm

oi-m

ême»

)

Ctrl

X ou

Sh

ift S

uppr

Coup

er l’

élém

ent s

élec

tionn

é

Ctrl

C ou

Ct

rl In

ser

Copi

er l’

élém

ent s

élec

tionn

é

Ctrl

V ou

Sh

ift In

ser

Colle

r le

co

nten

u du

pr

esse

-pa

pier

sCt

rl Sh

ift V

ou

Ctrl

Shift

Inse

rCo

ller

le

cont

enu

du

pres

se-

papi

ers

avec

his

toriq

ue

Ctrl

Z ou

Al

tRe

tour

Arr

ière

Annu

ler l

a de

rniè

re a

ctio

n

Ctrl

Y ou

Ct

rl Sh

ift Z

Réta

blir

(Res

taur

er l

a de

rniè

reac

tion)

Supp

rSu

pprim

er

la

séle

ctio

n ou

le

cara

ctèr

e en

cou

rs.

Ctrl

ASé

lect

ionn

er to

ut.

Dan

s l’é

dite

ur d

e co

de,

Séle

c-tio

nner

le

s di

ffére

nts

trai

te-

men

ts p

ar p

alie

r. Ct

rl F2

Reve

nir

à la

pos

ition

en

cour

sda

ns le

cod

e pr

écéd

ent.

Alt E

ntré

eO

uvrir

la

de

scrip

tion

de

l’élé

-m

ent s

élec

tionn

é.Ct

rl P

Impr

imer

la s

élec

tion

Ctrl

ERe

cher

che

rapi

de d

ans

les

élé-

men

ts d

u pr

ojet

Ctrl

FRe

cher

cher

F3Po

ursu

ivre

une

rech

erch

eSh

ift F

3Po

ursu

ivre

une

rec

herc

he d

ans

le s

ens

inve

rse

F1Ai

deF4

Repr

odui

re la

der

nièr

e ac

tion

sur

un c

ham

p ou

une

mul

ti-sé

lect

ion

de c

ham

psSh

ift F

4Re

prod

uire

to

utes

le

s ac

tions

effe

ctué

es

depu

is

la

séle

ctio

ndu

der

nier

cha

mp

sur

un a

utre

cham

pCt

rl J

Affic

her

la fe

nêtre

de

gest

ion

dute

mps

F8Af

fiche

r la

lis

te d

es p

rocé

dure

slo

cale

s da

ns

l’exp

lora

teur

de

proj

etSh

ift F

8Af

fiche

r la

liste

des

cla

sses

Ctrl

F8Af

fiche

r la

lis

te d

es p

rocé

dure

sgl

obal

es

dans

l’e

xplo

rate

ur d

epr

ojet

Ctrl

Alt L

Chan

ger

la

lang

ue

d’af

ficha

ge(p

assa

ge à

la la

ngue

sui

vant

e)Ct

rl Sh

ift A

lt L

Chan

ger

la

lang

ue

d’af

ficha

ge(p

assa

ge

à la

la

ngue

pr

écé-

dent

e)Ct

rl G

Pass

er à

la c

onfig

urat

ion

de p

ro-

jet s

uiva

nte.

F9Te

ster

l’él

émen

t en

cour

sCt

rl F9

Test

er le

pro

jet

Alt F

9Tr

acer

le p

roje

t

Racc

ourc

is de

l’éd

iteur

d’é

tats

Racc

ourc

is d

’aff

icha

ge

Racc

ourc

is d

’édi

tion

Racc

ourc

is d

e na

viga

tion

Racc

ourc

is de

s vo

lets

de

l’env

ironn

emen

tRa

ccou

rcis

com

mun

s

Vole

t Cod

e : E

ditio

n de

s pr

océd

ures

et d

es c

lass

es

Vole

t Cod

e : M

ode

débo

gueu

r

Vole

t Cod

e : M

ode

Erre

urs

de c

ompi

latio

n

F6Af

fiche

r /

Rend

re

invi

sibl

e le

nom

des

cha

mps

F71è

re

utili

satio

n :

Affic

her

les

cham

ps s

ans

bord

2èm

e ut

ilisa

tion

: Aff

iche

r le

coin

des

cham

ps3è

me

utili

satio

n :

Affic

her

leca

dre

com

plet

des

cha

mps

F10

Affic

her

le n

om d

es b

locs

en

entie

r / e

n ab

régé

F11

Affic

her

/ Re

ndre

inv

isib

les

les

mar

ges

de l’

état

F12

Affic

her

la l

iste

des

cha

mps

de

l’éta

t en

cour

sAl

t DAc

tiver

/ D

ésac

tiver

la v

isua

lisa-

tion

de l’

état

en

mod

e 3

dim

en-

sion

sCt

rl R

Affic

her

/ Re

ndre

inv

isib

les

les

règl

esCt

rl Al

t 0

Zoom

à 1

00%

Ctrl

roul

ette

Zoom

+ /

-

Flèc

he d

roite

Dép

lace

r le

cham

p ou

la c

olon

nesé

lect

ionn

ée à

dro

iteFl

èche

gau

che

Dép

lace

r le

cham

p ou

la c

olon

nesé

lect

ionn

ée à

gau

che

Alt

Flèc

hedr

oite

ou

gau-

che

Mod

ifier

la

ta

ille

du

cham

psé

lect

ionn

é

Ctrl

Shift

CCo

pier

le

st

yle

de

l’élé

men

tsé

lect

ionn

éCt

rl G

Met

tre e

n gr

as l

e ch

amp

séle

c-tio

nné

Ctrl

IM

ettre

en

ita

lique

le

ch

amp

séle

ctio

nné

Ctrl

USo

ulig

ner l

e ch

amp

séle

ctio

nné

F2Ed

iter l

e co

de d

e la

sél

ectio

nSh

ift F

2Ed

iter l

e co

de d

e la

fenê

tre

Ctrl

QAf

fiche

r /

mas

quer

le

s vo

lets

ancr

és e

n ba

sCt

rl W

Mas

quer

tous

les

vole

tsCt

rl Sh

ift T

abSé

lect

ionn

er l’

ongl

et p

récé

dent

Ctrl

TAB

Séle

ctio

nner

l’on

glet

sui

vant

F2 o

u En

trée

Edite

r le

co

de

de

l’élé

men

tsé

lect

ionn

é da

ns le

vol

et «

Visu

a-lis

atio

n co

ntex

tuel

le d

u co

de»

F5Ra

fraî

chir

la li

ste

des

proc

édur

esCt

rl En

trée

Reno

mm

er

l’élé

men

t sé

lec-

tionn

é da

ns l

e vo

let

«Vis

ualis

a-tio

n co

ntex

tuel

le d

u co

de»

Entr

éeAj

oute

r une

exp

ress

ion

F2Ed

iter l

’exp

ress

ion

séle

ctio

nnée

F5Co

ntin

uer l

e te

stF6

Cont

inue

r le

tes

t ju

squ’

au c

ur-

seur

F7Ex

écut

er le

test

pas

à p

asF8

Saut

er le

s pr

oprié

tés

ou le

s fo

nc-

tions

Alt F

inSo

rtir

de l

a pr

oprié

té o

u de

la

fonc

tion

Ctrl

Paus

eIn

terr

ompr

e le

test

(Pau

se)

Shift

F5

Arrê

ter

le t

est

(lors

du

test

du

proj

et o

u de

la fe

nêtre

)Ct

rl B

Enle

ver /

Met

tre u

n po

int d

’arr

êt

Entr

ée

ou

F2ou

F12

Affic

her l

e co

de d

e l’e

rreu

r sél

ec-

tionn

éeCt

rl P

Impr

imer

la li

ste

des

erre

urs

deco

mpi

latio

n

ww

w.p

csof

t.fr

ww

w.p

csof

t.fr

Imprimez en Recto-verso et pliez selon les pointillés

Page 46: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

Raccourcis de l’éditeur de codeRaccourcis d’affichage

Raccourcis pour les marques et les points d’arrêt

Raccourcis d’édition

Raccourcis de navigation

Raccourcis de recherche

Raccourcis d’aide et de saisie assistée

F6Afficher

/ rendre

invisible le

TimeStam

p.Shift F2

Afficher la liste des référencescroisées du sym

bole sélectionnéCtrl Q

Masquer les volets ancrés en

basCtrl Roulette

Zoom + / -

F7Aller à la m

arque suivanteShift F7

Aller à la marque précédente

Ctrl F7Enlever / M

ettre une marque de

positionCtrl B

Enlever / Mettre un point d’arrêt

Ctrl DD

upliquer la ou les lignes sélec-tionnées.

Ctrl GSélectionner la ligne à afficher

Ctrl LSupprim

er la ligne couranteCtrl

/ (pavé

numérique)

Mettre en com

mentaire

Ctrl Shift

/(pavé num

)Enlever les com

mentaires (//)

Ctrl BM

ettre un point d’arrêt sur laligne en cours d’édition

TABIndenter à droite

Shift TABIndenter à gauche

Alt Flèche hautD

éplacer une ligne de code versle haut.

Alt Flèche basD

éplacer une ligne de code versle bas.

F8Afficher le volet des procédureslocales

Ctrl + F8Afficher le volet des procéduresglobales

Ctrl EntréeInsérer ’...’ et retour à la lignesuivante

Ctrl RRé-indenter le code

Ctrl TTraduire les m

essagesShift + F11

Ouvre la

fenêtre de

sélectiond’un cham

pAlt T

Utiliser la pipette

F2Aller dans le code de l’élém

entsélectionné (nom

de classe, ...)Alt + F2

Visualiser un champ sélectionné

dans l’éditeur de codeCtrl + F2

Revenir à

la procédure

précé-dente

Ctrl Alt F2Ouvrir l’élém

ent contenant le codeF4

Nouvelle procédure locale

Shift F4N

ouvelle procédure globaleF12

Erreur suivanteShift F12

Erreur précédenteCtrl F12

Erreur couranteCtrl Shift F2

Editer le code de l’élément sélec-

tionné dans le volet «Visualisationcontextuelle du code»

Alt flèche droiteou gauche

Afficher le

traitement

accédéprécédem

ment

Alt Hom

eAfficher le 1er traitem

ent accédéAlt Fin

Afficher le

dernier traitem

entaccédé.

Ctrl flèche hautAller au début du traitem

entCtrl début

Aller au début du document

Ctrl flèche basAller à la fin du traitem

entCtrl + fin

Aller à la fin du document

Ctrl F3Effectuer une recherche sur lem

ot en cours. Toutes les occur-rences sont surlignées dans lecode

F3Sélectionner

le m

ot suivant

trouvéShift F3

Sélectionner le

mot

précédenttrouvé

Shift F1Assistant de code

F5Com

pléter le mot saisi depuis le

glossaireShift F5

Editer le glossaireCtrl F1

Saisie assistéeTAB

Sélectionner un choix (complé-

tion automatique)

Ctrl Alt <- /->D

éfiler les syntaxes (complétion

automatique).

Raccourcis pour effectuer des tests

Raccourcis de l’éditeur de fenêtresRaccourcis d’affichage

Raccourcis d’édition

Raccourcis de navigation

Raccourcis pour effectuer des tests

Raccourcis de style

F9Tester l’élém

ent en coursCtrl F9

Tester le projetAlt F9

Tracer le projetCtrl shift F9

Ouvrir la fenêtre de param

étragedu m

ode test

Alt F5Editer l’ordre de navigation

F5Afficher l’ordre de navigation

F6Afficher

/ Rendre

invisible le

nom des cham

ps puis l’ancragedes cham

psF7

Afficher /

Rendre invisible

laplace occupée par les cham

pspuis le cadre des cham

psF12

Modifier

les options

d’édition,afficher la liste des cham

ps de lafenêtre en cours, ...

Alt CAfficher

/ Rendre

invisible la

sélection. Alt D

Activer / Désactiver la visualisa-

tion en 3 dimensions.

Alt EActiver / Rendre invisible l’enca-drem

ent de la sélectionAlt R

Afficher /

Rendre invisible

lagrille

Ctrl RAfficher / Rendre invisibles lesrègles

Ctrl TAdapter la vue à la fenêtre

Ctrl Shift TAdapter la vue à la zone M

DI

Alt Shift DActiver

la visualisation

en 3

dimensions et lancer l’anim

ation(ECH

AP pour sortir)Arrêt D

efilLancer l’anim

ation en mode 3

dimensions

Ctrl Alt 0Zoom

à 100%Ctrl Pavé num+ / 6 ou Ctrlroulette

Zoom + / -

EntréeEditer le libellé du cham

p sélec-tionné

Alt VVerrouiller

/ déverrouiller

lasélection

Alt Flèche droiteou gauche

Modifier

la taille

du cham

psélectionné

Ctrl DD

upliquer la sélectionCtrl Shift G

Dissocier la sélection

Ctrl GG

rouper la sélectionCtrl 0

Adapter le champ à son contenu

Ctrl Shift POuvrir un sélecteur de fichier etassocier l’im

age au champ

F2Editer le code de la sélection

Shift F2Editer le code de la fenêtre

Ctrl F2Editer le code de la sélection etdes cham

ps associésCtrl Shift F2

Editer le code associé à l’élé-m

ent en

cours dans

le volet

«Visualisation contextuelle

ducode»

Hom

ePrem

ier plan utiliséPage H

autPlan précédent

Page BasPlan suivant

Ctrl Page Haut

Plan précédent utiliséCtrl Page Bas

Plan suivant utiliséFin

Dernier plan utilisé

Shift F9Aperçu de la fenêtre en exécu-tion

Shift F5Arrêter le m

ode test (lors du testdu projet ou de la fenêtre)

Shift EntréeAfficher la fenêtre de sélectiondu style du cham

p sélectionnéCtrl Shift C

Copier le

style de

l’élément

sélectionnéAlt G

Sélectionner le

gabarit de

lafenêtre

ww

w.pcsoft.fr

ww

w.pcsoft.fr

Raccourcis de l’éditeur de codeRaccourcis d’affichage

Raccourcis pour les marques et les points d’arrêt

Raccourcis d’édition

Raccourcis de navigation

Raccourcis de recherche

Raccourcis d’aide et de saisie assistée

F6Afficher

/ rendre

invisible le

TimeStam

p.Shift F2

Afficher la liste des référencescroisées du sym

bole sélectionnéCtrl Q

Masquer les volets ancrés en

basCtrl Roulette

Zoom + / -

F7Aller à la m

arque suivanteShift F7

Aller à la marque précédente

Ctrl F7Enlever / M

ettre une marque de

positionCtrl B

Enlever / Mettre un point d’arrêt

Ctrl DD

upliquer la ou les lignes sélec-tionnées.

Ctrl GSélectionner la ligne à afficher

Ctrl LSupprim

er la ligne couranteCtrl

/ (pavé

numérique)

Mettre en com

mentaire

Ctrl Shift

/(pavé num

)Enlever les com

mentaires (//)

Ctrl BM

ettre un point d’arrêt sur laligne en cours d’édition

TABIndenter à droite

Shift TABIndenter à gauche

Alt Flèche hautD

éplacer une ligne de code versle haut.

Alt Flèche basD

éplacer une ligne de code versle bas.

F8Afficher le volet des procédureslocales

Ctrl + F8Afficher le volet des procéduresglobales

Ctrl EntréeInsérer ’...’ et retour à la lignesuivante

Ctrl RRé-indenter le code

Ctrl TTraduire les m

essagesShift + F11

Ouvre la

fenêtre de

sélectiond’un cham

pAlt T

Utiliser la pipette

F2Aller dans le code de l’élém

entsélectionné (nom

de classe, ...)Alt + F2

Visualiser un champ sélectionné

dans l’éditeur de codeCtrl + F2

Revenir à

la procédure

précé-dente

Ctrl Alt F2Ouvrir l’élém

ent contenant le codeF4

Nouvelle procédure locale

Shift F4N

ouvelle procédure globaleF12

Erreur suivanteShift F12

Erreur précédenteCtrl F12

Erreur couranteCtrl Shift F2

Editer le code de l’élément sélec-

tionné dans le volet «Visualisationcontextuelle du code»

Alt flèche droiteou gauche

Afficher le

traitement

accédéprécédem

ment

Alt Hom

eAfficher le 1er traitem

ent accédéAlt Fin

Afficher le

dernier traitem

entaccédé.

Ctrl flèche hautAller au début du traitem

entCtrl début

Aller au début du document

Ctrl flèche basAller à la fin du traitem

entCtrl + fin

Aller à la fin du document

Ctrl F3Effectuer une recherche sur lem

ot en cours. Toutes les occur-rences sont surlignées dans lecode

F3Sélectionner

le m

ot suivant

trouvéShift F3

Sélectionner le

mot

précédenttrouvé

Shift F1Assistant de code

F5Com

pléter le mot saisi depuis le

glossaireShift F5

Editer le glossaireCtrl F1

Saisie assistéeTAB

Sélectionner un choix (complé-

tion automatique)

Ctrl Alt <- /->D

éfiler les syntaxes (complétion

automatique).

Raccourcis pour effectuer des tests

Raccourcis de l’éditeur de fenêtresRaccourcis d’affichage

Raccourcis d’édition

Raccourcis de navigation

Raccourcis pour effectuer des tests

Raccourcis de style

F9Tester l’élém

ent en coursCtrl F9

Tester le projetAlt F9

Tracer le projetCtrl shift F9

Ouvrir la fenêtre de param

étragedu m

ode test

Alt F5Editer l’ordre de navigation

F5Afficher l’ordre de navigation

F6Afficher

/ Rendre

invisible le

nom des cham

ps puis l’ancragedes cham

psF7

Afficher /

Rendre invisible

laplace occupée par les cham

pspuis le cadre des cham

psF12

Modifier

les options

d’édition,afficher la liste des cham

ps de lafenêtre en cours, ...

Alt CAfficher

/ Rendre

invisible la

sélection. Alt D

Activer / Désactiver la visualisa-

tion en 3 dimensions.

Alt EActiver / Rendre invisible l’enca-drem

ent de la sélectionAlt R

Afficher /

Rendre invisible

lagrille

Ctrl RAfficher / Rendre invisibles lesrègles

Ctrl TAdapter la vue à la fenêtre

Ctrl Shift TAdapter la vue à la zone M

DI

Alt Shift DActiver

la visualisation

en 3

dimensions et lancer l’anim

ation(ECH

AP pour sortir)Arrêt D

efilLancer l’anim

ation en mode 3

dimensions

Ctrl Alt 0Zoom

à 100%Ctrl Pavé num+ / 6 ou Ctrlroulette

Zoom + / -

EntréeEditer le libellé du cham

p sélec-tionné

Alt VVerrouiller

/ déverrouiller

lasélection

Alt Flèche droiteou gauche

Modifier

la taille

du cham

psélectionné

Ctrl DD

upliquer la sélectionCtrl Shift G

Dissocier la sélection

Ctrl GG

rouper la sélectionCtrl 0

Adapter le champ à son contenu

Ctrl Shift POuvrir un sélecteur de fichier etassocier l’im

age au champ

F2Editer le code de la sélection

Shift F2Editer le code de la fenêtre

Ctrl F2Editer le code de la sélection etdes cham

ps associésCtrl Shift F2

Editer le code associé à l’élé-m

ent en

cours dans

le volet

«Visualisation contextuelle

ducode»

Hom

ePrem

ier plan utiliséPage H

autPlan précédent

Page BasPlan suivant

Ctrl Page Haut

Plan précédent utiliséCtrl Page Bas

Plan suivant utiliséFin

Dernier plan utilisé

Shift F9Aperçu de la fenêtre en exécu-tion

Shift F5Arrêter le m

ode test (lors du testdu projet ou de la fenêtre)

Shift EntréeAfficher la fenêtre de sélectiondu style du cham

p sélectionnéCtrl Shift C

Copier le

style de

l’élément

sélectionnéAlt G

Sélectionner le

gabarit de

lafenêtre

ww

w.pcsoft.fr

ww

w.pcsoft.fr

PRIN

CIPA

UX

RACC

OU

RCIS

CLA

VIER

Racc

ourc

is co

mm

uns

à to

us

les

édite

urs

Racc

ourc

is d

e ge

stio

n de

s fic

hier

s

Racc

ourc

is d

’édi

tion

Racc

ourc

is p

our e

ffect

uer u

ne re

cher

che

Racc

ourc

is c

omm

uns

de l’

envi

ronn

emen

t de

déve

-lo

ppem

ent

Racc

ourc

is p

our e

ffect

uer d

es te

sts

Ctrl

NN

ouve

au

(Cré

atio

n d’

un

élé-

men

t)Ct

rl O

Ouv

rir (O

uver

ture

d’u

n él

émen

t)Ct

rl Sh

ift O

Ouv

rir u

n pr

ojet

Ctrl

SEn

regi

stre

r l’é

lém

ent

en c

ours

d’éd

ition

Ctrl

Shift

SEn

regi

stre

r sou

sAl

t SEn

regi

stre

r tou

tCt

rl Sh

ift W

Ferm

er

tous

le

s él

émen

tsou

vert

sCt

rl Al

t WFe

rmer

tou

s le

s él

émen

ts s

auf

celu

i en

cour

s («F

erm

er to

ut s

auf

moi

-mêm

e»)

Ctrl

X ou

Sh

ift S

uppr

Coup

er l’

élém

ent s

élec

tionn

é

Ctrl

C ou

Ct

rl In

ser

Copi

er l’

élém

ent s

élec

tionn

é

Ctrl

V ou

Sh

ift In

ser

Colle

r le

co

nten

u du

pr

esse

-pa

pier

sCt

rl Sh

ift V

ou

Ctrl

Shift

Inse

rCo

ller

le

cont

enu

du

pres

se-

papi

ers

avec

his

toriq

ue

Ctrl

Z ou

Al

tRe

tour

Arr

ière

Annu

ler l

a de

rniè

re a

ctio

n

Ctrl

Y ou

Ct

rl Sh

ift Z

Réta

blir

(Res

taur

er l

a de

rniè

reac

tion)

Supp

rSu

pprim

er

la

séle

ctio

n ou

le

cara

ctèr

e en

cou

rs.

Ctrl

ASé

lect

ionn

er to

ut.

Dan

s l’é

dite

ur d

e co

de,

séle

c-tio

nner

le

s di

ffére

nts

trai

te-

men

ts p

ar p

alie

r. Ct

rl F2

Reve

nir

à la

pos

ition

en

cour

sda

ns le

cod

e pr

écéd

ent.

Alt E

ntré

eO

uvrir

la

de

scrip

tion

de

l’élé

-m

ent s

élec

tionn

é.Ct

rl P

Impr

imer

la s

élec

tion

Ctrl

ERe

cher

che

rapi

de d

ans

les

élé-

men

ts d

u pr

ojet

Ctrl

FRe

cher

cher

F3Po

ursu

ivre

une

rech

erch

eSh

ift F

3Po

ursu

ivre

une

rec

herc

he d

ans

le s

ens

inve

rse

F1Ai

deF4

Repr

odui

re la

der

nièr

e ac

tion

sur

un c

ham

p ou

une

mul

ti-sé

lect

ion

de c

ham

psSh

ift F

4Re

prod

uire

to

utes

le

s ac

tions

effe

ctué

es

depu

is

la

séle

ctio

ndu

der

nier

cha

mp

sur

un a

utre

cham

pCt

rl J

Affic

her l

a fe

nêtre

de

gest

ion

dute

mps

F8Af

fiche

r la

lis

te d

es p

rocé

dure

slo

cale

s da

ns

l’exp

lora

teur

de

proj

etSh

ift F

8Af

fiche

r la

liste

des

cla

sses

Ctrl

F8Af

fiche

r la

lis

te d

es p

rocé

dure

sgl

obal

es

dans

l’e

xplo

rate

ur d

epr

ojet

Ctrl

Alt L

Chan

ger

la

lang

ue

d’af

ficha

ge(p

assa

ge à

la la

ngue

sui

vant

e)Ct

rl Sh

ift A

lt L

Chan

ger

la

lang

ue

d’af

ficha

ge(p

assa

ge

à la

la

ngue

pr

écé-

dent

e)Ct

rl G

Pass

er à

la c

onfig

urat

ion

de p

ro-

jet s

uiva

nte.

F9Te

ster

l’él

émen

t en

cour

sCt

rl F9

Test

er le

pro

jet

Alt F

9Tr

acer

le p

roje

t

Racc

ourc

is de

l’éd

iteur

d’é

tats

Racc

ourc

is d

’aff

icha

ge

Racc

ourc

is d

’édi

tion

Rac

cour

cis

de n

avig

atio

n

Racc

ourc

is de

s vo

lets

de

l’env

ironn

emen

tRa

ccou

rcis

com

mun

s

Vole

t Cod

e : E

ditio

n de

s pr

océd

ures

et d

es c

lass

es

Vole

t Cod

e : M

ode

débo

gueu

r

Vole

t Cod

e : M

ode

Erre

urs

de c

ompi

latio

n

F6Af

fiche

r /

Rend

re

invi

sibl

e le

nom

des

cha

mps

F71è

re

utili

satio

n :

Affic

her

les

cham

ps s

ans

bord

2èm

e ut

ilisa

tion

: Aff

iche

r le

coin

des

cham

ps3è

me

utili

satio

n :

Affic

her

leca

dre

com

plet

des

cha

mps

F10

Affic

her

le n

om d

es b

locs

en

entie

r / e

n ab

régé

F11

Affic

her

/ Re

ndre

inv

isib

les

les

mar

ges

de l’

état

F12

Affic

her

la l

iste

des

cha

mps

de

l’éta

t en

cour

sAl

t DAc

tiver

/ D

ésac

tiver

la v

isua

lisa-

tion

de l’

état

en

mod

e 3

dim

en-

sion

sCt

rl R

Affic

her

/ Re

ndre

inv

isib

les

les

règl

esCt

rl Al

t 0

Zoom

à 1

00%

Ctrl

roul

ette

Zoom

+ /

-

Flèc

he d

roite

Dép

lace

r le

cham

p ou

la c

olon

nesé

lect

ionn

ée à

dro

iteFl

èche

gau

che

Dép

lace

r le

cham

p ou

la c

olon

nesé

lect

ionn

ée à

gau

che

Alt

Flèc

hedr

oite

ou

gau-

che

Mod

ifier

la

ta

ille

du

cham

psé

lect

ionn

é

Ctrl

Shift

CCo

pier

le

st

yle

de

l’élé

men

tsé

lect

ionn

éCt

rl G

Met

tre e

n gr

as l

e ch

amp

séle

c-tio

nné

Ctrl

IM

ettre

en

ita

lique

le

ch

amp

séle

ctio

nné

Ctrl

USo

ulig

ner l

e ch

amp

séle

ctio

nné

F2Ed

iter l

e co

de d

e la

sél

ectio

nSh

ift F

2Ed

iter l

e co

de d

e la

fenê

tre

Ctrl

QAf

fiche

r /

mas

quer

le

s vo

lets

ancr

és e

n ba

sCt

rl TA

BSé

lect

ionn

er l’

ongl

et s

uiva

ntCt

rl Sh

ift T

abSé

lect

ionn

er l’

ongl

et p

récé

dent

Ctrl

WM

asqu

er to

us le

s vo

lets

F2 o

u En

trée

Edite

r le

co

de

de

l’élé

men

tsé

lect

ionn

é da

ns le

vol

et «

Visu

a-lis

atio

n co

ntex

tuel

le d

u co

de»

F5Ra

fraî

chir

la li

ste

des

proc

édur

esCt

rl En

trée

Reno

mm

er

l’élé

men

t sé

lec-

tionn

é da

ns l

e vo

let

«Vis

ualis

a-tio

n co

ntex

tuel

le d

u co

de»

Entr

éeAj

oute

r une

exp

ress

ion

F2Ed

iter l

’exp

ress

ion

séle

ctio

nnée

F5Co

ntin

uer l

e te

stF6

Cont

inue

r le

tes

t ju

squ’

au c

ur-

seur

F7Ex

écut

er le

test

pas

à p

asF8

Saut

er le

s pr

oprié

tés

ou le

s fo

nc-

tions

Alt F

inSo

rtir

de l

a pr

oprié

té o

u de

la

fonc

tion

Ctrl

Paus

eIn

terr

ompr

e le

test

(Pau

se)

Shift

F5

Arrê

ter

le t

est

(lors

du

test

du

proj

et o

u de

la fe

nêtre

)Ct

rl B

Enle

ver /

Met

tre u

n po

int d

’arr

êt

Entr

ée

ou

F2ou

F12

Affic

her l

e co

de d

e l’e

rreu

r sél

ec-

tionn

éeCt

rl P

Impr

imer

la li

ste

des

erre

urs

deco

mpi

latio

n

ww

w.p

csof

t.fr

ww

w.p

csof

t.fr

Imprimez en Recto-verso et pliez selon les pointillés

Page 47: TDF Tech 2013 - PCSOFT - Windev, Webdev, Windev Mobile

Raccourcis de l’éditeur de codeRaccourcis d’affichage

Raccourcis pour les marques et les points d’arrêt

Raccourcis d’édition

Raccourcis de navigation

Raccourcis de recherche

Raccourcis d’aide et de saisie assistée

F6Afficher

/ rendre

invisible le

TimeStam

p.Shift F2

Afficher la liste des référencescroisées du sym

bole sélectionnéCtrl Q

Masquer les volets ancrés en

basCtrl Roulette

Zoom +/-

F7Aller à la m

arque suivanteShift F7

Aller à la marque précédente

Ctrl F7Enlever / M

ettre une marque de

positionCtrl B

Enlever / Mettre un point d’arrêt

Ctrl DD

upliquer la ou les lignes sélec-tionnées.

Ctrl GSélectionner la ligne à afficher

Ctrl LSupprim

er la ligne couranteCtrl

/ (pavé

numérique)

Mettre en com

mentaire

Ctrl Shift

/(pavé

numéri-

que)

Enlever les comm

entaires (//)

Ctrl BM

ettre un point d’arrêt sur laligne en cours d’édition

TABIndenter à droite

Shift TABIndenter à gauche

Alt Flèche hautD

éplacer une ligne de code versle haut

Alt Flèche basD

éplacer une ligne de code versle bas

F8Afficher le volet des procédureslocales

Ctrl + F8Afficher le volet des procéduresglobales

Ctrl EntréeInsérer ’...’ et retour à la lignesuivante

Ctrl RRé-indenter le code

Ctrl TTraduire les m

essagesShift + F11

Ouvre la

fenêtre de

sélectiond’un cham

pAlt T

Utiliser la pipette

F2Aller dans le code de l’élém

entsélectionné (nom

de classe, ...)Alt + F2

Visualiser un champ sélectionné

dans l’éditeur de codeCtrl + F2

Revenir à

la procédure

précé-dente

Ctrl Alt F2Ouvrir

l’élément

contenant le

codeF4

Nouvelle procédure locale

Shift F4N

ouvelle procédure globaleF12

Erreur suivanteShift F12

Erreur précédenteCtrl F12

Erreur couranteCtrl Shift F2

Editer le code de l’élément sélec-

tionné dans le volet «Visualisa-tion contextuelle du code»

Alt flèche

droite ou

gau-che

Afficher le traitement accédé pré-

cédemm

ent

Alt Hom

eAfficher le 1er traitem

ent accédéAlt Fin

Afficher le

dernier traitem

entaccédé.

Ctrl flèche hautAller au début du traitem

entCtrl début

Aller au début du document

Ctrl flèche basAller à la fin du traitem

entCtrl + fin

Aller à la fin du document

Alt EntréeOuvre

la description

de l’élé-

ment dont le code est affiché

Ctrl F3Effectuer une recherche sur lem

ot en cours. Toutes les occur-rences sont surlignées dans lecode.

F3Sélectionner

le m

ot suivant

trouvéShift F3

Sélectionner le mot précédent

trouvé

Shift F1Lancer l’assistant de code

F5Com

pléter le mot saisi depuis le

glossaireShift F5

Editer le glossaireCtrl F1

Saisie assistée (complétion auto-

matique)

Raccourcis pour effectuer des tests

Raccourcis de l’éditeur de pagesRaccourcis d’affichage

Raccourcis d’édition

Raccourcis de navigation

Raccourcis pour effectuer des tests

Raccourcis de style

Ctrl Alt <- /->D

éfiler les syntaxes (complétion

automatique).

TABSélectionner un choix (com

plé-tion autom

atique)

F9Tester l’élém

ent en coursCtrl F9

Tester le projetAlt F9

Tracer le projetCtrl shift F9

Ouvrir la fenêtre de param

étragedu m

ode test

F5Afficher l’ordre de navigation

F7Afficher

/ Rendre

invisible la

place occupée par les champs

puis le cadre des champs

F12M

odifier les

options d’édition,

afficher la liste des champs de la

page en cours, ...Alt C

Afficher /

Rendre invisible

lasélection.

Alt DActiver / D

ésactiver la visualisa-tion en 3 dim

ensions. Shift Alt D

Activer la

visualisation en

3dim

ensions et lancer l’animation

Alt RAfficher

/ Rendre

invisible la

grilleCtrl R

Afficher / Rendre invisibles lesrègles

Alt ZPasser du m

ode Zoning au mode

Page (et inversement)

Ctrl IAfficher les zones extensibles

Ctrl QM

asquer les volets ancrés enbas

Ctrl TAdapter la vue à la fenêtre

Ctrl Alt 0Zoom

à 100%Ctrl U

Afficher les tables de positionne-m

entCtrl Pavé num+ / 6 ou Ctrlroulette

Zoom + / -

EntréeEditer le libellé du cham

p sélec-tionné

Alt VVerrouiller

/ déverrouiller

lasélection

Alt Flèche

droite ou gau-che

Modifier

la taille

du cham

psélectionné

Ctrl DD

upliquer la sélectionCtrl Shift G

Dissocier la sélection

Ctrl 0Adapter le cham

p à son contenuCtrl G

Grouper la sélection

Ctrl Shift POuvrir un sélecteur de fichier etassocier l’im

age au champ

F2Editer le code de la sélection

Shift F2Editer le code de la fenêtre

Ctrl F2Editer le code de la sélection etdes cham

ps associésCtrl Shift F2

Editer le code associé à l’élé-m

ent en

cours dans

le volet

«Visualisation contextuelle

ducode»

Shift F5Arrêter le m

ode test (lors du testdu projet ou de la fenêtre)

Shift EntréeAfficher la fenêtre de sélectiondu style du cham

p sélectionnéCtrl Shift C

Copier le

style de

l’élément

sélectionné

ww

w.pcsoft.fr

ww

w.pcsoft.fr