12.07.2015 Views

Concepts de WINDEV - Source : www.pcsoft-windev-webdev.com

Concepts de WINDEV - Source : www.pcsoft-windev-webdev.com

Concepts de WINDEV - Source : www.pcsoft-windev-webdev.com

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

WinDev - <strong>Concepts</strong>Version 16 - (1) 10-2010Visitez régulièrement le site <strong>www</strong>.<strong>pcsoft</strong>.fr, espace téléchargement, pour vérifier si <strong>de</strong>smises à jour sont proposées.Adresse e-mail du Support Technique Gratuit : supportgratuit@<strong>pcsoft</strong>.fr.Conseil : Pour recevoir directement <strong>de</strong>s mises à jour intermédiaires et <strong>de</strong>s conseilsd’utilisation, abonnez-vous à la LST (revue trimestrielle + CD), en français.Cette documentation n’est pas contractuelle. Des modifications ont pu intervenir dansle logiciel <strong>de</strong>puis la parution <strong>de</strong> ce manuel. Veuillez consulter l’ai<strong>de</strong> en ligne.Tous les noms <strong>de</strong> produits ou autres marques cités dans cet ouvrage sont <strong>de</strong>s marques déposées par leurs propriétairesrespectifs.© PC SOFT 2010 : Aucune reproduction intégrale ou partielle du présent ouvrage sur quelque support que ce soit nepeut être effectuée sans l’autorisation expresse <strong>de</strong> PC SOFT.


Dans quel ordre lire les manuels ?WinDev est un puissant outil <strong>de</strong> développement d’applications Windows, qui fournit enstandard tous les outils nécessaires à la conception et à la réalisation d’applications.Pour une formation rapi<strong>de</strong> et efficace à WinDev, nous vous conseillons l’ordre d’apprentissagesuivant :123Lecture <strong>de</strong>s "<strong>Concepts</strong>".Ce manuel présente les principaux concepts nécessaires à la création d’une applicationWinDev performante. Certains concepts sont suivis d’une partie "Pratique"détaillant certaines fonctionnalités <strong>de</strong> l’éditeur."Auto-formation" (livre + exercices)Le gui<strong>de</strong> d’auto-formation permet une première approche "pratique" <strong>de</strong> WinDev.Vous pouvez ainsi vous familiariser avec les principaux éditeurs <strong>de</strong> WinDev.Test <strong>de</strong>s exemplesTestez les différents exemples livrés avec WinDev dans les domaines qui vous intéressent(gestion <strong>com</strong>merciale, planning, ...)Le livre "WLangage" présente la programmation en WLangage. Pour chaque thème <strong>de</strong>programmation, vous trouverez une <strong>de</strong>scription <strong>de</strong> la fonctionnalité associée et la liste<strong>de</strong>s fonctions du WLangage correspondantes.L'ai<strong>de</strong> en ligne, accessible par Internet à l’adresse http://doc.<strong>pcsoft</strong>.fr ou installée avecWinDev permet <strong>de</strong> trouver rapi<strong>de</strong>ment la syntaxe d'une fonction du WLangage, d’obtenirune ai<strong>de</strong> sur l’interface, ...Remarque : En cas <strong>de</strong> divergence entre le manuel et l'ai<strong>de</strong> en ligne, suivez les instructions<strong>de</strong> l'ai<strong>de</strong> en ligne.Nous vous souhaitons une agréable prise en main <strong>de</strong> <strong>WINDEV</strong>.Introduction 3


SommairePARTIE 1 - NOTIONS DE BASEProjet et Analyse ..............................................................................................................9Cycle <strong>de</strong> développement d’une application .................................................................14IHM : Les fenêtres ..........................................................................................................16Fenêtres modales, non modales ou MDI .....................................................................17Fenêtre interne ..............................................................................................................19Modèles <strong>de</strong> fenêtres ......................................................................................................20Les différents types <strong>de</strong> champs standard ...................................................................34Modèles <strong>de</strong> champs ......................................................................................................48Edition : Les états ..........................................................................................................49Modèles d’états .............................................................................................................50PARTIE 2 - ENVIRONNEMENT DE DÉVELOPPEMENTLes éditeurs <strong>de</strong> WinDev .................................................................................................53Tableau <strong>de</strong> bord du projet .............................................................................................57WinDev/WebDev/WinDev Mobile : 100% <strong>com</strong>patible ................................................58Configuration <strong>de</strong> projet ..................................................................................................59Génération multiple .......................................................................................................60Perso-dossiers : Organisez votre projet ........................................................................61Gestionnaire <strong>de</strong> sources (GDS) .....................................................................................62Composant interne ........................................................................................................69Composant externe .......................................................................................................72Mo<strong>de</strong>s <strong>de</strong> génération .....................................................................................................80Les Centres <strong>de</strong> Contrôle ................................................................................................85Gestion <strong>de</strong>s exigences ...................................................................................................86Centre <strong>de</strong> Suivi <strong>de</strong> Projets .............................................................................................87Gestion <strong>de</strong>s suggestions et <strong>de</strong>s inci<strong>de</strong>nts ...................................................................88Gestion <strong>de</strong>s règles métier .............................................................................................89PARTIE 3 - BASES DE DONNÉESAnalyse : Structure <strong>de</strong> la base <strong>de</strong> données .................................................................93Les différents types <strong>de</strong> fichiers accessibles ............................................................. 104HyperFileSQL Classic .................................................................................................. 106HyperFileSQL Client/Serveur ..................................................................................... 107HyperFileSQL Cluster .................................................................................................. 108HyperFileSQL : les fichiers créés physiquement ...................................................... 109Associer les champs et les données ......................................................................... 110Les requêtes ............................................................................................................... 112Les requêtes intégrées ............................................................................................... 113Les champs Table/Zone Répétée ............................................................................. 114Réplication universelle ............................................................................................... 116Sommaire 5


Architecture 3-tier ....................................................................................................... 117PARTIE 4 - DÉVELOPPEMENT D’APPLICATIONS : CONCEPTS AVANCÉSRAD / RID ..................................................................................................................... 121Le modèle UML ........................................................................................................... 122Groupware utilisateur ................................................................................................. 129Applications multilingues ........................................................................................... 139Optimiser une application .......................................................................................... 144Livrer "Etats et Requêtes" ........................................................................................... 146MCU : Macro Co<strong>de</strong> Utilisateur .................................................................................... 147Les différents tests disponibles ................................................................................. 149Le débogueur .............................................................................................................. 150Tests unitaires/Tests automatiques .......................................................................... 152Tests unitaires sur l’exécutable ................................................................................. 153PARTIE 5 - INSTALLATIONLe Framework WinDev ................................................................................................ 163Les différents mo<strong>de</strong>s d’installation d’une application ............................................. 164Surveillez vos applications ......................................................................................... 173PARTIE 6 - COMMUNICATIONGestion <strong>de</strong>s emails ..................................................................................................... 177Transfert <strong>de</strong> fichiers par FTP ...................................................................................... 179Gestion <strong>de</strong>s sockets .................................................................................................... 181WinDev et la téléphonie .............................................................................................. 183Les Webservices ......................................................................................................... 184PARTIE 7 - ANNEXESComposants livrés avec WinDev ................................................................................ 187Exemples livrés avec WinDev ..................................................................................... 1916Sommaire


PARTIE 1Notions <strong>de</strong> base


Projet etAnalyseLe développement d’une Application Windows en utilisant WinDev repose sur <strong>de</strong>ux élémentsprincipaux : le Projet et l’Analyse.Un Projet WinDev est un ensemble d’éléments : fenêtres, états, champs, classes, <strong>com</strong>posants,... dont l’assemblage permet <strong>de</strong> réaliser une application Windows.Une Analyse WinDev regroupe la <strong>de</strong>scription <strong>de</strong>s fichiers <strong>de</strong> données <strong>de</strong> l’application.Une application est construite à partir d’un projet.Un projet est généralement associé à une analyse.Une analyse peut être associée à un ou plusieurs projets.Partie 1 : Notions <strong>de</strong> base 9


différents indicateurs. Les différents voyants passentdu vert au rouge à chaque fois qu'une partiedu projet nécessite une intervention.Pour afficher le tableau <strong>de</strong> bord <strong>de</strong> votre projet, ilsuffit <strong>de</strong> sélectionner l'option "Projet .. Tableau <strong>de</strong>bord du projet".Pour plus <strong>de</strong> détails, consultez le paragraphe“Tableau <strong>de</strong> bord du projet”, page 57.3.2 Graphe du projetL'éditeur <strong>de</strong> projet permet <strong>de</strong> visualiser <strong>de</strong> manièregraphique les différents éléments du projet (fenêtres,états, requêtes, ...) et leurs enchaînements.Pour afficher le graphe du projet, il suffit <strong>de</strong> sélectionnerl’option "Projet .. Graphe du projet".3.3 Les éléments du projetLe projet est <strong>com</strong>posé <strong>de</strong> fenêtres, d’états, <strong>de</strong>requêtes, <strong>de</strong> collections <strong>de</strong> procédures, ...Pour connaître la liste <strong>de</strong>s éléments d’un projet,sélectionnez l’option "Projet .. Liste <strong>de</strong>s élémentsdu projet".Cette option permet <strong>de</strong> :• ajouter à votre projet <strong>de</strong>s éléments appartenantà <strong>de</strong>s projets accessibles <strong>de</strong>puis votre poste. Lesfichiers correspondants ne seront pas déplacésdans le répertoire <strong>de</strong> votre projet.•supprimer <strong>de</strong>s éléments <strong>de</strong> votre projet. Lesfichiers correspondants ne sont pas supprimésphysiquement.Pour rechercher rapi<strong>de</strong>ment un élément <strong>de</strong> votreprojet, utilisez la <strong>com</strong>binaison <strong>de</strong> touches "CTRL +E" <strong>de</strong>puis n’importe quel éditeur.4 Manipulations du projetVoici les principales manipulations pouvant êtreréalisées sur un projet :• Archiver un projet• Restaurer un projet•Dupliquer un projet• Copier ou supprimer un projet• Renommer un projetPour plus <strong>de</strong> détails sur ces fonctionnalités, consultezl’ai<strong>de</strong> en ligne.5 Dossier du projetWinDev permet d’imprimer différents dossiersdétaillant l’ensemble <strong>de</strong>s éléments (fenêtre, état,fichier <strong>de</strong> données, rubrique, ...) du projet. Ces dossierspeuvent être imprimés grâce à :• l’option "Projet .. Imprimer le dossier du projet".Le dossier peut contenir l’ensemble <strong>de</strong>s caractéristiquesdu projet.• l’option "Fichier .. Imprimer le dossier". Le dossierest alors constitué uniquement <strong>de</strong>s caractéristiques<strong>de</strong> l’élément (fenêtre, état, requête, ...) encours.5.1 Type <strong>de</strong> dossierPlusieurs types <strong>de</strong> dossier sont proposés :•Dossier Analyse / Fichier / Requêtes: Contientles informations sur l’analyse, les fichiers et lesrequêtes du projet.•Dossier IHM (Interface Homme Machine): Contientuniquement la représentation <strong>de</strong>s fenêtreset <strong>de</strong>s états, ainsi que leur enchaînement.•Dossier Co<strong>de</strong>: Contient l’ensemble <strong>de</strong>s traitements<strong>de</strong> tous les objets du projet.• Dossier Technique : Contient les traitements etles <strong>de</strong>scriptions techniques <strong>de</strong> tous les objets duprojet.• Dossier Complet : Contient toutes les informationsdu projet. Ce dossier correspond à la fusion<strong>de</strong> tous les types <strong>de</strong> dossiers.Type d’édition du dossierLe dossier peut au choix être :•imprimé,•exporté vers un document RTF, vers un fichierXML,• exporté vers un fichier HTML (un navigateur internetdoit être installé sur le poste en cours),• exporté vers un fichier texte.Partie 1 : Notions <strong>de</strong> base 11


5.2 Zones d’impressionSi <strong>de</strong>s représentations graphiques (graphe du projet,MLD, diagrammes UML, ...) doivent être imprimées,il est nécessaire <strong>de</strong> configurer les zonesd’impression avant d’imprimer le dossier.Pour spécifier les zones d’impression <strong>de</strong> la représentationgraphique en cours :1. Sélectionnez l’option "Affichage .. Zonesd’impression". Des bordures représentant leszones imprimables dans le dossier apparaissentsous l’éditeur en cours.2. Réduisez l’affichage <strong>de</strong> la représentation graphique(option "Affichage .. Zoom" ou [Ctrl] + Roulette<strong>de</strong> la souris) pour visualiser l’ensemble du graphe.3. A l’ai<strong>de</strong> <strong>de</strong> la souris :• déplacez ces bordures à l’endroit désiré en maintenantle bouton <strong>de</strong> la souris enfoncé (la couleurdu curseur <strong>de</strong> la souris est noire).• choisissez le nombre <strong>de</strong> pages sur lesquelles lareprésentation graphique doit être imprimée (lecurseur <strong>de</strong> la souris se transforme en double-flècheNord-Ouest / Sud-Est).Si le format d'impression est modifié (passage <strong>de</strong>A4 à A3 par exemple dans les propriétés <strong>de</strong> l'imprimante),il est possible d'adapter le format <strong>de</strong>spages du dossier. Pour cela :1. Définissez <strong>de</strong>s zones d'impression.2. Affichez les options <strong>de</strong> mise en page du dossier(option "Fichier .. Mise en page du dossier").3. Sélectionnez l'option "Adapter la taille <strong>de</strong>s zonesd'impression <strong>de</strong>s documents ouverts".4. Lancez l'impression du dossier.12Partie 1 : Notions <strong>de</strong> base


Partie 1 : Notions <strong>de</strong> base 13


Cycle <strong>de</strong> développementd’une applicationWinDev couvre la totalité du cycle <strong>de</strong> développement d’une application :Détail <strong>de</strong>s différentes phases :Phase <strong>de</strong> conception : Il est possible <strong>de</strong> concevoir une application à partir d’un simplecahier <strong>de</strong>s charges, d’une modélisation UML <strong>de</strong>s traitements ou même à partir <strong>de</strong> fichiers<strong>de</strong> données préexistants.Phase <strong>de</strong> développement : La création du projet et <strong>de</strong> l’analyse est réalisée à l’ai<strong>de</strong> d’assistantstrès <strong>com</strong>plets. Le développement peut être effectué en mo<strong>de</strong> RAD (Rapid DevelopmentApplication) avec génération automatique du co<strong>de</strong> et <strong>de</strong>s IHM ou être le résultatd’une création manuelle <strong>de</strong>s différents éléments du projet.14Partie 1 : Notions <strong>de</strong> base


IHM :Les fenêtresLes fenêtres constituent la base <strong>de</strong> l’IHM (Interface Homme Machine) d’une application.WinDev est constitué d’un éditeur <strong>de</strong> fenêtres particulièrement évolué permettant <strong>de</strong>réaliser facilement et rapi<strong>de</strong>ment tous les types d’IHM possibles.De nombreuses fonctionnalités permettent d’obtenir simplement <strong>de</strong>s applications intuitiveset agréables d’utilisation :• <strong>de</strong>s champs puissants et variés,• un mécanisme d’ancrages permettant à l’IHM <strong>de</strong> s’adapter automatiquement à lataille <strong>de</strong> l’affichage,• un système <strong>de</strong> <strong>com</strong>pilation <strong>de</strong> l’IHM avec détection <strong>de</strong>s erreurs (titres vi<strong>de</strong>s, libellésnon traduits, chevauchements, ...),• ...16Partie 1 : Notions <strong>de</strong> base


Fenêtres modales, nonmodales ou MDILes applications créées avec WinDev peuvent utiliser plusieurs types <strong>de</strong> fenêtres (et mélangerchacun <strong>de</strong> ces types).Fenêtres modalesUne fenêtre modale s’ouvre en avant-plan <strong>de</strong> l’application et bloque l’accès aux autresfenêtres déjà ouvertes (s’il y en a). Les fenêtres modales sont généralement utilisées<strong>com</strong>me :•fenêtres principales d’une application,•boîtes <strong>de</strong> dialogue dont la validation provoque une action.Avec WinDev, lorsqu’une fenêtre modale s’ouvre, une ombre grise apparaît sur les fenêtresen arrière-plan : c’est le GFI ou Grisage <strong>de</strong>s Fenêtres Inaccessibles.Partie 1 : Notions <strong>de</strong> base 17


Fenêtres non modalesUne fenêtre non modale s’ouvre en parallèle <strong>de</strong>s autres fenêtres <strong>de</strong> l’application. Chacune<strong>de</strong>s fenêtres reste accessible et manipulable. Les fenêtres non modales serventgénéralement :•<strong>de</strong> palettes d’outils,•<strong>de</strong> boîtes <strong>de</strong> dialogue dont la modification affecte directement la fenêtre principale.Dans cet exemple, chaque fenêtre <strong>de</strong> <strong>de</strong>scription d’une plante permet d’ouvrir la fenêtre<strong>de</strong> <strong>de</strong>scription d’une autre plante. Toutes les fenêtres ouvertes restent accessibles.Fenêtres MDIDans une application MDI, toutes les fenêtres <strong>de</strong> l’application sont affichées dans uneseule et même fenêtre principale : la fenêtre mère MDI. Les fenêtres <strong>de</strong>s applicationsMDI peuvent donc être <strong>de</strong> <strong>de</strong>ux types :Fenêtre mère MDI : Toutes les autres fenêtres<strong>de</strong> l’application sont affichées danscette fenêtre. Cette fenêtre permet à l’utilisateur<strong>de</strong> manipuler le menu principal <strong>de</strong>l’application.Fenêtre fille MDI : Fenêtre <strong>de</strong> l’applicationaffichée dans la fenêtre mère. C’est dansces fenêtres que l’utilisateur pourra saisir<strong>de</strong>s informations.18Partie 1 : Notions <strong>de</strong> base


FenêtreinterneLe champ Fenêtre interne permet d’inclure une fenêtre (et son co<strong>de</strong>) dans une autre fenêtre.A l’exécution, la fenêtre interne sera dynamiquement fusionnée à la fenêtre hôte.1. Création d’une fenêtre interne.La création d’une fenêtre interne se fait grâce au menu "Fichier .. Nouveau .. Fenêtre ..Fenêtre interne".Une fenêtre interne est une fenêtre spécifiquequi ne <strong>com</strong>porte ni barre <strong>de</strong> titre, ni menu.Dans cette fenêtre, tous les types <strong>de</strong> champspeuvent être utilisés.Dans l’exemple, une fenêtre interne <strong>de</strong> sélection<strong>de</strong> fichiers est définie.2. Utilisation d’une fenêtre interne.Pour utiliser une fenêtre interne, il suffit <strong>de</strong> :• créer un champ <strong>de</strong> type fenêtre interne.• sélectionner dans la <strong>de</strong>scription du champla fenêtre interne à utiliser et vali<strong>de</strong>r.Remarques :• Il est possible <strong>de</strong> modifier par programmationla fenêtre interne utilisée dans lechamp "Fenêtre interne".• Limitations : La zone d’accueil est rectangulaireet aucune surcharge n’est possible.Pour réaliser <strong>de</strong>s surcharges, il estconseillé d’utiliser <strong>de</strong>s modèles <strong>de</strong>champs.Partie 1 : Notions <strong>de</strong> base 19


Modèles <strong>de</strong>fenêtresWinDev permet <strong>de</strong> créer <strong>de</strong>s modèles <strong>de</strong> fenêtres. Ces modèles contiennent tous les élémentsgraphiques <strong>com</strong>muns à l’ensemble <strong>de</strong>s fenêtres <strong>de</strong> votre application.Les modifications effectuées dans un modèle <strong>de</strong> fenêtres sont automatiquement reportéessur toutes les fenêtres utilisant ce modèle.Un modèle <strong>de</strong> fenêtres facilite le respect <strong>de</strong> la charte graphique d’une application.Définition d’un modèle <strong>de</strong> fenêtres.Le modèle est encadré d’untrait vert sous l’éditeur.Utilisation du modèle dans plusieurs fenêtres.Les éléments appartenant au modèle sont i<strong>de</strong>ntifiés par un carré jaune.Remarque : La programmation associée aux éléments du modèle peut être directementréalisée dans le modèle.Les caractéristiques <strong>de</strong>s éléments peuvent être désolidarisées du modèle. Par exemple,désolidariser la position d’un champ du modèle pour positionner le champ ailleurs touten conservant les autres évolutions sur le champ (co<strong>de</strong>, style, ...). On parle alors d’héritage<strong>de</strong> champ. Dans ce cas, les éléments sont i<strong>de</strong>ntifiés par un carré bleu.20Partie 1 : Notions <strong>de</strong> base


Les fenêtres en pratiqueUne fenêtre a pour but d'afficher, <strong>de</strong> consulter et <strong>de</strong>saisir <strong>de</strong>s informations. Ces informations peuventprovenir <strong>de</strong> fichiers <strong>de</strong> données d'une analyse, <strong>de</strong>fichiers externes, <strong>de</strong> requêtes, ...WinDev propose plusieurs solutions pour créer lesfenêtres d’un projet :• Créer une fenêtre vierge avec l’assistant.• Construire l’ensemble <strong>de</strong>s fenêtres <strong>de</strong> l’applicationà partir <strong>de</strong> la <strong>de</strong>scription <strong>de</strong> l’analyse.•Créer une fenêtre à partir <strong>de</strong> la <strong>de</strong>scription <strong>de</strong>l’analyse (avec son co<strong>de</strong> ou non).• Créer <strong>de</strong>s fenêtres standard.• Créer <strong>de</strong>s fenêtres basées sur un modèle, ...Quelle que soit la métho<strong>de</strong> utilisée, la fenêtrepourra être modifiée après sa création : il sera possibled'ajouter, modifier ou supprimer <strong>de</strong>s champs,<strong>de</strong> modifier les caractéristiques <strong>de</strong> la fenêtre.Pour plus <strong>de</strong> détails sur la manipulation <strong>de</strong>schamps d’une fenêtre, consultez “Les champs enpratique”, page 39.Ce chapitre traite les sujets suivants :• “Création d’une fenêtre”, page 21• “Manipulations simples sur une fenêtre <strong>de</strong>puisl’éditeur”, page 22• “Principales caractéristiques d’une fenêtre”,page 22• “Fenêtre et image”, page 24• “Ouvrir une fenêtre "popup"”, page 26• “Grisage automatique <strong>de</strong>s fenêtres”, page 27•“Fenêtre interne”, page27• “Modèles <strong>de</strong> fenêtres”, page 27• “Traitements associés aux fenêtres”, page 28• "Les menus", page 29• “La barre <strong>de</strong> message”, page 321 Création d’une fenêtreWinDev permet <strong>de</strong> créer plusieurs types <strong>de</strong>fenêtres :• Fenêtres vierges, sans aucun champ.• Fenêtres créées par le RAD / RID• Fenêtres internes. Ces fenêtres pourront être utiliséesdans <strong>de</strong>s champs <strong>de</strong> type "FenêtreInterne".• Fenêtres basées sur un modèle <strong>de</strong> fenêtres.• Fenêtres importées à partir d’une applicationnon WinDev.Ce paragraphe détaille uniquement la création <strong>de</strong>fenêtres vierges, internes ou basées sur unmodèle. Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> enligne.1.1 Création <strong>de</strong> fenêtres viergesPour créer une fenêtre vierge :1. Sélectionnez l’option "Fichier .. Nouveau .. Fenêtre".2. Choisissez le type "Vierge".3. Spécifiez le gabarit <strong>de</strong> la fenêtre.4. Vali<strong>de</strong>z la création <strong>de</strong> la fenêtre. Une fenêtrevierge est créée.5. Enregistrez la fenêtre (option "Fichier .. Enregistrer").6. Spécifiez le nom <strong>de</strong> la fenêtre. La fenêtre correspondà un fichier ".WDW". Par défaut, ce fichiersera créé dans le répertoire principal du projet. Cenom sera utilisé pour manipuler la fenêtre.7. Créez les champs dans la fenêtre.Remarque : Les principales caractéristiques <strong>de</strong>sfenêtres sont détaillées dans l’ai<strong>de</strong> en ligne.Les différents types <strong>de</strong> champs sont présentésdans le chapitre “Les champs en pratique”,page 39.1.2 Fenêtre interneUne fenêtre interne est une fenêtre sans barre <strong>de</strong>titre, barre <strong>de</strong> message, ... qui sera directementincluse dans les autres fenêtres <strong>de</strong> votre applicationgrâce au champ "Fenêtre interne".Ainsi, il est possible d’inclure une fenêtre (et sonco<strong>de</strong>) dans une autre fenêtre.Pour créer une fenêtre interne :1. Sélectionnez l'option "Fichier .. Nouveau .. Fenêtre".2. Sélectionnez l’onglet "Fenêtre interne".3. Sélectionnez le type <strong>de</strong> fenêtre voulu, et le gabaritassocié.4. Vali<strong>de</strong>z.Partie 1 : Notions <strong>de</strong> base 21


1.3 Fenêtre basée sur un modèleWinDev permet également <strong>de</strong> créer une fenêtrebasée sur un modèle <strong>de</strong> fenêtres. Dans ce cas, ilsuffit <strong>de</strong> sélectionner le modèle <strong>de</strong> fenêtres voulu.Les modèles <strong>de</strong> fenêtres contiennent tous les élémentsgraphiques et le co<strong>de</strong> <strong>com</strong>muns à l’ensemble<strong>de</strong>s fenêtres <strong>de</strong> votre application.Pour créer une fenêtre basée sur un modèle :1. Sélectionnez l’option "Fichier .. Nouveau .. Fenêtre".2. Sélectionnez l’onglet "Basée sur un modèle".3. Sélectionnez le modèle voulu, et le gabarit associé.4. Vali<strong>de</strong>z.Les modifications effectuées dans un modèle <strong>de</strong>fenêtres sont automatiquement reportées sur toutesles fenêtres utilisant ce modèle.Un modèle <strong>de</strong> fenêtres permet <strong>de</strong> respecter lacharte graphique définie pour une application.2 Manipulations simples sur une fenêtre <strong>de</strong>puis l’éditeurL’éditeur <strong>de</strong> fenêtres permet <strong>de</strong> réaliser les manipulationssuivantes sur les fenêtres :• Ouvrir une fenêtre sous l’éditeur : Il suffit <strong>de</strong> double-cliquersur le nom <strong>de</strong> la fenêtre affiché dansle volet "Explorateur <strong>de</strong> projet".• Modifier la taille d’une fenêtre.• Sauvegar<strong>de</strong>r et copier une fenêtre.• Importer et exporter une fenêtre.• Modifier l’ordre <strong>de</strong> navigation.Pour plus <strong>de</strong> détails sur ces manipulations, consultezl’ai<strong>de</strong> en ligne.3 Principales caractéristiques d’une fenêtre3.1 CaractéristiquesUne fenêtre peut accueillir tous les types <strong>de</strong>champs disponibles.Une fenêtre peut :•être redimensionnable : l’utilisateur pourraagrandir ou diminuer la taille <strong>de</strong> la fenêtre. Selonles caractéristiques d’ancrage définies pour chacun<strong>de</strong>s champs, la position <strong>de</strong>s champs dans lafenêtre pourra varier lors <strong>de</strong> ce redimensionnement(pour plus <strong>de</strong> détails sur l’ancrage, consultez“Ancrage <strong>de</strong>s champs”, page 44).•avoir une image <strong>de</strong> fond : cette image est affichéeen fond <strong>de</strong> la fenêtre et les champs viennentse superposer à cette image. Il estégalement possible <strong>de</strong> définir <strong>de</strong>s caractéristiques<strong>de</strong> redimensionnement grâce au mo<strong>de</strong> 9images. Pour plus <strong>de</strong> détails, consultez “Fenêtreet image”, page 24.•être détourée : la fenêtre aura ainsi une formeoriginale (fenêtre en forme <strong>de</strong> cercle,d’ordinateur,...). Pour plus <strong>de</strong> détails, consultezle paragraphe “Fenêtre détourée”, page 26.•avoir un menu déroulant : ce menu permettraaux utilisateurs d’accé<strong>de</strong>r plus rapi<strong>de</strong>ment auxprincipales fonctionnalités <strong>de</strong> l’application. Pourcréer un menu déroulant dans une fenêtre, il suffitd’utiliser l’option "Fenêtres .. Menu principal ..Ajouter le menu principal". La première optionapparaît dans la fenêtre. Les options peuventêtre manipulées grâce au menu contextuel <strong>de</strong>soptions. Les options <strong>de</strong> menu peuvent ensuiteêtre manipulées par programmation. Pour plus<strong>de</strong> détails, consultez "Les menus", page 29.•avoir une barre <strong>de</strong> message : cette barre <strong>de</strong> messageaffichera les messages d’ai<strong>de</strong> associés auxdifférents champs <strong>de</strong> la fenêtre. Cette barre <strong>de</strong>message permet également d’afficher <strong>de</strong>s informationssupplémentaires. Pour plus <strong>de</strong> détails,consultez “La barre <strong>de</strong> message”, page 32•être multilingue : toutes les langues définiespour la fenêtre seront disponibles pour tous leschamps <strong>de</strong> la fenêtre. Une fenêtre peut être associéeà plus <strong>de</strong> langues que le projet (cas parexemple <strong>de</strong>s fenêtres partagées entre plusieursprojets). Pour plus <strong>de</strong> détails, consultez le chapitre“Applications multilingues”, page 139.•se griser automatiquement si elle <strong>de</strong>vient inaccessible.Cette fonctionnalité s’appelle GFI pourGrisage <strong>de</strong>s Fenêtres Inaccessibles. Pour plus <strong>de</strong>détails, consultez le paragraphe “Grisage automatique<strong>de</strong>s fenêtres”, page 27.22Partie 1 : Notions <strong>de</strong> base


•autoriser le drag and drop. Pour plus <strong>de</strong> détailssur le drag and drop et sa programmation, consultezl’ai<strong>de</strong> en ligne.Remarque : Pour forcer une action sur une fenêtre,il suffit <strong>de</strong> définir un bouton <strong>de</strong> cette fenêtre enmo<strong>de</strong> "Exécution automatique". Pour plus <strong>de</strong>détails, consultez le paragraphe “Exécution automatiqued’un bouton”, page 46.3.2 Fenêtre <strong>de</strong> <strong>de</strong>scriptionLa fenêtre <strong>de</strong> <strong>de</strong>scription est une fenêtre à onglets,regroupant toutes les caractéristiques paramétrables<strong>de</strong> la fenêtre.Remarque : Il est également possible <strong>de</strong> visualiseret/ou <strong>de</strong> modifier les caractéristiques d’une fenêtredans le modifieur. Pour plus <strong>de</strong> détails, consultezl’ai<strong>de</strong> en ligne.3.3 Affichage <strong>de</strong>s caractéristiquesPour afficher la fenêtre <strong>de</strong> <strong>de</strong>scription :• soit double-cliquez sur le fond <strong>de</strong> la fenêtre.• soit sélectionnez l'option "Description" du menucontextuel <strong>de</strong> la fenêtre (clic droit <strong>de</strong> la souris).• soit sélectionnez la fenêtre et sélectionnezl'option "Affichage .. Description <strong>de</strong> la sélection".• soit sélectionnez la fenêtre et utilisez le raccourciclavier [Alt]+[Entrée].3.4 Caractéristiques par ongletCe paragraphe présente rapi<strong>de</strong>ment les différentescatégories <strong>de</strong> caractéristiques affichées par onglet.Pour plus <strong>de</strong> détails sur chacune <strong>de</strong>s caractéristiquesprésentes dans les différents onglets, consultezl’ai<strong>de</strong> contextuelle <strong>de</strong>s fenêtres <strong>de</strong> <strong>de</strong>scription.Onglet GénéralL’onglet "Général" permet <strong>de</strong> spécifier le nom <strong>de</strong> lafenêtre et son titre.Onglet IHML’onglet "IHM" permet <strong>de</strong> définir les différents paramètres<strong>de</strong> l’interface <strong>de</strong> la fenêtre :•Visibilité <strong>de</strong> la fenêtre,•position <strong>de</strong> la fenêtre,•gestion du clic droit, du curseur <strong>de</strong> la souris,•association à un menu contextuel, ....Onglet DétailL’onglet "Détail" permet <strong>de</strong> définir les différentsparamètres <strong>de</strong> la fenêtre :•animation,•fermeture automatique.Onglet ImageCet onglet permet <strong>de</strong> paramétrer :• l’image <strong>de</strong> fond <strong>de</strong> la fenêtre,• l’image <strong>de</strong> la poignée <strong>de</strong> redimensionnement,• l’icône <strong>de</strong> la fenêtre.Partie 1 : Notions <strong>de</strong> base 23


Onglet LanguesCet onglet permet <strong>de</strong> connaître les langues géréespar la fenêtre, ainsi que la langue affichée sousl’éditeur. IL est possible d’ajouter, <strong>de</strong> modifier ou <strong>de</strong>supprimer <strong>de</strong>s langues.Onglet NotesL’onglet "Notes" permet <strong>de</strong> décrire le fonctionnementdétaillé <strong>de</strong> la fenêtre. Ces informations serontimprimées dans les dossiers <strong>de</strong> programmation(dossier du projet, dossier <strong>de</strong> la fenêtre, ...).Onglet Ai<strong>de</strong>L’onglet "Ai<strong>de</strong>" permet d’associer un fichier d’ai<strong>de</strong>contextuelle à la fenêtre. Ce fichier d’ai<strong>de</strong> contientles pages d’ai<strong>de</strong> contextuelle affichées par chaquechamp.Onglet StyleL’onglet "Style" permet <strong>de</strong> définir le style <strong>de</strong> lafenêtre :• Présence <strong>de</strong> la barre <strong>de</strong> titre• Présence <strong>de</strong>s différentes icônes• Présence <strong>de</strong> la barre <strong>de</strong> message, ...4 Fenêtre et image4.1 PrésentationPour optimiser le look <strong>de</strong> vos écrans, WinDev permetd'utiliser :• <strong>de</strong>s couleurs <strong>de</strong> fond. De nombreuses couleursstandard peuvent être utilisées. La couleur <strong>de</strong>fond est configurée dans l’onglet "Style" <strong>de</strong> lafenêtre <strong>de</strong> <strong>de</strong>scription <strong>de</strong> la fenêtre.•<strong>de</strong>s images dans vos fenêtres. Ces images sontutilisées en image <strong>de</strong> fond <strong>de</strong> la fenêtre. Voschamps sont superposés sur cette image.La configuration <strong>de</strong> l’image <strong>de</strong> fond est réaliséedans l’onglet "Image" <strong>de</strong> la fenêtre.Remarques :• Si nécessaire, WinDev offre également la possibilitéd’utiliser le look et le thème XP/Vista dansvos fenêtres. Pour plus <strong>de</strong> détails, consultezl’ai<strong>de</strong> en ligne.• Pour personnaliser vos fenêtres, vous pouvezégalement utiliser un gabarit ou un modèle <strong>de</strong>fenêtres.4.2 Configuration <strong>de</strong> l’image <strong>de</strong> fondLa configuration est effectuée dans l'onglet "Image"<strong>de</strong> la <strong>de</strong>scription <strong>de</strong> la fenêtre.Vous pouvez sélectionner l’image <strong>de</strong> fond grâce ausélecteur ou sélectionner une image du catalogue.Les principaux formats d'image pouvant être affichéssont les suivants : BMP, JPEG, TIFF ou GIF.Il est également possible <strong>de</strong> réaliser directementun Drag and Drop du fichier image présent dansl'explorateur, vers la fenêtre WinDev.Les options possibles sur l’image sont :• Gestion <strong>de</strong>s images multilingues•Mo<strong>de</strong> d'affichage• Position• Transparence•Symétrie• Mo<strong>de</strong> 9 images• Détourage <strong>de</strong> la fenêtre selon l’image <strong>de</strong> fondGestion <strong>de</strong>s images multilinguesUne image <strong>de</strong> fond différente peut être affichéeselon la langue d'exécution du programme. Lescaractéristiques d’affichage peuvent être spécifiquesà chaque langue.Pour définir une image <strong>de</strong> fond multilingue :1. Cliquez sur l'icône présente à droite du nom <strong>de</strong>l'image <strong>de</strong> fond.2. Pour chaque langue définie dans votre fenêtre,choisissez l'image appropriée.3. Vali<strong>de</strong>z. Le libellé "Valeur multi-langue" apparaîtdans le champ <strong>de</strong> définition <strong>de</strong>s images <strong>de</strong> fond.Mo<strong>de</strong> d'affichageUne image peut être affichée dans une fenêtreselon plusieurs mo<strong>de</strong>s d'affichage. Ces mo<strong>de</strong>sd'affichage permettent d'obtenir différents effets :• 100% : l’image est affichée à 100% à partir ducoin haut gauche du champ image.• Centré : l’image est affichée à 100% et centréedans le champ image.• Etiré : l’image est déformée pour occuper toutl’espace du champ image.• Répété : l’image est affichée à 100% et répétéedans le champ image pour occuper tout l’espacedu champ.• Homothétique : l’image est agrandie proportionnellementpour être affichée entièrement dans lechamp image.24Partie 1 : Notions <strong>de</strong> base


• Homothétique étendu : l’image est proportionnellementagrandie pour que le plus petit côté <strong>de</strong>l’image soit affiché entièrement dans le champimage.• Homothétique centré : l’image est homothétiqueet centrée dans le champ image.• Homothétique centré étendu : l’image est étendueet centrée dans le champ image.• Homothétique sans agrandissement : Si l’imagepeut être affichée entièrement dans la fenêtre,elle est affichée à 100%. Si l’image est plusgran<strong>de</strong> que la fenêtre, elle est automatiquementréduite proportionnellement pour être affichéeentièrement.• Homothétique centré sans agrandissement :L’image est centrée et homothétique sans agrandissement.L’option "Affichage Haute Qualité" permet en mo<strong>de</strong>homothétique d’améliorer la qualité <strong>de</strong> l’image lorsquecelle-ci est réduite par rapport à sa taille initiale.PositionCe paramètre permet <strong>de</strong> définir la position du pointhaut gauche <strong>de</strong> l'image par rapport à la surface <strong>de</strong>la fenêtre.Ces options seront conservées même si l'image estmodifiée par programmation (propriété Image).TransparenceLes options <strong>de</strong> transparence <strong>de</strong> l'image <strong>de</strong> fondsont les suivantes :• Magenta transparent : Le magenta présent dansl'image sera transparent à l'affichage sous l'éditeur<strong>com</strong>me en exécution.Transparence : aucuneMagenta transparentimage. Ces options seront conservées même sil'image est modifiée par programmation (propriétéImage).Image originale :Les options sont les suivantes :SymétrieverticaleSymétriehorizontaleSymétriehorizontaleet verticaleMo<strong>de</strong> 9 imagesSi cette option est sélectionnée, le mo<strong>de</strong> 9 imagessera utilisé sur l'image <strong>de</strong> fond <strong>de</strong> la fenêtre.Le mo<strong>de</strong> 9 images consiste à découper l'image <strong>de</strong>fond en 9 zones.Pour chaque zone, il est possible <strong>de</strong> définir si lapartie <strong>de</strong> l'image correspondant à la zone doit êtreaffichée ou non (il suffit <strong>de</strong> cocher le nom <strong>de</strong> lazone pour l'afficher). Si la partie <strong>de</strong> l'image n'estpas affichée, elle sera remplacée par la couleur <strong>de</strong>fond <strong>de</strong> la fenêtre.Les marges permettent <strong>de</strong> définir la taille <strong>de</strong> chaquezone.• Point haut gauche : tous les points ayant lamême couleur que celle du point haut gauche <strong>de</strong>l'image seront transparents.Ces options seront conservées même si l'image estmodifiée par programmation (propriété Image).SymétrieLes options <strong>de</strong> symétrie permettent <strong>de</strong> changerl'orientation <strong>de</strong> l'image contenue dans le fichierPartie 1 : Notions <strong>de</strong> base 25


Lors du redimensionnement <strong>de</strong> la fenêtre, seulesles zones 2, 4, 6, 8 et 5 changent <strong>de</strong> taille pouroccuper tout l'espace :Le mo<strong>de</strong> 9 images permet <strong>de</strong> gérer le fonctionnement<strong>de</strong> chaque zone lors du redimensionnement<strong>de</strong> la fenêtre.Pour chaque zone :• soit en répétant l'image qui <strong>com</strong>pose la zone,• soit en étirant l'image qui <strong>com</strong>pose la zone.4.3 Fenêtre détouréeWinDev permet <strong>de</strong> détourer les fenêtres. Les fenêtresauront ainsi <strong>de</strong>s formes originales (fenêtre enforme <strong>de</strong> cercle, d'ordinateur, ...).La forme <strong>de</strong> la fenêtre est définie par une image.Dans cette image, utilisez une couleur spécifiquepour définir les zones transparentes <strong>de</strong> l’image (parexemple, la couleur "Magenta Clair"). Toutes ceszones seront invisibles lors <strong>de</strong> l'affichage <strong>de</strong> lafenêtre en exécution : la fenêtre sera alors détourée.Attention : Les bordures <strong>de</strong> cette image doiventêtre les plus nettes possible (pas <strong>de</strong> dégradé, ...)afin <strong>de</strong> ne pas obtenir d'effets d'affichage lors <strong>de</strong>l'aperçu ou <strong>de</strong> l'ouverture <strong>de</strong> la fenêtre détourée.La configuration du détourage <strong>de</strong> la fenêtre esteffectuée dans l’onglet "Image" <strong>de</strong> la fenêtre <strong>de</strong><strong>de</strong>scription <strong>de</strong> la fenêtre.5 Ouvrir une fenêtre "popup"5.1 PrésentationWinDev permet d’ouvrir <strong>de</strong>s fenêtres <strong>de</strong> type"popup".Une fenêtre "popup" correspond à une fenêtre <strong>de</strong>taille réduite s’ouvrant au-<strong>de</strong>ssus <strong>de</strong> la fenêtre encours. Généralement, cette fenêtre permet à l’utilisateur<strong>de</strong> réaliser une sélection. Cette fenêtre renvoiedonc à la fenêtre principale la valeursélectionnée par l’utilisateur. Cette fenêtre seferme automatiquement dès qu’un clic gauche <strong>de</strong>souris est effectué (à l’intérieur ou non <strong>de</strong> la fenêtrepopup).Par exemple :Remarque : Les caractéristiques d’une fenêtrepopup sont les suivants :• ouverture par défaut sous le champ qui ouvre lafenêtre (ou au-<strong>de</strong>ssus ou à gauche du champ sila place disponible sous le champ est insuffisante).La position d’ouverture peut être modifiée parprogrammation.• fermeture automatique dès que la fenêtre n’aplus le focus ou dès l’appel <strong>de</strong> la fonction Ferme.• seule l’icône <strong>de</strong> fermeture apparaît dans la barre<strong>de</strong> titre <strong>de</strong> la fenêtre (si définit dans le style).26Partie 1 : Notions <strong>de</strong> base


6 Grisage automatique <strong>de</strong>s fenêtresVotre application ouvre plusieurs fenêtres simultanémentet vous ne savez plus quelle fenêtre estcelle à utiliser?La ou les fenêtres inactives peuvent se griser automatiquement.Ainsi, vous <strong>de</strong>vinez instinctivementla fenêtre à utiliser.Cette fonctionnalité s'appelle GFI pour Grisage <strong>de</strong>sFenêtres Inaccessibles.Par exemple :Etape 2 : Une fenêtre vous <strong>de</strong>man<strong>de</strong> <strong>de</strong> confirmerou d'annuler ces modifications. La fenêtre principale(en arrière-plan) est <strong>de</strong>venue inaccessible. Elles'est grisée automatiquement. Vous savez immédiatementquelle fenêtre doit être utilisée.Etape 1 : Vous modifiez <strong>de</strong>s informations concernantun client puis vous cliquez sur le bouton "Vali<strong>de</strong>r".Les fonctionnalités du GFI sont disponibles auniveau du projet ou personnalisables au niveau <strong>de</strong>chaque fenêtre.Il est également possible d’agir sur le GFI par programmation.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.7 Fenêtre interneLes fenêtres internes permettent <strong>de</strong> partager dynamiquementune même partie d’interface au seind’une ou <strong>de</strong> plusieurs applications.L’interface à utiliser plusieurs fois est créée dansune fenêtre <strong>de</strong> type "Fenêtre Interne".Cette interface est utilisée dans les différentesfenêtres <strong>de</strong> votre application grâce au champ <strong>de</strong>type "Fenêtre interne".Remarque : La fenêtre à fusionner peut être issued’un <strong>com</strong>posant.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.8 Modèles <strong>de</strong> fenêtresWinDev permet <strong>de</strong> créer <strong>de</strong>s modèles <strong>de</strong> fenêtres.Ces modèles contiennent tous les éléments graphiqueset le co<strong>de</strong> <strong>com</strong>muns à l’ensemble <strong>de</strong>s fenêtres<strong>de</strong> votre application.Les modifications effectuées dans un modèle <strong>de</strong>fenêtres sont automatiquement reportées sur toutesles fenêtres utilisant ce modèle.Un modèle <strong>de</strong> fenêtres permet <strong>de</strong> respecter lacharte graphique définie pour une application.L’utilisation <strong>de</strong> modèles <strong>de</strong> fenêtres dans vos applicationspermet <strong>de</strong> :• simplifier la création <strong>de</strong>s fenêtres <strong>de</strong> l'application.Partie 1 : Notions <strong>de</strong> base 27


• simplifier la mise en page <strong>de</strong>s fenêtres <strong>de</strong> l'application.• simplifier la mise à jour <strong>de</strong> la charte graphique <strong>de</strong>l'application.Un modèle <strong>de</strong> fenêtres se crée aussi simplementqu’une fenêtre. Pour créer une fenêtre en utilisantun modèle, il suffit <strong>de</strong> choisir l’option "basée sur unmodèle".Par défaut, toute modification effectuée dans lemodèle est reportée dans les fenêtres l’utilisant. Ilest cependant possible dans une fenêtre spécifique<strong>de</strong> gérer <strong>de</strong>s cas particuliers en surchargeantles éléments du modèle.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.9 Traitements associés aux fenêtres9.1 Traitements gérés par défautWinDev gère par défaut les traitements suivants(ordre d'apparition sous l'éditeur <strong>de</strong> co<strong>de</strong>) :• Déclaration globales :Déclaration <strong>de</strong>s variables globales à la fenêtre• Initialisation :Exécuté lors <strong>de</strong> l'ouverture <strong>de</strong> la fenêtre, avant leco<strong>de</strong> <strong>de</strong> prise <strong>de</strong> focus. Le traitement d’initialisation<strong>de</strong>s champs <strong>de</strong> la fenêtre est exécuté aprèsce co<strong>de</strong>.• Fermeture :Exécuté lors <strong>de</strong> la fermeture <strong>de</strong> la fenêtre.Remarque : une reprise <strong>de</strong> saisie sur un <strong>de</strong>schamps <strong>de</strong> la fenêtre dans ce co<strong>de</strong> empêche lafenêtre <strong>de</strong> se fermer.• Prise <strong>de</strong> focus :Exécuté lorsque la fenêtre prend le focus (sabarre <strong>de</strong> titre est active) et qu’une autre fenêtre<strong>de</strong> l’application perd le focus :•l’utilisateur a cliqué sur une autre fenêtre <strong>de</strong>l’application,•la fonction RepriseSaisie a été exécutée <strong>de</strong>puisune autre fenêtre <strong>de</strong> l’application.Ce traitement ne sera pas exécuté :•lors <strong>de</strong> l’ouverture <strong>de</strong> la première fenêtre duprojet,•lors <strong>de</strong> l’exécution <strong>de</strong> la fonction OuvreFille ouOuvreSoeur à partir <strong>de</strong> la fenêtre en cours,•si la fonction Ferme est appelée dans le co<strong>de</strong>d’initialisation <strong>de</strong> la fenêtre,•si l’utilisateur clique sur une fenêtre d’un autreprogramme puis re-clique sur la fenêtre initiale.• Perte <strong>de</strong> focus : Exécuté lorsque la fenêtre perdle focus lors du passage à une autre fenêtre. Cetraitement est toujours appelé avant le traitement<strong>de</strong> prise <strong>de</strong> focus d’une autre fenêtre dansles cas suivants :•fermeture <strong>de</strong> la fenêtre (avant le traitement <strong>de</strong>fermeture),•l’utilisateur a cliqué sur une autre fenêtre <strong>de</strong>l’application,•la fonction RepriseSaisie a été exécutée <strong>de</strong>puisune autre fenêtre <strong>de</strong> l’application.Ce traitement ne sera pas exécuté :•si la fonction RepriseSaisie vers une autre fenêtrea été exécutée dans le co<strong>de</strong> d’initialisation<strong>de</strong> la fenêtre,•si la fonction Ferme est appelée dans le co<strong>de</strong>d’initialisation <strong>de</strong> la fenêtre,•si l’utilisateur clique sur une fenêtre d’un autreprogramme puis re-clique sur la fenêtre initiale.• Modification <strong>de</strong> la taille :Exécuté dans les cas suivants :•iconisation <strong>de</strong> la fenêtre,•agrandissement ou changement <strong>de</strong> taille <strong>de</strong> lafenêtre,•restauration <strong>de</strong> la fenêtre après iconisation.• A chaque modification :Exécuté lorsqu'un <strong>de</strong>s champs <strong>de</strong> la fenêtre estmodifié (saisie effectuée par l'utilisateur parexemple)• Affectation <strong>de</strong> la propriété ..Valeur (fenêtreinterne uniquement)Exécuté lors <strong>de</strong> l’utilisation <strong>de</strong> la propriété Valeuren affectation sur le champ Fenêtre Interne.• Récupération <strong>de</strong> la propriété ..Valeur (fenêtreinterne uniquement)Exécuté lors <strong>de</strong> l’utilisation <strong>de</strong> la propriété Valeuren lecture sur le champ Fenêtre Interne.9.2 Traitements optionnelsPlusieurs traitements optionnels peuvent êtregérés.Pour gérer un traitement optionnel, il suffit <strong>de</strong> lesélectionner dans la barre d'icônes <strong>de</strong> la fenêtre <strong>de</strong>co<strong>de</strong>.28Partie 1 : Notions <strong>de</strong> base


Il est ainsi possible <strong>de</strong> gérer par exemple :• le survol du champ par la souris,• le bouton gauche enfoncé, relâché, avec doubleclic,• le bouton droit enfoncé, relâché, avec double-clic,• la roulette <strong>de</strong> la souris, ...10 Les menus contextuelsUn menu contextuel peut être ouvert par l'utilisateurgrâce à un clic droit <strong>de</strong> la souris. Ce menu permetaux utilisateurs d'accé<strong>de</strong>r plus facilement auxfonctionnalités spécifiques d'un champ d'une fenêtreou d'une fenêtre.WinDev permet <strong>de</strong> gérer <strong>de</strong>ux types <strong>de</strong> menucontextuel :• les menus contextuels systèmes gérés par Windows.Ces menus contextuels s'affichent lorsd'un clic droit sur certains types <strong>de</strong> champs(champ <strong>de</strong> saisie, table, ...). Pour plus <strong>de</strong> détails,consultez le paragraphe “Menu contextuel systèmepar défaut”, page 30.• les menus contextuels personnalisés gérés parWinDev. Ces menus sont créés sous l'éditeur <strong>de</strong>fenêtres et peuvent être manipulés par programmation.WinDev permet <strong>de</strong> créer <strong>de</strong>s menus contextuelspersonnalisés et d'associer ces menuscontextuels :• soit à un ou plusieurs champs d'une fenêtre.• soit à une fenêtre.Par exemple :10.1 Fenêtres d’édition <strong>de</strong>s menus contextuelsWinDev permet <strong>de</strong> créer et <strong>de</strong> modifier <strong>de</strong>s menuscontextuels personnalisés dans une fenêtre d'éditionparticulière. Pour mieux <strong>com</strong>prendre la gestion<strong>de</strong>s menus contextuels personnalisés, voici le vocabulairelié à cette fenêtre d'édition :Partie 1 : Notions <strong>de</strong> base 29


10.2 Fonctionnalités disponiblesWinDev permet <strong>de</strong> :• Créer un menu contextuel personnalisé• Associer un menu contextuel personnalisé existantà un ou plusieurs éléments (fenêtre ouchamps)• Editer un menu contextuel personnalisé• Afficher la fenêtre <strong>de</strong> <strong>de</strong>scription d’un menu contextuelpersonnalisé• Supprimer un menu contextuel personnaliséPour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.10.3 Menu contextuel système par défautLes types <strong>de</strong> champ suivants ont un menu contextuelsystème par défaut (affiché si aucun menucontextuel personnalisé n'est associé au champ) :•un champ <strong>de</strong> saisie:Pour plus <strong>de</strong> détails sur la traduction <strong>de</strong> cemenu, consultez l’ai<strong>de</strong> en ligne.•un champ ActiveX:Remarque : Le menu contextuel système affichédépend <strong>de</strong> l'ActiveX associé au champ.•un champ HTML:Pour plus <strong>de</strong> détails sur la traduction <strong>de</strong> cemenu, consultez l’ai<strong>de</strong> en ligne.•une table:Remarque : Le menu contextuel système affichéest celui d'Internet Explorer. Il dépend <strong>de</strong> l'objetsélectionné dans la page (image, texte, lien, ...).Ce menu contextuel par défaut peut être désactivéaussi bien <strong>de</strong>puis l’éditeur que par programmation.30Partie 1 : Notions <strong>de</strong> base


11 Les menus principaux11.1 PrésentationUn menu principal est obligatoirement associé àune fenêtre. Ce menu est affiché sous la barre <strong>de</strong>titre <strong>de</strong> la fenêtre sous WinDev. En règle générale,les applications contiennent une fenêtre menu.Cette fenêtre contient uniquement un menu principalet permet d'accé<strong>de</strong>r aux autres fenêtres <strong>de</strong>l'application.Par exemple :11.2 Vocabulaire associé aux menus principauxPour manipuler simplement un menu principal, ilest nécessaire <strong>de</strong> connaître le vocabulaire suivant :Partie 1 : Notions <strong>de</strong> base 31


11.3 Fonctionnalités disponiblesWinDev permet <strong>de</strong> :• Créer un menu principal• Editer un menu principal• Supprimer un menu principal.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.Cas particulier : Menu utilitaireWinDev permet d’insérer automatiquement unmenu "utilitaire" (<strong>de</strong> type "?") dans votre application(option "Fenêtres .. Menu principal .. Ajouter lemenu ?").12 Les options <strong>de</strong> menu12.1 PrésentationUn menu (contextuel personnalisé ou principal) est<strong>com</strong>posé d'une ou <strong>de</strong> plusieurs options et sousoptions.Chaque option permet d'exécuter un co<strong>de</strong>WLangage.Les manipulations <strong>de</strong>s options <strong>de</strong> menu sous l'éditeursont i<strong>de</strong>ntiques que le menu soit un menuprincipal ou un menu contextuel personnalisé.Pour manipuler les options <strong>de</strong> menu, il suffit d'éditerle menu concerné.Pour éditer (ou afficher sous l'éditeur) :• le menu principal d'une fenêtre :- ouvrez la fenêtre concernée sous WinDev.- sélectionnez une <strong>de</strong>s options <strong>de</strong> menu. Lesoptions et les sous-options s'affichent automatiquement.• un menu contextuel personnalisé d’une fenêtre,sélectionnez l'option "Fenêtres .. Menu contextuel.. ".12.2 Manipuler les options <strong>de</strong> menu sousl’éditeurL’éditeur <strong>de</strong> fenêtres permet <strong>de</strong> réaliser très simplementles manipulations suivantes :• Ajouter une option <strong>de</strong> menu•Ajouter un séparateur• Ajouter un sous-menu• Supprimer une option <strong>de</strong> menuLes options <strong>de</strong> menu peuvent également être directementmanipulées sous l’éditeur <strong>de</strong> fenêtres etleurs caractéristiques sont modifiables grâce à unefenêtre <strong>de</strong> <strong>de</strong>scription.La fenêtre <strong>de</strong> <strong>de</strong>scription <strong>de</strong>s options <strong>de</strong> menu permetpar exemple <strong>de</strong> :• modifier le libellé <strong>de</strong> l’option.• cocher ou décocher une option <strong>de</strong> menu• associer une image à une option <strong>de</strong> menu•associer un raccourci clavier à une option <strong>de</strong>menu.Il est également possible d’associer du co<strong>de</strong> WLangageà une option <strong>de</strong> menu. Seules les options <strong>de</strong>menu ne possédant pas <strong>de</strong> sous-menu peuventlancer un traitement WLangage.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.12.3 Manipuler les options <strong>de</strong> menu parprogrammationLa manipulation d'une option <strong>de</strong> menu est i<strong>de</strong>ntiqueque le menu soit un menu contextuel ou unmenu principal.Pour manipuler par programmation une option <strong>de</strong>menu, utilisez la notation :• "" si l'option <strong>de</strong> menu est manipulée<strong>de</strong>puis la fenêtre.• ".." sil'option est manipulée <strong>de</strong>puis une autre fenêtre.13 La barre <strong>de</strong> messageIl est possible d’afficher dans la barre <strong>de</strong> messaged’une fenêtre :•un message d’information lié au champ encours.Ce message est saisi dans l'onglet "Ai<strong>de</strong>" <strong>de</strong> lafenêtre <strong>de</strong> <strong>de</strong>scription du champ.Le message sera affiché dans la barre <strong>de</strong> messagelorsque l'utilisateur sélectionnera le champ.•un message d’information spécifique. Ce messageest affiché par programmation grâce à lafonction Message.32Partie 1 : Notions <strong>de</strong> base


•une jauge <strong>de</strong> progression. Cette jauge est affichéepar programmation grâce à la fonctionJauge.Pour afficher simultanément diverses informations,il est possible <strong>de</strong> diviser la barre <strong>de</strong> message enplusieurs cases (option "Insérer une case" dans lemenu contextuel <strong>de</strong> la barre <strong>de</strong> message).13.1 Fenêtre <strong>de</strong> <strong>de</strong>scription d’une barre <strong>de</strong>messageLa fenêtre <strong>de</strong> <strong>de</strong>scription d’une barre <strong>de</strong> messagepermet <strong>de</strong> :• ajouter et/ou supprimer <strong>de</strong>s cases.• modifier l’ordre <strong>de</strong>s cases.•spécifier pour chaque case les informations àafficher.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.13.2 Type d’une case <strong>de</strong> la barre <strong>de</strong> messageIl est ainsi possible d'afficher :• La jauge <strong>de</strong> progression affichée par la fonctionJauge.• Le message d'ai<strong>de</strong> associé au champ ayant lefocus (message d'ai<strong>de</strong> défini dans l'onglet "Ai<strong>de</strong>du champ, ou par programmation par la propriétéMessage).• La date du poste en cours• L'heure du poste en cours•La position du curseur dans le champ <strong>de</strong> saisieen cours (option Colonne et Ligne du Caret).•L'état <strong>de</strong> la touche [MAJ], indiquant si la touche<strong>de</strong> verrouillage <strong>de</strong>s majuscules est activée ounon.• L'état <strong>de</strong> la touche [INSER], indiquant si la touche[Inser] est activée ou non.•Le nom <strong>de</strong> l'utilisateur actuel dans une applicationutilisant le groupware utilisateur.Deux options spécifiques sont égalementdisponibles :• Par programmation : Les informations affichéesdans la barre <strong>de</strong> messages sont spécifiées parprogrammation (fonction Message par exemple).• Traitement <strong>de</strong> mise à jour : Le traitement "A chaquemise à jour" est automatiquement associé àla case <strong>de</strong> la barre <strong>de</strong> message. Ce traitementest alors exécuté régulièrement. Ce traitementpeut par exemple contenir les éléments à afficherdans la case.13.3 Caractéristiques d’une case <strong>de</strong> la barre<strong>de</strong> messageLa fenêtre <strong>de</strong> <strong>de</strong>scription <strong>de</strong> la barre <strong>de</strong> messagepermet également <strong>de</strong> définir les différentes caractéristiquesd'affichage <strong>de</strong>s cases <strong>de</strong> la barre <strong>de</strong>message.• La position <strong>de</strong> la case dans la barre <strong>de</strong> message.• L'image <strong>de</strong> fond <strong>de</strong> la case.• La couleur <strong>de</strong> fond <strong>de</strong> la case.• La largeur <strong>de</strong> la case.• Si la case est en saisie.• L'ancrage <strong>de</strong> la case (son fonctionnement lors duredimensionnement <strong>de</strong> la fenêtre).Toutes ces caractéristiques peuvent être manipuléespar programmation grâce aux propriétés disponiblessur les cas <strong>de</strong>s barres <strong>de</strong> message.Partie 1 : Notions <strong>de</strong> base 33


Les différents types <strong>de</strong>champs standardWinDev met à votre disposition <strong>de</strong> nombreux champs livrés en standard. Voici <strong>com</strong>mentles utiliser en fonction <strong>de</strong> l’opération à réaliser :Vous voulez...Utilisez un champ...Afficher du texte, un titre, ...LibelléSélectionner une valeur parmi une liste (Pays, Ville, …)SélecteurComboListeSélectionner plusieurs valeurs parmi une liste (les <strong>de</strong>stinatairesd’un message, …)InterrupteurListeSélectionner une ou plusieurs valeurs parmi une liste graphique(Trombinoscope, ...)Liste ImageSélectionner une valeur dans une plage prédéfiniePotentiomètrePotentiomètrerotatifSpinRange Sli<strong>de</strong>r34Partie 1 : Notions <strong>de</strong> base


Afficher une vidéo, une animationWeb CaméraMultimédiaConférenceSaisir <strong>de</strong>s informationsChamp <strong>de</strong> saisieProgrammer une action dans une fenêtre (afficher une autre fenêtre,lancer une impression, ...)BoutonAfficher <strong>de</strong>s informations hiérarchisées (contenu d’un répertoire)ArbreTable hiérarchiqueAfficher un histogramme, une courbe, un camembert, ...GrapheAfficher une progressionJauge36Partie 1 : Notions <strong>de</strong> base


Regrouper les champs par thème et afficher les thèmes un parunOngletBoîte à outilsTiroirAfficher un co<strong>de</strong>-barresCo<strong>de</strong>-barresAfficher <strong>de</strong>s événements sur une pério<strong>de</strong> <strong>de</strong> tempsAgendaReprésenter <strong>de</strong>s données <strong>de</strong> manière pondéréeTreeMapSaisir ou afficher <strong>de</strong>s données HTMLChamp <strong>de</strong> saisieHTMLChamp HTMLPartie 1 : Notions <strong>de</strong> base 37


Permettre la sélection d’intervalle ou <strong>de</strong> zoomRange sli<strong>de</strong>rAfficher un contrôle ActiveXActiveX38Partie 1 : Notions <strong>de</strong> base


Les champs en pratiqueWinDev propose <strong>de</strong> nombreux types <strong>de</strong> champs,facilement intégrables dans vos fenêtres. Ceschamps peuvent être créés soit par la barre d’outils"Champ", soit par le menu "Insertion" <strong>de</strong> l’éditeur<strong>de</strong> fenêtres.Tous les champs peuvent bien sûr être manipuléspar programmation.1 Créer un champ1.1 Les différents types <strong>de</strong> champs d’unefenêtreLes champs disponibles sous l’éditeur <strong>de</strong> fenêtres<strong>de</strong> WinDev sont les suivants :•Champ <strong>de</strong> saisie,•Libellé,•Bouton,•Image,•Sélecteur,•Interrupteur,•Liste,•Combo,•Liste image,•Boîte à outils,•Tiroir,•Web Caméra,•Champ Conférence,•Champ OLE,•ActiveX,•Forme,•Co<strong>de</strong>-barres,•Champ HTML,•Superchamp,•Agenda,•Planning•Table,•Table hiérarchique,•Arbre,•Jauge,•Zone répétée,•Ascenseur,•Potentiomètre,•Spin,•Onglet,•Champ fenêtreinterne,•Barre d’outils,•Séparateur,•Graphe,•Carrousel,•Cube,•Xaml,•Calendrier,•Fenêtre interne,•Modèle <strong>de</strong> champs.Tous les champs peuvent bien sûr être manipuléspar programmation.Pour plus <strong>de</strong> détails sur chaque type <strong>de</strong> champ,leurs principales caractéristiques, ainsi que leurprogrammation en WLangage, consultez l’ai<strong>de</strong> enligne.1.2 Créer un nouveau champPour créer un champ :1. Sélectionnez le type <strong>de</strong> champ à créer :•soit par l’option "Insertion .. Champ/Forme/Spécial".•soit par l’icône correspondante dans la barred’outils "Champs".2. La forme du nouveau champ apparaît sous lecurseur <strong>de</strong> la souris.3. Cliquez dans la fenêtre à la future position <strong>de</strong>création du champ. Le champ est automatiquementcréé.Remarque : D’autres mo<strong>de</strong>s <strong>de</strong> création sont disponibles.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> enligne.1.3 Créer un champ associé à une rubriqueTous les champs d’une fenêtre peuvent être associésà une rubrique <strong>de</strong> fichier, SAUF :•bouton•forme•onglet•barre d’outils•Xaml•Carrousel•Cube•champ HTMLPour créer un champ associé à une rubrique (ourécupérer une rubrique), plusieurs métho<strong>de</strong>s sontdisponibles :• Drag and Drop <strong>de</strong>puis le volet "Analyse".• Utilisation <strong>de</strong> l’onglet "Fichier" du champ.Partie 1 : Notions <strong>de</strong> base 39


2 Caractéristiques d’un champPour tous les champs d’une fenêtre, il est possibled’afficher la fenêtre <strong>de</strong> <strong>de</strong>scription. Cette fenêtreest une fenêtre à onglets, regroupant toutes lescaractéristiques paramétrables d’un ou <strong>de</strong> plusieurschamps.Remarque : Il est également possible <strong>de</strong> visualiseret/ou <strong>de</strong> modifier les caractéristiques d’un ou <strong>de</strong>plusieurs champs dans le modifieur. Pour plus <strong>de</strong>détails, consultez l’ai<strong>de</strong> en ligne.2.1 Affichage <strong>de</strong>s caractéristiquesPour afficher la fenêtre <strong>de</strong> <strong>de</strong>scription d’un champ :• soit double-cliquez sur le champ.• soit sélectionnez l'option "Description" du menucontextuel du champ (clic droit <strong>de</strong> la souris).• soit sélectionnez le champ et sélectionnezl'option "Affichage .. Description <strong>de</strong> la sélection".• soit sélectionnez le champ et utilisez le raccourciclavier [Alt]+[Entrée].• soit sélectionnez l'option "Affichage .. Options ..Modifier les options" (touche [F12]), sélectionnezle champ et cliquez sur le bouton "Éditer".Remarques :• Il est possible d’afficher la fenêtre <strong>de</strong> <strong>de</strong>scriptionpour un ensemble <strong>de</strong> champs sélectionnés. Seulesles caractéristiques <strong>com</strong>munes aux différentschamps sélectionnés seront affichées.• Plusieurs fenêtres <strong>de</strong> <strong>de</strong>scription peuvent êtreaffichées simultanément. Chaque fenêtre <strong>de</strong><strong>de</strong>scription affiche alors les caractéristiques d’unou <strong>de</strong> plusieurs champs.2.2 Caractéristiques par ongletCe paragraphe présente rapi<strong>de</strong>ment les différentescatégories <strong>de</strong> caractéristiques affichées par onglet.Pour plus <strong>de</strong> détails sur chacune <strong>de</strong>s caractéristiquesprésentes dans les différents onglets, consultezl’ai<strong>de</strong> contextuelle <strong>de</strong>s fenêtres <strong>de</strong> <strong>de</strong>scription.40Partie 1 : Notions <strong>de</strong> base


Onglet GénéralL’onglet "Général" permet <strong>de</strong> spécifier le nom duchamp et toutes les caractéristiques d’affichage duchamp (libellé, masque <strong>de</strong> saisie, ...).Onglet IHML’onglet "IHM" permet <strong>de</strong> définir les différents paramètres<strong>de</strong> l’interface du champ :•Etat initial du champ à l’ouverture <strong>de</strong> la fenêtre•Visibilité du champ•Taille du champ•Cadrage, ...Onglet DétailL’onglet "Détail" permet <strong>de</strong> définir les différentsparamètres du champ :•paramètres <strong>de</strong> saisie•Drag and Drop, ...Le contenu <strong>de</strong> cet onglet varie beaucoup en fonctiondu type <strong>de</strong> champ en cours.Onglet LiaisonCet onglet permet <strong>de</strong> sélectionner la rubrique (d’unfichier ou d’une rubrique) à laquelle le champ estrelié. Selon l'enregistrement en cours, le contenu<strong>de</strong> la rubrique reliée sera affiché dans le champ.La liaison peut être mono-fichier ou multi-fichier.Onglet ContenuCet onglet est disponible uniquement pour leschamps <strong>de</strong>s fenêtres.L’onglet "Contenu" permet <strong>de</strong> définir :• soit le contenu initial du champ (pour les champs<strong>de</strong> saisie uniquement).• soit la source <strong>de</strong> données utilisée pour remplir lechamp (pour les listes, les <strong>com</strong>bos et les tablesuniquement).Onglet NotesL’onglet "Notes" permet <strong>de</strong> décrire le fonctionnementdétaillé du champ. Ces informations serontimprimées dans les dossiers <strong>de</strong> programmation(dossier du projet, dossier <strong>de</strong> la fenêtre, ...).Onglet Ai<strong>de</strong>L’onglet "Ai<strong>de</strong>" permet <strong>de</strong> saisir et <strong>de</strong> configurertous les types d’ai<strong>de</strong>s associées au champ. Unchamp peut avoir :•Une bulle d’ai<strong>de</strong>, affichée lors du survol duchamp.• Un message d’ai<strong>de</strong>, affiché dans la barre <strong>de</strong> messagelors <strong>de</strong> l’entrée dans le champ.• Une fenêtre d’ai<strong>de</strong> avec un titre spécifique, affichélors <strong>de</strong> l’utilisation <strong>de</strong> la touche F1Un champ peut être également associé à une paged’ai<strong>de</strong> spécifique, présente dans un fichier d’ai<strong>de</strong>au format CHM. Cette page d’ai<strong>de</strong> sera affichée :• soit sous forme d’ai<strong>de</strong> contextuelle (bulle d’ai<strong>de</strong>affichée sur <strong>de</strong>man<strong>de</strong>), si un fichier d’ai<strong>de</strong> a étédéfini pour la fenêtre.•soit sous forme <strong>de</strong> page d’ai<strong>de</strong>. La fonctionWHelp <strong>de</strong>vra être utilisée pour afficher la paged’ai<strong>de</strong>.Onglet StyleL’onglet "Style" permet <strong>de</strong> définir le style <strong>de</strong>s différentséléments du champ. Cet écran permet <strong>de</strong> :•modifier l’aspect d’un champ: il suffit alors <strong>de</strong>sélectionner l’élément du champ à modifier, puisses caractéristiques <strong>de</strong> style. Seul l’aspect duchamp en cours est modifié.• Appliquer un style existant au champ : il suffit <strong>de</strong>sélectionner le style à appliquer.• Créer ou modifier un style : le style créé ou modifiéest mis à jour pour tous les champs du projetutilisant ce style.3 Manipuler les champs sous l’éditeur3.1 Les poignées <strong>de</strong>s champsLorsqu'un champ vient d'être créé ou lorsqu'il estsélectionné, il s’affiche avec <strong>de</strong>s poignées. Les poignéespermettent <strong>de</strong> :• visualiser la taille d'un champ,• modifier la taille d'un champ.Les couleurs <strong>de</strong>s poignées permettent <strong>de</strong> connaîtreles actions réalisables :•Les poignées noires permettent <strong>de</strong> visualiser et<strong>de</strong> redimensionner un champ.•Les poignées blanches permettent uniquement<strong>de</strong> visualiser un champ. Par exemple, lors <strong>de</strong> lasélection <strong>de</strong> plusieurs champs, les poignéesblanches indiquent qu'il est impossible <strong>de</strong> modifierla taille <strong>de</strong>s champs sélectionnés.Ce type <strong>de</strong> poignées est aussi affiché lorsqu'unefenêtre est en lecture seulement pour lePartie 1 : Notions <strong>de</strong> base 41


développeur : les champs ne peuvent pas êtremodifiés.•Les poignées grises indiquent que le premierchamp sélectionné lors d'une sélection multiple.Ce champ sera le champ <strong>de</strong> référence.3.2 Manipulations disponiblesL’éditeur <strong>de</strong> fenêtre permet <strong>de</strong> :• Sélectionner un ou plusieurs champs (par exempleà l’ai<strong>de</strong> du lasso)• Regrouper <strong>de</strong>s champs sélectionnés•Déplacer un champ• Modifier le libellé d’un champ• Afficher une bulle d’ai<strong>de</strong> avancée lors du survold’un champ. contenant: le nom du champ, saposition, sa taille, son ancrage, son état initial.•Utiliser un champ hors fenêtre. Ce champ seravisible uniquement en édition, et ne sera pas visibleen exécution.Remarque: Un champ "hors fenêtre" permet parexemple <strong>de</strong> :• conserver un champ d'une fenêtre sans le visualiserlors <strong>de</strong> l'exécution. Il est ainsi possible d'utiliserle contenu du champ en programmation(<strong>com</strong>me une variable).•afficher <strong>de</strong> nouveaux champs dans une fenêtrelors <strong>de</strong> la modification <strong>de</strong> la taille <strong>de</strong> cette fenêtre.4 Alignement <strong>de</strong>s champsL’alignement <strong>de</strong>s champs permet d’obtenir <strong>de</strong>sinterfaces "professionnelles", et harmonieuses.Pour vous ai<strong>de</strong>r à concevoir <strong>de</strong>s interfaces standard,WinDev vous propose les outils suivants :•les règles.•la grille.• le correcteur d’interface en temps réel (proposéautomatiquement lors d’un positionnement d’unchamp).• le correcteur d’interface avancé.• les options d’alignement.• le zoom paramétrable.4.1 Les règlesSous l'éditeur <strong>de</strong> fenêtres, il est possible <strong>de</strong> faireapparaître <strong>de</strong>s règles d'alignement.Dans ces règles, <strong>de</strong>s gui<strong>de</strong>s magnétiques sontaffichés : tout champ approché d'un gui<strong>de</strong> est automatiquement"attiré" par celui-ci. Ce magnétismepermet d'utiliser les gui<strong>de</strong>s pour faciliter le positionnement,l'alignement ou le redimensionnement<strong>de</strong>s champs <strong>de</strong> la fenêtre.42Partie 1 : Notions <strong>de</strong> base


Par exemple, dans le cas d’une fenêtre :RepèresRepères<strong>de</strong> bordureGui<strong>de</strong>sAfficher les règlesLes règles sont affichées par l'option "Affichage ..Règles". Deux types <strong>de</strong> gui<strong>de</strong>s peuvent alors êtreutilisés :•les gui<strong>de</strong>s, permettant d'aligner et <strong>de</strong> disposerles champs à l'intérieur <strong>de</strong>s fenêtres.•les gui<strong>de</strong>s <strong>de</strong> bordure, permettant <strong>de</strong> déterminerune bordure <strong>de</strong> taille i<strong>de</strong>ntique <strong>de</strong> chaque côté<strong>de</strong> la fenêtre.Remarque : L’option "Gui<strong>de</strong> visible" du menu contextuel<strong>de</strong>s règles permet <strong>de</strong> visualiser la fenêtreavec ou sans ses gui<strong>de</strong>s. Visibles ou non, les gui<strong>de</strong>ssont toujours actifs : un champ déplacé vers unrepère est automatiquement accolé à celui-ci.Manipuler les repèresLes repères sont facilement manipulables à l'ai<strong>de</strong><strong>de</strong> la souris dans l'éditeur. Lorsque la souris survoleun repère, le curseur se transforme en unedouble flèche.4.2 Grille magnétiqueLa grille magnétique permet <strong>de</strong> placer <strong>de</strong>s repères(verticaux et horizontaux) dans la fenêtre. Leschamps créés viennent se placer contre ces repères,<strong>com</strong>me si les champs et les repères étaientmagnétisés. La grille magnétique permet ainsi d'alignerles champs selon les repères.4.3 Correcteur d’interface en temps réelLors du déplacement d’un champ dans une fenêtre,le correcteur d’interface en temps réel afficheautomatiquement <strong>de</strong>s gui<strong>de</strong>s. Ces gui<strong>de</strong>s sontmagnétisés et permettent d’aligner le champdéplacé avec les champs présents dans la fenêtre.4.4 Correcteur d’interface avancéLe correcteur d'interface avancé est un outil permettantd'harmoniser la disposition <strong>de</strong>s champsdans les différentes fenêtres d'une application.Le correcteur d'interface avancé propose pour lafenêtre en cours ou uniquement pour les champssélectionnés, d'appliquer <strong>de</strong>s règles <strong>de</strong> présentationd'interface issues du standard Windows: alignement<strong>de</strong>s champs, normalisation <strong>de</strong> la taille<strong>de</strong>s boutons,...4.5 Les options d’alignementPour aligner plusieurs champs, WinDev met à votredisposition :• soit un alignement prédéfini (disponible par lemenu déroulant "Champ .. Alignement .." ou dansla barre d'outils d’alignement <strong>de</strong>s champs).• soit un alignement personnalisé ("Champ ..Alignement .. Alignement personnalisé"). L'alignementpersonnalisé permet d’utiliser <strong>de</strong>s propriétésspécifiques d’alignement.Lors <strong>de</strong> l’alignement personnalisé, il est possible<strong>de</strong> définir :• l'alignement horizontal ou vertical : les champspeuvent être alignés à gauche en fonction dudébut du champ ou en fonction du début <strong>de</strong> lazone <strong>de</strong> saisie. Ils peuvent aussi être alignés àdroite, en fonction <strong>de</strong> la fin du champ, ou en fonction<strong>de</strong> la fin <strong>de</strong> la zone <strong>de</strong> saisie.• l'espacement uniforme : l'espacement entre leschamps est adapté pour être le même entre chaquechamp (horizontalement ou verticalement).Partie 1 : Notions <strong>de</strong> base 43


• la taille : la taille <strong>de</strong>s champs sélectionnés estautomatiquement adaptée pour obtenir <strong>de</strong>schamps <strong>de</strong> même hauteur et/ou <strong>de</strong> même largeur.• le champ <strong>de</strong> référence: pour l'alignement et lataille <strong>de</strong>s champs, le champ <strong>de</strong> référence est auchoix :• le premier champ sélectionné (celui qui a les poignéesblanches)• le <strong>de</strong>rnier champ sélectionné• le plus grand champ sélectionné• le champ situé le plus en haut à gauche <strong>de</strong>schamps sélectionnés5 Options d’édition <strong>de</strong>s champs dans une fenêtreLes options d’édition (option "Affichage .. Options ..Modifier les options") permettent <strong>de</strong> paramétrer :• les options d’affichage.• le magnétisme <strong>de</strong>s champs.•les opérations <strong>de</strong> clic et <strong>de</strong> double-clic sur leschamps.• les options <strong>de</strong> sélection <strong>de</strong>s champs.• la position <strong>de</strong> la fenêtre à son ouverture.Ces options d’affichage permettent <strong>de</strong> personnaliserla manipulation <strong>de</strong>s champs sous l’éditeur <strong>de</strong>fenêtres.Les informations à afficher sur chacune <strong>de</strong>s fenêtressous l’éditeur <strong>de</strong> fenêtres peuvent égalementêtre sélectionnées directement <strong>de</strong>puis l’option"Affichage .. Options..".5.1 Rendre visible / invisible un champL’option "Champ .. Options d’édition .. Visible" permet<strong>de</strong> rendre visible / invisible un champ sousl’éditeur <strong>de</strong> fenêtres.5.2 Verrouiller / Déverrouiller un champL’option "Champ .. Options d’édition .. Verrouillé"permet <strong>de</strong> verrouiller / déverrouiller un champ.Un champ verrouillé est un champ qui ne peut pasêtre sélectionné au lasso. Il est intéressant parexemple <strong>de</strong> verrouiller un onglet. Lorsque plusieurssélections au lasso <strong>de</strong>s champs affichés dansl’onglet sont effectuées, l’onglet n’est pas sélectionnéautomatiquement.Toutes les autres manipulations sont possibles surun champ verrouillé.5.3 Encadrer ou non un champL’option "Champ .. Options d’édition .. Encadré"permet d’encadrer ou non un champ.L’encadrement d’un champ permet <strong>de</strong> visualiserplus facilement l’ensemble <strong>de</strong>s champs présentsdans une fenêtre (notamment pour les champsimage).6 Ancrage <strong>de</strong>s champsLes fenêtres d’une application WinDev peuventêtre redimensionnables à l’exécution. Grâce aumécanisme d’ancrage, la taille et la position <strong>de</strong>schamps s’adaptent automatiquement lors d’unredimensionnement <strong>de</strong> la fenêtre.La gestion <strong>de</strong> l’ancrage d’un champ est constituée<strong>de</strong> <strong>de</strong>ux paramètres :• l'ancrage du champ : ce paramètre permet <strong>de</strong>définir la modification à appliquer au champ enfonction du changement <strong>de</strong> la taille <strong>de</strong> la fenêtre.Le champ peut se déplacer vers la gauche et ouvers le bas, s'agrandir en largeur et/ou en hauteur,...• le taux d'ancrage : paramètre permet <strong>de</strong> gérer lepourcentage <strong>de</strong> déplacement ou d'étirement duchamp. Grâce à ce paramètre, il est possible parexemple <strong>de</strong> :•laisser un champ centré en largeur dans lafenêtre quelle que soit sa taille.•agrandir proportionnellement certains champs<strong>de</strong> la fenêtre.Ces paramètres peuvent être configurés :• sous l'éditeur <strong>de</strong> fenêtres•par programmation grâce aux propriétés WLangage44Partie 1 : Notions <strong>de</strong> base


Pour que le champ se déplace plus oumoins vite, utilisez le taux d'ancrage enbas.Centré en hauteur : Le champ reste centréen hauteur dans la fenêtre quelleque soit la hauteur <strong>de</strong> la fenêtre.Répartition Horizontale : Cette optionn'est disponible que lorsque plusieurschamps sont sélectionnés. Les optionsd'ancrage permettent alors <strong>de</strong> conserverune répartition horizontale <strong>de</strong>s champssélectionnés lorsque la fenêtre s'élargie.Centré vertical à droite : Le champ restecentré en hauteur dans la fenêtre quelleque soit la hauteur <strong>de</strong> la fenêtre. Cependant,le champ est ancré à droite, et sedéplace vers la droite lorsque la fenêtreest élargie.Pour que le champ se déplace plus oumoins vite, utilisez le taux d'ancrage àdroite.Centré : Le champ reste centré en hauteuret en largeur dans la fenêtre quelleque soit la taille <strong>de</strong> la fenêtre.4.Définissez si nécessaire les différents tauxd'ancrage.5.Vali<strong>de</strong>z.Si l'option "Affichage .. Option .. Voir les ancrages"est activée, les signes d'ancrage apparaissentautomatiquement dans le champ (flèchesrouges).Astuce : Si WinDev détecte un problème d’ancragedans une fenêtre, un conseil est automatiquementaffiché dans l’environnement <strong>de</strong> développement.L’acceptation <strong>de</strong> ce conseil vous permet d’optimiserautomatiquement l’interface <strong>de</strong> vos fenêtresredimensionnables.6.2 Exemple <strong>de</strong> paramétrage <strong>de</strong> l’ancrage<strong>de</strong>s champsPour illustrer les possibilités d'ancrage <strong>de</strong>s champsdans les fenêtres, voici un exemple détaillé.Fenêtre originale :Fenêtre agrandie :Pour obtenir ce résultat :1. Sélectionnez les boutons [] : ceschamps doivent être centrés en hauteur et en largeur(option ).2. Sélectionnez les <strong>de</strong>ux listes : ces champs doiventêtre ancrés à droite, en largeur et en hauteur(options "à droite", "en largeur" et "en hauteur"cochées).3. Sélectionnez les 3 boutons : ces champs doivents'étirer à droite proportionnellement (option)Remarque : Par programmation, il est possible <strong>de</strong>configurer l'ancrage <strong>de</strong>s champs grâce à diversespropriétés WLangage.7 Exécution automatique d’un boutonPour forcer une action sur une fenêtre, il suffit <strong>de</strong>définir un bouton <strong>de</strong> cette fenêtre en mo<strong>de</strong> "Exécutionautomatique". Le principe est très simple, si aubout d'une certaine durée, aucun bouton <strong>de</strong> lafenêtre n'a été utilisé, le traitement du bouton "Exécutionautomatique" sera automatiquement exécuté.En exécution, la durée est automatiquementdécrémentée. A zéro, le co<strong>de</strong> du bouton est automatiquementexécuté.46Partie 1 : Notions <strong>de</strong> base


7.1 Mise en placePour exécuter automatiquement un bouton d'unefenêtre :1. Déterminez quel bouton <strong>de</strong> votre fenêtre doitêtre exécuté automatiquement.2. Dans la <strong>de</strong>scription <strong>de</strong> la fenêtre (onglet "Détail"<strong>de</strong> la fenêtre <strong>de</strong> <strong>de</strong>scription), indiquez :•le temps avant l'exécution automatique du bouton.•le bouton à exécuter.3. En exécution, le temps restant est automatiquementaffiché.7.2 ProgrammationIl est possible également <strong>de</strong> définir un bouton <strong>de</strong>validation automatique grâce à la fonction DélaiAvantFermeture.7.3 FAA : Fonctionnalité Automatique <strong>de</strong>l’ApplicationCette fonctionnalité est également directementaccessible à l’utilisateur. Il peut <strong>de</strong>man<strong>de</strong>r à cequ’un bouton <strong>de</strong> l’application s’exécute automatiquementau bout d’une durée spécifique.Partie 1 : Notions <strong>de</strong> base 47


Modèles <strong>de</strong>champsWinDev permet <strong>de</strong> créer <strong>de</strong>s modèles <strong>de</strong> champs. Un modèle <strong>de</strong> champs est un ensemble<strong>de</strong> champs, réutilisable dans plusieurs fenêtres.Les modifications effectuées dans un modèle <strong>de</strong> champs sont automatiquement reportéessur toutes les fenêtres utilisant ce modèle.Un modèle <strong>de</strong> champs permet <strong>de</strong> :• regrouper un ensemble <strong>de</strong> champs dans un but précis.• rendre les champs indépendants <strong>de</strong> la fenêtre les accueillant.Définition d’un modèle <strong>de</strong> champs.Le modèle est encadré d’un trait vert sous l’éditeur.Utilisation du modèle dans une fenêtre.Les éléments appartenant au modèle sont entourésen bleu et i<strong>de</strong>ntifiés par un carré jaune.Pour créer une fenêtre utilisant un modèle <strong>de</strong> champs, créez un champ <strong>de</strong> type "Modèle<strong>de</strong> champs".Remarque : La programmation associée aux éléments du modèle peut être directementréalisée dans le modèle.Les caractéristiques <strong>de</strong>s éléments peuvent être désolidarisées du modèle. Par exemple,désolidariser la position d’un champ du modèle pour positionner le champ ailleurs touten conservant les autres évolutions sur le champ (co<strong>de</strong>, style, ...). On parle alors d’héritage<strong>de</strong> champ. Dans ce cas, les éléments sont i<strong>de</strong>ntifiés par un carré bleu.48Partie 1 : Notions <strong>de</strong> base


Edition :Les étatsUn état permet d’obtenir une vue personnalisée d’informations : données saisies dansla base <strong>de</strong> données, données présentes dans un fichier texte, données provenant d’unchamp Table, ...Un état peut être affiché à l’écran, enregistré dans un fichier HTML, directement édité surune imprimante, ...Un état offre la possibilité <strong>de</strong> résumer et <strong>de</strong> synthétiser les données.Il est possible <strong>de</strong> :• regrouper <strong>de</strong>s données.• trier <strong>de</strong>s données selon n’importe quel critère.• réaliser <strong>de</strong>s calculs, <strong>de</strong>s moyennes ou <strong>de</strong>s statistiques ou même réaliser <strong>de</strong>s graphes.Le schéma ci-<strong>de</strong>ssous présente une définition simplifiée d'un état :• les données à imprimer sont issues d’une source <strong>de</strong> données (fichier décrit dansune analyse, vue HyperFileSQL, requête, zone mémoire ou un fichier texte).• l’état regroupe, trie et met en forme les données.• l'exécution <strong>de</strong> l’état peut être dirigée vers l'écran, un fichier HTML, RTF, ... ou versune imprimante.Partie 1 : Notions <strong>de</strong> base 49


Modèlesd’étatsDans une société, bien souvent, les impressions utilisent un look et une mise en pageunifiés : date en haut à droite dans un format spécifique, pied <strong>de</strong> page avec heure d’impressionet nom du fichier, logo en haut à gauche, ...Les modèles d’états permettent d’uniformiser simplement la mise en page <strong>de</strong> vos états.Définition d’un modèle d’étatssous l’éditeur d’états.Utilisation du modèle dans différents états.Les éléments appartenant au modèle sont i<strong>de</strong>ntifiés par un carré jaune.Les éléments du modèle surchargés sont i<strong>de</strong>ntifiés par un carré bleu.Remarque : La programmation associée aux éléments du modèle peut être directementréalisée dans le modèle.Les caractéristiques <strong>de</strong>s éléments peuvent être désolidarisées du modèle. Par exemple,désolidariser la position d’un champ du modèle pour positionner le champ ailleurs touten conservant les autres évolutions sur le champ (co<strong>de</strong>, style, ...). On parle alors d’héritage.Dans ce cas, les éléments sont i<strong>de</strong>ntifiés par un carré bleu.50Partie 1 : Notions <strong>de</strong> base


PARTIE 2Environnement <strong>de</strong>développement


Les éditeurs<strong>de</strong> WinDevPour manipuler un projet, WinDev propose <strong>de</strong> nombreux éditeurs intégrés :• éditeur <strong>de</strong> projet.• éditeur d’analyses.• éditeur <strong>de</strong> modèles UML.• éditeur <strong>de</strong> requêtes.• éditeur <strong>de</strong> fenêtres.• éditeur d’états.• ...Ces éditeurs permettent <strong>de</strong> manipuler facilement les différents éléments du projet.Partie 2 : Environnement <strong>de</strong> développement 53


Des éditeurs conviviaux en pratique1 IntroductionWinDev est architecturé autour d’éditeurs, adapté àchacun <strong>de</strong>s besoins du développeur, unifié dans unenvironnement unique :•éditeur <strong>de</strong> projet.•éditeur d’analyses.•éditeur <strong>de</strong> modèles UML.•éditeur <strong>de</strong> requêtes.•éditeur <strong>de</strong> fenêtres.•éditeur d’états.•éditeur <strong>de</strong> co<strong>de</strong> source, débogueur et <strong>com</strong>pilateur.•éditeur d’ai<strong>de</strong>.•éditeur <strong>de</strong> modélisation.•éditeur <strong>de</strong> documents.Ces différents éditeurs vont permettre <strong>de</strong> créer lesdifférents éléments (fenêtres, états, base <strong>de</strong> données,programmes, …) manipulés par l’application.2 Les différents éditeurs2.1 Editeur <strong>de</strong> projetL’éditeur <strong>de</strong> projet a <strong>de</strong>ux fonctionnalitésprincipales :• il permet <strong>de</strong> visualiser rapi<strong>de</strong>ment l’ensemble<strong>de</strong>s éléments d’un projet (principalement fenêtres,états et requêtes).• il permet <strong>de</strong> visualiser et <strong>de</strong> créer les enchaînementsentre les fenêtres et les états.Voici quelques caractéristiques <strong>de</strong> l’éditeur <strong>de</strong>projet :• Editeur WYSIWYG ("What You See Is What YouGet"). Vous visualisez directement tous les éléments<strong>de</strong> votre projet.•Gestion du projet à l’ai<strong>de</strong> d’un tableau <strong>de</strong> bord<strong>com</strong>plet.• Création et visualisation <strong>de</strong>s enchaînementsentre plusieurs éléments (fenêtres, états, ...) <strong>de</strong>votre projet à l’ai<strong>de</strong> du graphe du projet.•Interaction <strong>de</strong>s différents volets avec les différentséléments du projet.2.2 Editeur d’analysesL’éditeur d’analyses permet <strong>de</strong> décrire les caractéristiqueset la structure <strong>de</strong>s fichiers <strong>de</strong> données.L’éditeur d’analyses supporte la métho<strong>de</strong> Merise(MCD et MLD).L’éditeur d’analyses permet principalement <strong>de</strong>uxtypes <strong>de</strong> <strong>de</strong>scriptions d’une base <strong>de</strong> données :• <strong>de</strong>scription directe <strong>de</strong> l’analyse liée au projet(appelée aussi Modèle Logique <strong>de</strong>s Données(MLD))•<strong>de</strong>scription du Modèle Conceptuel <strong>de</strong>s Données(MCD) puis génération automatiquement <strong>de</strong>l’analyse.Voici quelques caractéristiques <strong>de</strong> l’éditeurd’analyses :•Editeur WYSIWYG ("What You See Is What YouGet"). Vous visualisez directement tous lesfichiers et les liaisons <strong>de</strong> votre projet.• Création et <strong>de</strong>scription <strong>de</strong>s fichiers et <strong>de</strong> leursrubriques.• Mise en forme automatique <strong>de</strong>s liaisons <strong>de</strong> l’analyse.•Informations sur les liaisons par <strong>de</strong>s bullesd’ai<strong>de</strong>.• Récupération simplifiée <strong>de</strong> la <strong>de</strong>scription d’unebase <strong>de</strong> données externe (SQL Server, Oracle, ...).• Description indépendante <strong>de</strong>s fichiers <strong>de</strong> données.• Cryptage <strong>de</strong>s fichiers <strong>de</strong> données.• Modification automatique <strong>de</strong>s fichiers <strong>de</strong> donnéesen cas <strong>de</strong> modification <strong>de</strong> la structure <strong>de</strong>sfichiers.• Vérification <strong>de</strong> l'intégrité référentielle.• Génération automatique <strong>de</strong> l’analyse.• Zoom sur l’éditeur d’analyses.•Insertion <strong>de</strong> <strong>com</strong>mentaires dans le graphe <strong>de</strong>l’analyse.• Interaction <strong>de</strong>s différents volets avec les différentséléments <strong>de</strong> l’analyse.54Partie 2 : Environnement <strong>de</strong> développement


2.3 Editeur UMLLe langage UML est un langage graphique permettant<strong>de</strong> :• représenter le système d’information étudié sousforme d’objets.• générer la structure objet <strong>de</strong> l’application (squelette<strong>de</strong> l’application sous forme <strong>de</strong> classes objet)correspondant au système d’information étudié.L’éditeur d’UML permet principalement :• <strong>de</strong> décrire directement un ou plusieurs diagrammesUML.•<strong>de</strong> construire un modèle UML par rétro-analyse<strong>de</strong> votre projet.Pour plus <strong>de</strong> détails sur la création d’un modèleUML, consultez le chapitre “Le modèle UML”,page 122.Voici quelques caractéristiques <strong>de</strong> l’éditeur d’UML :• Création et <strong>de</strong>scription <strong>de</strong> diagrammes UML.• Mise en forme automatique <strong>de</strong>s liaisons.• Génération automatique d’une classe ou d’unensemble <strong>de</strong> classes à partir d’un diagramme <strong>de</strong>classes.• Zoom sur l’éditeur d’UML.• Insertion <strong>de</strong> <strong>com</strong>mentaires dans un modèle UML.•Interaction <strong>de</strong>s différents volets avec les différentséléments du modèle UML.2.4 Editeur <strong>de</strong> requêtesL’éditeur <strong>de</strong> requêtes permet <strong>de</strong> créer automatiquement<strong>de</strong>s requêtes sur les fichiers <strong>de</strong> données.La programmation est ainsi simplifiée: fenêtres,tables, <strong>com</strong>bos, états, ... pourront s’appuyer sur lesrequêtes.Un assistant permet <strong>de</strong> créer une requête : il suffit<strong>de</strong> choisir les rubriques à intégrer et <strong>de</strong> saisir lesconditions <strong>de</strong> sélection à l’ai<strong>de</strong> <strong>de</strong> l’assistant. Larequête est automatiquement générée (en co<strong>de</strong>SQL optimisé) et peut être testée immédiatement.Vous trouverez toutes les informations concernantles requêtes dans le "Gui<strong>de</strong> <strong>de</strong> l’éditeur d’états et<strong>de</strong> requêtes".Voici quelques caractéristiques <strong>de</strong> l’éditeur <strong>de</strong>requêtes :• Editeur WYSIWYG ("What You See Is What YouGet"). Vous visualisez directement la requête etson résultat.•Création simplifiée d’une requête à l’ai<strong>de</strong> d’unassistant.• Génération automatique du co<strong>de</strong> SQL <strong>de</strong> chaquerequête.• Possibilité <strong>de</strong> tester immédiatement les requêtes.• Zoom sur l’éditeur <strong>de</strong> requêtes.2.5 Editeur <strong>de</strong> fenêtresL’éditeur <strong>de</strong> fenêtres permet <strong>de</strong> décrire les caractéristiques<strong>de</strong> l’interface utilisateur <strong>de</strong> votre projet.De nombreux gabarits (feuilles <strong>de</strong> styles associéesà la fenêtre) et types <strong>de</strong> fenêtres sont proposés. Ilspermettent d’améliorer l’ergonomie <strong>de</strong> vos fenêtreset <strong>de</strong> rendre vos applications conviviales.Pour plus <strong>de</strong> détails sur la création d’une fenêtre,consultez le chapitre “Les fenêtres en pratique”,page 21.Voici quelques caractéristiques <strong>de</strong> l’éditeur <strong>de</strong>fenêtres :• Editeur WYSIWYG ("What You See Is What YouGet"). Vous visualisez directement votre fenêtretelle qu’elle apparaîtra à l’utilisateur.•Création et <strong>de</strong>scription <strong>de</strong>s fenêtres et <strong>de</strong> leurschamps.•"Drag and Drop" permettant <strong>de</strong> copier, <strong>de</strong> collerou <strong>de</strong> déplacer <strong>de</strong>s champs d’une fenêtre à uneautre.• Gabarits <strong>de</strong> fenêtres et styles <strong>de</strong> champs prédéfinis.•Présence <strong>de</strong> plusieurs catalogues d’icones permettantd’associer <strong>de</strong>s images aux champs.• Correcteur d’interface en temps réel permettant<strong>de</strong> simplifier le positionnement <strong>de</strong>s champs.• Ancrage <strong>de</strong>s champs dans la fenêtre.• Saisie <strong>de</strong>s libellés <strong>de</strong>s champs directement dansla zone <strong>de</strong> travail <strong>de</strong> l’éditeur.• Gestion <strong>de</strong> l’ai<strong>de</strong> contextuelle dans les fenêtres.• Zoom sur l’éditeur <strong>de</strong> fenêtres.• Interaction <strong>de</strong>s différents volets avec les différentséléments <strong>de</strong> l’éditeur.2.6 Editeur d’étatsL’éditeur d’états permet <strong>de</strong> créer très simplement<strong>de</strong>s états à imprimer.Vous trouverez toutes les informations concernantla création d’états imprimés dans le "Gui<strong>de</strong> <strong>de</strong> l’éditeurd’états et <strong>de</strong> requêtes".Partie 2 : Environnement <strong>de</strong> développement 55


Voici quelques caractéristiques <strong>de</strong> l’éditeurd’états :• Editeur WYSIWYG ("What You See Is What YouGet"). Vous visualisez directement les états telsqu’ils seront à l’impression.• Création simplifiée d’un état sans une seule ligne<strong>de</strong> co<strong>de</strong>.•"Drag and Drop" permettant <strong>de</strong> copier, <strong>de</strong> collerou <strong>de</strong> déplacer <strong>de</strong>s champs d’un état à un autre.• Gabarits d’états et styles <strong>de</strong> champs pré-définis.• Correcteur d’interface en temps réel permettant<strong>de</strong> simplifier le positionnement <strong>de</strong>s champs.• Utilisation d’un formulaire en fond d’un état.• Création d’étiquettes multi-colonnes.• Edition d’un état au format HTML (pour le publiersur Internet par exemple), ou au format RTF (pourl’éditer avec un traitement <strong>de</strong> texte par exemple).• Zoom sur l’éditeur d’état.2.7 Editeur <strong>de</strong> co<strong>de</strong>L’éditeur <strong>de</strong> co<strong>de</strong> permet <strong>de</strong> saisir tous les traitementsen WLangage (le langage <strong>de</strong> programmationintégré à WinDev). Il permet par exemple <strong>de</strong> saisirle co<strong>de</strong> source :•<strong>de</strong>s champs,• <strong>de</strong>s fenêtres,•<strong>de</strong>s états• <strong>de</strong>s procédures locales et globales,• <strong>de</strong>s classes et <strong>de</strong>s métho<strong>de</strong>s,...Voici quelques caractéristiques <strong>de</strong> l’éditeur <strong>de</strong>co<strong>de</strong> :• Mise en forme automatique <strong>de</strong>s informations saisies.• Complétion automatique.• Glossaire sur les fonctions.• Détection immédiate <strong>de</strong>s erreurs <strong>de</strong> frappe etai<strong>de</strong> à la correction.• Compilation incrémentale.• Visualisation <strong>de</strong>s différents traitements d’unefenêtre, d’un champ ou d’un état du projet.• Insertion <strong>de</strong> traitements spécifiques à l’utilisation<strong>de</strong> la souris ou du clavier.• Gestion <strong>de</strong> l’historique <strong>de</strong>s modifications du co<strong>de</strong>avec possibilité <strong>de</strong> revenir en arrière.• Ouverture <strong>de</strong> plusieurs fenêtres <strong>de</strong> co<strong>de</strong> (poureffectuer <strong>de</strong>s <strong>com</strong>paraisons <strong>de</strong> co<strong>de</strong> par exemple).• Zoom sur l’éditeur <strong>de</strong> co<strong>de</strong>.• Interaction <strong>de</strong>s différents volets avec les différentséléments <strong>de</strong> l’éditeur.Pour plus <strong>de</strong> détails sur l’éditeur <strong>de</strong> co<strong>de</strong>, nousvous re<strong>com</strong>mandons <strong>de</strong> lire le manuel "WLangage".2.8 Editeur d’ai<strong>de</strong>L’éditeur d’ai<strong>de</strong> permet <strong>de</strong> créer un ensemble <strong>de</strong>pages d’ai<strong>de</strong> (fichier "CHM") documentant tout oupartie <strong>de</strong> votre projet.Pour chaque fenêtre <strong>de</strong> votre projet, une paged’ai<strong>de</strong> est créée. Ces pages permettent <strong>de</strong> décrireles différentes manipulations pouvant être réaliséespar les utilisateurs.Voici quelques caractéristiques <strong>de</strong> l’éditeur d’ai<strong>de</strong> :•Editeur WYSIWYG ("What You See Is What YouGet"). Vous visualisez directement les pagesd’ai<strong>de</strong> <strong>de</strong> votre projet.•Compilation <strong>de</strong>s pages d’ai<strong>de</strong> et création d’unCHM.• Création d’un in<strong>de</strong>x et d’un sommaire.•Insertion d’images.• Insertion <strong>de</strong> liens entre les pages d’ai<strong>de</strong>.•Possibilité d’affichage <strong>de</strong>s titres <strong>de</strong> pages dansun ban<strong>de</strong>au.• Zoom sur l’éditeur d’ai<strong>de</strong>.56Partie 2 : Environnement <strong>de</strong> développement


Tableau <strong>de</strong> borddu projetLe tableau <strong>de</strong> bord du projet est un élément indispensable à la gestion <strong>de</strong> projets Win-Dev. Le tableau <strong>de</strong> bord permet d’avoir une vision globale et synthétique <strong>de</strong> l’état d’avancementd’un projet.Le tableau <strong>de</strong> bord propose <strong>de</strong>ux mo<strong>de</strong>s <strong>de</strong> visualisation du projet :• Le mo<strong>de</strong> Développeur.• Le mo<strong>de</strong> Chef <strong>de</strong> projet.Le tableau <strong>de</strong> bord en mo<strong>de</strong> Développeur est <strong>com</strong>posé :• <strong>de</strong> boutons s’allumant progressivement : Si les boutons ne sont pas allumés, tout vabien. Les boutons allumés en rouge signalent un problème potentiel.• <strong>de</strong> listes d’éléments, permettant un accès rapi<strong>de</strong> aux principales options du projet.• <strong>de</strong> <strong>com</strong>pteurs, permettant <strong>de</strong> gérer les nouveautés, les <strong>de</strong>man<strong>de</strong>s, ...Le tableau <strong>de</strong> bord en mo<strong>de</strong> Chef <strong>de</strong> projet permet d’obtenir <strong>de</strong>s informations graphiquessur l’état d’avancement du projet et la qualité du projet. Ce mo<strong>de</strong> est re<strong>com</strong>mandé lors<strong>de</strong> l’utilisation du Suivi <strong>de</strong> Projets avec une gestion <strong>de</strong>s exigences.Partie 2 : Environnement <strong>de</strong> développement 57


WinDev/WebDev/WinDevMobile : 100% <strong>com</strong>patibleLes projets créés actuellement sont souvent multi-cibles.Par exemple, pour un ERP <strong>de</strong>stiné à fonctionner sous Windows, il est fort probable qu'enplus <strong>de</strong> l'application qui sera le socle <strong>de</strong> la solution applicative, <strong>de</strong>s <strong>com</strong>merciaux serontéquipés <strong>de</strong> PDA ou <strong>de</strong> Smartphones, les magasiniers utiliseront <strong>de</strong>s terminaux mobilespour la gestion <strong>de</strong>s stocks et qu'un site Intranet et un site Internet seront mis en place.Tous les éléments, hormis l’IHM (pages et fenêtres) sont 100% <strong>com</strong>patibles et partageablesentre <strong>de</strong>s projets WinDev, WebDev et WinDev Mobile.Il est ainsi possible <strong>de</strong> partager <strong>de</strong>s collections <strong>de</strong> procédures ou <strong>de</strong>s classes par exempleentre plusieurs projets.Quel que soit le produit avec lequel un projet a été créé, il est possible <strong>de</strong> l'ouvrir avecles autres produits.Lorsque vous ouvrez un projet dans un produit différent<strong>de</strong> celui qui a permis <strong>de</strong> le créer, un assistants’affiche, permettant <strong>de</strong> créer une configuration <strong>de</strong>projet spécifique au produit utilisé.Par exemple, si un projet WinDev est ouvert avecWebDev, vous pouvez créer une configuration <strong>de</strong>projet nommée "Site", permettant <strong>de</strong> regrouper tousles éléments nécessaires au site WebDev.Dans les phases d'utilisation <strong>de</strong> l'environnement, ilest possible <strong>de</strong> visualiser <strong>de</strong>puis chaque environnementles éléments <strong>de</strong> chaque cible. Un projet sousWinDev affiche les vignettes <strong>de</strong>s pages WebDev etles fenêtres WinDev Mobile par exemple. Cliquer surune page WebDev <strong>de</strong>puis l'éditeur <strong>de</strong> projet WinDevouvre la page WebDev (WebDev doit être installé surle poste).58Partie 2 : Environnement <strong>de</strong> développement


Configuration <strong>de</strong>projetLes configurations <strong>de</strong> projet permettent <strong>de</strong> créer à partir d’un même projet plusieurs "cibles"différentes.Vous pouvez ainsi créer à partir d'un même projet par exemple :• <strong>de</strong>s exécutables qui ne contiennent pas les mêmes éléments, qui ont <strong>de</strong>s noms différents,…• différents <strong>com</strong>posants• <strong>de</strong>s Webservices• <strong>de</strong>s assemblages DotNetA tout moment, vous pouvez travailler sur une configuration spécifique : les élémentsn’appartenant pas à cette configuration apparaissent grisés dans le graphe <strong>de</strong> projet.Il est possible <strong>de</strong> générer en une seule opération toutes les configurations d’un projet (ouuniquement certaines) grâce à la génération multiple.Partie 2 : Environnement <strong>de</strong> développement 59


GénérationmultipleLes configurations <strong>de</strong> projet permettent <strong>de</strong> définir simplement les différentes "Cibles" <strong>de</strong>votre projet. Vous pouvez ainsi définir pour un même projet, <strong>de</strong>s exécutables, bibliothèques,Webservices, assemblages DotNet, …Pour générer le résultat <strong>de</strong> chaque configuration, vous pouvez bien entendu sélectionnerune à une chaque configuration, et générer le programme correspondant.Un autre moyen plus rapi<strong>de</strong> existe : la génération multiple. Vous sélectionnez en uneseule opération les configurations à générer, et le résultat est immédiat.Pour lancer une génération multiple, utilisez le menu "Atelier .. Génération multiple".60Partie 2 : Environnement <strong>de</strong> développement


Perso-dossiers :Organisez votre projetLes éléments qui <strong>com</strong>posent un projet sont tous listés dans l’Explorateur <strong>de</strong> Projet. Pardéfaut, l’Explorateur range les éléments en fonction <strong>de</strong> leur type : fenêtres, états, classes...Dans les projets <strong>de</strong> taille importante, il est souvent plus pertinent <strong>de</strong> regrouper les élémentsqui ont trait à la même fonctionnalité : gestion du stock ou traitement <strong>de</strong>s <strong>com</strong>man<strong>de</strong>spar exemple.Pour cela, il suffit <strong>de</strong> créer <strong>de</strong>s "perso-dossiers" dans l’arborescence <strong>de</strong> l’explorateur <strong>de</strong>projet et <strong>de</strong> glisser les différents éléments dans ces dossiers.Des éléments peuvent être <strong>com</strong>muns à plusieurs "perso-dossiers".Il est ainsi plus simple <strong>de</strong> travailler sur une partie <strong>de</strong> l’application.Contenu duperso-dossier Comman<strong>de</strong>Contenu duperso-dossier CollaborateurFenêtres, états, requêtes se rapportantaux <strong>com</strong>man<strong>de</strong>sFenêtres, états, requêtes se rapportantaux collaborateursRemarques :• Pour ranger, organiser vos projets, mais aussi pour partager un ensemble d’élémentsentre différents projets, WinDev met également à votre disposition les <strong>com</strong>posantsinternes.• Les "perso-dossiers" sont affichés dans le graphe du projet et dans le volet "Explorateurdu projet".Partie 2 : Environnement <strong>de</strong> développement 61


Gestionnaire <strong>de</strong> sources(GDS)PrésentationPour simplifier vos développements en équipe, WinDev propose un gestionnaire <strong>de</strong> sources.Ce gestionnaire <strong>de</strong> sources permet à plusieurs développeurs <strong>de</strong> travailler simultanémentsur le même projet, et <strong>de</strong> partager aisément <strong>de</strong>s éléments entre différents projets.Réseau(intranet)GDSADSL(internet)DéconnectéIl est possible <strong>de</strong> partager les éléments présents dans le GDS :• via un réseau local• via Internet• en mo<strong>de</strong> déconnecté. Dans ce cas, les éléments sur lesquels un travail spécifique<strong>de</strong>vra être effectué seront extraits du GDS par exemple lors <strong>de</strong> la connexion du portableau système général.62Partie 2 : Environnement <strong>de</strong> développement


Fonctionnement du Gestionnaire <strong>de</strong> <strong>Source</strong>sVoici un exemple d’utilisation du Gestionnaire <strong>de</strong> <strong>Source</strong>s :Poste Local 1Projet AVersion 132ModificationExtraction 9h57Projet AVersion 1Projet AVersion 24Réintégration 10h41Projet AVersion 2Poste Local 2Projet AVersion 35Extraction 14h28Projet AVersion 2Base <strong>de</strong> <strong>Source</strong>sPoste Noma<strong>de</strong>Poste Noma<strong>de</strong>Extraction <strong>de</strong> la Fenêtre Beta duProjet A Version 1 à 9h13Projet AVersion 161Extraction 9h13Modification en clientèlePoste Local 1Extraction <strong>de</strong> la fenêtre Alpha duProjet A Version 1 à 9h57Réintégration <strong>de</strong> la fenêtre Alpha modifiéedans le Projet A Version 2 à 10h41Projet AVersion 37Réintégration 18h32Poste Local 2Extraction <strong>de</strong> la fenêtre Alpha duProjet A Version 2 à 14h28Poste Noma<strong>de</strong>Réintégration <strong>de</strong> la fenêtre Beta modifiéedans le Projet A Version 3 à 18h32Si un élément (fenêtre, état, ...) du projet est extrait, ce même élément ne pourra pas êtreextrait une secon<strong>de</strong> fois.Après modification <strong>de</strong>s éléments extraits, il est nécessaire <strong>de</strong> réintégrer ces élémentspour que le projet <strong>de</strong> base prenne en <strong>com</strong>pte ces modifications. En effet, la base <strong>de</strong> sourcesconserve un historique <strong>de</strong> tous les éléments du projet <strong>de</strong>puis leur création.A chaque réintégration d’un élément, le numéro <strong>de</strong> version du projet <strong>de</strong> base est incrémenté<strong>de</strong> 1.Partie 2 : Environnement <strong>de</strong> développement 63


Partager un projet en pratiqueUn développement informatique important nécessitela participation <strong>de</strong> plusieurs développeurs. Cesdéveloppeurs doivent travailler sur un projet Win-Dev unique en partageant les différentes ressources(requêtes, classes, ...) manipulées.Pour partager un projet, vous pouvez utiliser :• le gestionnaire <strong>de</strong> sources.• le groupware développeur. Son utilisation estconservée pour <strong>com</strong>patibilité avec les versionsprécé<strong>de</strong>ntes. Il ne sera pas développé dans cechapitre. Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> enligne (mot-clé : "Groupware développeur").1 Le Gestionnaire <strong>de</strong> <strong>Source</strong>s1.1 PrésentationWinDev innove dans la gestion du travail en groupeavec le gestionnaire <strong>de</strong> sources (appelé égalementGDS).Totalement intégré à l'environnement, le gestionnaire<strong>de</strong> sources (GDS) permet :• un développement performant en équipe,• l'historique <strong>de</strong>s modifications et <strong>de</strong>s versions,• l'automatisation <strong>de</strong> la sauvegar<strong>de</strong> <strong>de</strong>s sources<strong>de</strong>s membres <strong>de</strong> l'équipe développement.Dimensionné pour <strong>de</strong>s équipes <strong>de</strong> 1 à 100 développeurs,le GDS favorise et normalise sans contrainteles échanges entre développeurs (même endéveloppant seul, le GDS est utile car il contientl'historique <strong>de</strong> vos applications).Le GDS utilise une base <strong>de</strong> sources: procédures,classes, fenêtres, états, <strong>com</strong>posants, analyses, …Cette base peut être installée à votre choix sur unserveur (en mo<strong>de</strong> HyperFileSQL Classic ou HyperFileSQLClient/Serveur) ou sur un poste du réseaudans un répertoire partagé.Le GDS permet un fonctionnement connecté enlocal et à distance, via Internet ou une liaison HTTPou HTTPS. Il est ainsi possible <strong>de</strong> travailler sur unprojet <strong>de</strong>puis une agence ou <strong>de</strong>puis un site clientsans crainte <strong>de</strong> perte <strong>de</strong>s modifications effectuées.Le GDS permet également un fonctionnementdéconnecté (train, avion, …).1.2 Principe d’utilisationInstallationTous les éléments du projet sont enregistrés dansla base <strong>de</strong> sources (sur le serveur). Cette opérationest effectuée à la création du projet ou lors <strong>de</strong>l'importation d'un projet existant dans le gestionnaire<strong>de</strong> sources.Chaque développeur utilisant le gestionnaire <strong>de</strong>sources récupère une copie du projet en local.UtilisationPour travailler sur un élément du projet (fenêtre,état, …), le développeur doit extraire l'élément <strong>de</strong> labase <strong>de</strong> sources, le modifier, puis le ré-intégrer.Si l'élément est déjà extrait, le développeur peut<strong>de</strong>man<strong>de</strong>r à la personne ayant extrait <strong>de</strong> ré-intégrerl'élément (par l'intermédiaire <strong>de</strong> la messagerie intégrée).Pour profiter <strong>de</strong>s modifications effectuées, lesautres développeurs doivent synchroniser leur pro-64Partie 2 : Environnement <strong>de</strong> développement


jet local avec le projet <strong>de</strong> référence (présent dans labase <strong>de</strong> sources).ConseilsLes sources <strong>de</strong> vos applications sont primordiales.Ces sources doivent être traitées avec l'attentionqu'elles méritent !Voici donc une série <strong>de</strong> conseils qui s'appliquent auserveur qui hébergera vos sources :• Utilisez un serveur dédié avec un disque <strong>de</strong> tailleconfortable (au moins 200 Go)• Utilisez plutôt le Gestionnaire <strong>de</strong> <strong>Source</strong>s (GDS)en mo<strong>de</strong> Client/Serveur.•Les disques durs peuvent avoir <strong>de</strong>s problèmesphysiques : utilisez si possible un système RAID Isur votre serveur (plusieurs disques stockant lesmêmes informations en double)• Protégez l'alimentation <strong>de</strong> votre serveur par unonduleur.• Faites <strong>de</strong>s sauvegar<strong>de</strong>s régulières <strong>de</strong> la base <strong>de</strong>sources (1 sauvegar<strong>de</strong> par semaine au minimum)•Placez le serveur dans une zone "sécurisée", enutilisant un firewall.2 Créer une base <strong>de</strong> sources pour le GDS2.1 PrésentationPour partager un projet grâce au gestionnaire <strong>de</strong>sources, il est nécessaire <strong>de</strong> créer une base <strong>de</strong>sources. Cette base <strong>de</strong> sources doit être créée uneseule fois sur un poste serveur.Le système d'exploitation et le système <strong>de</strong> fichierssur lequel est installée la base du GDS doiventsavoir gérer les fichiers <strong>de</strong> plus <strong>de</strong> 4 Go.Il est possible <strong>de</strong> créer la base <strong>de</strong> sources :• dans un répertoire partagé sur le réseau : tousles utilisateurs du GDS doivent avoir tous lesdroits sur ce répertoire. La base <strong>de</strong> sources seraau format HyperFileSQL Classic.Il suffit <strong>de</strong> préciser le répertoire réseau ou labase <strong>de</strong> sources doit être créée.• sur un serveur HyperFileSQL Client/Serveur : labase <strong>de</strong> sources sera au format HyperFileSQLClient/Serveur. Dans ce cas, il est nécessaire <strong>de</strong>préciser :•le serveur•la base•le port utilisé•le nom et le mot <strong>de</strong> passe d'un administrateur<strong>de</strong> la base HyperFileSQL.2.2 Quand créer une base <strong>de</strong> sources ?La base <strong>de</strong> sources doit être créée une seule fois.WinDev permet <strong>de</strong> créer cette base <strong>de</strong> sources àdifférents moments :• lors <strong>de</strong> l'installation <strong>de</strong> WinDev.• lors <strong>de</strong> la création d'un projet utilisant le GDS.• lors <strong>de</strong> l'importation d'un projet dans le gestionnaire<strong>de</strong> sources.• directement dans l’administrateur du GDS.Lorsque la base <strong>de</strong> sources est créée, il est possibled'importer dans cette base <strong>de</strong> sources tous lesprojets WinDev à partager.2.3 Sauvegar<strong>de</strong>sIl est conseillé <strong>de</strong> faire régulièrement <strong>de</strong>s sauvegar<strong>de</strong>s<strong>de</strong> la base <strong>de</strong> sources du GDS. Ces sauvegar<strong>de</strong>speuvent être effectuées grâce àl’administrateur du GDS.Partie 2 : Environnement <strong>de</strong> développement 65


3 Configurer le projet pour travailler avec le GDSPour utiliser un projet existant avec le gestionnaire<strong>de</strong> sources, quelques manipulations sont nécessaires.3.1 Ajouter un projet dans le GDSPour ajouter un projet local dans le GDS :1. Ouvrez votre projet sous WinDev.2. Sous l'éditeur <strong>de</strong> projet, sélectionnez l'option"GDS .. Ajouter le projet <strong>com</strong>plet".3. Dans l'assistant qui s'affiche, sélectionnez labase <strong>de</strong> sources à utiliser.Remarque : Si vous n'avez pas encore créé <strong>de</strong> base<strong>de</strong> sources, cliquez sur le bouton "Installer unebase".Indiquez si vous voulez utiliser :•une base <strong>de</strong> sources située sur un partageréseau (base <strong>de</strong> sources au format HyperFileSQLClassic). Donnez le répertoire <strong>de</strong> la base <strong>de</strong> sources(poste du réseau ou répertoire partagé).• une base <strong>de</strong> sources située sur un serveur Hyper-FileSQL Client/Serveur. La base <strong>de</strong> sources seraau format HyperFileSQL Client/Serveur. Dans cecas, il est nécessaire <strong>de</strong> préciser :•le serveur•la base•le port utilisé•le nom et le mot <strong>de</strong> passe d'un administrateur<strong>de</strong> la base HyperFileSQL.4. Cliquez ensuite sur le bouton "Créer".3.2 Partage <strong>de</strong> ressourcesVous avez importé dans le gestionnaire <strong>de</strong> sourcesun premier projet. Ce projet contient <strong>de</strong>s élémentspartagés avec d'autres projets (classes, fenêtres,procédures, feuilles <strong>de</strong> styles, analyse,…).Le partage est une notion importante du GDS. Différentesmétho<strong>de</strong>s sont disponibles pour effectuerle partage. Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> enligne.4 Travailler avec le GDS4.1 Options d’un projet concernant le GDSPlusieurs options permettent <strong>de</strong> configurer un projetmanipulé avec le Gestionnaire <strong>de</strong> <strong>Source</strong>s. Cesoptions sont regroupées dans l'onglet "GDS" <strong>de</strong> la<strong>de</strong>scription du projet (option Projet .. Description duprojet"). Ces options sont cochées par défaut.• Proposer la récupération <strong>de</strong> la <strong>de</strong>rnière version<strong>de</strong>s éléments à l'ouverture du projet :Cette option permet lors <strong>de</strong> l'ouverture d'un projetprésent dans le GDS, <strong>de</strong> proposer la récupération<strong>de</strong> la <strong>de</strong>rnière version <strong>de</strong>s différentséléments du projet. Par défaut, la <strong>de</strong>rnière version<strong>de</strong>s éléments est automatiquement récupérée.• Proposer la réintégration <strong>de</strong>s éléments à la fermeturedu projet :Cette option permet d'afficher lors <strong>de</strong> la fermeturedu projet la liste <strong>de</strong> tous les éléments actuellementextraits, afin <strong>de</strong> ré-intégrer certains outous ces éléments.Par défaut, à la fermeture du projet, les élémentsextraits ne sont pas ré-intégrés.• Proposer la réintégration et la récupération <strong>de</strong> la<strong>de</strong>rnière version <strong>de</strong>s éléments lors <strong>de</strong> la générationd'exécutables, <strong>de</strong> bibliothèques, <strong>de</strong> <strong>com</strong>posants,…Cette option permet d'afficher lors <strong>de</strong> la créationd'un exécutable, d'une bibliothèque, … la liste<strong>de</strong>s éléments extraits, afin <strong>de</strong> ré-intégrer et <strong>de</strong>récupérer la <strong>de</strong>rnière version <strong>de</strong>s éléments.L'exécutable, le <strong>com</strong>posant ou la bibliothèquepeut ainsi contenir les <strong>de</strong>rniers éléments les plusà jour.Par défaut, la génération <strong>de</strong> l'exécutable, <strong>de</strong> labibliothèque, … se fait avec les éléments du projetactuellement présents sur le poste local.• Extraire / Réintégrer automatiquement leprojet :Cette option permet une gestion automatique du"fichier projet". Si cette option est cochée, lefichier projet est extrait uniquement si l'actionréalisée le nécessite. Lorsque l'action sur le projeta été effectuée, le fichier projet est automatiquementréintégré.Cette option permet <strong>de</strong> ne plus avoir la gestion"Maître / Invité" sur le projet. Il est égalementpossible d'activer cette option par l'option <strong>de</strong>66Partie 2 : Environnement <strong>de</strong> développement


menu "GDS .. Gérer le projet .. Gérer automatiquementl'extraction du projet".4.2 Extraire un élémentLes différents mo<strong>de</strong>s d’extractionLe GDS propose <strong>de</strong>ux mo<strong>de</strong>s d'extraction <strong>de</strong>s élémentsdu projet :• le mo<strong>de</strong> classique : si vous affichez un élémentdu GDS non extrait, un panneau indique que cetélément doit être extrait pour être modifié. Vouspouvez extraire immédiatement l'élément (boutond'extraction présent dans le panneau).• le mo<strong>de</strong> automatique : si vous tentez <strong>de</strong> modifierun élément du GDS non extrait, le GDS proposeautomatiquement d'extraire cet élément. Après lavalidation <strong>de</strong> l'extraction, l'élément peut êtremodifié.Remarque : ce mo<strong>de</strong> est déconseillé lors d'uneutilisation du GDS avec une connexion Internetlente.Pour changer le mo<strong>de</strong> d'extraction, sélectionnezl'option "Outils .. Options <strong>de</strong> WinDev", puis sélectionnezl'onglet "Général". L'option "Extraction <strong>de</strong>séléments à la première modification" permet <strong>de</strong>passer tous les projets ouverts <strong>de</strong>puis le logiciel encours en mo<strong>de</strong> automatique.Ouvrir un élément du projet pourmodifier ses caractéristiquesPour modifier les caractéristiques d'un élémentd'un projet géré par le GDS :1. Extrayez l'élément du Gestionnaire <strong>de</strong> sources.2. Sélectionnez le mo<strong>de</strong> d'extraction <strong>de</strong> l'élément :Le mo<strong>de</strong> d'extraction peut être :• exclusif : personne ne pourra extraire cet élémentjusqu'à sa réintégration. L'élément pourrauniquement être extrait pour test.• pour test : l'élément pourra être modifié mais lesmodifications ne pourront pas être réintégrées.• multiple : l'élément pourra également être extraitpar d'autres utilisateurs. Dans ce cas, lors <strong>de</strong> laréintégration, il sera possible <strong>de</strong> visualiser les différencesentre les différentes versions <strong>de</strong> l'élément.3. Vali<strong>de</strong>z. L'élément est ouvert. La barre <strong>de</strong> titreindique que l'élément est extrait.4.3 Réintégrer un élémentLes éléments extraits du Gestionnaire <strong>de</strong> sourcesapparaissent entourés d'un trait rouge sous l'éditeur<strong>de</strong> projet.Pour réintégrer un élément, il suffit <strong>de</strong> sélectionnerl'option "Réintégrer" dans le menu contextuel <strong>de</strong>l'élément (dans le graphe du projet ou dans le volet"Explorateur <strong>de</strong> projet").Lors <strong>de</strong> la réintégration d'un élément, un écrans’affiche permettant d’effectuer les actions suivantesavant <strong>de</strong> réintégrer l'élément :• connaître les modifications effectuées• <strong>com</strong>parer l'élément <strong>de</strong> la base <strong>de</strong> sources avecl'élément local (extrait)•accé<strong>de</strong>r à l'historique <strong>de</strong> l'élément dans la base<strong>de</strong> sources.Il est possible <strong>de</strong> ré-intégrer les modifications effectuéesdans l'élément, tout en conservant l'élémentextrait (option "Gar<strong>de</strong>r le fichier extrait").4.4 Mo<strong>de</strong>s <strong>de</strong> gestion du projetDeux mo<strong>de</strong>s <strong>de</strong> gestion du projet sont disponiblesavec le GDS :• Gestion du projet en mo<strong>de</strong> Maître / Invité• Gestion du projet en mo<strong>de</strong> automatique (pardéfaut)Maître et invitéLe Gestionnaire <strong>de</strong> sources considère 2 typesd'utilisateurs :• le maître : le maître est l'utilisateur qui a placé leprojet dans le gestionnaire <strong>de</strong> sources.• les invités : les invités sont les développeurs quimanipulent le projet <strong>de</strong>puis le gestionnaire <strong>de</strong>sources.Il n'est pas obligatoire d'être connecté en mo<strong>de</strong>maître sur un projet. Le mo<strong>de</strong> "Maître" est nécessaireuniquement pour :• modifier les caractéristiques du projet et réintégrerces modifications dans la base <strong>de</strong> sources.• réintégrer tous les éléments pour faire l'exécutableet le programme d'installation <strong>de</strong> l'application.Pour passer du mo<strong>de</strong> maître au mo<strong>de</strong> invité, sélectionnezl'option "GDS .. Gestion du projet .. Devenirinvité sur le projet (et tout réintégrer)".Dans ce cas, le gestionnaire <strong>de</strong> sources propose laréintégration <strong>de</strong> tous les éléments du projet (y <strong>com</strong>prisle fichier .WDP).Partie 2 : Environnement <strong>de</strong> développement 67


Pour passer du mo<strong>de</strong> invité au mo<strong>de</strong> maître, sélectionnezl'option "GDS .. Gestionnaire du projet ..Devenir maître sur le projet".Attention : Modification <strong>de</strong>s options du projet :Tous les utilisateurs du projet (qu'ils soient maîtresou invités) peuvent modifier les caractéristiques duprojet (première fenêtre du projet, animation,charte <strong>de</strong> programmation, ...). Ces modificationspourront être réintégrées dans le gestionnaire <strong>de</strong>sources uniquement par le maître du projet.Les modifications faites par un invité seront perdueslors <strong>de</strong> la mise à jour du projet <strong>de</strong>puis la base<strong>de</strong> données.Mo<strong>de</strong> automatiqueAvec le mo<strong>de</strong> automatique, le fichier projet estextrait uniquement si l'action réalisée le nécessite(quel que soit l'utilisateur). Lorsque l'action sur leprojet a été effectuée, le fichier projet est automatiquementréintégré.Le mo<strong>de</strong> automatique permet <strong>de</strong> ne plus avoir lagestion "Maître/Invité" sur le projet.5 Travailler en mo<strong>de</strong> déconnecté avec le GDSLe Gestionnaire <strong>de</strong> <strong>Source</strong>s permet très simplement<strong>de</strong> travailler en mo<strong>de</strong> déconnecté ounoma<strong>de</strong>.Ce mo<strong>de</strong> permet par exemple à un développeur utilisantun portable <strong>de</strong> continuer à travailler sur unprojet présent dans la base <strong>de</strong> sources tout enétant déconnecté <strong>de</strong> la base <strong>de</strong> source.Le principe est simple :• avant la déconnexion, il suffit d'utiliser l'option"GDS .. Travail à distance .. Se déconnecter pourune utilisation noma<strong>de</strong>". Il est conseillé d'extraireavant la déconnexion les différents éléments quivont être modifiés (ainsi, ces éléments seront"déjà extraits" pour les autres utilisateurs). Vouspourrez travailler en local sur votre projet. Les différentséléments du projet sont manipulablesdirectement.• à la reconnexion, il suffit d'utiliser l'option "GDS ..Travail à distance .. Se reconnecter et synchroniser".Il suffit alors <strong>de</strong> réintégrer les élémentsmodifiés.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.6 Administrateur du GDSL'administrateur du GDS permet <strong>de</strong> manipulerdirectement les différents projets inclus dans legestionnaire <strong>de</strong> sources.Il permet par exemple <strong>de</strong> :• gérer les bases <strong>de</strong> sources (création, connexion àune base <strong>de</strong> sources)• gérer les branches• gérer les fichiers et les répertoires présents dansun projet <strong>de</strong> la base <strong>de</strong> sources (Ajouter, supprimer,renommer, … <strong>de</strong>s fichiers et <strong>de</strong>s répertoires)• gérer les différents fichiers <strong>de</strong> la base <strong>de</strong> sources(extraction, réintégration, partage, …).• lancer certains outils (options, maintenances, …).• restaurer une version d’un projet.• voir les historiques et les différences <strong>de</strong> versions<strong>de</strong> sources.•d’annuler les extractions (en mo<strong>de</strong> administrateur)• <strong>de</strong> purger une base, la sauvegar<strong>de</strong>r, la restaurer,...•d’ajouter <strong>de</strong>s fichiers <strong>de</strong> tout type dans la base(.doc, .xls, .pdf, ...)68Partie 2 : Environnement <strong>de</strong> développement


ComposantinterneUn <strong>com</strong>posant interne est un regroupement d’éléments d’un projet. Ce regroupementpermet <strong>de</strong> :• Organiser un projet : vous pouvez créer <strong>de</strong>s <strong>com</strong>posants internes pour regrouper leséléments d’un projet, par exemple par fonctionnalité.• Partager <strong>de</strong>s éléments entre différents projets, par l’intermédiaire du GDS (Gestionnaire<strong>de</strong> <strong>Source</strong>s).Les éléments d’un <strong>com</strong>posant interne peuvent être privés ou publics :• Les éléments privés ne pourront être manipulés que par les autres éléments du <strong>com</strong>posant.• Les éléments publics pourront être manipulés par les éléments du projet utilisant le<strong>com</strong>posant interne.Partie 2 : Environnement <strong>de</strong> développement 69


Composant interne en pratique1 PrésentationUn <strong>com</strong>posant interne est un regroupement d'élémentsd'un projet. Ce regroupement permet <strong>de</strong> :• Organiser un projet : vous pouvez créer <strong>de</strong>s <strong>com</strong>posantsinternes pour regrouper les élémentsd'un projet par exemple par fonctionnalité.• Partager <strong>de</strong>s éléments entre différents projets :Les éléments présents dans un <strong>com</strong>posantinterne peuvent être partagés entre plusieursprojets par l'intermédiaire du GDS. Pour plus <strong>de</strong>détails, consultez “Partager <strong>de</strong>s <strong>com</strong>posantsinternes (via le GDS)”, page 71.Un <strong>de</strong>s avantages du <strong>com</strong>posant interne par rapportau <strong>com</strong>posant externe est <strong>de</strong> pouvoir déboguerdirectement le <strong>com</strong>posant interne <strong>de</strong>puis leprojet qui l'utilise.Différence avec un <strong>com</strong>posant externe : Un <strong>com</strong>posantinterne permet d'intégrer la totalité <strong>de</strong>s élémentsdu <strong>com</strong>posant dans l'interface du projetcontenant le <strong>com</strong>posant interne. Il est possible <strong>de</strong>manipuler tous les éléments "publiques" du <strong>com</strong>posantinterne directement sous l'éditeur.Lors <strong>de</strong> l'utilisation d'un <strong>com</strong>posant externe, les éléments"publics" du <strong>com</strong>posant ne peuvent pas êtremanipulés directement. Il est nécessaire pourmodifier le <strong>com</strong>posant externe d'ouvrir le projet correspondant.2 Créer un <strong>com</strong>posant interne2.1 Les différentes étapesPour créer un <strong>com</strong>posant interne :1. Sélectionnez l'option "Atelier .. ComposantInterne .. Créer un <strong>com</strong>posant interne". L'assistant<strong>de</strong> création d'un <strong>com</strong>posant interne se lance.2. Indiquez les caractéristiques du <strong>com</strong>posantinterne :• son nom. Le nom du <strong>com</strong>posant interne sera utilisépour le fichier WCI correspondant à la <strong>de</strong>scriptiondu <strong>com</strong>posant interne. Ce nom seraégalement utilisé pour créer un sous-répertoiredans votre projet contenant tous les éléments du<strong>com</strong>posant interne.•son libellé.•sa <strong>de</strong>scription.3. Indiquez les éléments à intégrer dans le <strong>com</strong>posantinterne. Un <strong>com</strong>posant interne peut contenirtous les types d'éléments présents dans un projet :fenêtres, états, modèles, collections <strong>de</strong> procédures,...4. Indiquez les éléments du <strong>com</strong>posant interne quiseront directement accessibles dans le co<strong>de</strong> etdans les actions prédéfinies du projet accueillant le<strong>com</strong>posant interne.Remarque : Les éléments du <strong>com</strong>posant interneaccessibles (ou "public") seront automatiquementproposés par la <strong>com</strong>plétion. Ils pourront être utiliséspar les éléments présents dans le projet ou<strong>de</strong>puis un autre <strong>com</strong>posant interne. Les élémentsnon accessibles (ou "privés") pourront être manipulésuniquement par un autre élément du <strong>com</strong>posantinterne (la <strong>com</strong>plétion proposera ces éléments"privés" uniquement <strong>de</strong>puis les éléments d'un <strong>com</strong>posantinterne).5. Indiquez le mo<strong>de</strong> <strong>de</strong> gestion <strong>de</strong>s données et <strong>de</strong>scontextes d'exécution. Trois mo<strong>de</strong>s <strong>de</strong> gestion <strong>de</strong>sdonnées et <strong>de</strong>s contextes d'exécution sontdisponibles :• Partage <strong>com</strong>plet : Le <strong>com</strong>posant interne accè<strong>de</strong>aux fichiers <strong>de</strong> données du projet. Le <strong>com</strong>posantinterne utilise également les mêmes contextesd'exécution que le projet.Ce mo<strong>de</strong> correspond au mo<strong>de</strong> par défaut si le<strong>com</strong>posant interne n'utilise pas d'analyse.• Partage <strong>de</strong> données uniquement (mo<strong>de</strong>avancé) : Le <strong>com</strong>posant interne accè<strong>de</strong> auxfichiers <strong>de</strong> données du projet. Le <strong>com</strong>posantinterne utilise <strong>de</strong>s contextes d'exécution distincts<strong>de</strong> ceux du projet.Ce mo<strong>de</strong> est à utiliser dans <strong>de</strong>s cas très spécifiques.• Autonomie totale : Le <strong>com</strong>posant interne accè<strong>de</strong>à ses propres fichiers <strong>de</strong> données. Le <strong>com</strong>posantinterne utilise <strong>de</strong>s contextes d'exécution distincts<strong>de</strong> ceux du projet.Ce mo<strong>de</strong> correspond au mo<strong>de</strong> par défaut si le<strong>com</strong>posant utilise une analyse.Dans ce cas, il est nécessaire d'indiquer l'analyse70Partie 2 : Environnement <strong>de</strong> développement


utilisée par le <strong>com</strong>posant interne. Il est égalementpossible <strong>de</strong> créer directement une nouvelleanalyse. Cette analyse sera associée au <strong>com</strong>posantinterne.6. Vali<strong>de</strong>z la création du <strong>com</strong>posant interne. A toutmoment, il sera possible <strong>de</strong> :• Modifier les caractéristiques du <strong>com</strong>posantinterne grâce à la fenêtre <strong>de</strong> <strong>de</strong>scription du <strong>com</strong>posantinterne.• Manipuler le <strong>com</strong>posant interne et ses éléments.Astuce : Un <strong>com</strong>posant interne n'a pas <strong>de</strong> co<strong>de</strong> <strong>de</strong>déclaration <strong>de</strong>s globales. Il suffit d'utiliser une collection<strong>de</strong> procédures pour effectuer l'initialisationdu <strong>com</strong>posant interne.2.2 Composant interne et analyse : cas <strong>de</strong>l’autonomie totaleUn <strong>com</strong>posant interne peut être lié à sa propre analyse.Dans ce cas, le projet accueillant le <strong>com</strong>posantinterne peut avoir plusieurs analyses :•l'analyse du projet•l'analyse du ou <strong>de</strong>s <strong>com</strong>posants internes. Cetteanalyse est définie lors <strong>de</strong> la création du <strong>com</strong>posantinterne. Elle peut être également sélectionnée<strong>de</strong>puis la fenêtre <strong>de</strong> <strong>de</strong>scription du<strong>com</strong>posant interne.Les éléments générés par le RAD pour le <strong>com</strong>posantinterne seront générés dans le répertoire du<strong>com</strong>posant interne. Bien entendu, si l'analyse du<strong>com</strong>posant interne est modifiée, une nouvellegénération par le RAD proposera automatiquement<strong>de</strong> générer uniquement les éléments correspondantsaux modifications.3 Partager <strong>de</strong>s <strong>com</strong>posants internes (via le GDS)Les <strong>com</strong>posants internes peuvent être partagésentre projets grâce au GDS.Pour partager un <strong>com</strong>posant interne via le GDS, ilest nécessaire que le projet contenant le <strong>com</strong>posantinterne soit dans le GDS. Il est possible :• soit <strong>de</strong> créer le <strong>com</strong>posant interne à partir d'unprojet présent dans le GDS. Le <strong>com</strong>posantinterne sera automatiquement présent dans leGDS.•soit d'importer dans le GDS un projet contenantun ou plusieurs <strong>com</strong>posants internes. Les <strong>com</strong>posantsinternes seront alors automatiquementintégrés dans le GDS.Partie 2 : Environnement <strong>de</strong> développement 71


ComposantexterneUn <strong>com</strong>posant externe est un ensemble d'éléments WinDev : fenêtres, états, analyse, ...Cet ensemble d'éléments effectue une fonctionnalité précise. Par exemple, un <strong>com</strong>posantpeut correspondre à une <strong>de</strong>s fonctionnalités suivantes :• Envoi <strong>de</strong> fax,• Envoi d'emails,• ...Un <strong>com</strong>posant externe peut être redistribué à d'autres développeurs WinDev (gratuitementou non). Ces développeurs pourront ainsi intégrer simplement la fonctionnalité proposéepar le <strong>com</strong>posant externe dans leur application sans pour autant avoir accès auco<strong>de</strong> source correspondant (s’il n’a pas été lui aussi distribué). Le <strong>com</strong>posant externesera ensuite intégré à l'application, et distribué avec elle.72Partie 2 : Environnement <strong>de</strong> développement


Composant externe en pratique1 Présentation1.1 DéfinitionUn <strong>com</strong>posant externe est un ensemble d'élémentsWinDev : fenêtres, états, analyse, ... Cet ensembled’éléments effectue une fonctionnalité précise. Parexemple, un <strong>com</strong>posant externe peut correspondreà une <strong>de</strong>s fonctionnalités suivantes :•Envoi <strong>de</strong> Fax• Envoi d'emails• ...Remarques :• Pour optimiser l'organisation <strong>de</strong> vos projets, il estpossible d'utiliser <strong>de</strong>s <strong>com</strong>posants internes. Pourplus <strong>de</strong> détails, consultez “Composant interne enpratique”, page 70.•Dans la suite <strong>de</strong> ce chapitre, le terme "<strong>com</strong>posant"signifie "<strong>com</strong>posant externe".Un <strong>com</strong>posant peut être redistribué à d'autresdéveloppeurs WinDev (gratuitement ou non). Cesdéveloppeurs pourront ainsi intégrer simplement lafonctionnalité proposée par le <strong>com</strong>posant dans leurapplication. Le <strong>com</strong>posant sera donc intégré àl'application et distribué avec l'application.Lors <strong>de</strong> la création du <strong>com</strong>posant, l'auteurspécifie :• la provenance <strong>de</strong>s éléments du <strong>com</strong>posant. Ledéveloppeur peut construire un <strong>com</strong>posant à partird’un projet WinDev lié à un projet WebDev et /ou un projet WinDev Mobile.•les éléments du <strong>com</strong>posant visibles ou non parl'utilisateur du <strong>com</strong>posant. Les éléments visiblesseront accessibles dans le graphe du projet oupar programmation.• le mo<strong>de</strong> d'utilisation du <strong>com</strong>posant (<strong>com</strong>ment utiliserle <strong>com</strong>posant, les paramètres permettantd'accé<strong>de</strong>r aux fonctionnalités du <strong>com</strong>posant, ...).Une documentation succincte (à <strong>com</strong>pléter) estautomatiquement générée et associée au <strong>com</strong>posant.Remarque : Des exemples <strong>de</strong> <strong>com</strong>posants sontlivrés en standard avec WinDev. Ces <strong>com</strong>posantssont accessibles <strong>de</strong>puis le volet "Assistants, Exempleset Composants" (option "Composants").1.2 De quoi est constitué un <strong>com</strong>posant ?Un <strong>com</strong>posant est défini et généré à partir d'un projetWinDev existant. Il peut être ensuite intégrédans d'autres projets WinDev.Tous les éléments du <strong>com</strong>posant sont totalementindépendants du projet dans lequel le <strong>com</strong>posantest intégré. Le <strong>com</strong>posant peut avoir sa propre analyse,ses fenêtres, ses états, ses fichiers, ... Lors <strong>de</strong>la création <strong>de</strong> la génération du <strong>com</strong>posant, il suffitd'indiquer si ces éléments pourront être manipulésou non dans le projet WinDev intégrant ce <strong>com</strong>posant.Le <strong>com</strong>posant est constitué <strong>de</strong> trois fichiers :.WDK.WDI.WDO(fichieroptionnel)Fichier <strong>com</strong>posant. Contienttous les éléments du <strong>com</strong>posant.Ce fichier est nécessaire àl'intégration du <strong>com</strong>posantdans un projet.Ce fichier doit également êtrelivré dans la procédure d’installation<strong>de</strong> l'application utilisantle <strong>com</strong>posant.Description du <strong>com</strong>posant (uniquementpour le développementd'applications).Ce fichier est nécessaire àl'intégration du <strong>com</strong>posantdans un projet.Ce fichier ne doit pas être livrédans la procédure d’installation<strong>de</strong> l'application utilisant le<strong>com</strong>posant.Fichier optionnelFichier au format texte contenantla liste <strong>de</strong>s différents élémentslivrés en plus avec le<strong>com</strong>posant (fichiers <strong>de</strong> données,fichiers .INI, ...). Consultez“Le fichier WDO”, page 78.1.3 Que contient un <strong>com</strong>posant ?Un <strong>com</strong>posant contient :• les différents éléments à redistribuer (fenêtres,états,...). Ces éléments peuvent être accessiblesou non lors <strong>de</strong> l'importation du <strong>com</strong>posant dansun projet WinDev.• une brève <strong>de</strong>scription du <strong>com</strong>posant.• une ai<strong>de</strong> permettant <strong>de</strong> ré-utiliser ce <strong>com</strong>posant.Partie 2 : Environnement <strong>de</strong> développement 73


Cette ai<strong>de</strong> est générée à partir <strong>de</strong>s <strong>com</strong>mentaires<strong>de</strong> co<strong>de</strong>.Remarque : Par défaut, si un <strong>com</strong>posant utilise uneanalyse, <strong>de</strong>s fichiers, ... les fonctions WLangage <strong>de</strong>gestion HyperFileSQL manipuleront ces élémentsdans un contexte indépendant. Ces paramètrespeuvent être modifiés dans les options avancéesdu <strong>com</strong>posant. Pour plus <strong>de</strong> détails, consultezl’ai<strong>de</strong> en ligne.2 Créer et générer un <strong>com</strong>posantLa création d'un <strong>com</strong>posant doit être effectuée àpartir d'un projet contenant tous les élémentsnécessaires au fonctionnement du <strong>com</strong>posant. Ilest donc conseillé d'utiliser un projet spécifiquepour créer chaque <strong>com</strong>posant.La création d'un <strong>com</strong>posant se fait en plusieursétapes :1. Développement <strong>de</strong>s éléments du <strong>com</strong>posant.2. Création du <strong>com</strong>posant3. Définition <strong>de</strong>s options avancées du <strong>com</strong>posant.4. Génération du <strong>com</strong>posant.Le <strong>com</strong>posant peut alors être distribué et ré-utilisé.3 Distribuer un <strong>com</strong>posant3.1 PrésentationLorsque le <strong>com</strong>posant a été créé, testé et généré, ilpeut être mis à disposition <strong>de</strong>s développeurs. Plusieursmétho<strong>de</strong>s sont possibles :• utilisation directe du <strong>com</strong>posantExemple : le <strong>com</strong>posant est directement utilisésur le poste du développeur qui a créé le <strong>com</strong>posant.• distribution simple, en fournissant directementles fichiers nécessaires.Exemple : le <strong>com</strong>posant est <strong>de</strong>stiné à être utiliséà l'intérieur d'une même société, par plusieursdéveloppeurs. Dans ce cas, les fichiers nécessairespeuvent être copiés sur un disque réseau.• procédure d’installation du <strong>com</strong>posant (avec uneprocédure d'installation du <strong>com</strong>posant i<strong>de</strong>ntiqueà celle utilisée pour les applications).Exemple : Ce mo<strong>de</strong> <strong>de</strong> distribution est conseillé sile <strong>com</strong>posant est <strong>de</strong>stiné à être vendu ou à êtredistribué à gran<strong>de</strong> échelle, avec <strong>de</strong>s mises à jourrégulières.3.2 Utilisation directe du <strong>com</strong>posantLe <strong>com</strong>posant est créé et utilisé sur le même poste.Lors <strong>de</strong> l'importation du <strong>com</strong>posant dans un projetWinDev, il suffit <strong>de</strong> sélectionner le fichier WDI correspondantau <strong>com</strong>posant. Ce fichier est disponibledans le répertoire EXE du projet <strong>com</strong>posant.Attention : Si le <strong>com</strong>posant utilise <strong>de</strong>s fichiers spécifiques(fichiers <strong>de</strong> données, fichiers texte, ...), ilest nécessaire <strong>de</strong> créer un fichier .WDOaprès la génération du <strong>com</strong>posant. Cefichier contient la liste <strong>de</strong>s fichiers externes(fichiers <strong>de</strong> données, fichiers texte, ...) utilisés parle <strong>com</strong>posant.Ces fichiers référencés dans le fichier .WDOseront automatiquement recopiésdans le répertoire EXE du projet utilisant le <strong>com</strong>posantWinDev.3.3 Distribution simple d’un <strong>com</strong>posantLa distribution simple d'un <strong>com</strong>posant consiste àfournir uniquement les fichiers nécessaires aufonctionnement du <strong>com</strong>posant par simple copie.Les fichiers sont copiés dans un répertoire spécifique.Ce répertoire peut par exemple être présentsur un serveur réseau.Lors <strong>de</strong> l'importation du <strong>com</strong>posant dans un projetWinDev, il suffit <strong>de</strong> sélectionner le fichier WDI correspondantau <strong>com</strong>posant dans le répertoire <strong>de</strong>distribution.Pour distribuer un <strong>com</strong>posant, il est nécessaire <strong>de</strong>fournir :• Les fichiers automatiquement générés par Win-Dev (fichier .WDK et fichier.WDI).• Si nécessaire, les fichiers spécifiques manipuléspar le <strong>com</strong>posant (fichiers <strong>de</strong> données, fichiersd'initialisation,...) ainsi que le fichier .WDO.Le fichier texte .WDO contientla liste <strong>de</strong>s fichiers qui doivent être fournis avec74Partie 2 : Environnement <strong>de</strong> développement


le <strong>com</strong>posant. Pour plus <strong>de</strong> détails sur ce fichier,consultez le paragraphe “Le fichier WDO”,page 78.3.4 Distribution grâce à une procédured’installationLa diffusion <strong>de</strong>s <strong>com</strong>posants à l'ai<strong>de</strong> d'une procédured'installation consiste à fournir aux utilisateursdu <strong>com</strong>posant WinDev, un programmed'installation. Ce programme installe tous lesfichiers nécessaires à l'utilisation du <strong>com</strong>posantdans le répertoire spécifié par l'utilisateur.Ce mo<strong>de</strong> d'installation permet <strong>de</strong> gérerautomatiquement :• le fichier WDO et l'installation <strong>de</strong>s fichiers spécifiques(fichiers <strong>de</strong> données, ...) utilisés par le <strong>com</strong>posant.• l'installation d'outils spécifiques (MDAC, driverODBC pour HyperFileSQL,...)• la mise à jour automatique <strong>de</strong>s fichiers <strong>de</strong> donnéesutilisés par le <strong>com</strong>posant (si nécessaire).• la désinstallation du <strong>com</strong>posant.Pour proposer une procédure d'installation pour un<strong>com</strong>posant :1. Créez la procédure d’installation du <strong>com</strong>posant :• soit directement par l'option "Atelier .. ComposantExterne .. Créer la procédure d’installation d'un<strong>com</strong>posant".• soit <strong>de</strong>puis la liste <strong>de</strong>s <strong>com</strong>posants générés àpartir du projet (option "Atelier .. ComposantExterne .. Liste <strong>de</strong>s <strong>com</strong>posants générés à partir<strong>de</strong> ce projet ", bouton "Installation").2. Dans les différents plans <strong>de</strong> l'assistant,spécifiez :• le support d'installation du <strong>com</strong>posant• les langues proposées dans la procédure d'installation• le répertoire d'installation par défaut du <strong>com</strong>posant• les modules optionnels à installer. Il est possible<strong>de</strong> modifier la liste <strong>de</strong>s fichiers à distribuer avecle <strong>com</strong>posant. Le fichier WDO sera automatiquementcréé à partir <strong>de</strong> cette liste.• ...Par défaut, les fichiers nécessaires à l'installationd'un <strong>com</strong>posant sont créés dans le sous-répertoireINSTALL COMPO du projet.Rappel : Lors <strong>de</strong> la création <strong>de</strong> l'installation d'uneapplication, les fichiers nécessaires sont créésdans le répertoire INSTALL du projet.4 Utiliser un <strong>com</strong>posant dans une applicationUn <strong>com</strong>posant peut être ré-utilisé à tout momentdans n'importe quelle application WinDev : il suffit<strong>de</strong> connaître le répertoire <strong>de</strong>s fichiers du <strong>com</strong>posantet <strong>de</strong> l’importer dans le projet. L’importationdu <strong>com</strong>posant peut également se faire via le GDS.Lorsqu’une nouvelle version d'un <strong>com</strong>posant estdisponible, il suffit d'installer les nouveaux fichiers<strong>de</strong> cette mise à jour dans le répertoire d'installationdu <strong>com</strong>posant (selon le mo<strong>de</strong> d'installation utilisé).Pour plus <strong>de</strong> détails sur les différents mo<strong>de</strong>s d'installationd'un <strong>com</strong>posant, consultez “Distribuer un<strong>com</strong>posant”, page 74.Si le <strong>com</strong>posant a été publié et importé via le GDS,les mises à jour sont proposées à l’ouverture duprojet utilisant le <strong>com</strong>posant.La création <strong>de</strong> l'exécutable (utilisant le <strong>com</strong>posant)se fait <strong>de</strong> la même manière que pour une applicationclassique WinDev. Les DLLs nécessaires aufonctionnement du <strong>com</strong>posant sont automatiquementdétectées.5 Déploiement d’une application utilisant un <strong>com</strong>posant5.1 PrésentationLe déploiement d'une application utilisant un ouplusieurs <strong>com</strong>posants se fait <strong>de</strong> la même façonque le déploiement d'une application classique(option "Atelier .. Créer la procédure d’installation").Lors du déploiement d'une application utilisant un<strong>com</strong>posant, les fichiers suivants sont automatiquementinstallés sur le poste <strong>de</strong> l'utilisateur :• .WDK,• .EXE,• les fichiers nécessaires au fonctionnement du<strong>com</strong>posant et <strong>de</strong> l'application.Partie 2 : Environnement <strong>de</strong> développement 75


5.2 Mise à jour <strong>de</strong>s <strong>com</strong>posants et <strong>de</strong>s exécutablesdéployésLors <strong>de</strong> la mise à jour d'un <strong>com</strong>posant et/ou d'unexécutable déployé, il est possible d'installer sur leposte <strong>de</strong> l'utilisateur final :• soit l'exécutable <strong>de</strong> l'application, le <strong>com</strong>posant etles fichiers nécessaires à leur fonctionnement.• soit uniquement l'exécutable <strong>de</strong> l'application etles fichiers nécessaires au fonctionnement <strong>de</strong>l'application.• soit uniquement le <strong>com</strong>posant et les éventuelsfichiers nécessaires à son fonctionnement.Pour plus <strong>de</strong> détails sur la gestion <strong>de</strong> la <strong>com</strong>patibilitéentre l'application et son <strong>com</strong>posant, consultezl’ai<strong>de</strong> en ligne.Pour mettre à jour un <strong>com</strong>posant en clientèle,<strong>de</strong>ux possibilités existent :1. La re<strong>com</strong>pilation du projet hôteRe<strong>com</strong>pilez le projet qui utilise le <strong>com</strong>posant etredistribuez l'application avec le <strong>com</strong>posant. Dansce cas, aucun problème <strong>de</strong> version ou <strong>de</strong> <strong>com</strong>patibiliténe sera rencontré. La re<strong>com</strong>pilation estnécessaire dans les cas suivants :• De nouvelles fonctions ont été ajoutées dans le<strong>com</strong>posant et doivent être prises en <strong>com</strong>pte.• Les paramètres <strong>de</strong> certaines procédures ont étémodifiés.• In<strong>com</strong>patibilité <strong>de</strong> la nouvelle version avec lesanciennes versions du <strong>com</strong>posant.• ...2. Distribution directe du fichier .WDKFournissez directement une mise à jour du <strong>com</strong>posant(fichier .WDK) en clientèle sans re<strong>com</strong>pilationdu projet.Cette possibilité s'applique en général lorsque :• La nouvelle version sert à corriger un ou <strong>de</strong>s dysfonctionnementsd'une version antérieure.• De nouvelles fonctions ont été ajoutées dans le<strong>com</strong>posant mais ne sont pas nécessaires au bonfonctionnement <strong>de</strong> l'application.6 Modifier un <strong>com</strong>posant6.1 PrésentationA tout moment, un <strong>com</strong>posant créé et généré peutêtre modifié. Cette modification peutcorrespondre :• soit à l'ajout d'éléments dans le <strong>com</strong>posant.• soit à la suppression d'élément du <strong>com</strong>posant.• soit à la modification <strong>de</strong>s droits sur les élémentsdu <strong>com</strong>posant.• soit à la modification d'un <strong>de</strong>s éléments du <strong>com</strong>posant.Dans tous les cas, après cette modification, le <strong>com</strong>posantdoit être re-généré pour prendre en <strong>com</strong>pteles modifications effectuées.6.2 Les différents types <strong>de</strong> <strong>com</strong>patibilitéLa gestion <strong>de</strong> la <strong>com</strong>patibilité est liée aux versionsd'un <strong>com</strong>posant. En effet, si <strong>de</strong>s modifications ontété apportées au <strong>com</strong>posant, les applications quiutilisent le <strong>com</strong>posant en déploiement peuvent rencontrer<strong>de</strong>s problèmes d'exécution si elles ne sontpas en phase avec ce <strong>com</strong>posant.La gestion <strong>de</strong> la <strong>com</strong>patibilité est une étape importantedans la modification d'un <strong>com</strong>posant. Il existe2 types <strong>de</strong> <strong>com</strong>patibilité :•la <strong>com</strong>patibilité <strong>de</strong>scendante : la version du <strong>com</strong>posantutilisée (fichier .WDK) pour <strong>com</strong>piler lesapplications utilisant ce <strong>com</strong>posant doit être toujourssupérieure ou égale à la version actuellementutilisée en déploiement.Cette <strong>com</strong>patibilité est automatiquement gérée.Si le <strong>com</strong>posant installé avec l'application estd'une version inférieure à celle utilisée par l'application,l'application refusera <strong>de</strong> fonctionner.• la <strong>com</strong>patibilité ascendante: l'utilisation d'unenouvelle version d'un <strong>com</strong>posant avec les projets<strong>com</strong>pilés avec une ancienne version peut êtreinterdite. Il est donc nécessaire <strong>de</strong> re<strong>com</strong>piler lesprojets pour utiliser correctement la nouvelle versiondu <strong>com</strong>posant.76Partie 2 : Environnement <strong>de</strong> développement


7 Caractéristiques avancées d’un <strong>com</strong>posant7.1 Documentation automatiqueUn <strong>com</strong>posant doit absolument être ac<strong>com</strong>pagnéd'une documentation pour permettre sa ré-utilisation.WinDev simplifie la réalisation <strong>de</strong> cette documentationen proposant :• une présentation générale du <strong>com</strong>posant. Cetteprésentation générale est saisie lors <strong>de</strong> la générationdu <strong>com</strong>posant. Lors <strong>de</strong> l'utilisation du <strong>com</strong>posantdans une application WinDev, cetteprésentation sera visible lors du survol du <strong>com</strong>posantaffiché dans le volet "Assistants, Exempleset Composants". Pour plus <strong>de</strong> détails,consultez l’ai<strong>de</strong> en ligne.• une génération automatique <strong>de</strong> la documentationtechnique à partir <strong>de</strong>s <strong>com</strong>mentaires insérésdans le co<strong>de</strong> <strong>de</strong>s éléments du <strong>com</strong>posant.Quels sont les <strong>com</strong>mentaires <strong>de</strong> co<strong>de</strong>pris en <strong>com</strong>pte ?Les <strong>com</strong>mentaires pris en <strong>com</strong>pte automatiquementpour la documentation du <strong>com</strong>posant sont :• Les <strong>com</strong>mentaires placés en tête <strong>de</strong>s procéduresWLangage• les <strong>com</strong>mentaires placés en tête <strong>de</strong>s traitementssuivants :•Co<strong>de</strong> d'initialisation <strong>de</strong>s fenêtres•Co<strong>de</strong> d'initialisation <strong>de</strong>s états•Co<strong>de</strong> d'initialisation <strong>de</strong>s classes•Co<strong>de</strong> d'initialisation <strong>de</strong>s collections <strong>de</strong> procédures.A quel moment la documentationest-elle générée ?La documentation du <strong>com</strong>posant est générée lors<strong>de</strong> la première génération du <strong>com</strong>posant (option"Atelier .. Composant .. Générer un <strong>com</strong>posant").Lors <strong>de</strong> cette génération <strong>de</strong> la documentation :• les <strong>com</strong>mentaires existants dans le co<strong>de</strong> sont utiliséspour créer la documentation.• si aucun <strong>com</strong>mentaire n'existe, WinDev documenteraautomatiquement les éléments accessiblesdu <strong>com</strong>posant en précisant les paramètresattendus en entrée et en sortie <strong>de</strong> chaque élément.Les <strong>com</strong>mentaires correspondants sontautomatiquement créés dans les différents éléments.Remarque : A chaque re-génération du <strong>com</strong>posant,il est possible <strong>de</strong> re-générer la documentation associéeau <strong>com</strong>posant (bouton "Regénérer" dans lafenêtre "Historique du <strong>com</strong>posant").Attention : Si vous utilisez le bouton "Regénérer",les modifications effectuées sous l'assistant <strong>de</strong>génération seront supprimées.Comment disposer <strong>de</strong> la documentationd’un <strong>com</strong>posant ?La présentation générale du <strong>com</strong>posant est automatiquementaffichée lors du survol du <strong>com</strong>posantprésent dans le volet "Assistants, Exemples et Composants".La documentation technique du <strong>com</strong>posant estdisponible :• lors <strong>de</strong> l'intégration d'un <strong>com</strong>posant dans un projet(option "Atelier .. Composant Externe .. Importerun <strong>com</strong>posant dans le projet").• à tout moment, lors d’un double-clic sur l’icônedu <strong>com</strong>posant présent dans le volet "Assistants,Exemples et Composants" ou par l’option "Description"du menu contextuel du <strong>com</strong>posant.•à tout moment, dans la <strong>de</strong>scription <strong>de</strong>s <strong>com</strong>posantsintégrés dans le projet (option "Atelier ..Composant Externe .. Liste <strong>de</strong>s <strong>com</strong>posants intégrésdans le projet"). Le bouton "Description" permetd'obtenir les informations et ladocumentation du <strong>com</strong>posant.La documentation spécifique à un élément du<strong>com</strong>posant peut être obtenue :•soit en double-cliquant sur cet élément (volet"Explorateur <strong>de</strong> projet" ou graphe du projet) ou enappuyant sur la touche [F2] <strong>de</strong>puis le co<strong>de</strong> <strong>de</strong> cetélément.• soit directement dans la liste <strong>de</strong>s <strong>com</strong>posantsintégrés au projet (option "Atelier .. ComposantExterne .. Liste <strong>de</strong>s <strong>com</strong>posants intégrés dans leprojet").Partie 2 : Environnement <strong>de</strong> développement 77


7.2 Visibilité d’un élément d’un <strong>com</strong>posantLors <strong>de</strong> la création d'un <strong>com</strong>posant, il est possible<strong>de</strong> définir les éléments du <strong>com</strong>posant qui serontaccessibles ou non par l'utilisateur du <strong>com</strong>posant.• Si l'élément est accessible, l'utilisateur du <strong>com</strong>posantverra cet élément dans la liste <strong>de</strong>s élémentsdu projet. Il pourra manipuler ceséléments par programmation (<strong>com</strong>me s'il s'agissaitd'un élément créé dans le projet).Remarque : Le co<strong>de</strong> <strong>de</strong> cet élément n'est cependantpas visible.• Si l'élément n'est pas accessible, l'utilisateur nesaura même pas que cet élément existe.Attention : Selon le mo<strong>de</strong> <strong>de</strong> déclaration <strong>de</strong>s élémentsdu projet (classe, Collection <strong>de</strong> procédures,...), les éléments accessibles ou non peuvent varier.Le tableau présent sur la page suivante récapituleles différentes façons d'accé<strong>de</strong>r à un élément enfonction <strong>de</strong> son mo<strong>de</strong> <strong>de</strong> déclaration.7.3 Le fichier WDOLors <strong>de</strong> la génération du <strong>com</strong>posant, <strong>de</strong>ux fichierssont automatiquement créés dans le répertoireEXE du projet en cours :.WDK.WDIContient tous les éléments à redistribuer(fenêtres, états, ...) avec le<strong>com</strong>posantInterface du <strong>com</strong>posant. Ce fichiercontient :- une ai<strong>de</strong> pour l'utilisation du <strong>com</strong>posantlors <strong>de</strong> sa ré-intégration- les éléments à l'utilisation du<strong>com</strong>posant dans le projet (information<strong>de</strong> <strong>com</strong>pilation, ...)Lors <strong>de</strong> la diffusion du <strong>com</strong>posant, ces <strong>de</strong>uxfichiers doivent être redistribués.Si le <strong>com</strong>posant utilise <strong>de</strong>s éléments supplémentaires(fichiers <strong>de</strong> données,...), il est nécessaired'ajouter dans le répertoire EXE du projet :• un fichier .WDO : ce fichiercontient la liste <strong>de</strong>s fichiers externes (fichiers <strong>de</strong>données, fichiers texte, ...) utilisés par le <strong>com</strong>posant.Ces fichiers doivent être livrés et installésavec le <strong>com</strong>posant.• les fichiers <strong>de</strong>vant être redistribués avec le <strong>com</strong>posant.Ces fichiers peuvent être placés selonune sous-arborescence spécifique. Dans ce cas,le co<strong>de</strong> du <strong>com</strong>posant doit gérer l'accès à cesfichiers selon cette même arborescence.Qu’est-ce que le fichier WDO ?Le fichier .WDO est un fichier auformat TXT, pouvant être créé et modifié à toutmoment. Ce fichier peut par exemple être créé etmodifié avec l'éditeur <strong>de</strong> texte standard <strong>de</strong> Windows,NotePad.Ce fichier contient la liste <strong>de</strong>s fichiers externes(fichiers <strong>de</strong> données, fichiers texte, ...) utilisés parle <strong>com</strong>posant et <strong>de</strong>vant être livrés et installés avecle <strong>com</strong>posant. Ces fichiers doivent être recopiésdans le répertoire EXE <strong>de</strong>s projets utilisant le <strong>com</strong>posant.Ce fichier ".WDO" peut contenir :•soit le nom <strong>com</strong>plet du fichier.Par exemple : C:\Composants\ComposantSélecteur\EtatInitial.INI•soit le nom du fichier. Ce fichier sera recherchédans le répertoire en cours du <strong>com</strong>posant.Par exemple : EtatInitial.INI•soit un nom <strong>de</strong> fichier utilisant un chemin relatif.Les syntaxes possibles sont :•Répertoire\NomFichier.xxx pour indiquer unsous répertoire du répertoire en cours•.\NomFichier.xx pour indiquer le répertoire encours•..\NomFichier.xx pour indiquer le répertoireparent Par exemple: \ComposantSélecteur\EtatInitial.INICe fichier sera utilisé lors <strong>de</strong> l'intégration du <strong>com</strong>posantdans le projet. Les chemins précisés dansle WDO doivent correspondre aux chemins où lesfichiers sont installés sur le poste <strong>de</strong> développementdu <strong>com</strong>posant.Lors <strong>de</strong> l'intégration du <strong>com</strong>posant, l'arborescencespécifiée dans le WDO sera conservée et reproduitedans le répertoire EXE du projet. Pour plus <strong>de</strong>détails, consultez le paragraphe “Utiliser un <strong>com</strong>posantdans une application”, page 75.Exemple : Le <strong>com</strong>posant "Co<strong>de</strong> Postal" utilise unfichier <strong>de</strong> données "Ce<strong>de</strong>x" (fichiers Ce<strong>de</strong>x.fic etCe<strong>de</strong>x.ndx). Dans le projet <strong>de</strong> création du <strong>com</strong>posant,ce fichier <strong>de</strong> données est présent dans lerépertoire EXE du projet.Pour que le <strong>com</strong>posant soit livré et installé avec lefichier <strong>de</strong> données, il faut créer le fichier WDO dansle répertoire EXE du projet <strong>de</strong> création du <strong>com</strong>posant.Ce fichier doit contenir les lignes suivantes :.\CEDEX.Fic.\CEDEX.NDX78Partie 2 : Environnement <strong>de</strong> développement


Diffusion d’un <strong>com</strong>posant avec WDOPour diffuser un <strong>com</strong>posant utilisant un fichierWDO :• Si vous n’utilisez pas <strong>de</strong> procédures d’installationpour le <strong>com</strong>posant, il est nécessaire <strong>de</strong> fournir :•le fichier WDK•le fichier WDI•le fichier WDO•tous les fichiers nécessaires référencés dans lefichier WDO.• Si vous utilisez une procédure d'installation pourle <strong>com</strong>posant, le fichier WDO sera automatiquementcréé lors <strong>de</strong> la création <strong>de</strong> la procédured’installation du <strong>com</strong>posant.Il suffit pour cela dans l'assistant <strong>de</strong> :1. Deman<strong>de</strong>r la modification <strong>de</strong>s fichiers à installer(option "Modifier la liste <strong>de</strong>s fichiers à installer"dans les "modules additionnels").2. Sélectionner les fichiers supplémentaires àinstaller.Le fichier WDO sera automatiquement créé etinstallé avec le <strong>com</strong>posant.Partie 2 : Environnement <strong>de</strong> développement 79


Mo<strong>de</strong>s <strong>de</strong>générationAu-<strong>de</strong>là <strong>de</strong>s applications Windows, WinDev vous permet <strong>de</strong> générer <strong>de</strong> nombreux autrestypes <strong>de</strong> projets.ApplicationsLes applications sont le mo<strong>de</strong> <strong>de</strong> génération le plus fréquemmentutilisé. Les applications construites avec WinDev peuvent cibler lesplate-formes d’exécution suivantes : Windows (en 32 ou 64 bits) etLinux.ServicesWinDev permet <strong>de</strong> générer <strong>de</strong>s services pour Windows (en 32 ou 64bits) et pour Linux (sous Linux, les services sont habituellement appelés<strong>de</strong>s daemons). Un service est une forme particulière d’application,lancée en même temps que le système d’exploitation et ne<strong>com</strong>portant pas d’IHM.Bibliothèques et patchsUne bibliothèque est un fichier unique rassemblant plusieurs élémentsd’un projet WinDev : <strong>de</strong>s fenêtres, <strong>de</strong>s états, etc. Il est possible<strong>de</strong> générer <strong>de</strong>s bibliothèques autonomes pouvant être utiliséespar d’autres applications ainsi que <strong>de</strong>s patchs correctifs pour uneapplication en clientèle évitant d’avoir à réinstaller l’application<strong>com</strong>plète pour une correction mineure.Composants externesLes <strong>com</strong>posants externes sont <strong>de</strong>s briques applicatives permettant<strong>de</strong> partager une ou plusieurs fonctionnalités spécifiques entre différentesapplications. Un <strong>com</strong>posant externe généré avec WinDevpeut également être utilisé dans un projet WebDev ou WinDev Mobile.WebservicesA partir d’un projet WinDev, il est possible <strong>de</strong> générer un Webservice(également appelé service Web XML). Un Webservice expose unensemble <strong>de</strong> fonctions (généralement une ou plusieurs collections<strong>de</strong> procédures) et les rend accessibles à travers le Web (ou un réseauprivé) en utilisant les protocoles standard <strong>de</strong> <strong>com</strong>municationHTTP et SOAP.Remarque : Un Webservice doit être déployé sur un Serveur d’ApplicationWebDev pour être utilisable.80Partie 2 : Environnement <strong>de</strong> développement


Applications et DLL d’assemblage DotNetWinDev permet la génération d’applications et d’assemblages pourla plate-forme DotNet <strong>de</strong> Microsoft. Un assemblage DotNet généréavec WinDev pourra être importé dans une application DotNet développéedans un autre langage d’une façon similaire à un <strong>com</strong>posantexterne entre <strong>de</strong>ux applications WinDev.Applications et Applets JavaWinDev permet <strong>de</strong> générer <strong>de</strong>s applications Java ainsi que <strong>de</strong>s Applets.Les applications Java peuvent ensuite être exécutées surn’importe quelle machine possédant une machine virtuelle Java,quel que soit son système d’exploitation. Il est possible <strong>de</strong> cette façon<strong>de</strong> construire <strong>de</strong>s applications fonctionnant indifféremmentsous Windows, Mac OS ou même Solaris par exemple.Une Applet Java est une application <strong>de</strong>stinée à fonctionner à l’intérieurd’un navigateur Web.Partie 2 : Environnement <strong>de</strong> développement 81


Création <strong>de</strong> l’exécutable en pratiqueLorsque votre application est totalement décrite(fenêtre, états, ...), il est nécessaire <strong>de</strong> créer le programmeexécutable correspondant.Le programme exécutable (fichier ".EXE") pourraêtre directement exécuté : il ne sera pas nécessaire<strong>de</strong> lancer l'application <strong>de</strong>puis WinDev.Lorsque le programme exécutable est créé, il estpossible <strong>de</strong> déployer l'application chez vos utilisateursfinals en créant le programme d'installation.1 Créer le programme exécutable d’une application WinDevPour créer un programme exécutable :1. Sélectionnez l’option "Atelier .. Exécutable ..Générer l’exécutable Windows" ou cliquez surl’icône . L’assistant <strong>de</strong> création <strong>de</strong> l’exécutables’ouvre.2. Spécifiez :•les options générales <strong>de</strong> l’exécutable (nom <strong>de</strong>l’exécutable, icône du programme exécutable,Splash screen ...).•le mo<strong>de</strong> <strong>de</strong> fonctionnement <strong>de</strong> l’exécutable :- Multi-instance : Ce programme pourra êtrelancé plusieurs fois <strong>de</strong>puis un même poste : plusieursinstances seront ouvertes en mêmetemps.- Mono-instance : Ce programme pourra êtrelancé une seule fois <strong>de</strong>puis un même poste : uneseule instance sera ouverte en même temps. Sile développeur tente <strong>de</strong> lancer une autre instancedu programme, l'instance déjà en courssera activée.•le mo<strong>de</strong> d’utilisation <strong>de</strong> la bibliothèque. La bibliothèqueest optionnelle. Elle peut être créée dansun fichier séparé (extension ".WDL") ou intégréedans l'exécutable.L'intégration <strong>de</strong> la bibliothèque dans le programmeexécutable a l'avantage <strong>de</strong> n'avoir qu'unseul fichier à installer ou à mettre à jour, maiscela augmente la taille du fichier ".EXE" créé.•le message d’erreur qui sera affiché si une erreur<strong>de</strong> programmation survient.• la prise en <strong>com</strong>pte ou non <strong>de</strong> la saisie <strong>de</strong> MacroCo<strong>de</strong> Utilisateur (MCU). Si le MCU est actif, l’utilisateurfinal pourra créer ses propres macro pourmodifier l’application.• l’utilisation <strong>de</strong>s mises à jour par Patch. Il suffiraalors <strong>de</strong> copier le fichier correspondant au Patchdans le répertoire <strong>de</strong> l'exécutable.• les langues gérées par l’exécutable.•les fichiers contenus dans la bibliothèque (si elleest utilisée).• l’intégration <strong>de</strong>s <strong>com</strong>posants utilisés dans le projetà l’exécutable.• l’emplacement <strong>de</strong>s fichiers du groupware utilisateur(uniquement si votre application gère legroupware utilisateur).•l’emplacement <strong>de</strong>s fichiers <strong>de</strong> données à utiliserpar l’exécutable.•les informations <strong>de</strong> version. Ces informationsseront affichées dans l’onglet "Version" <strong>de</strong> lafenêtre <strong>de</strong>s propriétés <strong>de</strong> l’exécutable (accessibles<strong>de</strong>puis l’explorateur Windows). Le numéro<strong>de</strong> version peut être automatiquement incrémentéà chaque création d’exécutable.• le mo<strong>de</strong> d’utilisation du framework WinDev (utilisationdu framework propre à l’application ou duframework <strong>com</strong>mun à toutes les applicationsWinDev installées sur le poste).• le manifeste à utiliser (pour une exécution sousWindows Vista uniquement).• si l’exécutable doit être enregistré dans le centre<strong>de</strong> ré-utilisabilité.• s’il est nécessaire <strong>de</strong> réaliser une sauvegar<strong>de</strong> duprojet.3. Vali<strong>de</strong>z la <strong>de</strong>scription <strong>de</strong> l’exécutable. L’exécutableest automatiquement généré selon les informationsfournies. Il est possible <strong>de</strong> lancer directementl’exécutable après sa création.82Partie 2 : Environnement <strong>de</strong> développement


Application Java en pratique1 PrésentationWinDev permet <strong>de</strong> générer <strong>de</strong>s applications Javasans pour autant connaître le langage Java. Tout ledéveloppement <strong>de</strong> l’application se fait en WLangage,<strong>com</strong>me pour toute application créée avecWinDev.1.1 Qu’est-ce qu’une application Java ?Une application JAVA est entièrement <strong>com</strong>pilée enJAVA. Si cette application manipule une base <strong>de</strong>données, cette base doit disposer d’un driver JDBC(MySQL, Oracle,...). Ce driver est spécifique à chaquebase <strong>de</strong> données (et peut être trouvé sur le site<strong>de</strong> l’éditeur <strong>de</strong> la base <strong>de</strong> données).L’accès à une base <strong>de</strong> données HyperFileSQL sefait nativement (uniquement sous Windows etLinux) via les fonctions SQL du WLangage. Aucunpilote supplémentaire n’est requis.Une application Java correspond à un fichier ".jar"et nécessite le runtime Java pour pouvoir être exécutée.Pour <strong>com</strong>piler (en Java) un projet Java réalisé avecWinDev, il est nécessaire d’installer sur le poste <strong>de</strong>développement le J2SDK <strong>de</strong> Oracle (version 1.4.2ou supérieure nécessaire). Une version est disponiblesur le CD d’installation <strong>de</strong> WinDev. Il est égalementpossible <strong>de</strong> télécharger ce programme sur lesite <strong>de</strong> Oracle.1.2 Pourquoi développer une applicationJava avec WinDev ?Vous possé<strong>de</strong>z une application WinDev qui fonctionnesous Windows et vous voulez la rendreaccessible quel que soit le système d’exploitation ?Générez une application Java et ainsi les utilisateurstravaillant sous un système MAC OS X parexemple pourront également utiliser votre application.Vous pourrez ainsi partager vos applicationsréseau.1.3 Principe <strong>de</strong> génération d’une applicationJava avec WinDevComme indiqué ci-<strong>de</strong>ssus, il n’est pas nécessaire<strong>de</strong> connaître le langage Java pour développer uneapplication Java avec WinDev. Vous développezvotre application en WLangage <strong>com</strong>me toute autreapplication WinDev et lors <strong>de</strong> la <strong>com</strong>pilation du projet,les fenêtres et les fonctions du WLangage sontautomatiquement converties en Java.Remarque : le nombre <strong>de</strong> fonctions WLangage utilisablesdans un projet Java est limité dans cette version.Ce nombre <strong>de</strong> fonctions est amené à croîtrerégulièrement.2 Fonctionnalités pour un projet Java2.1 Création d’un projet JavaLa création d’un projet Java est effectuée <strong>de</strong> lamême façon que tout autre projet WinDev. Il suffitd’utiliser l’option "Fichier .. Nouveau .. Projet".L’assistant <strong>de</strong> création <strong>de</strong> projet se lance. Dans un<strong>de</strong>s premiers écrans <strong>de</strong> l’assistant, vous pouvezchoisir le type <strong>de</strong> génération <strong>de</strong> votre projet. Il suffit<strong>de</strong> sélectionner "Java" et <strong>de</strong> suivre l’assistant.Par défaut, un projet WinDev pour Java correspondà une configuration spécifique du projet. Il est possible<strong>de</strong> modifier à tout moment le type <strong>de</strong> générationdu projet. Il suffit <strong>de</strong> créer une nouvelleconfiguration <strong>de</strong> projet.Dès que le projet est configuré <strong>com</strong>me un projetJava, tous les outils disponibles avec WinDev sontautomatiquement paramétrés pour le projet Java :• Le RAD fenêtre ou le RAD application <strong>com</strong>plèteest spécifique à une base <strong>de</strong> données manipuléepar une application Java• Le <strong>com</strong>pilateur indique si votre projet contient<strong>de</strong>s fonctions ou champs non utilisables en Java.Un message apparaît en violet dans le volet"Erreurs <strong>de</strong> <strong>com</strong>pilation".• La création <strong>de</strong> l’archive permet <strong>de</strong> générer unfichier ".jar" dans le répertoire EXE du projet.Partie 2 : Environnement <strong>de</strong> développement 83


• Le module d’installation manipule uniquementles fichiers nécessaires au déploiement <strong>de</strong>l’application Java.Remarque : il est conseillé <strong>de</strong> créer un nouveauprojet WinDev pour développer une applicationJava plutôt que <strong>de</strong> transformer une application Win-Dev en Java.2.2 RAD JAVAComme sur tout projet associé à une analyse, vouspouvez utiliser le RAD pour générer les fenêtres <strong>de</strong>votre application.Le RAD prend en <strong>com</strong>pte toutes les spécificités <strong>de</strong>la génération Java (champs, traitements, fonctionsutilisables dans une application WinDev généréeen Java).Quel que soit le type <strong>de</strong> fenêtre à générer, le premierécran <strong>de</strong> l’assistant permet <strong>de</strong> spécifier letype <strong>de</strong> connexion à la base <strong>de</strong> données :• HyperFileSQL (sous Windows et Linux) : l’assistantclassique <strong>de</strong> création <strong>de</strong> fenêtres est proposé.•JDBC: vous pouvez alors spécifier les paramètres<strong>de</strong> connexion à la base <strong>de</strong> données utilisantle driver JDBC.2.3 Test d’un projet Java sous l’éditeurLors du test d’un projet Java (icône ), le projetest <strong>com</strong>pilé et lancé sous Windows. Le projet n’estpas <strong>com</strong>pilé en Java.Pour exécuter l’application Java, il est nécessaire<strong>de</strong> lancer le fichier ".Jar" présent dans le répertoireEXE <strong>de</strong> votre projet.2.4 Compiler un projet Java sous WinDevLa <strong>com</strong>pilation d’un projet Java permet <strong>de</strong> :• connaître les erreurs <strong>de</strong> programmation présentesdans le co<strong>de</strong> WLangage• visualiser les champs, traitements, fonctionsWLangage non disponibles en Java. Ces erreursapparaissent en violet dans le volet "Erreurs <strong>de</strong><strong>com</strong>pilation".Pour plus <strong>de</strong> détails sur les éléments WinDev nondisponibles dans une application Java, consultezl’ai<strong>de</strong> en ligne.Remarque : <strong>com</strong>me indiqué dans la partie “Qu’estcequ’une application Java ?”, page83, il estnécessaire d’installer le J2SDK <strong>de</strong> Sun sur le poste<strong>de</strong> développement pour <strong>com</strong>piler votre projet enJava.2.5 Créer une archive JavaWinDev permet <strong>de</strong> :•créer et <strong>com</strong>piler sous un <strong>com</strong>pilateur Java lesdifférents fichiers Java nécessaires à l’application• créer une archive Java directement exécutable :•une application Java classique•une applet Java•une application Java Web Start• utiliser les fenêtres du projet <strong>de</strong>puis vos propresfichiers sources Java. Dans ce cas, il est possible<strong>de</strong> générer le projet Eclipse correspondant.Pour créer l’archive Java il suffit <strong>de</strong> lancer la création<strong>de</strong> l’exécutable (option "Atelier... Java .. Générerl’archive Java"). Un assistant vous gui<strong>de</strong> alorsdans la création <strong>de</strong> l’archive Java.2.6 Déployer une application JavaComme pour toute application, WinDev permet <strong>de</strong>créer un programme d'installation pour une applicationJava. Cette procédure d'installation n'estactuellement disponible que pour Windows. Le programmed'installation sera un exécutable et permettrad'installer les fichiers nécessaires ainsi quele runtime Java (JRE). Pour les autres plateformes,il est actuellement nécessaire <strong>de</strong> déployer vosfichiers manuellement.Pour lancer l'assistant <strong>de</strong> création d'installation,sélectionnez l'option "Atelier .. Créer la procédured'installation".Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne (motclé: "Java").84Partie 2 : Environnement <strong>de</strong> développement


Les Centres<strong>de</strong> ContrôlePour gérer le cycle <strong>de</strong> vie <strong>de</strong> vos projets <strong>de</strong> développement, WinDev vous propose d’utiliserles Centres <strong>de</strong> Contrôle. Les Centres <strong>de</strong> Contrôle forment un ensemble d’outils <strong>de</strong>stinésà prendre en charge :• les exigences d’un projet (formalisation <strong>de</strong>s besoins)• les tâches <strong>de</strong> développement, <strong>de</strong> test et <strong>de</strong> documentation• le suivi <strong>de</strong>s inci<strong>de</strong>nts et <strong>de</strong>s <strong>de</strong>man<strong>de</strong>s d’évolutions signalés par les utilisateurs• les règles métier utilisées par l’entreprise dans ses développementsLes Centres <strong>de</strong> Contrôle fonctionnent autour d’une base <strong>de</strong> données (HyperFileSQLClassic ou Client/Serveur) partagée par <strong>de</strong> nombreux outils disponibles dansWinDev mais aussi avec WebDev et WinDev Mobile si vous les utilisez :Dès l’installation <strong>de</strong> WinDev, il vous sera proposé :• soit <strong>de</strong> créer la base <strong>de</strong>s Centres <strong>de</strong> Contrôle. Cette base sera automatiquementcréée au format HyperFileSQL Classic dans le répertoire spécifié.• soit <strong>de</strong> partager une base <strong>de</strong> données <strong>de</strong>s Centres <strong>de</strong> Contrôle existante.Partie 2 : Environnement <strong>de</strong> développement 85


Gestion <strong>de</strong>sexigencesUne exigence est un besoin sur ce qu'un produit (ou un service) <strong>de</strong>vrait faire.Les Centres <strong>de</strong> Contrôle permettent à un chef <strong>de</strong> projet <strong>de</strong> gérer les exigences d’un projet<strong>de</strong> développement.Il suffit pour cela <strong>de</strong> :• définir les différents intervenants du projet.• définir les exigences (avec les différents éléments qui leur sont associés).Chaque développeur effectue les différentes tâches qui lui sont affectées.Le chef <strong>de</strong> projet peut à tout moment suivre l’état d’avancement du projet.86Partie 2 : Environnement <strong>de</strong> développement


Centre <strong>de</strong>Suivi <strong>de</strong> ProjetsLe Centre <strong>de</strong> Suivi <strong>de</strong> Projets permet aux différents intervenants d’un projet <strong>de</strong> gérer leurplanning <strong>de</strong>s tâches. Ces tâches peuvent être liées à <strong>de</strong>s exigences, et correspondre àplusieurs projets.Fonctionnement du Centre <strong>de</strong> Suivi <strong>de</strong> ProjetsAprès avoir listé l’ensemble <strong>de</strong>s tâches d’un projet, le Centre <strong>de</strong> Suivi <strong>de</strong> Projets s’occupe<strong>de</strong> tout. La saisie du temps passé est quasi automatique, et ne <strong>de</strong>man<strong>de</strong> aucune actionspécifique et ne génère aucune contrainte particulière.Lors <strong>de</strong> l’ouverture du projet concerné, le Centre <strong>de</strong> Suivi <strong>de</strong> Projets <strong>de</strong>man<strong>de</strong> ou indiquela tâche en cours. Dès qu’une tâche est réalisée, il suffit d’indiquer que cette tâche estterminée et <strong>de</strong> spécifier la nouvelle tâche.Une tâche peut être reliée à un élément du projet (fenêtre, état, ...). Chaque fois que l’élémentconcerné est ouvert, le temps passé sur cet élément est dé<strong>com</strong>pté et mémorisédans le Centre <strong>de</strong> Suivi. Inversement, <strong>de</strong>puis la liste <strong>de</strong>s tâches, il est possible d’ouvrirautomatiquement l’élément correspondant à la tâche que vous voulez réaliser.Chaque développeur peut également visualiser directement sa liste <strong>de</strong> tâches dans le volet"Centre <strong>de</strong> Suivi <strong>de</strong> Projets".Partie 2 : Environnement <strong>de</strong> développement 87


Gestion <strong>de</strong>s suggestions et<strong>de</strong>s inci<strong>de</strong>ntsLes Centres <strong>de</strong> Contrôle permettent également <strong>de</strong> gérer les retours client sur vos applications.Si votre application contient un menu d’ai<strong>de</strong> automatique (menu ’?’ avec l’option "Envoyer<strong>de</strong>s suggestions ..."), les utilisateurs <strong>de</strong> votre application peuvent simplement vousenvoyer <strong>de</strong>s suggestions, <strong>de</strong>s inci<strong>de</strong>nts, ou <strong>de</strong>s règles métier.Remarque : en cas d’erreur fatale pendant l’exécution <strong>de</strong> l’application, un rapport d’erreurpeut être automatiquement généré et envoyé au développeur en utilisant le <strong>com</strong>posant"Feedback" livré en standard avec WinDev.88Partie 2 : Environnement <strong>de</strong> développement


Gestion <strong>de</strong>srègles métierWinDev permet <strong>de</strong> gérer <strong>de</strong>s règles métier. Une règle métier permet <strong>de</strong> définir un mo<strong>de</strong>opératoire précis ou <strong>de</strong> préciser un traitement particulier. Par exemple : le calcul d’untaux <strong>de</strong> TVA avec ses particularités, les règles <strong>de</strong> changement <strong>de</strong> statut d’un client, la formule<strong>de</strong> calcul d’un montant <strong>de</strong> frais <strong>de</strong> port, une <strong>com</strong>mission <strong>com</strong>merciale, un taux <strong>de</strong>remise, un coefficient <strong>de</strong> vétusté, ...Une règle métier peut être simpleou élaborée.Les règles métier peuventprovenir :•du cahier <strong>de</strong>s charges (correspondantaux exigences).•<strong>de</strong> suggestions faites par les utilisateurs<strong>de</strong> l’application.Pendant le développement, les règles métier associées au projet sont affichées directementdans le volet "Règles métier" <strong>de</strong> l’environnement <strong>de</strong> développement. Ce volet affichele nombre d’éléments du projet auxquels les règles s’appliquent et le pourcentage<strong>de</strong> règles actuellement réalisé.Partie 2 : Environnement <strong>de</strong> développement 89


90Partie 2 : Environnement <strong>de</strong> développement


PARTIE 3Bases <strong>de</strong> données


Analyse : Structure <strong>de</strong> labase <strong>de</strong> donnéesLorsqu'un projet WinDev, WebDev ou WinDev Mobile utilise <strong>de</strong>s fichiers <strong>de</strong> données, ceprojet doit être associé à une analyse. Une analyse permet <strong>de</strong> décrire les structures <strong>de</strong>données (fichiers, rubriques, ...) utilisées dans votre projet.L'éditeur d'analyses permet <strong>de</strong> créer très simplement une analyse.L’analyse d’un projet WinDev correspond au MLD (Modèle Logique <strong>de</strong>s Données). Toutela structure et l’organisation <strong>de</strong>s données sont décrites : les données sont regroupéespar fichier. Chaque fichier contient plusieurs données appelées rubrique.Dans l’analyse, il est possible <strong>de</strong> lier la <strong>de</strong>scription d’un fichier à un type <strong>de</strong> fichier (HyperFileSQL,Oracle, ...).Partie 3 : Bases <strong>de</strong> données 93


L’analyse en pratique1 PrésentationLorsqu’un projet utilise <strong>de</strong>s fichiers <strong>de</strong> données, ceprojet doit être associé à une analyse. Une analysepermet <strong>de</strong> décrire les structures <strong>de</strong> données(fichiers, rubriques, ...) utilisées dans votre projet.Pour décrire une analyse, <strong>de</strong>ux métho<strong>de</strong>s sontpossibles :• 1ère métho<strong>de</strong> : Création directe <strong>de</strong> l’analyse(c’est-à-dire un Modèle Logique <strong>de</strong>s Données(MLD)).Cette opération est détaillée dans le paragraphe"Création d’un MLD" page 94.• 2ème métho<strong>de</strong> : Création du Modèle Conceptuel<strong>de</strong>s Données (MCD), puis création automatique<strong>de</strong> l’analyse à partir du MCD.Ces opérations sont détaillées dans les paragraphes"Création d’un MCD", page 100 et “Générationdu MCD en MLD”, page 101.Ce chapitre présente chacune <strong>de</strong> ces métho<strong>de</strong>s.2 Création d’un MLD (Modèle Logique <strong>de</strong>s Données)Dans une application WinDev, les termes "MLD" et"Analyse" sont utilisés indifféremment pour définirla structure <strong>de</strong> la base <strong>de</strong> données associée à unprojet.2.1 Créer une analyse (ou MLD)Pour créer un MLD :1. Sélectionnez l’option "Fichier .. Nouveau .. Analyse".L’assistant <strong>de</strong> création <strong>de</strong> l’analyse est lancé.2. Spécifiez :• le nom et le répertoire <strong>de</strong> l’analyse. L’analysecorrespond à un fichier ".WDA". Par défaut, cefichier sera créé dans le répertoire <strong>de</strong> l’analysedu projet (répertoire .ANA). Cerépertoire doit être accessible en lecture et enécriture.• le libellé <strong>de</strong> l’analyse décrivant succinctement lesujet <strong>de</strong> l’analyse.• si l’analyse doit être associée au projet en cours.• si l’analyse doit être protégée par un mot <strong>de</strong>passe. Ce mot <strong>de</strong> passe sera <strong>de</strong>mandé lors <strong>de</strong>l’ouverture <strong>de</strong> l’analyse (avec les outils <strong>de</strong> Win-Dev ou en programmation).•le ou les type(s) <strong>de</strong> bases <strong>de</strong> données manipuléespar le projet.3. La création du premier fichier est automatiquementproposée.4. Créez l’ensemble <strong>de</strong>s éléments (fichiers, rubriqueset liaisons) <strong>de</strong> votre analyse.2.2 Ajouter un fichier dans une analyseLes fichiers <strong>de</strong> l’analyse permettent <strong>de</strong> décrire lastructure <strong>de</strong>s fichiers <strong>de</strong> données utilisés par leprojet. Un fichier présent dans l’analyse peut être :•Un nouveau fichier.• Un fichier pré-défini, livré avec WinDev.• Un fichier importé <strong>de</strong>puis une base existante (utilisantpar exemple un format <strong>de</strong> fichiers spécifique).Les paragraphes suivants détaillent <strong>com</strong>ment créerun fichier.Pour créer un nouveau fichier :1. Sélectionnez l’option "Insertion .. Fichier".L’assistant <strong>de</strong> création <strong>de</strong> fichier se lance.2. Cochez l’option "Créer une nouvelle <strong>de</strong>scription<strong>de</strong> fichier".3. Spécifiez :• le nom logique du fichier. Ce nom sera utilisépour manipuler le fichier.• le libellé du fichier résumant succinctement lesujet du fichier.• la représentation d’un enregistrement dans lefichier. Cette représentation permet d’améliorerla lisibilité <strong>de</strong>s questions posées lors <strong>de</strong> la <strong>de</strong>scription<strong>de</strong>s liaisons. Cette option doit être précédéed’un article indéfini (UN ou UNE).• si le fichier possè<strong>de</strong> une rubrique <strong>de</strong> type "I<strong>de</strong>ntifiantautomatique". La valeur <strong>de</strong> cette rubriqueest unique pour chaque enregistrement et estautomatiquement calculée par WinDev.94Partie 3 : Bases <strong>de</strong> données


• le type <strong>de</strong> la base <strong>de</strong> données pour laquelle lefichier va être créé. Selon le type choisi, cefichier <strong>de</strong> données sera manipulé par le moteurHyperFileSQL, par un pilote OLE DB ou par un <strong>de</strong>saccès natifs <strong>de</strong> WinDev (SQL Server, Oracle, ...).•si la taille du fichier peut dépasser 2 Go. Cetteoption est utilisable uniquement si le système<strong>de</strong>s fichiers du poste en cours et <strong>de</strong>s postes surlesquels l’application va être déployée est au formatNTFS (Windows 2000, NT ou XP).Attention : Si cette option est cochée, il ne serapas possible d’ouvrir ce fichier sous Windows 95,98 ou Me.•si le fichier doit gérer la réplication. Cette optionpermet <strong>de</strong> gérer les mises à jour automatiques<strong>de</strong> bases <strong>de</strong> données i<strong>de</strong>ntiques et distantes.Pour plus <strong>de</strong> détails sur la réplication, consultezl’ai<strong>de</strong> en ligne.4. Le fichier créé <strong>de</strong>vient le fichier en cours. Lafenêtre <strong>de</strong> <strong>de</strong>scription <strong>de</strong>s rubriques du fichiers’ouvre automatiquement. Vous pouvez décrire lesrubriques du fichier.Pour importer une <strong>de</strong>scription <strong>de</strong> fichier prédéfini:1. Sélectionnez l’option "Insertion .. Fichier".2. Cochez l’option "Sélectionner une <strong>de</strong>scriptionparmi <strong>de</strong>s fichiers pré-définis".3. Choisissez le fichier pré-défini. Ce fichier seraimporté dans l’analyse en cours. Ce fichier pourraêtre modifié par la suite.4. Sélectionnez les rubriques du fichier à conserver.Ces rubriques pourront être modifiées par lasuite.5. Spécifiez si les liaisons doivent être automatiquementrecherchées. Si cette option est cochée,les rubriques <strong>de</strong> même nom seront reliées.6. Le fichier importé est automatiquement insérédans l’analyse en cours.Remarque : Pour modifier un fichier ou les rubriquesd’un fichier, sélectionnez le fichier et activezl’option "Structure <strong>de</strong> fichiers .. Description" ou"Structure <strong>de</strong> fichiers .. Rubriques".Pour importer une <strong>de</strong>scription <strong>de</strong> fichier existante,<strong>de</strong>ux solutions sont possibles :Solution 1 : <strong>de</strong>puis l’éditeur d’analyses1. Sélectionnez l’option "Insertion .. Fichier".2. Cochez l’option "Utiliser <strong>de</strong>s fichiers d’une baseexistante", puis sélectionnez le type <strong>de</strong> la base <strong>de</strong>données.3. Précisez le format <strong>de</strong>s données utilisé par votreprojet. Il est possible <strong>de</strong> conserver le format actuelou <strong>de</strong> migrer les fichiers au format HyperFileSQL.4. Si nécessaire, sélectionnez l’analyse WinDevdans laquelle la <strong>de</strong>scription doit être importée (analyseexistante ou nouvelle analyse).5. Spécifiez la base <strong>de</strong> données source contenantles <strong>de</strong>scriptions à importer et le type <strong>de</strong> cette base<strong>de</strong> données source. Selon le type choisi, renseignezles informations <strong>de</strong>mandées.6. Sélectionnez les tables ou fichiers dont la <strong>de</strong>scriptiondoit être importée et vali<strong>de</strong>z.7. Le fichier importé est automatiquement insérédans l’analyse en cours.Solution 2 : Depuis l’explorateur <strong>de</strong> Windows"Droppez" directement la <strong>de</strong>scription du fichier <strong>de</strong>l’explorateur Windows vers l’éditeur d’analyses.Par exemple :Ici : une base <strong>de</strong> données Oracle, sur le serveur. Ilsuffit <strong>de</strong> faire glisser le nom <strong>de</strong> la base ...... pour en transférer la <strong>de</strong>scription sous l’éditeurd’analyses.2.3 Créer une rubriquePour créer une rubrique :1. Double-cliquez sur le fichier dans lequel la rubriquedoit être créée. La fenêtre <strong>de</strong> <strong>de</strong>scription <strong>de</strong>srubriques du fichier s’ouvre.2. Cliquez sur la première ligne vi<strong>de</strong> du tableau <strong>de</strong>srubriques.Partie 3 : Bases <strong>de</strong> données 95


3. Spécifiez le nom, le libellé et le type <strong>de</strong> la rubriquedirectement dans le tableau.4. Indiquez dans la partie droite <strong>de</strong> l’écran lesdétails concernant la nouvelle rubrique (type, taille,valeur par défaut, sens <strong>de</strong> parcours, ...).5. Indiquez dans la partie basse <strong>de</strong> l’écran lesdétails concernant les informations partagées.6. Vali<strong>de</strong>z la <strong>de</strong>scription <strong>de</strong> la rubrique.Remarque : il est également possible <strong>de</strong> créer unerubrique à partir <strong>de</strong>s méta-types proposés par Win-Dev. Pour cela, il suffit <strong>de</strong> cliquer sur le bouton"+M" à droite du tableau. La liste <strong>de</strong>s méta-typesdisponibles apparaît.2.4 Créer une liaisonIl est possible <strong>de</strong> créer différents types <strong>de</strong> liaisonentre les fichiers. Pour plus <strong>de</strong> détails sur lesliaisons, consultez le paragraphe “Caractéristiques<strong>de</strong>s liaisons définies dans une analyse”, page 96.Pour créer une liaison :1. Sélectionnez l’option "Insertion .. Liaison". Lecurseur <strong>de</strong> la souris se transforme en crayon.2. Sélectionnez les <strong>de</strong>ux fichiers à relier. La fenêtre<strong>de</strong> <strong>de</strong>scription <strong>de</strong> liaison s’ouvre automatiquement.3. Pour définir les cardinalités entre les <strong>de</strong>uxliaisons :•soit sélectionnez directement les cardinalitésparmi celles proposées (0,1 ; 1,1 ; 0,N ; 1,N).• soit répon<strong>de</strong>z aux questions posées. Les cardinalitésseront mises à jour automatiquement.4. Pour décrire <strong>de</strong>s cardinalités avancées, cochezl’option "Afficher les cardinalités avancées" etrépon<strong>de</strong>z aux questions posées.5. Saisissez le libellé <strong>de</strong> la liaison en décrivant succinctementle sujet <strong>de</strong> la liaison.6. Spécifiez les clés à relier.7. Précisez les règles d’intégrité. Ces règles permettentd’assurer la cohérence <strong>de</strong>s données lors <strong>de</strong> lamodification ou lors <strong>de</strong> la suppression d’une <strong>de</strong>sclés <strong>de</strong> la relation.8. Vali<strong>de</strong>z. La liaison est automatiquement créée.3 Caractéristiques <strong>de</strong>s liaisons définies dans une analyse3.1 Fichier propriétaire et fichier membreDans le cas <strong>de</strong> liaison entre <strong>de</strong>ux fichiers, il existeun fichier propriétaire et un fichier membre :• le fichier propriétaire est propriétaire <strong>de</strong> la clé.• le fichier membre est un membre <strong>de</strong>s fichiers <strong>de</strong>l’analyse contenant une copie <strong>de</strong> la clé.Pour gérer la liaison entre <strong>de</strong>ux fichiers, la clé dufichier propriétaire est copiée dans le fichier membre.Par exemple, la clé du fichier Fournisseur estcopiée dans chaque enregistrement du fichier Produit.Plusieurs enregistrements du fichier Produitpeuvent avoir la même clé du fichier Fournisseur :• le fichier propriétaire est Fournisseur,• le fichier membre est Produit.La représentation d'une telle liaison est lasuivante :3.2 Les cardinalitésLes cardinalités permettent <strong>de</strong> dénombrer les liensentre les fichiers.La cardinalité est définie en fonction <strong>de</strong>s réponsesaux <strong>de</strong>ux questions suivantes :1. Pour chaque enregistrement du fichier, à <strong>com</strong>biend’enregistrements <strong>de</strong> l’autre fichier au minimumcet enregistrement est-il relié ?La réponse fournit la première partie <strong>de</strong> la cardinalité(cardinalité minimale):•si la réponse est "aucun", la cardinalité est dutype 0,X.•si la réponse est "un seul", la cardinalité est dutype 1,X.2. Pour chaque enregistrement du fichier, à <strong>com</strong>biend’enregistrements <strong>de</strong> l’autre fichier au maximumcet enregistrement est-il relié ?La réponse fournit la <strong>de</strong>uxième partie <strong>de</strong> la cardinalité(cardinalité maximale):•si la réponse est "un seul", la cardinalité est dutype X,1.• si la réponse est "plusieurs", la cardinalité est dutype X,N.La réponse à ces <strong>de</strong>ux questions définit la cardinalitéqui peut être <strong>de</strong> type : 0,1 ; 0,N ; 1,1 ; 1,N96Partie 3 : Bases <strong>de</strong> données


La <strong>de</strong>scription <strong>de</strong>s cardinalités est fondamentale :elle est la base du respect <strong>de</strong> l’intégrité référentielle<strong>de</strong> la base <strong>de</strong> données.Pour plus <strong>de</strong> clarté, ces <strong>de</strong>ux questions peuventêtre dé<strong>com</strong>posées en quatre questions. Par exemple,pour décrire une liaison entre le fichier Fournisseuret le fichier Produit :<strong>de</strong>scription <strong>de</strong> la liaison (option "Insertion ..Liaison").Exemple <strong>de</strong> cardinalités avancées :Cet exemple présente <strong>de</strong>ux cardinalitésdifférentes :• Cardinalité 0,1 : Une personne peut être inscriteà un seul club <strong>de</strong> sport. Cette personne n’est pasobligée d’être inscrite à un club <strong>de</strong> sport.• Cardinalité 0,10 : Un club peut avoir aucune oujusqu’à 10 personnes inscrites.• chaque "fournisseur" a au moins un "produit" :Oui/Non ?• chaque "fournisseur" peut avoir plusieurs"produits" : Oui/Non ?• chaque "produit" a au moins un "fournisseur" :Oui/Non ?• chaque "produit" peut avoir plusieurs"fournisseurs" : Oui/Non ?Exemple <strong>de</strong> cardinalités :Cet exemple présente <strong>de</strong>ux cardinalitésdifférentes :• Cardinalité 0,1 : Une personne peut être inscriteà un seul club <strong>de</strong> sport. Cette personne n’est pasobligée d’être inscrite à un club <strong>de</strong> sport.• Cardinalité 0,N : Un club peut avoir aucune ouplusieurs personnes inscrites.3.3 Les cardinalités avancéesIl est possible <strong>de</strong> définir avec plus <strong>de</strong> précision lescardinalités. On parle alors <strong>de</strong> cardinalités avancées.Ces cardinalités permettent <strong>de</strong> préciser exactementla cardinalité minimale et la cardinalité maximale.Pour définir les cardinalités avancées, cochezl’option "Affichez les cardinalités avancées" dans la3.4 L’intégrité référentielleL'intégrité référentielle d'une base <strong>de</strong> données correspondau respect <strong>de</strong>s contraintes impliquées parles liaisons entre les fichiers.L'intégrité référentielle consiste à vérifier par exempleque :• si un enregistrement est supprimé dans le propriétaire,les enregistrements correspondantsdans les membres sont également supprimés,• si un enregistrement est ajouté dans un membre,il existe un enregistrement correspondant dansle propriétaire,• si un enregistrement est modifié dans un propriétaire,la clé unique n'est pas modifiée, ...La vérification <strong>de</strong> l'intégrité référentielle dépend <strong>de</strong>la nature <strong>de</strong> la liaison entre le fichier.Pour plus <strong>de</strong> détails sur le contrôle <strong>de</strong> l’intégritéréférentielle, consultez l’ai<strong>de</strong> en ligne.3.5 Les différents types <strong>de</strong> liaisonsLes liaisons entre fichiers peuvent être <strong>de</strong> plusieurstypes :• parallèle•facultative• <strong>de</strong> <strong>com</strong>plément•partagée•<strong>com</strong>plexeLiaison parallèleDans le cas d'une liaison parallèle, chaque enregistrementd’un fichier (Produit) est relié à un enregistrementdans un autre fichier (Information), etPartie 3 : Bases <strong>de</strong> données 97


éciproquement.Pour gérer une liaison parallèle, l'i<strong>de</strong>ntifiant dufichier Produit est copié dans le fichier Information.Cet i<strong>de</strong>ntifiant est également clé unique dans lefichier Information.Le fichier propriétaire est alors Produit, et Informationest le fichier membre.Remarque : Ce type <strong>de</strong> liaison est rare car les <strong>de</strong>uxfichiers peuvent être regroupés en un seul.Le parallélisme <strong>de</strong>s enregistrements dans le fichierest respecté si les opérations suivantes sont exécutéessimultanément sur les <strong>de</strong>ux fichiers :• création d'un enregistrement• suppression d'un enregistrement• réin<strong>de</strong>xation avec <strong>com</strong>pactageLiaison facultativeDans le cas d'une liaison facultative, chaque enregistrementd’un fichier (Catégorie) a aucun ou unseul enregistrement associé dans un autre fichier(Groupe). Chaque enregistrement <strong>de</strong> l’autre fichier(Groupe) a aucun ou un seul enregistrement associédans le premier fichier (Catégorie).Pour gérer une liaison <strong>de</strong> <strong>com</strong>plément, la clé dufichier Produit est copiée dans le fichier Détail.Pour assurer la cardinalité maximale <strong>de</strong> 1, ellereste clé unique. L'unicité <strong>de</strong> cette clé interditl'insertion <strong>de</strong> plus d'un enregistrement dans Détailpour un enregistrement <strong>de</strong> Produit.Le fichier propriétaire est Produit, le fichier membreest Détail.Liaison partagéeDans le cas d'une liaison partagée, un même enregistrementdans un fichier (Fournisseur) peut êtrepartagé par plusieurs enregistrements dans unautre fichier (Produit).Pour gérer une liaison partagée, la clé du fichierFournisseur est copiée dans le fichier Produit. Elle<strong>de</strong>vient clé multiple pour accélérer la vérification <strong>de</strong>l'intégrité.Le fichier propriétaire est Fournisseur, le fichiermembre est Produit.Selon la cardinalité, il est possible <strong>de</strong> distinguerquatre types <strong>de</strong> liaisons partagées :• Liaison partagée <strong>de</strong> cardinalité 0,n - 0,1• Liaison partagée <strong>de</strong> cardinalité 0,n - 1,1• Liaison partagée <strong>de</strong> cardinalité 1,n - 0,1• Liaison partagée <strong>de</strong> cardinalité 1,n - 1,1Liaison partagée <strong>de</strong> cardinalité 0,N - 0,1Une liaison facultative est réalisée en copiantl'i<strong>de</strong>ntifiant <strong>de</strong> chacun <strong>de</strong>s fichiers dans l'autrefichier.Liaison <strong>de</strong> <strong>com</strong>plémentDans le cas d'une liaison <strong>de</strong> <strong>com</strong>plément, chaqueenregistrement d’un fichier (Produit) a aucun ou unseul enregistrement associé dans un autre fichier(Détail). Chaque enregistrement <strong>de</strong> l’autre fichier(Détail) a nécessairement un enregistrement associédans le premier fichier (Produit).Les liaisons <strong>de</strong> <strong>com</strong>plément sont assez fréquentes.Elles sont notamment utilisées lorsqu'un enregistrementpeut avoir <strong>de</strong>s <strong>com</strong>pléments d'informationsoptionnels.Avec ce type <strong>de</strong> liaison :• un propriétaire peut ne pas avoir <strong>de</strong> membre (unfournisseur n’a pas obligatoirement <strong>de</strong> produit).• un membre peut ne pas avoir <strong>de</strong> propriétaire (unproduit n’a pas obligatoirement <strong>de</strong> fournisseur).Liaison partagée <strong>de</strong> cardinalité 0,N - 1,1Avec ce type <strong>de</strong> liaison :• un propriétaire peut ne pas avoir <strong>de</strong> membre (unfournisseur peut avoir aucun produit).•chaque membre a un seul propriétaire (chaqueproduit a un seul fournisseur).Remarque : Ce type <strong>de</strong> liaison est fréquent. WinDevpermet <strong>de</strong> créer automatiquement les fenêtres permettant<strong>de</strong> gérer les fichiers liés par une liaison <strong>de</strong>type 0,N - 1,1.98Partie 3 : Bases <strong>de</strong> données


Liaison partagée <strong>de</strong> cardinalité 1,N - 0,1Avec ce type <strong>de</strong> liaison :•chaque propriétaire a au moins un membre (unfournisseur a au moins un produit).• un membre peut ne pas avoir <strong>de</strong> propriétaire (unproduit peut avoir aucun fournisseur).Liaison partagée <strong>de</strong> cardinalité 1,N - 1,1Avec ce type <strong>de</strong> liaison :• chaque propriétaire a au moins un membre (chaquefournisseur a au moins un produit).• chaque membre a un seul propriétaire (chaqueproduit a un seul fournisseur).Liaison <strong>com</strong>plexeDans le cas d'une liaison "<strong>com</strong>plexe", il est nécessaire<strong>de</strong> gérer un fichier <strong>de</strong> liaison, appelé fichier<strong>de</strong> relation.Le fichier <strong>de</strong> relation sera automatiquement créé. Ilcontiendra une clé unique <strong>com</strong>posée <strong>de</strong>s <strong>de</strong>ux clés<strong>de</strong>s fichiers reliés.Le fichier <strong>de</strong> relation peut également contenir <strong>de</strong>sinformations spécifiques à la liaison.Une liaison <strong>com</strong>plexe se dé<strong>com</strong>pose alors en <strong>de</strong>uxliaisons <strong>de</strong> type partagé.Exemple <strong>de</strong> liaison <strong>com</strong>plexeUne <strong>com</strong>man<strong>de</strong> (fichier Comman<strong>de</strong>) peut contenirun ou plusieurs produits. Un produit (fichier Produit)peut être utilisé dans plusieurs <strong>com</strong>man<strong>de</strong>s.Dans ce cas, il faut avoir un fichier <strong>de</strong> liaison(fichier LigneComman<strong>de</strong>).Le fichier LigneComman<strong>de</strong> contient :- une clé unique <strong>com</strong>posée <strong>de</strong>s clés <strong>de</strong> Produitet <strong>de</strong> Comman<strong>de</strong>.- le nombre <strong>de</strong> produits <strong>com</strong>mandés.Les liaisons entre fichiers sont les suivantes :4 Manipulations possibles sur une analyseWinDev permet <strong>de</strong> réaliser les manipulations suivantessur une analyse :•Dupliquer / Copier un MLD : La duplication d’unMLD permet <strong>de</strong> disposer <strong>de</strong> <strong>de</strong>ux MLD i<strong>de</strong>ntiques<strong>de</strong> nom différent.• Supprimer un MLD• Renommer un MLD• Associer un MLD à un projet•Agrandir ou réduire l’affichage d’un MLD sousl’éditeur• Déplacer l’affichage du MLD sous l’éditeurWinDev permet <strong>de</strong> réaliser les manipulations suivantessur un fichier présent dans l’éditeurd’analyses :• Dupliquer / Copier un fichier• Supprimer un fichier• Renommer un fichierWinDev permet <strong>de</strong> réaliser les manipulations suivantessur une rubrique d’un fichier présent dansl’éditeur d’analyses :• Dupliquer / Copier une rubrique• Supprimer une rubrique• Renommer une rubriquePour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.Partie 3 : Bases <strong>de</strong> données 99


5 Création d’un MCD (Modèle Conceptuel <strong>de</strong>s Données)Selon la méthodologie MERISE, le modèle conceptuel<strong>de</strong> données définit les objets et les actions<strong>de</strong>vant être pris en <strong>com</strong>pte dans la base <strong>de</strong> données.Ce modèle représente uniquement les structuresd'information et les échanges d'informationdu système étudié, indépendamment <strong>de</strong>s contraintesphysiques liées à la nature <strong>de</strong> la base <strong>de</strong> donnéesutilisée.5.1 Créer un MCDPour créer un MCD :1. Sélectionnez l’option "Fichier .. Nouveau .. MCD".L’assistant <strong>de</strong> création du MCD se lance.2. Spécifiez :• le nom et le répertoire du MCD. Le MCD correspondà un fichier ".MCD". Par défaut, ce fichiersera créé dans le répertoire <strong>de</strong> l’analyse du projet(répertoire .ANA). Ce répertoiredoit être accessible en lecture et en écriture.• le libellé du MCD décrivant succinctement lesujet du MCD.• si le MCD doit être directement associé à l’analyseen cours. Cette analyse peut être une analyseexistante ou une analyse à créer.3. Le MCD créé <strong>de</strong>vient le MCD en cours. WinDevpropose automatiquement <strong>de</strong> créer la premièreentité.4. Créez l’ensemble <strong>de</strong>s éléments (entités, associations,propriétés et relations) <strong>de</strong> votre MCD.5.2 Créer une entitéPour créer une entité :1. Sélectionnez l’option "Entité .. Nouvelle entité".La <strong>de</strong>scription <strong>de</strong> l’entité s’affiche.2. Spécifiez :• le nom <strong>de</strong> l’entité. Ce nom sera le nom logiquedu fichier créé lors <strong>de</strong> la génération du MCD enMLD.• le libellé <strong>de</strong> l’entité résumant succinctement lesujet <strong>de</strong> l’entité.•si une propriété <strong>de</strong> type "I<strong>de</strong>ntifiant automatique"doit être définie dans l’entité. La valeur <strong>de</strong>cette propriété est unique pour chaque enregistrementet est automatiquement calculée parWinDev.• les notes détaillant le fonctionnement <strong>de</strong> l’entité(onglet "Divers").3. L’entité <strong>de</strong>vient l’entité en cours. WinDev proposeautomatiquement <strong>de</strong> décrire les propriétés <strong>de</strong>cette entité.5.3 Créer une associationPour créer une association :1. Sélectionnez l’option "Association .. Nouvelleassociation". La <strong>de</strong>scription <strong>de</strong> l’associations’ouvre.2. Spécifiez :• le nom <strong>de</strong> l’association. Lors <strong>de</strong> la génération duMCD en MLD, ce nom sera le nom logique dufichier créé si cette association <strong>com</strong>porte aumoins une propriété ou fait parti d’une liaison<strong>com</strong>plexe.• le libellé <strong>de</strong> l’association résumant succinctementle sujet <strong>de</strong> l’association.• les notes détaillant le fonctionnement <strong>de</strong> l’association.3. L’association <strong>de</strong>vient l’association en cours. Win-Dev propose automatiquement <strong>de</strong> décrire les propriétés<strong>de</strong> cette association.5.4 Créer une propriétéPour décrire une propriété :1. Double-cliquez sur l’entité ou sur l’associationdans laquelle la propriété doit être créée. La fenêtre<strong>de</strong> <strong>de</strong>scription <strong>de</strong>s propriétés s’ouvre.2. Cliquez sur la première ligne vi<strong>de</strong> du tableau <strong>de</strong>spropriétés ou cliquez sur l’icône "+".3. Spécifiez le nom, le libellé, le type, la taille et lesnotes <strong>de</strong> la propriété.4. Dans le cas d’une propriété d’entité, cochezl’option "I<strong>de</strong>ntifiant" si la propriété est l’i<strong>de</strong>ntifiant<strong>de</strong> l’entité.5. Vali<strong>de</strong>z la <strong>de</strong>scription <strong>de</strong> la propriété.5.5 Créer une relationPour créer une relation :1. Sélectionnez l’option "Entité .. Tracer une relation".Le curseur <strong>de</strong> la souris se transforme encrayon.2. Sélectionnez soit les <strong>de</strong>ux entités à relier, soitl’entité et l’association à relier.3. Définissez les cardinalités <strong>de</strong> la relation.5.6 Définir les cardinalitésPour définir les cardinalités :1. Sélectionnez la relation dont les cardinalités doiventêtre définies.2. Sélectionnez l’option "Entité .. Informations surla relation".3. Choisissez la cardinalité parmi celles proposées.4. Vali<strong>de</strong>z la <strong>de</strong>scription <strong>de</strong>s cardinalités.100Partie 3 : Bases <strong>de</strong> données


6 Principales manipulations d’un MCDWinDev permet <strong>de</strong> réaliser les manipulations suivantessur un MCD :• Supprimer un MCD• Renommer un MCD• Spécifier un facteur <strong>de</strong> zoom pour réduire ouagrandir l’affichage du MCD en cours.• Déplacer l’affichage d’un MCD.WinDev permet <strong>de</strong> réaliser les manipulations suivantessur une entité d’un MCD :• dupliquer / copier une entité• supprimer une entité• Renommer une entitéWinDev permet <strong>de</strong> réaliser les manipulations suivantessur une association d’un MCD :• Dupliquer / Copier une association• Supprimer une association• Renommer une associationWinDev permet <strong>de</strong> réaliser les manipulations suivantessur une propriété d’un MCD :• Supprimer une propriété• Renommer une propriétéPour plus <strong>de</strong> détails sur toutes ces manipulations,consultez l’ai<strong>de</strong> en ligne.7 Génération du MCD en MLDPour associer un MCD à un projet, il est nécessaire<strong>de</strong> générer le MLD associé.Rappel : C’est le MLD qui est associé au projet etnon le MCD.La génération du MCD permet <strong>de</strong> créer automatiquementle MLD correspondant après avoir vérifiéla validité du MCD.Pour générer le MCD en MLD :1. Sélectionnez l’option "Analyse .. Générer lemodèle logique".2. Définissez les paramètres <strong>de</strong> la génération duMCD en MLD :• le nom et le chemin du MLD généré. Le MLD correspondà un fichier ".WDA". Par défaut, ce fichiersera créé dans le répertoire <strong>de</strong> l’analyse du projet(répertoire .ANA). Ce répertoiredoit être accessible en lecture et en écriture.•si les libellés <strong>de</strong>s associations sans propriétés(du MCD) sont conservés pour i<strong>de</strong>ntifier lesliaisons (du MLD).• le type d’accès aux fichiers <strong>de</strong> données. Selon letype choisi, les fichiers <strong>de</strong> données seront manipuléspar le moteur <strong>de</strong> WinDev, par un pilote OLEDB ou par un <strong>de</strong>s accès natifs <strong>de</strong> WinDev (SQLServer, Oracle, ...).• le type <strong>de</strong> la base <strong>de</strong> données utilisée.• le format <strong>de</strong>s caractères utilisés dans l’analyse.3. Vali<strong>de</strong>z la génération. Le MLD correspondant auMCD est automatiquement créé.Cas particulier : Mise à jour d’un MLD existantSi le nom et le chemin du MLD spécifiés lors <strong>de</strong> lagénération du MCD correspon<strong>de</strong>nt à un MLD existant,le MLD existant va être mis à jour avec la nouvelle<strong>de</strong>scription du MCD.Lors <strong>de</strong> la mise à jour d’un MLD existant, la générationvérifie :1. L’existence <strong>de</strong> l’entité dans le MLD :• si l’entité est nouvelle, le fichier correspondantest créé.• si l’entité existe déjà, ses propriétés sont mises àjour.2. L’existence <strong>de</strong>s propriétés dans le MLD :• si la propriété est nouvelle, la rubrique correspondanteest créée.• si la propriété existe déjà, avec la même <strong>de</strong>scription,aucune action n’est réalisée.• si la propriété existe déjà, avec une <strong>de</strong>scriptiondifférente, il y a un conflit. L’éditeur d’analysespropose :•soit d’ignorer la nouvelle <strong>de</strong>scription <strong>de</strong> la propriétéet <strong>de</strong> ne faire aucune modification.•soit <strong>de</strong> mettre à jour la rubrique existante avecla nouvelle <strong>de</strong>scription <strong>de</strong> la propriété.•soit <strong>de</strong> créer une nouvelle <strong>de</strong>scription synonymeavec la nouvelle <strong>de</strong>scription <strong>de</strong> la propriété.3. L’existence <strong>de</strong>s relations et associations. Lorsquel’association nécessite la création d’un ou <strong>de</strong>plusieurs fichiers <strong>de</strong> relation, les fichiers et lesPartie 3 : Bases <strong>de</strong> données 101


ubriques du MLD sont mis à jour <strong>de</strong> la manièredécrite ci-<strong>de</strong>ssus. Lorsqu’une relation a été modifiée,la liaison du MLD est recréée ou mise à jour :•si les propriétés i<strong>de</strong>ntifiantes d’une <strong>de</strong>s entitésont été modifiées, les cardinalités <strong>de</strong>s liaisonsexistantes sont mises à jour et les nouvellesliaisons sont créées.• si aucune propriété i<strong>de</strong>ntifiante d’une <strong>de</strong>s entitésn’a été modifiée, les cardinalités sont simplementmises à jour.Remarques :• La suppression d’entités, <strong>de</strong> relations ou d’associationsn’est pas prise en <strong>com</strong>pte lors <strong>de</strong> lagénération du MCD en MLD.• La suppression <strong>de</strong> propriétés d’une entité peutêtre prise en <strong>com</strong>pte en décochant "Conserverles modifications du MLD" <strong>de</strong>s options <strong>de</strong> lagénération du MCD en MLD. Dans ce cas, lesfichiers du MLD contiennent uniquement lesrubriques <strong>de</strong> l’entité correspondante du MCDaprès la conversion.8 Génération <strong>de</strong> l’analyse (MLD)La génération <strong>de</strong> l’analyse intervient avant la phase<strong>de</strong> programmation et après la phase <strong>de</strong> <strong>de</strong>scription<strong>de</strong>s fichiers. Cette génération permet <strong>de</strong> :• vali<strong>de</strong>r les modifications effectuées sur l’analyse(MLD).•créer les modules nécessaires à la programmation.• mettre à jour automatiquement les fichiers <strong>de</strong>données si nécessaire.Tant que l’analyse (le MLD) n’a pas été générée, la<strong>de</strong>scription <strong>de</strong> l’analyse (les fichiers) ne pourra pasêtre utilisée dans le projet.La génération (option "Analyse .. Génération") <strong>com</strong>portetrois étapes :• vérification <strong>de</strong>s modifications effectuées et génération<strong>de</strong>s fichiers <strong>de</strong> la <strong>de</strong>scription <strong>de</strong> l’analyse.• modification automatique <strong>de</strong>s fichiers <strong>de</strong> donnéesaccessibles (fichiers présents dans le répertoire"EXE" du projet).•Synchronisation du projet.9 Gestion <strong>de</strong>s versions <strong>de</strong> l’analyseWinDev permet <strong>de</strong> gérer les différentes versions <strong>de</strong>l’analyse (option "Analyse .. Gestion <strong>de</strong>s versions").Il est alors possible <strong>de</strong> travailler sur l’analyse encours ou sur une analyse spécifique.Remarque : lorsqu’une analyse est endommagée,il est possible <strong>de</strong> sélectionner directement l’analyseendommagée pour restaurer par exemple une<strong>de</strong>s versions précé<strong>de</strong>ntes.Toutes les versions <strong>de</strong> l’analyse sont visualiséessous forme d’un graphique. Le carré jaune indiquele numéro <strong>de</strong> version <strong>de</strong> l'analyse; le libellé à droiterappelle la date <strong>de</strong> la génération.Entre <strong>de</strong>ux versions figurent <strong>de</strong>s "petits rectangles"qui signifient :• un rectangle : il y a eu peu <strong>de</strong> modifications effectuéesentre les <strong>de</strong>ux versions.• plusieurs rectangles : il y a eu plusieurs modificationseffectuées entre les <strong>de</strong>ux versions.Pour visualiser le détail <strong>de</strong>s modifications effectuéesentre <strong>de</strong>ux versions : Double-cliquez sur laligne contenant les "petits rectangles" ou cliquezsur le bouton [Modifications].Les options disponibles dans le gestionnaire <strong>de</strong> versionssont :• Restauration d’une analyse• Annulation <strong>de</strong> la <strong>de</strong>rnière génération• Remettre à 1 le numéro <strong>de</strong> version9.1 Restauration d'une analysePour restaurer une analyse à partir du gestionnaire<strong>de</strong> versions :1. Sélectionnez la version à restaurer.2. Il est possible <strong>de</strong> :•soit <strong>de</strong> restaurer la version dans le répertoirespécifié. Une analyse indépendante est crééecorrespondant à la version choisie. Cette optionest sélectionnée par défaut.• soit d’écraser l’analyse en cours.3. Vali<strong>de</strong>z. La restauration est effectuée.102Partie 3 : Bases <strong>de</strong> données


Attention : Les fichiers <strong>de</strong> données correspondantà une analyse <strong>de</strong> numéro <strong>de</strong> version supérieur à laversion restaurée ne pourront plus être ouverts. Ilfaut alors également restaurer <strong>de</strong>s fichiers correspondantà la version <strong>de</strong> l'analyse restaurée ou supprimerles fichiers existants pour qu'ils soientrecréés.9.2 Annulation <strong>de</strong> la <strong>de</strong>rnière générationL’annulation <strong>de</strong> la <strong>de</strong>rnière génération <strong>de</strong> l’analysepermet <strong>de</strong> restaurer l’analyse dans son état avantla <strong>de</strong>rnière génération. Les modifications effectuées<strong>de</strong>puis ne sont pas appliquées.9.3 Remettre à 1 le numéro <strong>de</strong> la versionIl est possible <strong>de</strong> remettre le numéro <strong>de</strong> génération<strong>de</strong> l'analyse à "1" (option "Analyse.. Remettre à 1 laversion <strong>de</strong> l’analyse"). Dans ce cas le numéro <strong>de</strong>version <strong>de</strong> l'analyse est remis à un. Aucune actionspécifique n’est réalisée sur les fichiers <strong>de</strong> données.Partie 3 : Bases <strong>de</strong> données 103


Les différents types <strong>de</strong>fichiers accessiblesWinDev, WebDev et WinDev Mobile proposent un accès simple à la majorité <strong>de</strong>s bases<strong>de</strong> données du marché.104Partie 3 : Bases <strong>de</strong> données


Partie 3 : Bases <strong>de</strong> données 105


HyperFileSQLClassicHyperFileSQL Classic est un puissant système <strong>de</strong> gestion <strong>de</strong> bases <strong>de</strong> données relationnelles(SGBD/R) utilisable en monoposte ou en réseau local. HyperFileSQL Classic ne requièrepas l’installation d’un serveur <strong>de</strong> bases <strong>de</strong> données.Les caractéristiques <strong>de</strong> HyperFileSQL Classic sont les suivantes :• Une application HyperFileSQL Classic peut être exécutée sur différents postes utilisateursrépartis en réseau local.• Les fichiers <strong>de</strong> données sont présents dans un répertoire accessible par les postesutilisateurs (par exemple, un répertoire partagé sur le réseau). Chaque poste utilisateuraccè<strong>de</strong> physiquement aux fichiers <strong>de</strong> données.• Les traitements (requête, lecture / ajout dans un fichier, ...) sont réalisés sur chaqueposte utilisateur.Utilisateur 1ApplicationWinDevUtilisateur 3ApplicationWinDevUtilisateur 2ApplicationWinDevUtilisateur nApplicationWinDevBases <strong>de</strong> donnéesHyperFileSQL réseau(répertoire partagé)106Partie 3 : Bases <strong>de</strong> données


HyperFileSQLClient/ServeurHyperFileSQL Client/Serveur est un puissant système <strong>de</strong> gestion <strong>de</strong> bases <strong>de</strong> donnéesrelationnelles (SGBD/R) en mo<strong>de</strong> Client/Serveur.Les caractéristiques <strong>de</strong> HyperFileSQL Client/Serveur sont les suivantes :• Une application HyperFileSQL Client/Serveur peut être exécutée sur différents postesutilisateur (appelés machines clientes) qui <strong>com</strong>muniquent à travers le réseauavec le serveur <strong>de</strong> base <strong>de</strong> données.• Les fichiers <strong>de</strong> données sont présents sur un poste serveur. Seul le serveur accè<strong>de</strong>physiquement aux fichiers <strong>de</strong> données.• L’ensemble <strong>de</strong>s traitements (requête, lecture/ajout dans un fichier, ...) est réalisésur le serveur.Poste Client 1ApplicationWinDevPoste Client 2Serveur HyperFileSQLWindows ou LinuxApplicationWinDevServeur MantaPoste Client nApplicationWinDevBases <strong>de</strong> donnéesHyperFileSQLClient/ServeurProtocole TCP/IPConnexion du type :Cable réseau,USB,Wi-Fi,Internet...Partie 3 : Bases <strong>de</strong> données 107


HyperFileSQLClusterHyperFileSQL Cluster est une extension du modèle <strong>de</strong> base <strong>de</strong> données <strong>de</strong> HyperFileSQLClient/Serveur. Dans un cluster <strong>de</strong> bases <strong>de</strong> données, les différents serveurs HyperFile-SQL contiennent tous une copie <strong>de</strong>s bases <strong>de</strong> données et sont synchronisés en tempsréel.• La charge en lecture peut être équilibrée entre différents serveurs.• La configuration physique peut évoluer sans interruption pour les postes clients.• En cas <strong>de</strong> crash d’un <strong>de</strong>s serveurs, le client est automatiquement redirigé vers unserveur opérationnel.108Partie 3 : Bases <strong>de</strong> données


HyperFileSQL : les fichierscréés physiquementL’éditeur d’analyses permet <strong>de</strong> décrire la structure <strong>de</strong>s fichiers <strong>de</strong> données.Selon les informations saisies sous l’éditeur d’analyses, différents fichiers sont créésphysiquement.Remarque : Ce schéma présente uniquement les principaux fichiers créés. D’autres fichiersspécifiques peuvent être créés si le fichier utilise la journalisation, les transactionsou encore la réplication.Partie 3 : Bases <strong>de</strong> données 109


Associer les champset les donnéesUne fenêtre peut afficher <strong>de</strong>s informations provenant :• d’une base <strong>de</strong> données : les champs sont directement liés aux rubriques <strong>de</strong>s fichiersou <strong>de</strong>s requêtes disponibles dans la base <strong>de</strong> données.• <strong>de</strong> variables présentes dans le co<strong>de</strong> <strong>de</strong> l’application (variables globales à la fenêtreou au projet ou paramètres passés à la fenêtre).Pour afficher ces informations dans une fenêtre, il est nécessaire <strong>de</strong> lier les champs <strong>de</strong>cette fenêtre avec :• les différentes rubriques <strong>de</strong> la base <strong>de</strong> données.• les différentes variables WLangage disponibles.La métho<strong>de</strong> d’affichage et <strong>de</strong> récupération <strong>de</strong>s informations est très simple :• La liaison d’un champ avec une rubrique ou une variable est définie sous l’éditeur<strong>de</strong> fenêtres, lors <strong>de</strong> la <strong>de</strong>scription du champ (onglet "Liaison").• La fonction EcranVersFichier permet <strong>de</strong> mettre à jour soit l’enregistrement, soit lavariable avec les données présentes à l’écran.• La fonction FichierVersEcran permet <strong>de</strong> mettre à jour les données affichées àl’écran avec soit les informations enregistrées dans le fichier, soit les informationsenregistrées dans la variable.Liaison champ / rubrique110Partie 3 : Bases <strong>de</strong> données


Liaison champ / variablePartie 3 : Bases <strong>de</strong> données 111


LesrequêtesUne requête sert à interroger une base <strong>de</strong> données pour visualiser, insérer, modifier ousupprimer <strong>de</strong>s données. La structure <strong>de</strong> la requête définit les données manipulées.Une requête peut interroger un ou plusieurs fichiers.L’éditeur <strong>de</strong> requêtes permet <strong>de</strong> créer très simplement <strong>de</strong>s requêtes, sans avoir à programmer.Remarque : En programmation, une requête peut être manipulée <strong>de</strong> la même façonqu’un fichier. En particulier, elle peut être associée à un champ d’affichage (une table parexemple) qui présentera les données retournées par la requête.112Partie 3 : Bases <strong>de</strong> données


Les requêtesintégréesLes champs d’une fenêtre peuvent être liés à un fichier <strong>de</strong> données ou à une requêteexistante. Il est également possible <strong>de</strong> lier ces champs à une requête créée lors <strong>de</strong> la conceptiondu champ.Requête intégrée :MaFenêtre_1$RequêteRequête intégrée :MaFenêtre_2$RequêteDans ce cas, la requête est intégrée à la fenêtre. Elle est présente dans le fichier WDWcorrespondant à la fenêtre. Si le fichier WDW est copié (dans un autre projet par exemple),les requêtes intégrées utilisées par cette fenêtre seront également copiées.Partie 3 : Bases <strong>de</strong> données 113


Les champs Table/ZoneRépétéeLes champs Table/Zone répétée peuvent être utilisés pour afficher un ensemble d’informations(par exemple, le contenu d’un fichier <strong>de</strong> données). Le contenu <strong>de</strong> ces champspeut être issu <strong>de</strong> trois sources différentes :• Table/Zone Répétée "Fichier accès direct"• Table/Zone Répétée "Mémoire"• Table/Zone Répétée "Fichier chargée en mémoire"Remarque : Ces trois mo<strong>de</strong>s <strong>de</strong> remplissage vont être détaillés dans cette page pour lechamp Table. Les mêmes concepts s’appliquent au champ Zone Répétée.Table "Fichier accès direct"Une table fichier <strong>de</strong> type accès direct permet d’afficher directement les données provenantd’un fichier <strong>de</strong> données, d’une requête ou d’une variable <strong>de</strong> type tableau. Un parcoursdu fichier permet d’afficher les données dans la table. Pour chaque ligne affichée,le fichier est lu : l’enregistrement lu est affiché dans une ligne <strong>de</strong> la table.Les données affichées non liées au fichier ne sont pas conservées lors <strong>de</strong>s rafraîchissementsd’affichage <strong>de</strong> la table (en cas <strong>de</strong> scrolling par exemple).Les fonctions WLangage <strong>com</strong>mençant par "Table" permettent <strong>de</strong> manipuler les tables fichierà accès direct. L’ajout ou la suppression d’une ligne dans la table entraîne l’ajoutou la suppression <strong>de</strong> l’enregistrement dans le fichier lié.Table "Mémoire"Une table mémoire permet d’afficher directement <strong>de</strong>s données chargées en mémoire.Les données sont ajoutées dans la table par programmation (par exemple avec la fonctionTableAjouteLigne).114Partie 3 : Bases <strong>de</strong> données


Les données étant présentes en mémoire, la table permet toutes les manipulations surles données (tri sur n’importe quelle colonne, recherche dans les colonnes, ...).Table "Fichier chargée en mémoire"Les tables fichier chargées en mémoire <strong>com</strong>binent les avantages <strong>de</strong>s tables fichier à accèsdirect et ceux <strong>de</strong>s tables mémoire.La table est liée au fichier <strong>de</strong> données, mais le contenu du fichier est totalement chargéen mémoire. Le tri et la recherche sont disponibles sur toutes les colonnes.Les données non liées au fichier sont conservées lors <strong>de</strong> la manipulation <strong>de</strong> l’ascenseur(colonne <strong>de</strong> type Interrupteur pas exemple).Les enregistrements du fichier étant chargés en mémoire, ce type <strong>de</strong> table est conseillépour les fichiers <strong>de</strong> moins <strong>de</strong> 100 000 enregistrements (pour éviter une saturation mémoire).Remarque : ces différents mo<strong>de</strong>s <strong>de</strong> remplissage sont également disponibles pour leslistes et les <strong>com</strong>bos.Partie 3 : Bases <strong>de</strong> données 115


RéplicationuniverselleLa réplication universelle permet <strong>de</strong> maintenir à jour <strong>de</strong>s bases <strong>de</strong> données <strong>de</strong> formatsi<strong>de</strong>ntiques ou différents (HyperFileSQL, Oracle, SQL Server, ...). Il est par exemple possible<strong>de</strong> réaliser une synchronisation entre une base <strong>de</strong> données HyperFileSQL Classic etune base <strong>de</strong> données Oracle.La réplication universelle utilise un modèle centralisé : toutes les bases <strong>de</strong> données sesynchronisent avec une base <strong>de</strong> données maître. La base <strong>de</strong> données maître répercuteensuite les modifications vers les autres bases <strong>de</strong> données.Il est possible d’adapter la synchronisation à <strong>de</strong>s cas particuliers. Par exemple, il est possible<strong>de</strong> récupérer uniquement les enregistrements concernant un produit spécifié ou lesenregistrements réalisés à une certaine date, <strong>de</strong> gérer les conflits, d’afficher une fenêtre<strong>de</strong> paramétrage, ...Ces adaptations doivent être effectuées par programmation grâce à la fonction HRplProcédureFiltre.116Partie 3 : Bases <strong>de</strong> données


Architecture3-tierL’architecture 3-tier (le terme "tier" vient <strong>de</strong> l’anglais et signifie "niveau") est un modèled’architecture d’application.Son principe <strong>de</strong> base consiste à séparer trois couches logicielles contenues dans uneapplication :• la couche présentation : correspondant à l’affichage• la couche traitements ou application : correspondant aux processus métiers <strong>de</strong>l’application• la couche d’accès aux données persistantesCette séparation a pour but <strong>de</strong> rendre indépendante chacune <strong>de</strong>s couches afin <strong>de</strong> faciliterla maintenance et les évolutions futures <strong>de</strong> l’application. Elle assure une sécurité plusimportante car l’accès à la base <strong>de</strong> données n’est autorisé que par la couche <strong>de</strong> traitements.Elle a également l’avantage d’optimiser le travail en équipe et le développementmulti-cibles.L’architecture 3-tier est totalement <strong>com</strong>patible avec le développement d’application enutilisant WinDev.Partie 3 : Bases <strong>de</strong> données 117


118Partie 3 : Bases <strong>de</strong> données


PARTIE 4Développementd’applications :concepts avancés


RADRIDLe RAD (Rapid Application Development) et le RID (Rapid graphical Interface Design) permettent<strong>de</strong> créer <strong>de</strong>s fenêtres à partir :• <strong>de</strong> l’analyse liée au projet,• <strong>de</strong>s patterns RAD standard ou personnalisés,• <strong>de</strong>s gabarits.En génération RAD, les fenêtres générées contiennent tout le co<strong>de</strong> nécessaire à leurfonctionnement. Ces fenêtres peuvent être testées immédiatement, avec les donnéesprésentes sur le poste <strong>de</strong> développement.En génération RID, les fenêtres générées contiennent uniquement les champs liés auxrubriques <strong>de</strong> l’analyse. Tout le co<strong>de</strong> nécessaire au fonctionnement <strong>de</strong> ces fenêtres resteà la charge du développeur. Seul le co<strong>de</strong> nécessaire au fonctionnement <strong>de</strong>s élémentsannexes du pattern est ajouté. Vous pouvez directement saisir votre co<strong>de</strong> personnalisé.Partie 4 : Développement d’applications : concepts avancés 121


Le modèleUMLWinDev permet <strong>de</strong> créer neuf types <strong>de</strong> modèle UML :• Diagramme <strong>de</strong> classes : décrit <strong>de</strong> manière générale la structure d’un système.• Diagramme <strong>de</strong> cas d’utilisation : représente les fonctionnalités du système du point<strong>de</strong> vue <strong>de</strong> l’utilisateur.• Diagramme d’objet : représente un ensemble d’objets et leurs relations à unmoment donné.• Diagramme <strong>de</strong> <strong>com</strong>posants : décrit l'architecture physique et statique d'une applicationinformatique.• Diagramme d’activité : représente le <strong>com</strong>portement d’une métho<strong>de</strong> ou le déroulementd’un cas d’utilisation.• Diagramme <strong>de</strong> séquences : représente l’ordre chronologique <strong>de</strong>s messages envoyéset reçus par un ensemble d’objets.• Diagramme <strong>de</strong> collaboration : présente l’organisation structurelle <strong>de</strong>s objets quienvoient et reçoivent <strong>de</strong>s messages.• Diagramme d’états-transitions : présente un automate à états finis.• Diagramme <strong>de</strong> déploiement : montre la répartition <strong>de</strong>s matériels (les nœuds) utilisésdans un système et l’association <strong>de</strong>s programmes exécutables à ces matériels.122Partie 4 : Développement d’applications : concepts avancés


Le modèle UML en pratique1 PrésentationL’objectif principal d’une équipe <strong>de</strong> développementest <strong>de</strong> créer <strong>de</strong>s applications optimisées, capables<strong>de</strong> satisfaire les besoins en constante évolution <strong>de</strong>leurs utilisateurs.La modélisation d’une application permet <strong>de</strong> spécifierla structure et le <strong>com</strong>portement attendus d’unsystème, <strong>de</strong> <strong>com</strong>prendre son organisation, <strong>de</strong>déceler les possibilités <strong>de</strong> simplification et <strong>de</strong> ré-utilisationet <strong>de</strong> gérer les risques encourus.Un modèle est la simplification <strong>de</strong> la réalité. Il permet<strong>de</strong> mieux <strong>com</strong>prendre le système à développer.Un diagramme est la représentation graphiqued’un ensemble d’éléments qui constituent un système.Pour visualiser un système sous différentesperspectives, le langage UML (Unified Mo<strong>de</strong>lingLanguage) propose neuf diagrammes, représentantchacun un état du système.WinDev permet <strong>de</strong> créer ces neuf types <strong>de</strong> modèleUML :• Diagramme <strong>de</strong> classes : décrit <strong>de</strong> manière généralela structure d’un système.• Diagramme <strong>de</strong> cas d’utilisation : représente lesfonctionnalités du système du point <strong>de</strong> vue <strong>de</strong>l’utilisateur.• Diagramme d’objet : représente un ensembled’objets et leurs relations à un moment donné.• Diagramme <strong>de</strong> <strong>com</strong>posants : décrit l'architecturephysique et statique d'une application informatique.• Diagramme d’activité : représente le <strong>com</strong>portementd’une métho<strong>de</strong> ou le déroulement d’un casd’utilisation.• Diagramme <strong>de</strong> séquences : représente l’ordrechronologique <strong>de</strong>s messages envoyés et reçuspar un ensemble d’objets.• Diagramme <strong>de</strong> collaboration : présente l’organisationstructurelle <strong>de</strong>s objets qui envoient etreçoivent <strong>de</strong>s messages.• Diagramme d’états-transitions : présente unautomate à états finis.• Diagramme <strong>de</strong> déploiement : montre la répartition<strong>de</strong>s matériels (les nœuds) utilisés dans unsystème et l’association <strong>de</strong>s programmes exécutablesà ces matériels.Ce chapitre ne fait que présenter <strong>de</strong> manière globalela modélisation UML. Pour plus <strong>de</strong> détails surle langage UML, nous vous conseillons <strong>de</strong> consulter<strong>de</strong>s ouvrages spécifiques.2 Les différents diagrammes UML2.1 Diagramme <strong>de</strong> classesUn diagramme <strong>de</strong> classes permet <strong>de</strong> modéliser lastructure d’un système grâce à <strong>de</strong>s classes et à<strong>de</strong>s relations entre ces classes.Les diagrammes <strong>de</strong> classes sont les diagrammesles plus courants dans la modélisation <strong>de</strong>s systèmesorientés objet.Par exemple, le diagramme suivant présente la gestion<strong>de</strong>s stocks :Partie 4 : Développement d’applications : concepts avancés 123


Un diagramme <strong>de</strong> classes est <strong>com</strong>posé <strong>de</strong>s élémentssuivants :• Classe : représente les structures <strong>de</strong> l’application.Chaque classe est divisée en trois<strong>com</strong>partiments :•le nom <strong>de</strong> la classe indique ce que la classe estet non ce qu’elle fait.•les attributs <strong>de</strong> la classe donnent les caractéristiques<strong>de</strong> la classe.•les opérations <strong>de</strong> la classe représentent lesactions possibles sur la classe.Par exemple, la classe Stock contient l’attributListeProduits. Cette classe regroupe aussi lesopérations AjouteProduit et RetireProduit. Cesopérations sont applicables aux instances <strong>de</strong> laclasse.Remarque : Le langage UML définit trois niveaux<strong>de</strong> visibilité pour les attributs et les opérations :•Public : l’élément est visible par toutes lesautres classes.•Protégé : l’élément est visible par la classe ellemêmeet par les sous-classes.•Privé : l’élément est visible uniquement par laclasse.•Relation : décrit le <strong>com</strong>portement <strong>de</strong>s classesentre elles. Trois types <strong>de</strong> relations existent :- Association : Relation structurelle entre classes.Par exemple, la classe Comman<strong>de</strong> estliée aux classes Produit et Client. Un Clientpeut passer plusieurs Comman<strong>de</strong>s. Une <strong>com</strong>man<strong>de</strong>est constituée <strong>de</strong> plusieurs produits.Une <strong>com</strong>man<strong>de</strong> doit obligatoirement contenirau moins un produit.- Dépendance : Relation d’utilisation qui établitque les instances d’une classe sont reliéesaux instances d’un autre élément. Par exemple,la classe Comman<strong>de</strong> utilise la classeStock : avant d’ajouter un produit dans une<strong>com</strong>man<strong>de</strong>, il est nécessaire <strong>de</strong> vérifier quece produit est en stock.- Généralisation : Relation entre une classegénérale (parent) et une classe spécifique(enfant) qui en dérive. Par exemple, les classesBateau à voile et Bateau à moteur sontdérivées <strong>de</strong> la classe Bateau.•Paquetages : permettant <strong>de</strong> diviser et d’organiserla représentation du diagramme (<strong>de</strong> lamême manière que les répertoires organisentles fichiers). Chaque paquetage peut contenir<strong>de</strong>s classes et <strong>de</strong>s relations.Grâce à la génération d’un diagramme <strong>de</strong> classes,il est possible <strong>de</strong> créer la structure <strong>de</strong>s classes Win-Dev utilisées dans votre application.2.2 Diagramme <strong>de</strong> cas d’utilisationUn diagramme <strong>de</strong> cas d’utilisation permet <strong>de</strong> visualiserle <strong>com</strong>portement d’un système <strong>de</strong> telle sorteque :• l’utilisateur puisse <strong>com</strong>prendre <strong>com</strong>ment utiliserchaque élément.• le développeur puisse implémenter ces éléments.Par exemple, il est possible <strong>de</strong> décrire le <strong>com</strong>portementd’un téléphone portable à l’ai<strong>de</strong> d’un diagramme<strong>de</strong> cas d’utilisation.124Partie 4 : Développement d’applications : concepts avancés


Un diagramme <strong>de</strong> cas d’utilisation est <strong>com</strong>posé<strong>de</strong>s éléments suivants :• Acteur : représente le rôle <strong>de</strong>s utilisateurs <strong>de</strong>l’application. Par exemple, une personne qui travailledans une banque sera le Gestionnaire <strong>de</strong>prêts. Si cette personne à un <strong>com</strong>pte dans cettebanque, elle jouera aussi le rôle <strong>de</strong> Client.• Cas d’utilisation : décrit une séquence d’actionsexécutées par l’application. Par exemple, Passerune <strong>com</strong>man<strong>de</strong>, Saisir une facture, Créer unenouvelle fiche client,...Un cas d’utilisation décrit ce que fait une applicationmais ne précise pas <strong>com</strong>ment l’applicationle fait.• Relation : décrit le <strong>com</strong>portement <strong>de</strong>s acteurspar rapport aux cas d’utilisation. Trois types <strong>de</strong>relations existent :•Association : Relation structurelle entre <strong>de</strong>uxéléments reliés.•Dépendance : Relation qui établit qu’un élémenten utilise un autre. Par exemple, le Clientd’une banque peut retirer <strong>de</strong> l’argent dans undistributeur automatique. Dans ce cas, l’actionRetrait d’argent dépend du Client.Pour pouvoir retirer <strong>de</strong> l’argent, le Client doitpréalablement saisir son co<strong>de</strong> confi<strong>de</strong>ntiel.Dans ce cas, l’action Retrait d’argent dépend<strong>de</strong> la Saisie du mot <strong>de</strong> passe.•Paquetage : divise et organise la représentationdu diagramme (<strong>de</strong> la même manière que lesrépertoires organisent les fichiers). Chaquepaquetage peut contenir <strong>de</strong>s acteurs et <strong>de</strong>s casd’utilisation.2.3 Diagramme d’objetsUn diagramme d’objets représente un ensembled’objets et leurs relations à un moment donné.Un diagramme d’objets est utilisé pour montrer uncontexte (avant ou après une interaction entreobjets par exemple).Par exemple, le diagramme suivant présente unepartie <strong>de</strong> la structure générale <strong>de</strong>s motos :•Généralisation : Relation permettant d’organiserles éléments selon une hiérarchie.Par exemple :-l’acteur Client peut être <strong>de</strong> <strong>de</strong>ux types : Clientindividuel ou Client d’entreprise.- la vérification <strong>de</strong> l’i<strong>de</strong>ntité d’un utilisateurpeut être effectuée <strong>de</strong> <strong>de</strong>ux façons : saisie dumot <strong>de</strong> passe ou vérification <strong>de</strong> l’empreintedigitale.Un diagramme d’objets est <strong>com</strong>posé <strong>de</strong>s élémentssuivants :• objet : représente une instance d’une classe.Remarque : Si un diagramme <strong>de</strong> classes estouvert, il est possible <strong>de</strong> créer un objet à partird’une classe présente dans ce diagramme (dragand drop à partir du volet "Analyse UML").• objet <strong>com</strong>posite : représente <strong>de</strong> manière visuelleun objet formé d’autres objets. Par exemple : unefenêtre qui contient <strong>de</strong>s ascenseurs, <strong>de</strong>sboutons,...Partie 4 : Développement d’applications : concepts avancés 125


• lien : représente les relations entre les différentsobjets.2.4 Diagramme <strong>de</strong> <strong>com</strong>posantsUn diagramme <strong>de</strong> <strong>com</strong>posants décrit l'architecturephysique et statique d'une application informatique.Par exemple: fichiers sources, librairies,exécutables,...Par exemple, le diagramme suivant présente lefonctionnement d’un programme permettant <strong>de</strong> seloguer en mo<strong>de</strong> texte sous Unix.2.5 Diagramme d’activitéUn diagramme d’activité représente le <strong>com</strong>portementd’une métho<strong>de</strong> ou le déroulement d’un casd’utilisation.Par exemple, le diagramme suivant présente ledéroulement d’un barrage :Un diagramme <strong>de</strong> <strong>com</strong>posants est <strong>com</strong>posé <strong>de</strong>séléments suivants :• module : représente les différents éléments physiquesconstituant une application informatique.Par exemple : un fichier, une librairie, ...Un module peut être représenté :•soit par une spécification qui montre l’interfacedu module. Cette spécification peut être génériquedans le cas <strong>de</strong> classes paramétrables.•soit par son corps qui présente l’implémentationdu module.• tâche : représente un <strong>com</strong>posant ayant son propreflot (thread) <strong>de</strong> contrôle.• programmes principaux <strong>de</strong> l’application informatique.• sous-programmes : regroupent les procédures etles fonctions qui n’appartiennent pas à <strong>de</strong>s classes.Un diagramme d’activité est <strong>com</strong>posé <strong>de</strong>s élémentssuivants :• activité : représente une étape particulière dansl’exécution d’un mécanisme. Par exemple : "Etablirun <strong>de</strong>vis", "Ouvrir la fenêtre", "Vérifier lesconnaissances",...• barre <strong>de</strong> synchronisation : permet <strong>de</strong> synchroniserles différentes activités :•soit en indiquant les activités à effectuer avantune certaine activité. Par exemple : "Appuyersur l’embrayage" et "Enclencher une vitesse"avant <strong>de</strong> "Relâcher l’embrayage".•soit en indiquant les activités à effectuer enparallèle.• objet : permet <strong>de</strong> rattacher <strong>de</strong>s activités à l’objetqui réalise ces activités. Par exemple, les activités"Comman<strong>de</strong>r" et "Payer" sont rattachées àl’objet "Client"; les activités "Enseigner", "Contrôlerles connaissances" sont rattachées à l’objet"Enseignant".• émission <strong>de</strong> signal : représente l’envoi d’unsignal vers un objet.• attente <strong>de</strong> signal : représente l’attente d’unsignal en provenance d’un objet.• transition : représente le passage d’une activitéterminée à une autre. Par exemple : "Trop d’eau","Assez d’argent",...126Partie 4 : Développement d’applications : concepts avancés


2.6 Diagramme <strong>de</strong> séquenceUn diagramme <strong>de</strong> séquence représente l’ordrechronologique <strong>de</strong>s messages envoyés et reçus parun ensemble d’objets.Par exemple, le diagramme suivant représente ledébut d’une <strong>com</strong>munication téléphonique :2.7 Diagramme <strong>de</strong> collaborationUn diagramme <strong>de</strong> collaboration présente l’organisationstructurelle <strong>de</strong>s objets qui envoient et reçoivent<strong>de</strong>s messages.Par exemple, le diagramme suivant montre l’utilisationd’un ascenseur par une personne :Un diagramme <strong>de</strong> séquence est <strong>com</strong>posé <strong>de</strong>s élémentssuivants :• objet : représente les différents objets utilisés.Chaque objet est représenté par un carré surmontantune ligne en pointillé. Cette ligne représentela durée <strong>de</strong> vie <strong>de</strong> l’objet. Par exemple:"Appelant, "Appelé, ...• pério<strong>de</strong> d’activation d’un objet : sur la ligne <strong>de</strong>vie d’un objet, il est possible d’insérer <strong>de</strong>s pério<strong>de</strong>sd’activation <strong>de</strong> l’objet. Ces pério<strong>de</strong>s représententles moments où l’objet est actif.• message : représente, grâce à <strong>de</strong>s flèches horizontales,les messages échangés entre les différentsobjets. Ces flèches sont orientées <strong>de</strong>l’émetteur du message vers le <strong>de</strong>stinataire.L’ordre d’envoi <strong>de</strong>s messages est donné par laposition <strong>de</strong>s flèches sur l’axe vertical.Par exemple : "Décroche", "Sonnerie", ...Un diagramme <strong>de</strong> collaboration est <strong>com</strong>posé <strong>de</strong>séléments suivants :• objet : représente les différents objets utilisés.• acteur : représente un élément externe du système.Par exemple une personne.• message : représente les messages échangésentre les différents objets.2.8 Diagramme d’états-transitionsUn diagramme d’états-transitions présente un automateà états finis. Il permet ainsi <strong>de</strong> décrire leschangements d'états d'un objet ou d'un <strong>com</strong>posant.Un état se caractérise par sa durée et sa stabilité.Une transition représente le passage instantanéd'un état vers un autre.Une transition est déclenchée :•soit par un événement.• soit automatiquement lorsqu’aucun événementdéclencheur est spécifié.Partie 4 : Développement d’applications : concepts avancés 127


Par exemple, le diagramme suivant présente lesdifférentes étapes d’une machine à laver lesvoitures :2.9 Diagramme <strong>de</strong> déploiementUn diagramme <strong>de</strong> déploiement montre la répartitionphysique <strong>de</strong>s matériels (les nœuds) utilisésdans un système et l’association <strong>de</strong>s programmesexécutables à ces matériels.Par exemple, le diagramme suivant présente lesdifférents matériels utilisés dans une entreprise :Un diagramme d’états-transitions est <strong>com</strong>posé <strong>de</strong>séléments suivants :• état : représente la valeur <strong>de</strong>s attributs d’unobjet à un instant donné.• état initial : représente l’état au démarrage dusystème.• état final : représente l’état dans lequel se trouvele système à la fin du fonctionnement.• super-état : permet <strong>de</strong> structurer le diagrammeen indiquant plusieurs niveaux <strong>de</strong> distinctionentre les états.• historique : représente le <strong>de</strong>rnier état actif d’unsuper-état.• souche : permet <strong>de</strong> symboliser les états contenusdans un super-état. Il est ainsi possible <strong>de</strong>relier ces états à d’autres états n’appartenantpas au super-état.• transition : représente le passage d’un état à unautre.Un diagramme <strong>de</strong> déploiement est <strong>com</strong>posé <strong>de</strong>séléments suivants :• classe <strong>de</strong> nœuds : représente une classe <strong>de</strong> ressourcematérielle. Par exemple : un serveur, unpc, une imprimante, ...• instance d’un nœud : représente une ressourcematérielle. Par exemple : le serveur numéro 3,l’imprimante numéro 7,...• connexion : décrit le support <strong>de</strong> <strong>com</strong>municationentre <strong>de</strong>ux nœuds. Par exemple : liaison RNIS ouTCP/IP.128Partie 4 : Développement d’applications : concepts avancés


GroupwareutilisateurLe Groupware Utilisateur permet d’inclure simplement une gestion <strong>de</strong>s utilisateurs et <strong>de</strong>leurs droits dans une application WinDev.Deux types d’utilisateurs sont pris en <strong>com</strong>pte :• utilisateur simple, utilisant directement l’application.• superviseur, pouvant configurer les utilisateurs et leurs droits.Partie 4 : Développement d’applications : concepts avancés 129


Le groupware utilisateur en pratique1 PrésentationUne application nécessite la définition du rôle <strong>de</strong>sdifférents intervenants. Il est souvent nécessaire<strong>de</strong> prévoir différents niveaux d’accès selon les fonctions<strong>de</strong> l’utilisateur.En effet, tous les utilisateurs n’ont pas les mêmesfonctions, ni les mêmes besoins. Leur domained’action doit donc être plus ou moins limité.Prenons un exemple simple: lors <strong>de</strong> la mise enplace d’une gestion <strong>com</strong>merciale, l’application proposeles fonctionnalités suivantes :• Consultation du tarif• Modification du tarif• Saisie <strong>de</strong>s <strong>com</strong>man<strong>de</strong>s• Saisie <strong>de</strong>s clients.Selon l’utilisateur les accès possibles sont différents.Quelques exemples :• les secrétaires peuvent consulter le tarif et créer<strong>de</strong>s <strong>com</strong>man<strong>de</strong>s• les <strong>com</strong>merciaux peuvent consulter le tarif et établirles <strong>com</strong>man<strong>de</strong>s, gérer <strong>de</strong> nouveaux clients.•les directeurs <strong>com</strong>merciaux ont accès à toutesles options.Pour gérer ces niveaux d’accès dans vos applicationsWinDev, il suffit d’intégrer le groupware utilisateurà votre application. Quelques clics <strong>de</strong> sourissuffisent à transformer une application classiqueen une application gérant <strong>de</strong> nombreux niveauxd’accès. La mise en place est instantanée.Lors <strong>de</strong> l’exécution <strong>de</strong> l’application, le responsablepourra créer <strong>de</strong>s utilisateurs (i<strong>de</strong>ntifiés par leurlogin et leur mot <strong>de</strong> passe) et leur donner accès àl’une ou l’autre <strong>de</strong>s fonctionnalités <strong>de</strong> l’application.2 Comment fonctionne le groupware utilisateur?Une application utilisant le groupware utilisateur a<strong>de</strong>ux niveaux d’utilisation :•le niveau utilisateur• le niveau superviseur2.1 Le niveau utilisateurL’utilisateur se connecte à l’application grâce à unefenêtre <strong>de</strong> login et accè<strong>de</strong> aux fonctionnalités quilui sont autorisées.Remarque : le groupware utilisateur peut permettre<strong>de</strong> se connecter en utilisant un annuaire LDAP.2.2 Le niveau superviseurLe superviseur se connecte à l’application par unefenêtre <strong>de</strong> login et accè<strong>de</strong> à un menu avancé luipermettant <strong>de</strong> configurer les utilisateurs et leursdroits, ou bien <strong>de</strong> lancer l’application.La fenêtre <strong>de</strong> configuration permet au superviseur<strong>de</strong> :• lancer l’application.• configurer le groupware.La configuration du groupware consiste à créer <strong>de</strong>sutilisateurs, <strong>de</strong>s groupes, et d’associer <strong>de</strong>s utilisateursaux groupes, à gérer les droits <strong>de</strong> chaque utilisateur(ou groupe) sur chacune <strong>de</strong>s fenêtres <strong>de</strong>l’application. Les droits sont définissables auniveau <strong>de</strong>s options <strong>de</strong> menu, <strong>de</strong>s groupes <strong>de</strong>champs et <strong>de</strong>s champs. Le superviseur peut rendreces éléments grisés, inactifs ou invisibles. Ces configurationssont prioritaires sur toute configurationeffectuée dans le programme.Pour plus <strong>de</strong> détails sur la configuration du groupwarepar le superviseur consultez le paragraphe“Paramétrer l’application utilisant le groupware utilisateur”,page 132.Remarque : Toutes les informations concernant lesutilisateurs et leurs droits sont stockées dans <strong>de</strong>sfichiers au format HyperFileSQL. Les fichiers concernantles utilisateurs peuvent être <strong>com</strong>muns àplusieurs applications. Les fichiers concernant lesdroits <strong>de</strong>s utilisateurs sur les différentes fenêtres<strong>de</strong> l’application sont spécifiques à l’application, etne peuvent pas être partagés.130Partie 4 : Développement d’applications : concepts avancés


3 Mise en place du groupware utilisateur3.1 Ajouter le groupware utilisateur dansune applicationPour mettre en place le groupware utilisateur dansune application WinDev, une seule option suffit :"Atelier .. Paramétrer le groupware utilisateur". Lafenêtre <strong>de</strong> paramétrage du groupware utilisateurpermet <strong>de</strong> définir :• Le mo<strong>de</strong> <strong>de</strong> gestion du groupware utilisateur.• Le type <strong>de</strong> lancement du groupware utilisateur.• L’emplacement <strong>de</strong>s fichiers <strong>de</strong> données du groupwareutilisateur.Mo<strong>de</strong> d’intégration du GroupwareUtilisateurDeux mo<strong>de</strong>s d’intégration du groupware utilisateursont disponibles :• Intégration par défaut : toute la programmationdu groupware utilisateur est automatiquementintégrée à votre application.Une nouvelle fenêtre est intégrée à votre projet :la fenêtre <strong>de</strong> login. Elle apparaît lors du lancement<strong>de</strong> l’application et permet à l’utilisateur <strong>de</strong>se connecter à l’application. Vous pouvez ainsipersonnaliser cette fenêtre en lui appliquant parexemple le gabarit <strong>de</strong> votre application.• Intégration personnalisée : toute la programmationdu groupware utilisateur est automatiquementintégrée à votre application. Toutes lesfenêtres nécessaires à la gestion du groupwareutilisateur (login et gestion <strong>de</strong>s utilisateurs) sontautomatiquement ajoutées à votre projet. Vouspouvez ainsi personnaliser totalement toutes lesfenêtres utilisées par le groupware utilisateur.Le détail <strong>de</strong>s différentes fenêtres du Groupware Utilisateurest présenté dans le paragraphe “Les fenêtresWinDev”, page 134.Démarrage du Groupware UtilisateurDeux mo<strong>de</strong>s <strong>de</strong> lancement du groupware utilisateursont disponibles :• Lancement automatique : La fenêtre <strong>de</strong> login dugroupware utilisateur est lancée avant touteautre fenêtre <strong>de</strong> l’application. Le co<strong>de</strong> d’initialisationdu projet est exécuté après l’ouverture et lavalidation <strong>de</strong> la fenêtre <strong>de</strong> login.• Lancement manuel : La fenêtre <strong>de</strong> login ne seraouverte que si la fonction gpwOuvre est utilisée.Cette option permet d’exécuter le co<strong>de</strong> d'initialisationdu projet par exemple, avant d’ouvrir lafenêtre <strong>de</strong> login. Il est ainsi possible par exempled’afficher une fenêtre <strong>de</strong>mandant la langued'exécution <strong>de</strong> l’application.Login automatique en mo<strong>de</strong> testVous pouvez indiquer le login et le mot <strong>de</strong> passe àutiliser en mo<strong>de</strong> "Test automatique". Ces informationsseront utilisées si un test automatique estréalisé sur l'application.Annuaire LDAPSi votre client utilise un annuaire LDAP au sein <strong>de</strong>son entreprise, il est possible <strong>de</strong> brancher le groupwareutilisateur sur cet annuaire. Ainsi le <strong>com</strong>pteet le mot <strong>de</strong> passe présent dans l'annuaire LDAPseront automatiquement <strong>de</strong>mandés à l'utilisateur.Deux mo<strong>de</strong>s sont disponibles :• Sans gestion <strong>de</strong>s droits: Dans ce cas, aucunfichier du groupware ne sera créé. Si le lancementest automatique, la fenêtre <strong>de</strong> login <strong>de</strong>man<strong>de</strong>raà l'utilisateur <strong>de</strong> s'i<strong>de</strong>ntifier. Si l'utilisateurest bien enregistré dans l'annuaire LDAP, l'applicationse lancera, sinon elle se fermera. Il n'estpas possible à un superviseur <strong>de</strong> paramétrer lesdroits sur les fenêtres.• Avec gestion <strong>de</strong>s droits : Seuls les utilisateursprésents dans l'annuaire LDAP pourront se connecter.Le paramétrage <strong>de</strong>s droits sur les fenêtresest disponible.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.Remarque : Le groupware utilisateur fonctionneavec Active Directory. Il ne fonctionne pas avecopenLDAP.Fichiers <strong>de</strong> données du GroupwareUtilisateurDeux catégories <strong>de</strong> fichiers <strong>de</strong> donnés sont géréespar le groupware utilisateur :• les fichiers <strong>de</strong> données permettant d’i<strong>de</strong>ntifierles utilisateurs. Ces fichiers <strong>de</strong> données peuventêtre <strong>com</strong>muns à plusieurs applications.• les fichiers <strong>de</strong> données permettant <strong>de</strong> gérer lesdroits <strong>de</strong>s utilisateurs sur les différentes fenêtres<strong>de</strong> l’application. Ces fichiers sont propres àl’application.Le mot <strong>de</strong> passe <strong>de</strong>s fichiers <strong>de</strong> donnéesPar défaut, les fichiers <strong>de</strong> données du groupwareutilisateur ont un mot <strong>de</strong> passe spécifique. Ce mot<strong>de</strong> passe est : "PCSGPW2001".Partie 4 : Développement d’applications : concepts avancés 131


Pour changer ce mot <strong>de</strong> passe, saisissez le nouveaumot <strong>de</strong> passe. Les caractères saisis apparaissentsous forme d'étoiles.Remarque : Ce mot <strong>de</strong> passe est utilisé par exemplelors <strong>de</strong> la ré-in<strong>de</strong>xation <strong>de</strong>s fichiers ou lors <strong>de</strong>l’ouverture <strong>de</strong>s fichiers avec l'outil WDMAP.Pour plus <strong>de</strong> détails sur ces fichiers et leur configuration(répertoire d'installation, ...), consultez leparagraphe “Les fichiers <strong>de</strong> données”, page 135.3.2 Tester l’applicationLors du test d’une application gérant le groupwareutilisateur, la première fenêtre apparaissant estautomatiquement la fenêtre <strong>de</strong> login (quelle quesoit la première fenêtre définie dans votre application).Par défaut, un seul utilisateur existe: le superviseur.Pour se connecter en tant que superviseur, ilsuffit <strong>de</strong> saisir les informations suivantes dans lafenêtre <strong>de</strong> login :•Nom: SUPERVISEUR• Mot <strong>de</strong> passe : SUPERVISEURVous pouvez alors soit tester votre application, soitconfigurer le fonctionnement du groupware.Remarques :• Pour que la première fenêtre <strong>de</strong> votre applicationne soit pas la fenêtre <strong>de</strong> login, cochez l'option"Lancement manuel" dans les options du GroupwareUtilisateur. Il suffira d'utiliser la fonction duWLangage gpwOuvre pour ouvrir la fenêtre <strong>de</strong>login.• Les fenêtres <strong>de</strong> gestion du groupware utilisateursont exécutées avant le co<strong>de</strong> d’initialisation duprojet.• La première fenêtre <strong>de</strong> votre application définiedans le projet sera lancée après la fenêtre <strong>de</strong>login (lorsque l’utilisateur n’est pas le superviseur).• Pour ne pas lancer le groupware utilisateur lors<strong>de</strong>s tests <strong>de</strong> l’application, il suffit <strong>de</strong> décocherl’option "Atelier .. Paramétrer le Groupware Utilisateur".Si vous re-branchez le groupware utilisateurpar la suite, les fichiers <strong>de</strong> données utilisésprécé<strong>de</strong>mment pour le groupware utilisateur neseront pas effacés.3.3 Créer l’exécutable WinDevLors <strong>de</strong> la création <strong>de</strong> l’exécutable gérant le groupwareutilisateur (option "Atelier .. Générer l’exécutable"),un écran spécifique au groupwareutilisateur est affiché.Vous pouvez ainsi définir l’emplacement <strong>de</strong>sfichiers <strong>com</strong>muns du groupware utilisateur (fichierscontenant les informations sur les utilisateurs).3.4 Installer une application utilisant legroupware utilisateurL’installation d’une application utilisant le groupwareutilisateur se fait <strong>com</strong>me pour toute applicationpar l’option "Atelier .. Créer la procédured’installation".Un écran spécifique au groupware utilisateur permet<strong>de</strong> configurer l’emplacement <strong>de</strong>s fichiers <strong>de</strong>données propres au groupware utilisateur.Remarques :• Si vous avez paramétré les fichiers <strong>de</strong> donnéesdu groupware utilisateur pour votre client, il estnécessaire <strong>de</strong> les sélectionner lors <strong>de</strong> la préparation<strong>de</strong> l’installation. Il est donc nécessaire <strong>de</strong>personnaliser la liste <strong>de</strong>s fichiers <strong>de</strong> l’installation.• Si vous n’avez pas paramétré les fichiers du groupware,lors du premier lancement <strong>de</strong> l’application,seul l’utilisateur Superviseur existera dansl’application.Conseil : si vous ne configurez pas les différentsniveaux d’utilisation du groupware utilisateur pourvos clients, il est conseillé <strong>de</strong> leur fournir un documentreprenant tous les champs <strong>de</strong> vos fenêtrespour obtenir une configuration optimisée.4 Paramétrer l’application utilisant le groupware utilisateurLorsque l’application est déployée, le paramétragedu groupware utilisateur est réalisé par le superviseur<strong>de</strong> l’application. Ce paramétrage consiste àcréer <strong>de</strong>s utilisateurs, <strong>de</strong>s groupes d’utilisateurs, età leur attribuer pour chaque champ <strong>de</strong> chaquefenêtre <strong>de</strong> l’application certains droits. Ces droitsconsistent à rendre visible, invisible ou grisé <strong>de</strong>schamps, <strong>de</strong>s groupes <strong>de</strong> champs, <strong>de</strong>s options <strong>de</strong>menus.132Partie 4 : Développement d’applications : concepts avancés


Pour paramétrer le groupware utilisateur, il suffit<strong>de</strong> :1. Lancer l’application (exécutable ou test <strong>de</strong>puisWinDev), et <strong>de</strong> se connecter en tant quesuperviseur :•Nom: SUPERVISEUR• Mot <strong>de</strong> passe : SUPERVISEUR2. Choisir l’option "Configurer le groupware".4.1 Gérer les utilisateursLa création d’un nouvel utilisateur consiste à donnerles informations suivantes :• le nom <strong>de</strong> l’utilisateur (obligatoire)• le prénom <strong>de</strong> l’utilisateur• le login <strong>de</strong> l’utilisateur. Ce login correspond àl’i<strong>de</strong>ntifiant <strong>de</strong> l’utilisateur lors <strong>de</strong> sa connexion àl’application.• le mot <strong>de</strong> passe <strong>de</strong> l’utilisateur. Ce mot <strong>de</strong> passen’est pas obligatoire, et peut être saisi par l’utilisateurlui-même lors <strong>de</strong> sa première connexion(cochez l’option correspondante).Il est possible <strong>de</strong> définir l’utilisateur <strong>com</strong>me étantun superviseur <strong>de</strong> l’application.Il est bien entendu possible <strong>de</strong> modifier ou <strong>de</strong> supprimerun utilisateur. La suppression d’un utilisateurpermet soit <strong>de</strong> supprimer entièrementl’utilisateur, soit <strong>de</strong> supprimer uniquement sesdroits.Les utilisateurs peuvent être rassemblés en groupes.Lors <strong>de</strong> la création d’un groupe, il est possible<strong>de</strong> copier les droits précé<strong>de</strong>mment définis pour unautre groupe ou utilisateur.Il est possible <strong>de</strong> créer ou <strong>de</strong> supprimer un groupe.Lors <strong>de</strong> la suppression d’un groupe, il est possiblesoit <strong>de</strong> supprimer le groupe et ses utilisateurs, soit<strong>de</strong> supprimer uniquement le groupe. Dans ce cas,les utilisateurs ne sont plus associés à un groupe.Remarques :•Il est conseillé <strong>de</strong> changer le mot <strong>de</strong> passe dusuperviseur dès la première utilisation.• Le groupe "Défaut" est le groupe proposé pardéfaut dans le groupware utilisateur. Ce groupe apar défaut tous les droits sur l’application.• Il n’est pas possible <strong>de</strong> supprimer le groupe et le groupe DEFAUT.•Si vous utilisez un annuaire LDAP, vous avez lapossibilité d'importer les utilisateurs présentsdans l'annuaire pour pouvoir gérer les droits <strong>de</strong>ces utilisateurs.4.2 Gérer les droitsPour chaque utilisateur (ou groupe d’utilisateur), lesuperviseur peut gérer leurs droits sur les différentséléments <strong>de</strong>s fenêtres du projet.Pour chaque association utilisateur / fenêtre, il estpossible <strong>de</strong> définir un état spécifique pour tous leséléments <strong>de</strong> la fenêtre.Les éléments gérés dans les fenêtres, les fenêtresinternes et les modèles <strong>de</strong> fenêtres sont lessuivants :•les champs• les groupes <strong>de</strong> champs• les options <strong>de</strong> menuLes états disponibles pour chaque élément sont lessuivants :• Défaut : le <strong>com</strong>portement <strong>de</strong> l’élément correspondau <strong>com</strong>portement par défaut, défini dansl’application.• Inactif : l’élément est affiché mais toute saisieest impossible.• Grisé : l’élément est affiché mais grisé. Toute saisieest impossible.• Invisible : l’élément n’est pas affiché.5 Conseils pour une application gérant le groupware utilisateur5.1 Utilisation <strong>de</strong> groupes <strong>de</strong> champsPour simplifier le paramétrage <strong>de</strong> la gestion dugroupware utilisateur en fonction <strong>de</strong>s utilisateurs, ilest conseillé <strong>de</strong> regrouper les champs par groupe<strong>de</strong> champs.Il est par exemple possible <strong>de</strong> créer dans vos fenêtres<strong>de</strong>s groupes <strong>de</strong> champs correspondant auxchamps à afficher pour un type d’utilisateur. Lapossibilité d’associer un champ à plusieurs groupes<strong>de</strong> champs augmente les <strong>com</strong>binaisons disponibles.Ces groupes <strong>de</strong> champs peuvent être créés dansvotre application uniquement en vue d’une gestiondu groupware, sans programmation spécifique <strong>de</strong>votre part.Partie 4 : Développement d’applications : concepts avancés 133


5.2 Visibilité <strong>de</strong>s champsLors du développement <strong>de</strong> votre application, vouspouvez définir les caractéristiques <strong>de</strong> visibilité <strong>de</strong>sdifférents éléments <strong>de</strong> vos fenêtres :• soit lors <strong>de</strong> la <strong>de</strong>scription <strong>de</strong> l’élément (fenêtre à7 onglets)• soit par programmation (propriété Etat ou propriétéVisible)Lors <strong>de</strong> la configuration du groupware utilisateur, lesuperviseur peut définir d’autres caractéristiques<strong>de</strong> visibilité. Les caractéristiques définies par lesuperviseur sont prioritaires. Par exemple, un boutonpermet <strong>de</strong> rendre un champ actif. Or ce champa été grisé par le superviseur. Votre co<strong>de</strong> ne serapas pris en <strong>com</strong>pte et le champ ne sera pas actif.5.3 Définition <strong>de</strong>s droitsPour obtenir une définition <strong>de</strong>s droits correspondantaux fonctionnalités <strong>de</strong> votre application, il estconseillé :• soit d’effectuer la configuration <strong>de</strong>s droits vouluepar l’utilisateur <strong>de</strong> votre application avant <strong>de</strong>créer la procédure d’installation. Il suffit alorsd’ajouter les fichiers du groupware lors <strong>de</strong> lacréation <strong>de</strong> l’installation <strong>de</strong> l’application.• soit <strong>de</strong> livrer un dossier <strong>de</strong> programmation permettant<strong>de</strong> donner les noms <strong>de</strong>s champs, <strong>de</strong>sgroupes <strong>de</strong> champs et <strong>de</strong>s options à gérer selonle niveau d’utilisation <strong>de</strong> l’application.6 Les éléments du groupware utilisateur6.1 Les fenêtres WinDevSelon le mo<strong>de</strong> d’intégration du groupware utilisateurdans votre application, une ou plusieurs fenêtrespeuvent être intégrées dans votre projet. Cesfenêtres sont les suivantes.Remarque : le fonctionnement <strong>de</strong> ces fenêtres estprésenté en détail dans le paragraphe “Paramétrerl’application utilisant le groupware utilisateur”,page 132.Fenêtre <strong>de</strong> login (GPWLOGIN.WDW)Cette fenêtre permet à tous les utilisateurs <strong>de</strong>l’application <strong>de</strong> se connecter à l’application. Danscette fenêtre, l’utilisateur doit saisir son nom et sonmot <strong>de</strong> passe (optionnel) qui ont été préalablementdéfinis par le superviseur <strong>de</strong> l’application. Dès lelancement, il est possible d’utiliser le login "SUPER-VISEUR" et le mot <strong>de</strong> passe "SUPERVISEUR".Fenêtre du menu du superviseur (GPWMenuSuperviseur.WDW)Cette fenêtre est visualisable dans votre projet uniquementen mo<strong>de</strong> personnalisé.Cette fenêtre permet au superviseur soit <strong>de</strong> lancerl’application, soit <strong>de</strong> configurer les droits.Fenêtre Fiche d’un utilisateur (GPWFicheUtilisateur.WDW)Cette fenêtre est visualisable dans votre projet uniquementen mo<strong>de</strong> personnalisé.Cette fenêtre permet au superviseur <strong>de</strong> saisir unnouvel utilisateur et les renseignements le concernant.Fenêtre Association <strong>de</strong>s utilisateurs et <strong>de</strong>s configurations(GPWAssociationConfiguration. WDW)Cette fenêtre est visualisable dans votre projet uniquementen mo<strong>de</strong> personnalisé.Cette fenêtre permet au superviseur <strong>de</strong> gérer lesutilisateurs, les groupes et les droits <strong>de</strong>s utilisateurs.Fenêtre Détail d’une configuration (GPWDétail-Configuration.WDW)Cette fenêtre est visualisable dans votre projet uniquementen mo<strong>de</strong> personnalisé. Cette fenêtre permetau superviseur <strong>de</strong> paramétrer pour chaquefenêtre les droits d’un utilisateur (ou d’un groupe)sur tous les champs, les groupes <strong>de</strong> champs et lesoptions <strong>de</strong> menu <strong>de</strong> la fenêtre.Fenêtre Choix d’une configuration (GPWChoixConfiguration.WDW)Cette fenêtre est visualisable dans votre projet uniquementen mo<strong>de</strong> personnalisé. Cette fenêtre permetau superviseur <strong>de</strong> copier une configurationprécé<strong>de</strong>mment définie (pour un groupe ou un utilisateur).Fenêtre Fiche configuration (GPWFicheConfiguration.WDW)Cette fenêtre est visualisable dans votre projet uniquementen mo<strong>de</strong> personnalisé.Cette fenêtre permet au superviseur <strong>de</strong> créer ungroupe ou un utilisateur.134Partie 4 : Développement d’applications : concepts avancés


Fenêtre Historique <strong>de</strong>s connexions (GPWHistoriqueConnexion.WDW)Cette fenêtre est visualisable dans votre projet uniquementen mo<strong>de</strong> personnalisé.Cette fenêtre permet au superviseur <strong>de</strong> consulterl’historique <strong>de</strong>s connexions (et <strong>de</strong> purger cet historiquesi nécessaire).6.2 Les fichiers <strong>de</strong> donnéesDeux catégories <strong>de</strong> fichiers sont prises en <strong>com</strong>pte :• Les fichiers permettant d’i<strong>de</strong>ntifier les utilisateurs.Ces fichiers peuvent être <strong>com</strong>muns à plusieursapplications.• Les fichiers permettant <strong>de</strong> gérer les droits <strong>de</strong>sutilisateurs sur les différents éléments <strong>de</strong> l’application.Ces fichiers sont spécifiques à l’applicationet ne peuvent pas être partagés avec uneautre application.Par défaut, ces fichiers <strong>de</strong> données sont créés auformat HyperFileSQL Classic, mais il est possibled’utiliser <strong>de</strong>s fichiers <strong>de</strong> données HyperFileSQLClient/Serveur. Pour plus <strong>de</strong> détails, consultezl’ai<strong>de</strong> en ligne.Mot <strong>de</strong> passe : Par défaut, les fichiers <strong>de</strong> donnéesdu groupware utilisateur ont un mot <strong>de</strong> passe spécifique.Ce mot <strong>de</strong> passe est : "PCSGPW2001".Pour changer ce mot <strong>de</strong> passe :1. Affichez la fenêtre <strong>de</strong> configuration du groupwareutilisateur (option "Atelier .. Paramétrer legroupware utilisateur").2. Dans l’onglet "Fichiers", saisissez le nouveaumot <strong>de</strong> passe. Les caractères saisis apparaissentsous forme d'étoiles.Remarque : Ce mot <strong>de</strong> passe est utilisé par exemplelors <strong>de</strong> la ré-in<strong>de</strong>xation <strong>de</strong>s fichiers ou lors <strong>de</strong>l'ouverture <strong>de</strong>s fichiers avec l'outil WDMAP.Fichiers <strong>de</strong> données utilisateurCes fichiers sont les suivants :GPWUtilisateurGPWUtilisateur-ConfigurationFichier <strong>de</strong>s utilisateurs. Contienttoutes les caractéristiques<strong>de</strong>s utilisateurs (login,nom, prénom, mot <strong>de</strong> passe,...Fichier <strong>de</strong>s groupes d’utilisateursGPWLogConnexion Fichier contenant l'historique<strong>de</strong>s connexions. Cefichier est présent uniquementsi l'historique <strong>de</strong>s connexionsa été <strong>de</strong>mandé.Les rubriques <strong>de</strong> ces fichiers sont détaillées dansl’ai<strong>de</strong> en ligne.Où sont créés ces fichiers ?• Par défaut, ces fichiers <strong>de</strong> données (mo<strong>de</strong> Hyper-FileSQL Classic) sont créés dans un sous-répertoire<strong>de</strong> votre projet (répertoire EXE\GPW_). Lors <strong>de</strong> l'intégration du groupwareutilisateur, vous pouvez spécifier un répertoiredifférent pour réaliser les tests <strong>de</strong> votre application.Lors <strong>de</strong> la création d’un exécutable WinDev, il estpossible <strong>de</strong> spécifier un répertoire spécifiquepour ces fichiers <strong>de</strong> données <strong>com</strong>muns.• Lors <strong>de</strong> la préparation <strong>de</strong> la procédure d’installation,il est possible <strong>de</strong> permettre à l'utilisateur <strong>de</strong>paramétrer l'emplacement <strong>de</strong> ces fichiers (planintitulé "Modules additionnels"). Il est ainsi possible<strong>de</strong> sélectionner un répertoire <strong>com</strong>mun à plusieursapplications gérant le groupwareutilisateur.• Si l'option "Lancement manuel" a été sélectionnée,la fonction gpwOuvre permet <strong>de</strong> lancer lafenêtre <strong>de</strong> login du groupware utilisateur, maisaussi <strong>de</strong> personnaliser le répertoire <strong>de</strong>s fichiers<strong>de</strong> données du groupware utilisateur. Quels quesoient les répertoires indiqués dans les différentesétapes <strong>de</strong> la création et <strong>de</strong> l'installation <strong>de</strong>l'application, ce répertoire, s'il est précisé, serapris en <strong>com</strong>pte.Remarque : si aucun paramétrage spécifique n'esteffectué, les fichiers <strong>de</strong> données Utilisateur (mo<strong>de</strong>HyperFileSQL Classic) seront créés dans un sousrépertoiredu répertoire d'installation <strong>de</strong> l'exécutablenommé \GPW_.Fichiers <strong>de</strong> données <strong>de</strong>s droitsCes fichiers sont les suivants :GPWConfiguration Fichier contenant les <strong>de</strong>scriptions<strong>de</strong>s configurations disponibles.Chaqueconfiguration est associée àun groupe d'utilisateurs.GPWConfigurationElémentEtat <strong>de</strong> chaque élément <strong>de</strong>l'application pour chaqueconfiguration. Par exemplepermet <strong>de</strong> stocker si pourl'utilisateur "Secrétaire",l'option "Menu statistiques"doit être grisé ou non.Partie 4 : Développement d’applications : concepts avancés 135


GPWElémentFichier content les différentséléments <strong>de</strong> l'application àconfigurer (champs <strong>de</strong>s fenêtres,options <strong>de</strong> menu, ...).Les rubriques <strong>de</strong> ces fichiers sont détaillées dansl’ai<strong>de</strong> en ligne.Où sont créés ces fichiers ?• Par défaut, ces fichiers <strong>de</strong> données (mo<strong>de</strong> Hyper-FileSQL Classic) sont créés dans un sous-répertoire<strong>de</strong> votre projet (répertoire EXE\GPW_).• Lors <strong>de</strong> la préparation <strong>de</strong> la procédure d’installation,il est possible <strong>de</strong> permettre à l'utilisateur <strong>de</strong>paramétrer l'emplacement <strong>de</strong> ces fichiers (planintitulé "Modules additionnels"). Il est ainsi possible<strong>de</strong> sélectionner un répertoire spécifique pourles fichiers <strong>de</strong>s droits <strong>de</strong> l'application.• Si l'option "Lancement manuel" a été sélectionnée,la fonction gpwOuvre permet <strong>de</strong> lancer lafenêtre <strong>de</strong> login du groupware utilisateur, maisaussi <strong>de</strong> personnaliser le répertoire <strong>de</strong>s fichiers<strong>de</strong> données du groupware utilisateur. Quels quesoient les répertoires indiqués dans les différentesétapes <strong>de</strong> la création et <strong>de</strong> l'installation <strong>de</strong>l'application, ce répertoire, s'il est précisé, serapris en <strong>com</strong>pte.Remarque : si aucun paramétrage spécifique n'esteffectué, les fichiers <strong>de</strong> données <strong>de</strong>s droits serontcréés dans un sous-répertoire du répertoire d'installation<strong>de</strong> l'exécutable nommé \GPW_.7 Modifier le groupware utilisateur7.1 Personnaliser les fenêtres du groupwareLa fenêtre <strong>de</strong> loginLa fenêtre <strong>de</strong> login s’affichant pour tout utilisateurlançant votre application, il peut être nécessaire <strong>de</strong>la personnaliser. Si vous avez choisi d’intégrer cettefenêtre à votre projet, vous pouvez simplement luiappliquant le style ou les gabarits utilisés pourvotre application.Attention : il ne faut pas renommer cette fenêtre.Toutes les fenêtres du groupware utilisateurSi vous avez choisi d’intégrer toutes les fenêtres dugroupware utilisateur, vous pouvez toutes les personnaliser.Cependant, seule la fenêtre <strong>de</strong> loginsera visualisée par tous les utilisateurs. Les fenêtres<strong>de</strong> configuration du groupware sont visualiséesuniquement par le superviseur <strong>de</strong> l’application.Attention : les fenêtres GPWLOGIN et GPWMenuSuperviseurne doivent pas être renommées.7.2 Groupware utilisateur et applicationmultilingueSi votre application est multilingue, il est nécessaire<strong>de</strong> gérer cette fonctionnalité également dansles fenêtres du groupware utilisateur. Par défaut,les fenêtres du groupware utilisateur gèrentl'anglais / américain et le français.Pour utiliser le groupware utilisateur dans uneapplication multilingue, il faut :1. Configurer le groupware utilisateur <strong>de</strong> la façonsuivante :• toutes les fenêtres du groupware utilisateur doiventêtre intégrées dans l’application.•l’option "Lancement manuel" doit être sélectionnée.2. Traduire les différentes fenêtres du groupwareutilisateur. Par défaut, les fenêtres du groupwareutilisateur sont disponibles en français et anglais.Pour traduire ces fenêtres dans d'autres langues, ilsuffit <strong>de</strong> traduire les différents libellés, ... (en utilisantl'outil WDMSG si nécessaire pour extraire lesmessages à traduire).Rappel : WDMSG est un outil optionnel <strong>de</strong> WinDevpermettant d'extraire et <strong>de</strong> ré-intégrer tous les messagesà traduire.3. Exécuter l’application dans la langue souhaitée.Pour cela, il est possible par exemple <strong>de</strong> :• Deman<strong>de</strong>r si nécessaire à l’utilisateur la languedans laquelle l’application doit s'exécuter (parune fenêtre spécifique par exemple).• Configurer la langue d’exécution <strong>de</strong> l’applicationavec la fonction Nation.• Ouvrir la première fenêtre <strong>de</strong> gestion du groupwareutilisateur avec la fonction gpwOuvre.// Co<strong>de</strong> d'initialisation du projetnLangue est un entier =Ouvre(Select_Langue")// Configuration <strong>de</strong> la langueNation(nLangue)136Partie 4 : Développement d’applications : concepts avancés


Lancement <strong>de</strong> la première fenêtre// du groupware utilisateurgpwOuvre()Pour plus <strong>de</strong> détails sur les applications multilingues,consultez “Applications multilingues”,page 139.7.3 Modifier la première fenêtre <strong>de</strong> l’applicationen fonction <strong>de</strong> l’utilisateurPour changer la première fenêtre <strong>de</strong> l’applicationen fonction <strong>de</strong> l’utilisateur, il suffit d’utiliser la fonctiongpwRecupInfoUtilisateur dans le co<strong>de</strong> d’initialisation<strong>de</strong> votre projet. Cette fonction permetd’obtenir <strong>de</strong>s renseignements sur l’utilisateur<strong>com</strong>me par exemple son nom, ou son mot <strong>de</strong>passe.En fonction <strong>de</strong> son nom, il est possible par exempled’ouvrir une fenêtre ou une autre.Exemple :SI gpwRecupInfoUtilisateur(...gpwLogin) = "FP" ALORSOuvre("Fen_Gestion")SINONOuvre("Menu")FIN7.4 Lancer la fenêtre <strong>de</strong> login <strong>de</strong>puis une<strong>de</strong>s fenêtres <strong>de</strong> l’applicationLors <strong>de</strong> l'insertion du groupware utilisateur dansune application, il est possible <strong>de</strong> choisir ou non unlancement automatique du groupware. Cette optionest ensuite modifiable à tout moment.Par défaut (lancement automatique), la fenêtre <strong>de</strong>login est la première fenêtre <strong>de</strong> l'application. Elleest exécutée avec le co<strong>de</strong> d'initialisation du projet.Dans certains cas, il est nécessaire d'ouvrir unefenêtre <strong>de</strong> configuration avant la fenêtre <strong>de</strong> login. Ilsuffit pour cela <strong>de</strong> :1. Sélectionner l'option "Lancement manuel".2. Ouvrir la fenêtre <strong>de</strong> login à n'importe quel endroitdu co<strong>de</strong> avec la fonction gpwOuvre.7.5 Définir les droits sur les menusPour définir <strong>de</strong>s droits sur les menus contextuelsd’une application WinDev, il est nécessaire d'intégrertoutes les fenêtres du groupware utilisateur.Vous pouvez alors modifier la fenêtre <strong>de</strong> gestion<strong>de</strong>s droits (GPWDétailConfiguration.WDW).Pour obtenir la liste <strong>de</strong>s menus contextuels, il suffitd'utiliser la fonction EnumèreSousElément (avec la<strong>com</strong>binaison <strong>de</strong> constantes enumPremier + enum-MenuContextuel).Cas particulier: le menu "?" d’une applicationWinDev :Certaines options du menu automatique sont à utiliseravec précaution. Ces options sont lessuivantes :•Optimiser la vitesse d'accès à la base <strong>de</strong> données• Sauvegar<strong>de</strong>r les données• Sauvegar<strong>de</strong>r l'application• Réparation <strong>de</strong> la base <strong>de</strong> données.Le fonctionnement <strong>de</strong> ces options avec le groupwareutilisateur est le suivant :• Par défaut, si l'utilisateur n'est pas le superviseur,ces options sont grisées.• Pour qu'un utilisateur non superviseur accè<strong>de</strong> àces fonctions, il suffit <strong>de</strong> modifier les droits <strong>de</strong> lafenêtre interne FI_MenuHWinDevHelp qui contientle menu contextuel.7.6 Configurer les fichiers <strong>de</strong> données dugroupware utilisateurDeux types <strong>de</strong> fichiers <strong>de</strong> données sont utilisés parle groupware utilisateur :• fichiers <strong>de</strong> données <strong>de</strong>s utilisateurs.• fichiers <strong>de</strong> données <strong>de</strong>s droits.L'emplacement <strong>de</strong> ces fichiers <strong>de</strong> données peutêtre configuré :• lors <strong>de</strong> l'insertion du groupware utilisateur pourles tests.• lors <strong>de</strong> la création <strong>de</strong> l'exécutable• lors <strong>de</strong> l'installation <strong>de</strong> l'application (par la personneexécutant l'installation)• par programmation.Pour plus <strong>de</strong> détails, consultez “Les fichiers <strong>de</strong> données”,page 135.7.7 Ré-initialiser les fichiers <strong>de</strong> données dugroupware utilisateurPour ré-initialiser les fichiers <strong>de</strong> données du groupwareutilisateur, il suffit <strong>de</strong> supprimer les fichiers<strong>de</strong> données spécifiques au groupware utilisateur(fichier <strong>de</strong>s utilisateurs et fichier <strong>de</strong>s droits). Cesfichiers sont automatiquement re-créés au lancement<strong>de</strong> l'application.Remarque :• Si seuls les fichiers utilisateur sont supprimés(GPWUtilisateurConfiguration et GPWUtilisateur),seul le superviseur pourra lancer l'application.Partie 4 : Développement d’applications : concepts avancés 137


• Si seuls les fichiers <strong>de</strong>s droits sont supprimés(GPWConfigurationElément, GPWConfiguration etGPWElément), tous les utilisateurs auront tousles droits sur toute l'application.Pour plus <strong>de</strong> détails sur les différents types <strong>de</strong>fichiers gérés par le groupware utilisateur, consultez“Les fichiers <strong>de</strong> données”, page 135.7.8 Modifier les fichiers <strong>de</strong> données utiliséspar le groupware utilisateurIl est impossible <strong>de</strong> modifier la structure <strong>de</strong>sfichiers <strong>de</strong> données spécifiques au groupware utilisateur.Remarque : Ces fichiers contiennent <strong>de</strong>s informationsconfi<strong>de</strong>ntielles et sont donc cryptés.7.9 Gestion <strong>de</strong>s analysesSi une analyse spécifique est ouverte lors du paramétragedu groupware utilisateur, il est nécessaire<strong>de</strong> ré-exécuter la fonction gpwInitAnalyse (permetl’ouverture <strong>de</strong> l’analyse du groupware utilisateur).Rappel : En exécution, il n’est pas possible d’ouvrirsimultanément plusieurs analyses.138Partie 4 : Développement d’applications : concepts avancés


ApplicationsmultilinguesUne application multilingue est une application qui pourra être diffusée dans plusieurslangues. WinDev prend en <strong>com</strong>pte les différentes langues <strong>de</strong> l'application à toutes lesétapes du développement d'une application.Pour développer une application multilingue, les principales étapes sont les suivantes :Partie 4 : Développement d’applications : concepts avancés 139


Applications multilingues en pratique1 PrésentationUne application multilingue pourra être diffuséedans plusieurs langues. Les différentes langues <strong>de</strong>l'application seront prises en <strong>com</strong>pte lors <strong>de</strong>s différentesétapes du développement.Pour développer une application multilingue, lesétapes sont les suivantes :1. Choix <strong>de</strong>s langues gérées par le projet et l'analyse.2. Saisie <strong>de</strong>s différents éléments du projet (fenêtre,co<strong>de</strong>, ...) dans les différentes langues du projet.3. Détermination <strong>de</strong> la langue du projet par programmation.4. Gestion <strong>de</strong>s alphabets spécifiques dans lesfichiers <strong>de</strong> données.5. Création <strong>de</strong> l'exécutable et du programme d'installation.Remarques :•Si le système d’exploitation du poste en coursgère plusieurs langues (Hébreux, Arabe, Grec, ...),lors <strong>de</strong> la saisie <strong>de</strong>s traductions dans ces langues,l’alphabet correspondant sera automatiquementutilisé.• Si votre application est multilingue, il est nécessaire<strong>de</strong> gérer cette fonctionnalité dans les fenêtresdu groupware utilisateur, et les fenêtres <strong>de</strong>gestion automatiques <strong>de</strong>s erreurs HyperFileSQL.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.• La gestion <strong>de</strong> l’Unico<strong>de</strong> est disponible dans lesfichiers HyperFileSQL, les champs <strong>de</strong>s fenêtres.2 Choix <strong>de</strong>s langues gérées par le projet et l’analyse2.1 Langues gérées par le projetLes différentes langues gérées par le projet sontdéfinies dans la <strong>de</strong>scription du projet (option"Projet .. Description du projet .. Langues").Les différentes langues sélectionnées seront proposéespour toutes les informations <strong>de</strong>s différentséléments ou objets pouvant être traduites (libellés<strong>de</strong>s champs, options <strong>de</strong> menus, messages d'ai<strong>de</strong>associés à un champ, ...).Lors <strong>de</strong> la modification <strong>de</strong>s différentes langues duprojet, les modifications seront automatiquementprises en <strong>com</strong>pte :• pour tout nouvel élément ou objet créé sous l'éditeur<strong>de</strong> WinDev,• pour tout élément ou objet ouvert sous l'éditeur<strong>de</strong> WinDev.La langue principale correspond à la langue utiliséepar défaut en exécution.Options linguistiquesIl est possible <strong>de</strong> paramétrer l'affichage <strong>de</strong>s différentesdonnées numériques du projet (nombre,monétaire, date, ...) dans chaque langue gérée parle projet.Par défaut, les paramètres utilisés sont ceux définisdans les options linguistiques <strong>de</strong> Windows(accessible <strong>de</strong>puis le panneau <strong>de</strong> configuration <strong>de</strong>Windows).Ce paramétrage s'effectue dans l'onglet "Langues"<strong>de</strong> la <strong>de</strong>scription du projet (option "Projet .. Descriptiondu projet").Lors <strong>de</strong> la création d'un champ <strong>de</strong> saisie ou d'unecolonne <strong>de</strong> table affichant <strong>de</strong>s données <strong>de</strong> typenumérique (nombre, monétaire, date, heure, durée,...) le masque <strong>de</strong> saisie utilisé sera automatiquementle masque défini dans les options <strong>de</strong> languedu projet. Cette option est disponible dans les fenêtres.En exécution, lorsqu’un champ <strong>de</strong> saisie ou unecolonne <strong>de</strong> table a pour masque "Défini par le projet",le masque <strong>de</strong> saisie / d'affichage s'adapteraautomatiquement selon les options choisies dansle projet pour la langue affichée en exécution.Remarque : Les options linguistiques permettentégalement <strong>de</strong> définir le sens d'écriture et l'alphabetutilisé (option "divers").Programme exécutableLors <strong>de</strong> la création du programme exécutable, il estpossible <strong>de</strong> spécifier la ou les langues prises en<strong>com</strong>pte dans l'exécutable. Il est ainsi possible <strong>de</strong>créer par exemple, un programme exécutable diffé-140Partie 4 : Développement d’applications : concepts avancés


ent pour chaque langue gérée par le projet.Cette fonctionnalité permet <strong>de</strong> diminuer la taille <strong>de</strong>l'exécutable.2.2 Langues gérées par l'analyseSi votre projet utilise une analyse, le choix <strong>de</strong>s différenteslangues gérées par l'analyse se fait directementsous l'éditeur d'analyses. En effet, une mêmeanalyse peut être partagée entre différents projetsne proposant pas tous les mêmes langues. Ainsi, lenombre <strong>de</strong> langues défini pour l'analyse peut êtresupérieur à celui défini pour le projet.La configuration <strong>de</strong>s différentes langues gérées parl'analyse est effectuée par l'option "Analyse .. Description<strong>de</strong> l'analyse .. International".Les différentes langues configurées dans l'analyseseront proposées :• lors <strong>de</strong> la configuration <strong>de</strong>s informations partagées<strong>de</strong>s rubriques. Vous pouvez saisir la <strong>de</strong>scription<strong>de</strong>s champs liés aux rubriques (options,libellés, ...) dans les différentes langues géréespar l'analyse. Lors <strong>de</strong> la génération d'un "RADapplication <strong>com</strong>plète" ou d'un RAD fenêtre, cesinformations seront automatiquement prises en<strong>com</strong>pte pour toutes les langues <strong>com</strong>munes àl'analyse et au projet.• pour les informations imprimées dans le dossier<strong>de</strong> l'analyse (notes du fichier ou <strong>de</strong> la rubrique).• pour les informations gérées par "Etats et Requêtes".En effet, si le logiciel "Etats et Requêtes" estlivré avec votre application WinDev, il est possible<strong>de</strong> traduire le nom du fichier et le nom <strong>de</strong> chaquerubrique. Ainsi, l'utilisateur pourra utiliser lesnoms correspondant à sa langue lors <strong>de</strong> la création<strong>de</strong> ses états et requêtes. Ces informationspeuvent être saisies dans l'onglet "Etats etRequêtes" <strong>de</strong> la <strong>de</strong>scription <strong>de</strong> fichier et <strong>de</strong> la<strong>de</strong>scription <strong>de</strong> rubriques.2.3 Langues gérées par les différents élémentsdu projetPar défaut, les différents éléments du projet (fenêtres,états, co<strong>de</strong>, classes, collections <strong>de</strong> procédures,...) gèrent les mêmes langues que le projetdans lequel ils ont été créés.Il est possible qu'un élément gère plus <strong>de</strong> languesque le projet (cas par exemple ou l'élément est partagéentre plusieurs projets gérant <strong>de</strong>s langues différentes).3 Saisie <strong>de</strong> l’interface dans les différentes languesLorsque les différentes langues gérées par l'applicationont été sélectionnées, il est nécessaire <strong>de</strong>saisir toutes les informations affichées par l'applicationdans ces différentes langues.Pour saisir l'interface dans différentes langues, plusieurséléments doivent être pris en <strong>com</strong>pte :• Le mo<strong>de</strong> <strong>de</strong> traduction choisi.• Les langues gérées (langues utilisant un alphabetspécifique ou non)• L'utilisation <strong>de</strong> fenêtres spécifiques (groupwareutilisateur, Gestion automatique <strong>de</strong>s erreursHyperFileSQL, Aperçu avant impression)• Les messages affichés par programmation.3.1 Mo<strong>de</strong> <strong>de</strong> traduction choisiWinDev propose plusieurs mo<strong>de</strong>s <strong>de</strong> traduction :• Traduction automatique <strong>de</strong>s interfaces à l'ai<strong>de</strong>d'un outil <strong>de</strong> traduction spécifique, présent sur leposte <strong>de</strong> développement. Cette traduction estréalisée directement sous l'éditeur <strong>de</strong> WinDev.• Export <strong>de</strong> tous les messages à traduire à l'ai<strong>de</strong><strong>de</strong> WDMSG et réintégration après traduction.Traduction automatique <strong>de</strong>s interfacesPour chaque objet, différentes zones multilinguessont affichées dans les fenêtres <strong>de</strong> <strong>de</strong>scription <strong>de</strong>l'objet. Ces zones multilingues permettent <strong>de</strong> saisirles informations dans les différentes languesgérées par le projet.Pour traduire ces informations <strong>de</strong>puis WinDev :1. Configurez les options <strong>de</strong> traduction du logicielutilisé (option "Outils .. Options <strong>de</strong> WinDev .. Traduction").Ces options permettent <strong>de</strong> définir :•l'outil <strong>de</strong> traduction par défaut (et les modalités<strong>de</strong> transmission du texte à traduire et du textetraduit)• les langues source et <strong>de</strong>stination.2. Si un outil <strong>de</strong> traduction est précisé, dans chaqueélément contenant <strong>de</strong>s informations à traduire,un bouton "Traduire" sera affiché. Ce boutonpermettra <strong>de</strong> traduire le texte sélectionné en utilisantl'outil <strong>de</strong> traduction spécifié.3. Pour effectuer la traduction, il suffit <strong>de</strong> sélectionnerle texte à traduire et cliquer sur le bouton "Traduire".Partie 4 : Développement d’applications : concepts avancés 141


Export et réintégration <strong>de</strong>s informationsà traduireL'outil WDMSG, disponible séparément, permetd'extraire tous les messages d'un projet (libellé <strong>de</strong>schamps, ...), puis <strong>de</strong> les réintégrer après traduction.Contactez le service <strong>com</strong>mercial <strong>de</strong> PC SOFT pourplus <strong>de</strong> détails sur les conditions d'utilisation <strong>de</strong> ceproduit.3.2 Langues utilisant un alphabet spécifiqueSi votre application gère <strong>de</strong>s langues utilisant <strong>de</strong>salphabets spécifiques (Grec, Russe, ...), il estnécessaire <strong>de</strong> saisir la traduction <strong>de</strong>s différentsmessages multilingues en utilisant ces alphabetsspécifiques.WinDev permet <strong>de</strong> gérer automatiquement l'utilisation<strong>de</strong>s alphabets spécifiques sous l'éditeur.En effet, dès que le caret (curseur <strong>de</strong> saisie <strong>de</strong> lasouris) est positionné dans une zone <strong>de</strong> saisied'une langue utilisant un alphabet spécifique, lalangue d'entrée (alphabet utilisé par le clavier) correspondanteest automatiquement activée.Ainsi, si vous saisissez un libellé dans la zoneRusse <strong>de</strong> la <strong>de</strong>scription du libellé, l'alphabet utilisépar le clavier sera automatiquement le russe.Rappel : Pour utiliser <strong>de</strong>s alphabets spécifiques, ilest nécessaire d'Installer les fichiers correspondantsaux alphabets voulus dans les options régionales<strong>de</strong> Windows (panneau <strong>de</strong> configuration).3.3 Traductions <strong>de</strong>s fenêtres spécifiquesGestion <strong>de</strong>s erreurs HyperFileSQLPar défaut, les fenêtres <strong>de</strong> gestion <strong>de</strong>s erreursHyperFileSQL sont fournies en anglais et en français.Pour les traduire dans une autre langue, il estnécessaire <strong>de</strong> :1. Intégrer les fenêtres d'erreur par défaut dansvotre projet. Les fenêtres sont fournies (avec leurco<strong>de</strong> WLangage) à titre d'exemple dans le répertoire\Programmes\Données\Fenêtres prédéfinies\HyperFileSQL- Fenêtres assistanceautomatique.2. Personnaliser la gestion <strong>de</strong>s erreurs pour utiliserles fenêtres HyperFileSQL <strong>de</strong> gestion <strong>de</strong>s erreurs(fonction HSurErreur).3. Traduire les différents messages (voir paragrapheprécé<strong>de</strong>nt).Gestion automatique <strong>de</strong>s erreursPar défaut, les fenêtres <strong>de</strong> gestion automatique<strong>de</strong>s erreurs sont fournies en anglais et en français.Pour les traduire dans une autre langue, il estnécessaire <strong>de</strong> :1. Intégrer les fenêtres d'erreur par défaut dansvotre application. Ces fenêtres sont fournies (avecleur co<strong>de</strong> WLangage) à titre d'exemple, dans lerépertoire \Programmes\Donnees\Fenêtres prédéfinies\Assertion- Erreur - Exception.2. Traduire les différents messages (voir paragrapheprécé<strong>de</strong>nt).Groupware utilisateurPar défaut, le groupware utilisateur est livré enanglais et en français.Pour traduire une application utilisant le groupwareutilisateur, il est nécessaire <strong>de</strong> choisir le mo<strong>de</strong> "Personnalisé"lors <strong>de</strong> l'intégration du groupware utilisateurdans votre application (option "Atelier ..Paramétrer le groupware utilisateur").Les différentes fenêtres du groupware utilisateurseront intégrées dans votre application.Il ne restera plus qu'à traduire ces fenêtres.Remarque : Si nécessaire, décochez l'option "lancementautomatique" : vous pourrez ainsi afficherune fenêtre <strong>de</strong> sélection <strong>de</strong> langue avant <strong>de</strong> lancerla fenêtre <strong>de</strong> login.Aperçu avant impressionPar défaut, la fenêtre d'aperçu avant impressionest disponible en anglais et français.Pour traduire la fenêtre d'aperçu avant impression,il est nécessaire d'intégrer les fenêtres correspondantà l'aperçu avant impression dans votre application.Ces fenêtres sont fournies (avec leur co<strong>de</strong>WLangage), dans le répertoire \Programmes\Donnees\Fenêtresprédéfinies\Apercu. Pour plus <strong>de</strong>détails, consultez l’ai<strong>de</strong> en ligne.Il ne restera plus qu'à traduire ces fenêtres.Menus systèmePour les champs <strong>de</strong> saisie ou les champs <strong>de</strong> typeTable, WinDev propose un menu contextuel pardéfaut. Ce menu permet à l'utilisateur <strong>de</strong> réalisersimplement diverses opérations.Pour traduire ces menus, il est nécessaire <strong>de</strong> possé<strong>de</strong>rWDINT.142Partie 4 : Développement d’applications : concepts avancés


3.4 Traduction <strong>de</strong>s messages présents dansle co<strong>de</strong> WLangageDans votre co<strong>de</strong>, diverses fonctions du WLangagevous permettent <strong>de</strong> <strong>com</strong>muniquer avec l'utilisateurau moyen <strong>de</strong> chaînes <strong>de</strong> caractères. Ces messagesdoivent être eux aussi traduits dans les différenteslangues <strong>de</strong> votre application.Pour traduire une chaîne <strong>de</strong> caractères saisie dansl'éditeur <strong>de</strong> co<strong>de</strong> :1. Sélectionnez la chaîne <strong>de</strong> caractères à traduire.2. Dans le menu contextuel <strong>de</strong> la sélection, choisissezl'option "Traduire". La fenêtre <strong>de</strong> traduction <strong>de</strong>smessages s'affiche.3. Saisissez la traduction et vali<strong>de</strong>z. La ligne <strong>de</strong>co<strong>de</strong> apparaît sous l'éditeur <strong>de</strong> co<strong>de</strong> :Le drapeau indique que <strong>de</strong>s traductions existentpour cette chaîne <strong>de</strong> caractères. Pour afficher lafenêtre <strong>de</strong> traduction, il suffit <strong>de</strong> cliquer sur ce drapeau.Le chiffre (2 dans notre exemple) indique le nombre<strong>de</strong> traductions saisies pour cette chaîne <strong>de</strong> caractères.Remarque : Pour transformer tous les messages<strong>de</strong> votre co<strong>de</strong> en messages multilingues, sélectionnezl’option "Co<strong>de</strong> .. Messages multilingues .. Convertirles chaînes simples en messagesmultilingues".4 Choix <strong>de</strong> la langue par programmationUne application multilingue est une application quipourra être diffusée dans plusieurs langues. L'utilisateurpourra choisir la langue d'exécution <strong>de</strong>l'application. Il est possible par exemple :• <strong>de</strong> <strong>de</strong>man<strong>de</strong>r la langue d'exécution au premierlancement <strong>de</strong> l'application• <strong>de</strong> prévoir une option (option <strong>de</strong> menu par exemple,ou bouton) permettant à l'utilisateur <strong>de</strong> changer<strong>de</strong> langue en cours d'exécution <strong>de</strong>l'application5 Gérer <strong>de</strong>s alphabets spécifiques dans <strong>de</strong>s fichiers <strong>de</strong> donnéesHyperFileSQLLorsqu'une application permet d'afficher ou d'enregistrer<strong>de</strong>s données dans <strong>de</strong>s fichiers HyperFileSQL,ces données sont saisies dans la langue encours.Si l'application est utilisée dans un pays utilisant<strong>de</strong>s alphabets latins, aucune gestion spécifiquen'est nécessaire.Si l'application est utilisée dans un pays utilisant unalphabet spécifique, il est nécessaire <strong>de</strong> gérer cetalphabet également au niveau <strong>de</strong>s fichiers <strong>de</strong> données.Ainsi, les recherches, les tris, ... seront effectuésen fonction <strong>de</strong> l'alphabet choisi.Partie 4 : Développement d’applications : concepts avancés 143


Optimiserune applicationPour optimiser vos applications, WinDev propose plusieurs métho<strong>de</strong>s :• Les Ai<strong>de</strong>s Automatiques au Développement (AAD) qui suggèrent <strong>de</strong>s améliorations<strong>de</strong> co<strong>de</strong> ou d’interface lors du développement <strong>de</strong> l’application.Développement <strong>de</strong> l’applicationOptimisations <strong>de</strong> vosrequêtes, amélioration<strong>de</strong>s ancragesdans vos fenêtres, ...Ces suggestions sontrégulièrement proposéeslors du développement<strong>de</strong> vosapplications.• L’analyseur <strong>de</strong> performances qui permet <strong>de</strong> visualiser rapi<strong>de</strong>ment les traitementsles plus gourmands en temps. Il suffit ensuite d’optimiser le traitement voulu.Test <strong>de</strong> l’applicationAnalyse <strong>de</strong>s performances <strong>de</strong>l’application durant un test, visualisation<strong>de</strong>s traitements lesplus longs pour une optimisationimmédiate du co<strong>de</strong>.Pour lancer l’analyseur <strong>de</strong> performances,utilisez l’option"Projet .. Analyseur <strong>de</strong> performances.. Analyser les performances".144Partie 4 : Développement d’applications : concepts avancés


• L’Audit statique du projet qui signale les problèmes potentiels <strong>de</strong> programmation(groupes vi<strong>de</strong>s, éléments orphelins, etc.) ainsi que les fichiers volumineux pouvantentraîner <strong>de</strong>s temps <strong>de</strong> chargement anormalement longs.Audit statiqueRapport d’audit signalant lesproblèmes rencontrés, analyse<strong>de</strong> la bibliothèque (pourdétecterles fichiers volumineux)et analyse du packd’installation.Pour lancer l’audit statique,utilisez l’option "Projet ..Audit d’édition .. Rapport général".• L’Audit dynamique du projet qui détectera les pertes <strong>de</strong> ressources, les erreurs maltraitées, les lenteurs <strong>de</strong> l’application dans son environnement <strong>de</strong> production.Audit dynamiqueAnalyse <strong>de</strong>s performances <strong>de</strong>l’application durant un test, visualisation<strong>de</strong>s traitementscontenant <strong>de</strong>s exceptions ou<strong>de</strong>s erreurs mal traitées.Pour lancer l’audit dynamique,utilisez l’option "Projet .. Mo<strong>de</strong>test .. Déboguer le projet avecl’audit activé".Partie 4 : Développement d’applications : concepts avancés 145


Livrer"Etats et Requêtes"Avec le logiciel "Etats et Requêtes" librement redistribuable avec vos applications, les utilisateurspourront personnaliser selon leurs souhaits les états que vous leur proposez.Bien sûr, seuls les états que vous aurez choisis seront personnalisables.146Partie 4 : Développement d’applications : concepts avancés


MCU :Macro Co<strong>de</strong> UtilisateurLe Macro Co<strong>de</strong> Utilisateur (MCU) permet à l’utilisateur final <strong>de</strong> saisir directement du co<strong>de</strong>WLangage et le greffer sur une application existante.Considérons le cas suivant :Une fenêtre <strong>de</strong> saisie d’une fiche client nécessite la présence d’une adresse email, maisne vérifie pas son format. L’utilisateur souhaite au moins vérifier la présence du caractère"@" dans l’adresse.Une icône située en haut <strong>de</strong> la fenêtre permet àl’utilisateur <strong>de</strong> personnaliser les traitements.La fenêtre <strong>de</strong> configuration du MCU apparaît.L’utilisateur peut ajouter une nouvelle actionpour cette fenêtre. Dans ce cas, l’utilisateurajoute la vérification <strong>de</strong> l’adresse email.L’utilisateur saisit le co<strong>de</strong> WLangage. L’ai<strong>de</strong> duWLangage peut être lancée grâce à la touche F1.Pour activer cette fonctionnalité (qui est désactivée par défaut), il suffit d’indiquer que leprojet accepte le MCU :• soit dans la <strong>de</strong>scription du projet,• soit lors <strong>de</strong> la création <strong>de</strong> l’exécutable.Partie 4 : Développement d’applications : concepts avancés 147


Macro Co<strong>de</strong> Utilisateur : MCU en pratique1 Qu’est-ce que le MCU ?Le MCU est une option permettant aux utilisateursavancés <strong>de</strong> réaliser <strong>de</strong> réaliser leurs propres traitementsdans l’application. L’utilisateur final peutsaisir du co<strong>de</strong> WLangage, et le greffer sur uneapplication existante.Il est possible <strong>de</strong> faire remonter au développeur lestraitements ajoutés afin que ceux-ci soient intégrésdans les sources <strong>de</strong> l’application.De nombreuses fonctionnalités du WLangage sontaccessibles à l’utilisateur et <strong>de</strong>s restrictions peuventêtre appliquées par le développeur. Par exempleinterdire l’utilisation <strong>de</strong>s fonctions <strong>de</strong> gestion<strong>de</strong>s fichiers. Afin d’assurer l’intégrité <strong>de</strong>s données,les ordres <strong>de</strong> modification ou d’ajout d’enregistrementne sont pas disponibles pour l’utilisateur.2 Comment activer/désactiver le MCU ?Il est bien sûr possible <strong>de</strong> débrancher cette fonctionnalité,par fenêtre ou pour l’application entièresi vous le désirez.Pour désactiver le MCU sur une fenêtre il fautcocher l’option "Interdire l’utilisation du M.C.U."dans l’onglet "Détail" <strong>de</strong> la <strong>de</strong>scription d’une fenêtre.Lors <strong>de</strong> la création <strong>de</strong> l’exécutable, vous avez lapossibilité d’autoriser la saisie <strong>de</strong> Macro Co<strong>de</strong> Utilisateurou <strong>de</strong> l’interdire pour l’application <strong>com</strong>plète.Si vous l’autorisez, <strong>de</strong>ux options sont alorsdisponibles :•Autoriser l’utilisation <strong>de</strong>s ordres HyperFileSQL(HLitPremier, HFiltre, HAjoute, ...).• Accepter les suggestions faites par les utilisateurs.Cette <strong>de</strong>uxième option permet l’envoi d’un emailpar l’application lorsque l’utilisateur crée un macroco<strong>de</strong>. Le fichier "*.MCU" correspondant à la macroco<strong>de</strong> est envoyé en pièce jointe. Vous récupérezainsi facilement les suggestions <strong>de</strong>s clients et lesintégrer automatiquement dans votre projet ! Win-Dev dispose en effet d’une option d’importation<strong>de</strong>s fichiers "*.MCU" (option <strong>de</strong> menu "Fichier..Importer .. Des Macro-Co<strong>de</strong>s Utilisateurs ...").148Partie 4 : Développement d’applications : concepts avancés


Les différents testsdisponiblesWinDev propose plusieurs métho<strong>de</strong>s pour tester votre application. Le tableau ci-<strong>de</strong>ssousprésente ces différents mo<strong>de</strong>s.Type <strong>de</strong> testTest <strong>de</strong> l’ensemble du projetTest <strong>de</strong> l’élément en coursTest d’un projet pas à pas(grâce au débogueur)Test unitaireTest <strong>de</strong> non-régressionDescriptionSimule le lancement <strong>de</strong> l’application par l’exécutable.Permet <strong>de</strong> tester l’application dans son ensemble,même si son développement n’est pasterminé.Dès qu’un problème apparaît dans l’exécution duprojet, vous pouvez lancer le débogueur pour connaîtreet solutionner le problème rencontré.Permet <strong>de</strong> tester le fonctionnement <strong>de</strong> cet élémentdès que son développement est terminé.Pour les états ou les fenêtres, il est possible <strong>de</strong> lancerle débogueur dès qu’un problème est rencontré.Permet <strong>de</strong> lancer le débogueur au lancement <strong>de</strong>l’application. Cette solution permet <strong>de</strong> suivre méticuleusementle déroulement <strong>de</strong> l’application àl’ai<strong>de</strong> du débogueur.Il est également possible <strong>de</strong> débogueur un exécutablespécifique, un exécutable déjà lancé ou unexécutable lancé sur un autre poste.Permet <strong>de</strong> tester les fenêtres, les procédures etles classes d’une application à différents niveaux<strong>de</strong> développement.Les scénarios <strong>de</strong> test sont automatiquement générésen WLangage à partir du test <strong>de</strong> l’applicationou du test d’un élément. Les scénarios peuventêtre directement modifiés sous l’éditeur <strong>de</strong> co<strong>de</strong>.Permet <strong>de</strong> tester la non-régression d’un élémententre les différentes versions d’une application.Il suffit <strong>de</strong> sélectionner (ou <strong>de</strong> créer) le scénario <strong>de</strong>test à exécuter.Partie 4 : Développement d’applications : concepts avancés 149


LedébogueurPour mettre au point votre co<strong>de</strong>, un débogueur est livré en standard avec WinDev.Le débogueur permet une exécution pas à pas <strong>de</strong> vos applications, en visualisant le co<strong>de</strong>WLangage exécuté, le contenu <strong>de</strong>s variables, ...Débogage du projet en cours1. Utilisation d’un point d’arrêt, placé dans l’éditeur <strong>de</strong> co<strong>de</strong>.Lorsque la ligne précédée d’un point d’arrêt sera exécutée, le débogueur sera automatiquementlancé.Pour poser un point d’arrêt, il suffit <strong>de</strong> cliquer <strong>de</strong>vant la ligne <strong>de</strong> co<strong>de</strong> : une puce rougeapparaît.150Partie 4 : Développement d’applications : concepts avancés


2. Utilisation du mot-clé STOP du WLangage dans le co<strong>de</strong> WLangageLe débogueur sera automatiquement lancé dès que cette ligne <strong>de</strong> co<strong>de</strong> sera exécutée.3. Utilisation <strong>de</strong> l’option "Projet .. Mo<strong>de</strong> Test .. Tracer le projet"Le débogueur est lancé en même temps que le test <strong>de</strong> l’application.4. Utilisation <strong>de</strong>s touches [CTRL] + [PAUSE] pendant le test <strong>de</strong> la fenêtre ou du projetLe débogueur est lancé lors <strong>de</strong> la prochaine action effectuée après l’utilisation <strong>de</strong>s touches[CTRL] + [PAUSE].Débogage d’un exécutableWinDev permet également <strong>de</strong> déboguer directement l’exécutable associé au projet encours sous WinDev. Cet exécutable peut :• être lancé <strong>de</strong>puis WinDev, sur le poste <strong>de</strong> développement.• être déjà en cours d’exécution sur le poste <strong>de</strong> développement.• être lancé <strong>de</strong>puis WinDev, sur un poste distant.• être déjà en cours d’exécution sur un poste distant.Débogage d’un <strong>com</strong>posantLe débogage d’un <strong>com</strong>posant est réalisé à partir du projet du <strong>com</strong>posant. Il est possible<strong>de</strong> :• Tester le <strong>com</strong>posant <strong>de</strong>puis le projet du <strong>com</strong>posant• Tester le <strong>com</strong>posant en exécutant un autre projet présent sur le poste <strong>de</strong> développement.Il est ainsi possible <strong>de</strong> tester le <strong>com</strong>posant à partir du projet qui l’utilise.• Tester le <strong>com</strong>posant en exécutant un exécutable présent sur le poste <strong>de</strong> développement.Il est ainsi possible <strong>de</strong> tester le <strong>com</strong>posant directement à partir <strong>de</strong> l’exécutablequi l’utilise.Partie 4 : Développement d’applications : concepts avancés 151


Tests unitairesTests automatiquesLes tests unitaires (appelés également tests automatiques) permettent <strong>de</strong> tester les fenêtres,les procédures et les classes d’une application à différents niveaux <strong>de</strong> développement.Il suffit <strong>de</strong> sélectionner (ou <strong>de</strong> créer) le scénario <strong>de</strong> test à exécuter.Ces scénarios sont générés en WLangage et peuvent être directement modifiés.Ces scénarios sont regroupés dans l’Editeur <strong>de</strong> Tests. L’Editeur <strong>de</strong> Tests analyse le résultat<strong>de</strong>s tests unitaires et calcule le taux <strong>de</strong> validation <strong>de</strong> l’application.Lors <strong>de</strong> la création <strong>de</strong> l’exécutable <strong>de</strong> l’application, WinDev :• affiche le taux <strong>de</strong> validation <strong>de</strong> l’application.• indique les éléments modifiés et non testés.Pour créer un test unitaire sur la fenêtre en cours, cliquez sur l’icône .Pour créer un test unitaire sur une procédure ou une classe, sélectionnez cette procédureou cette classe dans le volet "Explorateur <strong>de</strong> projet" puis l’option "Créer un test unitaire"du menu contextuel.152Partie 4 : Développement d’applications : concepts avancés


Tests unitaires surl’exécutableIl est possible <strong>de</strong> passer les tests unitaires créés avec WinDev sur un exécutable déployé,grâce à l’automate <strong>de</strong> tests.Partie 4 : Développement d’applications : concepts avancés 153


Test d’une application en pratique1 PrésentationWinDev propose plusieurs métho<strong>de</strong>s pour testervos applications :• test <strong>de</strong> l’ensemble du projet,• test d’une fenêtre seule,• test d’une requête seule (consultez le livre "Etatset Requêtes" pour plus <strong>de</strong> détails),•test d’un état seul (consultez le livre "Etats etRequêtes" pour plus <strong>de</strong> détails),• exécution du projet pas à pas,• test <strong>de</strong>s performances <strong>de</strong> votre application.• test <strong>de</strong> non régression / test automatiqueLe test <strong>de</strong> l’ensemble du projet permet <strong>de</strong> simulerle lancement <strong>de</strong> l’application par l’exécutable. Il estainsi possible <strong>de</strong> tester l’application dans sonensemble, même si son développement n’est pasterminé. Dès qu’un problème apparaît, vous pouvezlancer le débogueur pour connaître et solutionnerle problème rencontré.Le test d’une fenêtre permet d’exécuter uniquementla fenêtre en cours. Vous pouvez ainsi choisir<strong>de</strong> tester votre projet à partir d’une fenêtre donnée,ou <strong>de</strong> tester le fonctionnement d’une fenêtre dèsque son développement est terminé. Comme pourle test du projet, il est possible <strong>de</strong> lancer le débogueurdès qu’un problème est rencontré.Le test d’une requête seule permet d’exécuter uniquementla requête en cours. Vous pouvez ainsichoisir <strong>de</strong> tester le fonctionnement d’une requêtedès que son développement est terminé.Le test d’un état seul permet d’exécuter uniquementl'état en cours. Vous pouvez ainsi choisir <strong>de</strong>tester le fonctionnement d’un état dès que sondéveloppement est terminé. Comme pour le test duprojet, il est possible <strong>de</strong> lancer le débogueur dèsqu’un problème est rencontré.L’exécution du projet pas à pas permet <strong>de</strong> lancer ledébogueur au lancement <strong>de</strong> l’application. Cettesolution permet <strong>de</strong> suivre méticuleusement ledéroulement <strong>de</strong> l’application.Le test <strong>de</strong>s performances <strong>de</strong> votre application permet<strong>de</strong> vérifier et d’optimiser le temps d’exécution<strong>de</strong> votre application.Le test <strong>de</strong> non régression (ou test automatique)est basé sur l’exécution <strong>de</strong> scripts. Il permet <strong>de</strong>vérifier que lors <strong>de</strong> l’exécution <strong>de</strong> votre application,... les fonctionnalités existantes sont toujours supportées.2 Tester et déboguer un projet WinDev sur le poste <strong>de</strong> développement2.1 PrésentationLe test <strong>de</strong> l'ensemble du projet WinDev permet <strong>de</strong>simuler le lancement <strong>de</strong> l'application par l'exécutable.Il est ainsi possible <strong>de</strong> tester l'application dansson ensemble, même si son développement n'estpas terminé. Dès qu'un problème apparaît dansl'exécution du projet, vous pouvez lancer le débogueurpour connaître et solutionner le problèmerencontré.WinDev présente une palette <strong>com</strong>plète <strong>de</strong> tests surune application pouvant être réalisés à partir duposte <strong>de</strong> développement :• Test et débogage du projet en cours sous l'éditeur.•Lancement et débogage <strong>de</strong> l'exécutable correspondantau projet en cours.• Débogage d'un exécutable déjà lancé sur leposte <strong>de</strong> développement.Remarque : Le test d'un projet peut être lancé quelque soit l'élément en cours sous l'éditeur.2.2 Tester et déboguer le projet en coursPour tester un projet <strong>de</strong>puis l'éditeur, sélectionnezl'option "Projet .. Mo<strong>de</strong> Test ..Déboguer le projet"(<strong>com</strong>binaison <strong>de</strong> touches [Ctrl] + [F9]). L'éditeur estautomatiquement réduit en icone et le projet s'exécute.2.3 Lancer l’exécutable et le déboguer surle poste <strong>de</strong> développementCertains problèmes ne peuvent être reproduits quelors d'un test <strong>de</strong> l'exécutable en condition d'utilisationréelle. Ce mo<strong>de</strong> <strong>de</strong> test permet par exemple <strong>de</strong>déboguer un exécutable après l'avoir installé sur le154Partie 4 : Développement d’applications : concepts avancés


poste <strong>de</strong> développement.Dans ce cas, le co<strong>de</strong> exécuté provient directement<strong>de</strong>s bibliothèques (et non du co<strong>de</strong> présent dans leséléments présents sur le poste). Le co<strong>de</strong> peut doncêtre déphasé entre le co<strong>de</strong> du projet en cours et leco<strong>de</strong> <strong>de</strong> l'exécutable : le co<strong>de</strong> déphasé est surlignéen rose lors du débogage.Ce mo<strong>de</strong> <strong>de</strong> test permet <strong>de</strong> lancer un exécutablespécifique installé sur le poste <strong>de</strong> développementet <strong>de</strong> le déboguer directement.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.2.4 Débogage d’un exécutable déjà lancésur le poste <strong>de</strong> développementCertains problèmes ne peuvent être reproduits quelors d'un test <strong>de</strong> l'exécutable en condition d'utilisationréelle.Ce mo<strong>de</strong> <strong>de</strong> test permet par exemple <strong>de</strong> trouver unproblème qui se produirait uniquement dans l'exécutable(et non en tests).Le principe est simple :• Le développeur lance l’exécutable sur son posteet se positionne directement à l’endroit vouludans l’application.• Dans WinDev, le développeur ouvre le projet correspondantà l’exécutable et <strong>de</strong>man<strong>de</strong> à s’attacherà l’exécutable lancé.• Le débogueur sous WinDev permet <strong>de</strong> suivrel’exécution du programme pas à pas.Dans ce cas, le co<strong>de</strong> exécuté provient directement<strong>de</strong>s bibliothèques (et non du co<strong>de</strong> présent dans leséléments présents sur le poste). Le co<strong>de</strong> peut doncêtre déphasé entre le co<strong>de</strong> du projet en cours et leco<strong>de</strong> <strong>de</strong> l'exécutable : le co<strong>de</strong> déphasé est surlignéen rose lors du débogage.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.3 Tester et déboguer un projet WinDev sur le poste <strong>de</strong> l’utilisateurWinDev offre plusieurs possibilités pour tester etdéboguer un projet directement sur le poste <strong>de</strong>développement. Mais dans certains cas, il estnécessaire <strong>de</strong> déboguer directement sur le poste<strong>de</strong> l'utilisateur final (connecté par réseau ou parInternet).Il est ainsi possible <strong>de</strong> déboguer, <strong>de</strong>puis votrebureau <strong>de</strong> Paris, une application qui s'exécute àTaïwan. Le débogage est effectué sans se déplacer,directement sur la configuration du client.Deux fonctionnalités sont disponibles :•Lancement et débogage <strong>de</strong> l'exécutable sur unemachine distante• Débogage d'une application en cours d'exécutionsur une machine distante.Pour ces <strong>de</strong>ux fonctionnalités, une configurationspécifique <strong>de</strong> la machine distante est nécessaire.Remarque : pour déboguer une application WinDevà distance, l'application WinDev doit inclure lalibrairie WD160CPL.DLL dans son framework.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne.4 Tester une fenêtre4.1 Tester la fenêtre <strong>de</strong>puis l’éditeurPour tester une fenêtre <strong>de</strong>puis l'éditeur :1. Ouvrez la fenêtre à tester.2. Sélectionnez l'option "Co<strong>de</strong> .. Tester la fenêtre"(icône , ou [F9]). L'éditeur est automatiquementréduit en icône et la fenêtre s'exécute.Lors du test, l’ensemble <strong>de</strong>s fonctionnalités <strong>de</strong> lafenêtre pourra être exécuté. Il sera possible parexemple d’ouvrir d’autres fenêtres.4.2 Arrêter le test d’une fenêtrePour arrêter le test, plusieurs métho<strong>de</strong>s sontpossibles :• 1ère métho<strong>de</strong> :Fermez l’application en cours <strong>de</strong> test. WinDevaffiche l’éditeur en cours au moment du lancementdu test.• 2ème métho<strong>de</strong> :•Revenez dans l’éditeur avec la barre <strong>de</strong>s tâchesou avec [Alt] + [Tab].•Confirmez l’arrêt du test. WinDev affiche l’éditeuren cours au moment du lancement du test.Partie 4 : Développement d’applications : concepts avancés 155


5 Tracer un projet5.1 Principes du débogageLe débogage d’une application consiste à :• vérifier le bon fonctionnement d’un traitement,• <strong>com</strong>prendre le fonctionnement d’un programmeexistant,• vérifier la valeur <strong>de</strong>s variables,• vérifier le bon fonctionnement <strong>de</strong> cas particuliersdans une application.Le débogueur permet <strong>de</strong> réaliser ces opérations.Remarque : WinDev met également à votre dispositiondivers outils <strong>de</strong> trace (fenêtre <strong>de</strong> trace, boîted’information,...). Pour plus <strong>de</strong> détails, consultez leparagraphe “Déboguer sans le débogueur”,page 156.5.2 Présentation du débogueurLe débogueur permet <strong>de</strong> tracer les programmes enWLangage afin <strong>de</strong> faciliter la mise au point <strong>de</strong> programmes.Le co<strong>de</strong> source exécuté est visualisé à l’écran. Lesdifférents traitements exécutés sont hiérarchisésdans le volet "Débogueur".La valeur <strong>de</strong>s variables peut être visualisée :• individuellement dans la bulle d’ai<strong>de</strong> <strong>de</strong> survol<strong>de</strong> chaque variable.• dans le volet "Débogueur".5.3 Fonctionnalités du débogueurLe débogueur permet <strong>de</strong> :• connaître la pile <strong>de</strong>s appels• visualiser le contenu <strong>de</strong>s variables ou <strong>de</strong>s expressions• exécuter pas à pas avec possibilité <strong>de</strong> sauter <strong>de</strong>sblocs.• utiliser <strong>de</strong>s points d’arrêt conditionnels• modifier le co<strong>de</strong> tout en continuant l’exécution,• ...5.4 Déboguer sans le débogueurDans certains cas, l’exécution d’un programmeavec ou sans le débogueur peut être différente.En effet, le débogueur introduit <strong>de</strong>s pauses dansl’exécution du traitement, durant lesquelles Windowseffectue certaines tâches.Ainsi, le débogueur ne peut pas être utilisé dansune procédure appelée par timer ou dans le co<strong>de</strong><strong>de</strong> l’ascenseur.Remarque : Pour connaître l’ensemble <strong>de</strong>s limitesdu débogueur, consultez l’ai<strong>de</strong> en ligne.Pour déboguer ces applications, il peut être nécessairepar exemple <strong>de</strong> suivre l’évolution d’unevaleur, le passage dans différentes procédures, ...Ces informations peuvent être :• affichées à l’écran• stockées dans un fichier <strong>de</strong> trace.Attention : Si les informations sont affichées àl’écran, elles doivent être affichées uniquementlors <strong>de</strong>s tests <strong>de</strong> l’application.Afficher <strong>de</strong>s informationsDeux outils permettent d’afficher <strong>de</strong>sinformations :• les boîtes d’informations : fonction Info du WLangage.Attention : L’affichage d’une boîte d’informationest blocante.• la fenêtre <strong>de</strong> trace : fonction Trace du WLangage.La fenêtre <strong>de</strong> trace s’affiche en haut à gauche <strong>de</strong>l’écran, sans interrompre le déroulement du programme.Gérer l’affichage <strong>de</strong>s informations <strong>de</strong>débogageL’affichage à l’écran <strong>de</strong>s informations <strong>de</strong> débogageest utile uniquement en mo<strong>de</strong> test.Avant <strong>de</strong> diffuser une application, il est donc nécessaire<strong>de</strong> supprimer tout affichage superflu.Pour éviter tout oubli, il est conseillé <strong>de</strong> gérer l’affichage<strong>de</strong>s informations <strong>de</strong> débogage à l’ai<strong>de</strong> d’uneprocédure globale. Par exemple :PROCEDURE MaTrace(ChaîneATracer)SI EnMo<strong>de</strong>Test() ALORSTrace(ChaîneATracer)FINDans ce co<strong>de</strong>, selon le résultat <strong>de</strong> la fonctionEnMo<strong>de</strong>Test, la fenêtre <strong>de</strong> trace apparaît uniquementlors d’un test <strong>de</strong> l’application.Une telle procédure permet <strong>de</strong> laisser l’appel auxfenêtres <strong>de</strong> trace dans le co<strong>de</strong> <strong>de</strong> l’application,sans risque d’apparition en clientèle.156Partie 4 : Développement d’applications : concepts avancés


L’appel à cette procédure <strong>de</strong> trace est i<strong>de</strong>ntique àl’utilisation <strong>de</strong> la fonction Trace :MaTrace("Client : "+ ...Client.NumClient)Créer un fichier <strong>de</strong> traceLors <strong>de</strong> traitements longs (traitements Batchs,...),pour contrôler le bon déroulement du programme,il est nécessaire <strong>de</strong> conserver une trace physique<strong>de</strong>s traitements effectués (un fichier texte parexemple).La procédure suivante permet <strong>de</strong> gérer par exemplel’affichage <strong>de</strong> la trace :• soit à l’écran (paramètre /DEBUG en ligne <strong>de</strong><strong>com</strong>man<strong>de</strong>).• soit dans un fichier texte (mo<strong>de</strong> par défaut).PROCEDURE MaTrace(ChaîneATracer)Fichier est un entierMo<strong>de</strong>Debug est un booléen = FauxSI Position(LigneComman<strong>de</strong>(),..."/DEBUG") > 0 ALORSMo<strong>de</strong>Debug = VraiFINSI Mo<strong>de</strong>Debug ALORSTrace(ChaîneATracer)SINONFichier = fOuvre(..."C:\Trace.txt"+,...foCréationSiInexistant+...foEcriture+ foAjout)SI Fichier -1 ALORSfEcritLigne(Fichier,...DateVersChaîne(DateSys())+..."->"+HeureVersChaîne(...HeureSys())fEcritLigne(Fichier,...ChaîneATracer)fEcritLigne(" ")fFerme(Fichier)FINFINRemarques :•Le fichier <strong>de</strong> trace : "C:\Trace.txt"" est créé pardéfaut. Ce fichier contient les informations àtracer durant l’exécution du programme.Les informations sont <strong>com</strong>plétées par la date etl’heure <strong>de</strong> chaque "Trace". Il est ainsi possible<strong>de</strong> déterminer un éventuel dysfonctionnementdurant le traitement.•Exemple <strong>de</strong> contenu du fichier <strong>de</strong> trace :01/12/2001 - 10:53:25:20Nom <strong>de</strong> client : Martin6 Test <strong>de</strong> performances6.1 PrésentationL'analyseur <strong>de</strong> performances est un outil permettant<strong>de</strong> vérifier et d'optimiser le temps d'exécution<strong>de</strong> votre application.Son principe est simple :Vous testez votre application. Pendant ce test,l'analyseur <strong>de</strong> performances répertorie toutes lesactions effectuées et les traitements correspondantsexécutés.A la fin du test, l'analyseur <strong>de</strong> performances vousprésente :• les 10 manipulations qui ont pris le plus <strong>de</strong>temps• toutes les actions effectuées dans l'applicationtestée, triées par durée (<strong>de</strong> l'action la plus longueà l'action la moins longue).Il est alors possible <strong>de</strong> sélectionner un traitementafin d'analyser les causes <strong>de</strong> son temps <strong>de</strong> traitementpour l'optimiser.• l'onglet "Détails" présente tous les traitementslancés lors du test <strong>de</strong> l'application (classés du6.2 Lancer l’analyseur <strong>de</strong> performancesPour lancer l'analyseur <strong>de</strong> performances, sélectionnezl'option "Projet .. Analyseur <strong>de</strong> performances".Le projet est alors automatiquement exécuté enmo<strong>de</strong> test. Vous pouvez exécuter le traitement àoptimiser dans votre application.Pour revenir sous l'éditeur, il suffit <strong>de</strong> fermer votreapplication.L'analyseur <strong>de</strong> performances affiche alors le résultat<strong>de</strong> l'analyse.Remarque : Il est conseillé d'utiliser l'analyseur <strong>de</strong>performances pour optimiser votre application(avant sa diffusion par exemple).6.3 Lire le résultat <strong>de</strong> l'analyseur <strong>de</strong> performancesL'analyseur <strong>de</strong> performances présente le résultat<strong>de</strong> l'analyse dans <strong>de</strong>ux onglets :• l'onglet "Synthèse" présente les 20 traitementsqui ont pris le plus <strong>de</strong> temps.plus long au plus rapi<strong>de</strong>).Partie 4 : Développement d’applications : concepts avancés 157


Pour chaque traitement, les informations suivantessont affichées :FonctionTemps TotalNb appelsTemps 1appelFonction, traitement ou procédure exécutée.Temps d'exécution <strong>de</strong> la fonction.Nombre d'appels effectués à la fonction(procédure ou traitement).Temps d'exécution d'un appel à la fonction(procédure ou traitement).% co<strong>de</strong> Pourcentage <strong>de</strong> co<strong>de</strong> exécuté hors appelà une fonction WLangage ou à un appeld'une fonction ou une procédure personnelle.Parent Traitement qui a appelé la fonction.Remarque :• Le libellé "Exécution <strong>com</strong>plète" représente letemps <strong>com</strong>plet <strong>de</strong> l’exécution du test <strong>de</strong> l’applicationréalisé avec l’analyseur <strong>de</strong> performances.• Le libellé "Total Fenêtre XXX" représente le temps<strong>com</strong>plet <strong>de</strong> l’exécution <strong>de</strong> la fenêtre XXX (<strong>de</strong> sonouverture à sa fermeture).6.4 Choisir un traitement à optimiserLe choix du traitement à optimiser se fait en fonction<strong>de</strong> plusieurs critères :• le temps d’exécution du traitement. Les traitementsles plus longs doivent bien entendu êtreoptimisés.• le pourcentage <strong>de</strong> temps passé dans le traitement<strong>de</strong> la fonction ou <strong>de</strong> la procédure. Plus cepourcentage est important, plus le co<strong>de</strong> peutcontenir <strong>de</strong>s traitements pouvant être optimisés.Remarque : Si le traitement correspond à une fonctionWLangage, il est relativement difficile <strong>de</strong> l’optimiser.7 Tests <strong>de</strong> non-régression7.1 PrésentationSoucieux <strong>de</strong> la qualité <strong>de</strong>s applications, plusieursoutils <strong>de</strong> tests sont à votre disposition :• Le mo<strong>de</strong> test (Go <strong>de</strong> projet ou Go <strong>de</strong> fenêtre) quipermet <strong>de</strong> tester immédiatement une modificationdans votre application. Ces tests peuventêtre enregistrés en tant que tests automatiques.• L’utilitaire WDTest qui permet par exemple <strong>de</strong>créer <strong>de</strong>s tests <strong>de</strong> validation et <strong>de</strong> non-régressionen WinDev.Pour automatiser ces tests, et augmenter la qualité<strong>de</strong> vos applications, vous pouvez désormais faire<strong>de</strong>s tests unitaires automatiques. Grâce à cestests, il est encore plus simple <strong>de</strong> contrôler toutesles fonctionnalités proposées par vos applications.7.2 Tests automatiquesChaque test est <strong>com</strong>posé d'un scénario directementéditable dans l'interface du produit. Ce scénarioest écrit en WLangage et peut être modifié àn'importe quel moment.Ces tests peuvent être lancés par exemple avantchaque création d'exécutable pour vérifier le bonfonctionnement d'une application après diversesmodifications.Les éléments suivants peuvent être testés :• les fenêtres WinDev.• les collections <strong>de</strong> procédures.• les classes.• les exécutables WinDev.Chaque test est associé à un co<strong>de</strong> WLangage : lescénario du test. Ce scénario est visible sous l'éditeur<strong>de</strong> co<strong>de</strong>. Le co<strong>de</strong> <strong>de</strong>s tests peut être modifié.Les tests et le co<strong>de</strong> associé ne sont pas intégrés àl'exécutable, et ne sont pas livrés en clientèle. Lenombre <strong>de</strong> tests d'une application n'a donc aucuneinci<strong>de</strong>nce sur la taille <strong>de</strong> l'application livrée enclientèle.Pour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne (motclé: "Test automatique").7.3 L’utilitaire WDTestWDTest est un utilitaire permettant d'enregistrer etd'exécuter automatiquement <strong>de</strong>s scripts <strong>de</strong> testd'applications (WinDev ou non WinDev).Un script <strong>de</strong> test (appelé également "macro") contientprincipalement les différentes manipulations(position <strong>de</strong> la souris, clic <strong>de</strong> souris et touche duclavier utilisé) effectuées sur une application.Après avoir été enregistré, le script <strong>de</strong> test peut êtreexécuté à volonté. Lorsqu'un script est exécuté, unscript <strong>de</strong> résultat est automatiquement généré. Lesdifférences existantes entre les <strong>de</strong>ux scripts (scriptd'origine et script <strong>de</strong> résultat) sont signalées.158Partie 4 : Développement d’applications : concepts avancés


Il est ainsi possible par exemple <strong>de</strong> vérifier le fonctionnement<strong>de</strong> vos applications WinDev entre <strong>de</strong>uxmises à jour.WDTest permet donc d'automatiser les procédures<strong>de</strong> test <strong>de</strong> vos applications.Important : Pour effectuer un test avec succès, ilest nécessaire d'utiliser exactement la mêmeconfiguration :• sur le poste où le test est créé• sur le poste sur lequel le test est exécutéPour plus <strong>de</strong> détails, consultez l’ai<strong>de</strong> en ligne (motclé: "WDTest")Partie 4 : Développement d’applications : concepts avancés 159


160Partie 4 : Développement d’applications : concepts avancés


PARTIE 5Installation


Le FrameworkWinDevLe Framework WinDev est l’ensemble <strong>de</strong>s librairies (fichiers .DLL) nécessaires au fonctionnementd’une application WinDev.Lors <strong>de</strong> la création <strong>de</strong> l’exécutable, vous pouvez choisir d’utiliser :• soit le Framework WinDev <strong>com</strong>mun,• soit un Framework personnalisé.Utilisation du Framework WinDev <strong>com</strong>munDans le cas <strong>de</strong> l’utilisation du Framework <strong>com</strong>mun, les librairies sont installées dans unrépertoire <strong>com</strong>mun. Ces librairies sont partagées par toutes les applications WinDev installéessur le même poste.Avantages du Framework <strong>com</strong>mun :• L’espace disque utilisé par le Framework (environ 30 Mo) est mutualisé entre lesapplications.• La mise à jour du Framework ne se fait qu’une fois pour toutes les applications installéesRemarque : Dans le cadre <strong>de</strong> l’utilisation du Framework <strong>com</strong>mun, il est possible <strong>de</strong> remplacerune ou plusieurs DLL (par exemple si une version particulière est nécessaire).Utilisation d’un Framework personnaliséDans le cas <strong>de</strong> l’utilisation d’un Framework personnalisé, les librairies sont installéesdans le répertoire <strong>de</strong> chaque application. De cette façon, chaque application WinDev utilisesa propre version <strong>de</strong>s librairies. Il est également possible <strong>de</strong> renommer les librairiesdans le cas <strong>de</strong> l’utilisation d’un Framework personnalisé.Avantages du Framework personnalisé :• Chaque application peut exploiter une version différente <strong>de</strong>s DLL du Framework.• La mise à jour du Framework d’une application peut être faite sans perturber le fonctionnement<strong>de</strong>s autres applications.• Le Framework peut être renommé.Partie 5 : Installation 163


Les différents mo<strong>de</strong>s d’installationd’une applicationInstallation classiqueL’installation classique consiste à créer un programme d’installation qui sera installé surchaque poste utilisateur grâce à un support d’installation.Ce mo<strong>de</strong> d’installation est <strong>com</strong>patible aussi bien avec :• <strong>de</strong>s fichiers <strong>de</strong> données au format HyperFileSQL Classic installé en local sur le posteutilisateur,• <strong>de</strong>s fichiers <strong>de</strong> données au format HyperFileSQL Classic installé en réseau et accessible<strong>de</strong>puis le poste utilisateur,• <strong>de</strong>s fichiers <strong>de</strong> données au format HyperFileSQL Client/Serveur installé sur un serveur.164Partie 5 : Installation


Installation réseauL’installation réseau consiste à créer un programme d’installation qui sera installé sur unposte Serveur. Tous les postes utilisateur voulant installer l’application, lanceront directementl’installation <strong>de</strong> l’application par le réseau.Si une mise à jour est disponible sur le serveur d’application, la mise à jour <strong>de</strong> l’applicationsur le poste utilisateur sera proposée au lancement <strong>de</strong> l’application.Une installation réseau permet un contrôle fin <strong>de</strong>s postes utilisateurs (versions déployées,mises à jour obligatoires, déconnexion <strong>de</strong>s utilisateurs, etc.)Ce mo<strong>de</strong> d’installation est <strong>com</strong>patible aussi bien avec :• <strong>de</strong>s fichiers <strong>de</strong> données au format HyperFileSQL Classic installés en local sur leposte utilisateur,• <strong>de</strong>s fichiers <strong>de</strong> données au format HyperFileSQL Classic installés en réseau et accessible<strong>de</strong>puis le poste utilisateur,• <strong>de</strong>s fichiers <strong>de</strong> données au format HyperFileSQL Client/Serveur installés sur un serveur.Partie 5 : Installation 165


Installation HTTPL’installation HTTP consiste à créer un programme d’installation qui sera installé sur unServeur Web.Tous les postes utilisateur voulant installer l’application, lanceront directement l’installation<strong>de</strong> l’application par une URL HTTP.Si une mise à jour est disponible sur le serveur Web, la mise à jour <strong>de</strong> l’application sur leposte utilisateur sera proposée au lancement <strong>de</strong> l’application.166Partie 5 : Installation


Installation multi-sitesL’installation multi-sites permet d’installer une application sur plusieurs sites différents(un site représentant par exemple une filiale d’une entreprise).L’installation multi-sites consiste à créer un programme d’installation qui sera installésur un serveur Web.Tous les sites voulant installer l’application lanceront directement l’installation <strong>de</strong> l’applicationpar une URL HTTP. Dans ce cas, le programme d’installation sera alors installé surun poste Serveur du site.Tous les postes utilisateurs voulant installer l’application, lanceront l’installation directementpar le réseau.Cette installation <strong>com</strong>bine les avantages <strong>de</strong> l’installation réseau et <strong>de</strong> l’installation HTTPen permettant un déploiement à gran<strong>de</strong> échelle et un contrôle fin <strong>de</strong>s installations locales.Si une mise à jour est disponible sur le serveur Web, la mise à jour <strong>de</strong> l’application sur leserveur d’application est automatiquement réalisée.Partie 5 : Installation 167


Installation PushL’installation réseau consiste à créer un programme d’installation qui sera installé sur unposte Serveur.L’installation sera effectuée <strong>de</strong>puis le poste Serveur, par l’administrateur réseau sur lespostes Utilisateur sélectionnés grâce à WDAdminExe.Une installation en Push peut ensuite être mise à jour soit en Push, soit dans le cadred’une installation réseau.168Partie 5 : Installation


Déploiement d’une application WinDevLors du développement d'une application, une <strong>de</strong>sphases importantes consiste à déployer cette applicationsur les postes <strong>de</strong>s utilisateurs.WinDev optimise ce déploiement en offrant unlarge choix :• dans les supports d'installation.• dans les outils disponibles pour créer le programmed'installation.• dans les différents mo<strong>de</strong>s d'installation disponibles(installation monoposte ou réseau).Ce chapitre décrit rapi<strong>de</strong>ment les différents typesd’installation proposés par WinDev et leurs spécificités.Pour plus <strong>de</strong> détails sur la création du programmed’installation, consultez l’ai<strong>de</strong> en ligne.1 Installation : Tableau récapitulatif1.1 Support d’installationEn fonction du support d'installation utilisé (Internet,Réseau interne, …), WinDev offre plusieursmo<strong>de</strong>s <strong>de</strong> génération <strong>de</strong> l'installation.Pour optimiser votre installation, choisissez lemo<strong>de</strong> <strong>de</strong> génération conseillé.Mo<strong>de</strong>s <strong>de</strong> génération <strong>de</strong> l'installation proposés par WinDevExécutableAuto-ExtractibleRépertoiresà la taille <strong>de</strong>disquettesRépertoireuniqueCD ROMDVD ROMSupportsd'installationInternetCD ROM /DVD ROMRéseauinterneX (conseillé)XX (conseillé)Autorun possibleX X (conseillé) XPartie 5 : Installation 169


1.2 Outils pour créer le programme d'installationDifférents outils sont disponibles pour créer le programmed'installation, le maintenir et le personnaliser.AssistantWDINST, éditeurd'installationPersonnalisation <strong>de</strong>WDSETUPCréer un programme d'installationstandard (en français etanglais par défaut)Maintenir un programme d'installationX (conseillé)XXXPersonnaliser un programmed'installation (le programme quiest lancé chez le client)XX(installation multilinguepar exemple)Mo<strong>de</strong> <strong>de</strong> lancementOption "Atelier.. Créer la procédured’installation"Option "Outils ..WDINST"Projet WDSETUP disponibledans le sous-répertoire"Exemples" durépertoire d'installation <strong>de</strong>WinDev.1.3 Les différents types d'installationDeux types d'installations sont disponibles dansWinDev :• Installation autonome : conseillée pour les applicationsmonopostes.Le programme d'installation installe l'applicationdirectement sur le poste utilisateur.• Installation "réseau avec gestion <strong>de</strong>sutilisateurs" : conseillée pour les applicationsmulti-postes.L'installation est réalisée en <strong>de</strong>ux étapes :•L'application <strong>de</strong> référence est installée sur leserveur. L'application <strong>de</strong> référence correspondau programme d'installation <strong>de</strong> l'application surles postes utilisateur.•L'application finale est installée sur chaqueposte utilisateur, en exécutant le programmed'installation présent sur le serveur. Les misesà jour seront ensuite effectuées automatiquementlorsque l'application <strong>de</strong> référence évoluerasur le serveur.2 Création du programme d’installationDifférents types d’installation sont possibles :• Installation standardLe programme d’installation est indépendant <strong>de</strong>l’application. Tous les fichiers nécessaires àl’application sont installés sur chacun <strong>de</strong>s postesutilisateurs. Pour prendre en <strong>com</strong>pte une mise àjour, cette mise à jour doit être exécutée sur chacun<strong>de</strong>s postes utilisateurs.• Installation <strong>com</strong>pacteUne installation standard est effectuée. Cependant,le programme d'installation est moinsimportant en taille car il n'utilise pas <strong>de</strong> DLL spécifiques,et certaines options <strong>de</strong> personnalisationne sont pas disponibles.•Installation par un package MSIUne installation standard utilisant les fonctionnalités<strong>de</strong> l’installateur intégré <strong>de</strong> Windows esteffectuée.170Partie 5 : Installation


• Installation avec mise à jour automatique (installationréseau)Cette installation permet <strong>de</strong> :•gérer la mise à jour automatique <strong>de</strong> l'applicationinstallée en réseau.•connaître les caractéristiques <strong>de</strong>s utilisateursconnectés à l'application à un moment donné.•paramétrer l'emplacement <strong>de</strong>s fichiers nécessairesà l'application. Il est possible <strong>de</strong> gérer différentscas, par exemple :-Installation <strong>de</strong> tous les fichiers <strong>de</strong> l'applicationsur le serveur.- Installation <strong>de</strong> la base <strong>de</strong> données sur le serveuret <strong>de</strong>s fichiers nécessaires à l'exécution<strong>de</strong> l'application (".EXE", ".WDL", ".DLL", ...) surchaque poste utilisateur.-Installation d'une partie <strong>de</strong> la base <strong>de</strong> donnéessur le serveur et d'une autre partie surchaque poste utilisateur. Les fichiers nécessairesà l'exécution <strong>de</strong> l'application (".EXE",".WDL", ".DLL", ...) sont également installéssur chaque poste utilisateur.• Installation avec mise à jour automatique (installationréseau en mo<strong>de</strong> PUSH)Cette installation permet en plus <strong>de</strong> l’installationréseau <strong>de</strong> :•déployer une nouvelle application sur unréseau <strong>de</strong>puis un unique poste d’administration.•déployer une mise à jour <strong>de</strong> l’application sur unréseau <strong>de</strong>puis un unique poste d’administration.2.1 Créer un programme d’installationPour créer un programme d'installation permettant<strong>de</strong> :• déployer une application WinDev, il est possible :•soit d'utiliser l’assistant <strong>de</strong> création du programmed’installation directement <strong>de</strong>puis Win-Dev (option "Atelier .. Créer la procédured'installation"). Cet assistant permet <strong>de</strong> créerfacilement les différents types <strong>de</strong> programmed'installation.•soit d'utiliser l’éditeur d’installation WDINST(option "Outils .. WDINST - Éditeur d'installation").Cet éditeur permet <strong>de</strong> personnaliserentièrement le programme d'installation.• fournir d'autres fichiers, il est nécessaire d'utiliserl’assistant <strong>de</strong> création du programme d’installationlancé <strong>de</strong>puis l'éditeur d'installationWDINST (option "Fichier .. Nouveau" <strong>de</strong>puisWDINST).Rappel: Pour lancer l'éditeur d'installationWDINST, sélectionnez l'option "Outils .. WDINST -Éditeur d'installation".2.2 Installer une application WinDevInstallation standard, <strong>com</strong>pacte ouMSIPour installer votre application, il suffit <strong>de</strong> lancer leprogramme d'installation <strong>de</strong> l'application sur leposte utilisateur. Les fichiers nécessaires à l'applications'installent dans le répertoire d'installationspécifié.Pour installer une mise à jour <strong>de</strong> votre application,il suffit <strong>de</strong> lancer le programme d'installation <strong>de</strong> lamise à jour sur le poste utilisateur. Les fichiers <strong>de</strong>l'application modifiés par la mise à jour sont remplacés.Installation avec mise à jour automatiquePour installer votre application :1. Lancez votre programme d'installation sur leposte serveur. Les fichiers nécessaires à l'application<strong>de</strong> référence s'installent dans le répertoired'installation spécifié. L'application <strong>de</strong> référencecorrespond à un programme d'installation client.2. Exécutez le programme d'installation client àpartir <strong>de</strong> chaque poste utilisateur. Les fichiersnécessaires à l'application client sont installésdans le répertoire d'installation spécifié.Pour installer une mise à jour <strong>de</strong> votre application :1. Lancez votre mise à jour d'installation sur leposte serveur. Les fichiers <strong>de</strong> l'application <strong>de</strong> référencemodifiés par la mise à jour sont remplacés. Ilest possible <strong>de</strong> sauvegar<strong>de</strong>r ces fichiers remplacés.2. Lors du lancement <strong>de</strong> l'application <strong>de</strong>puis leposte d'un utilisateur, la mise à jour <strong>de</strong> l'applicationest automatiquement proposée.Installation avec mise à jour automatiqueen mo<strong>de</strong> PUSHPour installer votre application en mo<strong>de</strong> PUSH :1. Lancez votre programme d'installation sur leposte serveur. Les fichiers nécessaires à l'application<strong>de</strong> référence s'installent dans le répertoired'installation spécifié. L'application <strong>de</strong> référencecorrespond à un programme d'installation client.2. Le programme d’administration <strong>de</strong>s applicationsréseau se lance automatiquement.3. Sélectionnez le poste du réseau sur lequel l’installationdoit être effectuée.Partie 5 : Installation 171


Pour installer une mise à jour <strong>de</strong> votre applicationen mo<strong>de</strong> PUSH :1. Lancez votre mise à jour d'installation sur leposte serveur. Les fichiers <strong>de</strong> l'application <strong>de</strong> référencemodifiés par la mise à jour sont remplacés. Ilest possible <strong>de</strong> sauvegar<strong>de</strong>r ces fichiers remplacés.2. Lancez le programme d’administration <strong>de</strong>s applicationsréseau.3. Sélectionnez le poste du réseau sur lequel lamise à jour doit être effectuée.172Partie 5 : Installation


Surveillez vosapplicationsUne application dépend souvent <strong>de</strong> nombreux paramètres extérieurs : site Web, ServeurHyperFileSQL, réseau, ... Pour optimiser la gestion <strong>de</strong>s inci<strong>de</strong>nts, WinDev propose d’utiliserun robot <strong>de</strong> surveillance.Composé <strong>de</strong> trois exécutables lancés sur différents postes, le robot <strong>de</strong> surveillance permetd’exécuter différents tests : vérification <strong>de</strong> la connectivité Internet, tests réseau, ...En cas <strong>de</strong> problèmes lors du passage d’un test, le robot <strong>de</strong> surveillance peut vous avertir<strong>de</strong> différentes façons :• Message envoyé dans la messagerie PC SOFT (WDBAL).• Email• Exécution d’un programme tiers.De plus, une alerte sonore peut être mise en place sur le moniteur.Partie 5 : Installation 173


174Partie 5 : Installation


PARTIE 6Communication


Gestion <strong>de</strong>semailsWinDev permet <strong>de</strong> gérer les emails grâce à plusieurs métho<strong>de</strong>s :• les protocoles POP3 ou IMAP et SMTP (métho<strong>de</strong> la plus courante)• l'API "Simple Mail API (appelé aussi SMAPI ou Simple MAPI)"Protocoles POP3 ou IMAP et SMTPCes protocoles sont les standards Internet pour la gestion <strong>de</strong>s emails. Ils sont normaliséspar les documents RFC 1939, 3501 et 5321. Ces protocoles vous permettent <strong>de</strong> dialoguerdirectement avec le serveur, disponible chez votre fournisseur d’accès.• POP3 (Post Office Protocol) est un protocole <strong>de</strong> lecture d’emails.• IMAP (Internet Message Access Protocol) est un protocole <strong>de</strong> lecture d’emails à distance.• SMTP (Simple Mail Transfer Protocol) est un protocole d’envoi d’emails.Partie 6 : Communication 177


API "Simple Mail API (appelé aussi SMAPI ou Simple MAPI)"Ce mo<strong>de</strong> <strong>de</strong> gestion <strong>de</strong>s emails est utilisé par la plupart <strong>de</strong>s applications Microsoft etprincipalement MS Exchange.178Partie 6 : Communication


Transfert <strong>de</strong> fichierspar FTPLe FTP (File Transfer Protocol) est un protocole <strong>de</strong> transfert <strong>de</strong> fichiers d'un site vers unautre site distant. Ce protocole permet d'échanger <strong>de</strong>s fichiers par TCP/IP ou Internet.Principe d’utilisationPour manipuler <strong>de</strong>s fichiers sur un serveur FTP <strong>de</strong>puis une application WinDev, il est nécessaire<strong>de</strong> suivre les règles suivantes :1. Connexion à un serveur FTP (fonction FTPConnecte).2. Transmission et récupération <strong>de</strong>s fichiers (selon le mo<strong>de</strong> <strong>de</strong> connexion établi). En cas<strong>de</strong> connexion passive, l'application WinDev doit <strong>de</strong>man<strong>de</strong>r l'autorisation au serveur FTPavant chaque manipulation <strong>de</strong> fichiers sur le serveur. Il est également possible <strong>de</strong> :• obtenir <strong>de</strong>s caractéristiques sur <strong>de</strong>s fichiers présents sur un serveur FTP : attributs,taille, ...• manipuler <strong>de</strong>s fichiers présents sur un serveur FTP : création, suppression, ...• lister les fichiers d'un répertoire présent sur un serveur FTP en lançant une procédureeffectuant un traitement pour chaque fichier trouvé.Partie 6 : Communication 179


3. Fermeture <strong>de</strong> la connexion avec le serveur (fonction FTPDéconnecte).180Partie 6 : Communication


Gestion <strong>de</strong>ssocketsWinDev met à votre disposition <strong>de</strong>s fonctions qui permettent <strong>de</strong> réaliser une gestionavancée <strong>de</strong>s sockets.Une socket est une ressource <strong>de</strong> <strong>com</strong>munication utilisée par les applications pour dialoguerd'une machine à une autre sans se soucier du type <strong>de</strong> réseau.Ce mo<strong>de</strong> <strong>de</strong> <strong>com</strong>munication peut par exemple être utilisé pour établir une <strong>com</strong>municationentre <strong>de</strong>s postes reliés par Internet.Différentes possibilitésUne application WinDev peut gérer les sockets selon différents mo<strong>de</strong>s :• Application WinDev Cliente : l'application se connecte à un serveur quelconque etéchange <strong>de</strong>s données par une socket.• Application WinDev "Serveur simplifié" : l'application WinDev est un serveur, échangeant<strong>de</strong>s informations par une socket avec un seul poste client.• Application WinDev "Serveur standard" : l'application WinDev est un serveur, échangeant<strong>de</strong>s informations par sockets avec plusieurs postes client quelconques.Principe d’une application clienteUne application cliente d'un serveur <strong>de</strong> sockets se connecte à un serveur quelconquepour échanger <strong>de</strong>s informations par l'intermédiaire d'une socket.Exemple : Une application WinDev cliente peut se connecter à un serveur <strong>de</strong> news standardsur Internet.Etape 1 : Connexion au serveurPour se connecter à une socket du serveur, utilisez la fonction SocketConnecte. Cettefonction permet d'effectuer une <strong>de</strong>man<strong>de</strong> <strong>de</strong> connexion au serveur. La socket est i<strong>de</strong>ntifiéepar son port et par son adresse.Etape 2 : Échange <strong>de</strong> donnéesLorsque <strong>de</strong>ux postes ont connecté leur socket, un flux <strong>de</strong> <strong>com</strong>munication s'établit entreces <strong>de</strong>ux postes. Il est alors possible pour ces <strong>de</strong>ux postes <strong>de</strong> lire et d'écrire <strong>de</strong>s chaînes<strong>de</strong> caractères sur la socket.Pour lire et écrire sur la socket du poste serveur, l'application cliente WinDev doit utiliserles fonctions SocketLit et SocketEcrit.Etape 3 : Fin <strong>de</strong> la <strong>com</strong>municationPour terminer la <strong>com</strong>munication, il suffit <strong>de</strong> fermer la socket <strong>de</strong>puis le poste client avecla fonction SocketFerme.Partie 6 : Communication 181


Les différentes étapes peuvent être représentées <strong>de</strong> la façon suivante :Remarque : les fonctions SocketXXX permettent aussi <strong>de</strong> gérer <strong>de</strong>s sockets sécuriséesselon le protocole SSL. Il faut pour cela utiliser les fonctions SocketCréeSSL et Socket-ConnecteSSL.182Partie 6 : Communication


WinDev etla téléphonieWinDev permet <strong>de</strong> gérer simplement les appels téléphoniques entrants et sortants grâceaux fonctions WLangage <strong>de</strong> téléphonie. Ces fonctions permettent par exemple <strong>de</strong> gérerune boîte vocale, un répon<strong>de</strong>ur, ... directement dans une application WinDev.Configuration nécessaire :Pour pouvoir utiliser les fonctionnalités <strong>de</strong> la téléphonie, il est nécessaire <strong>de</strong> possé<strong>de</strong>r :• un mo<strong>de</strong>m.Pour enregistrer et jouer <strong>de</strong>s enregistrements, ce mo<strong>de</strong>m doit gérer la voix.Pour avoir les caractéristiques <strong>de</strong> la personne qui appelle, le mo<strong>de</strong>m doit possé<strong>de</strong>rl'option "Notification du numéro appelant" (caller Id).• le protocole Tapi 2.0.Remarque : Cette technologie est utilisable sur tous les systèmes, cependant, il estnécessaire :• si le système utilisé est Windows NT4, d'installer le service pack 4 minimum,• si le système est Windows 95, <strong>de</strong> mettre à jour le système (mise à jour disponible àl'adresse ftp://ftp.microsoft.<strong>com</strong>/<strong>de</strong>velopr/tapi/tapi2195.zip).(note : adresse vali<strong>de</strong> à la date <strong>de</strong> rédaction <strong>de</strong> cette documentation)Partie 6 : Communication 183


LesWebservicesWinDev vous permet d’utiliser très simplement <strong>de</strong>s Webservices (ou services Web XML).Un Webservice est une application disponible sur le web et à laquelle on accè<strong>de</strong> en utilisantle protocole SOAP (Simple Object Access Protocol).Toute application WinDev peut utiliser un Webservice existant. Pour cela, il suffit <strong>de</strong> connaîtrel’adresse du Webservice, et d’importer sa <strong>de</strong>scription dans l’application.Remarque : il est également possible d’exposer une ou plusieurs collections <strong>de</strong> procéduresd’une application WinDev sous la forme d’un Webservice. Il faut pour cela créer uneconfiguration <strong>de</strong> projet dédiée à cet usage, générer le Webservice et le déployer sur unServeur d’Application WebDev.184Partie 6 : Communication


PARTIE 7Annexes


Composants livrésavec WinDevWinDev est livré en standard avec <strong>de</strong> nombreux <strong>com</strong>posants. Ces <strong>com</strong>posants sont livrésavec leurs sources et avec un exemple d’utilisation.Voici la liste <strong>de</strong>s principaux <strong>com</strong>posants livrés avec WinDev :Nom du <strong>com</strong>posantAfficheImageAgentAi<strong>de</strong> furtiveArbre en saisieBalloon tipCalcul statistiquesHyperFileSQLCo<strong>de</strong>s postaux FranceCommunicationConnexion SQLDerniers documentsDiagramme GanttEcran TactileDescriptionPermet d’annoter une image (Hard copy par exemple). Il est possibled’insérer du texte, <strong>de</strong>s traits, etc.Permet <strong>de</strong> gérer un Agent (ou Compagnon).Permet d'afficher <strong>de</strong>s informations temporaires à l'utilisateur sansperturber son travail.Permet <strong>de</strong> renommer directement les différents éléments d’unchamp Arbre.Permet <strong>de</strong> gérer l'affichage d'une BalloonTip (bulle d’ai<strong>de</strong> avancée,affichée au-<strong>de</strong>ssus <strong>de</strong> la barre <strong>de</strong>s tâches).Permet <strong>de</strong> maintenir les statistiques d'in<strong>de</strong>x HyperFileSQL à joursans programmation.Permet la recherche et la sélection d’une ville sans modifier l’analyse.Permet <strong>de</strong> faire <strong>com</strong>muniquer <strong>de</strong>ux applications distinctes. Ces <strong>de</strong>uxapplications peuvent être :- soit sur <strong>de</strong>s postes distants. La <strong>com</strong>munication est effectuée viasockets.- soit sur le même poste. La <strong>com</strong>munication est effectuée grâce auxmessages Windows.Se charge d'effectuer la connexion à la base <strong>de</strong> données, via les informationsque l’utilisateur fournira lors <strong>de</strong> l’affichage d'une fenêtre<strong>de</strong> paramétrage <strong>de</strong> la connexion.Permet <strong>de</strong> proposer une option <strong>de</strong> menu permettant d’ouvrir les <strong>de</strong>rniersdocuments ouverts dans l’application.Permet <strong>de</strong> créer un diagramme <strong>de</strong> Gantt à partir d’une liste <strong>de</strong>s tâches.Ce <strong>com</strong>posant permet l’interfaçage d’un clavier tactile pouvant remplacerle clavier standard. Ce clavier permet par exemple d’utiliserune application WinDev sur un poste ne disposant pas <strong>de</strong> clavier.Partie 7 : Annexes 187


Email Saisie assistéeAssiste la saisie <strong>de</strong> l’utilisateur pour enregistrer un email.Envoi d’Email Permet <strong>de</strong> :- créer <strong>de</strong>s messages prédéfinis pour <strong>de</strong>s envois ultérieurs- créer <strong>de</strong>s contacts et <strong>de</strong>s listes <strong>de</strong> <strong>de</strong>stinataires- créer <strong>de</strong>s messages et envoyer <strong>de</strong>s emailsEnvoi <strong>de</strong> SMSExplorer barExtractionFaxFile impressionGestion LoginGestion LogsGlossaireInfoSystemeCe <strong>com</strong>posant permet l'envoi <strong>de</strong> SMS à partir d'une connexion internetsimple.Permet <strong>de</strong> gérer une barre d'adresse similaire à la barre d'adresse <strong>de</strong>l'explorateur <strong>de</strong> Windows Vista.Ce <strong>com</strong>posant permet d'extraire et <strong>de</strong> stocker le contenu <strong>de</strong> diversdocuments (Open Office, Word 2007, ...) afin <strong>de</strong> les retrouver grâceà la recherche fulltext.Permet <strong>de</strong> gérer l’édition et l’envoi <strong>de</strong> fax (fonctionne uniquementsous Windows 2000 et Windows XP).Détermine la liste <strong>de</strong>s imprimantes les moins sollicitées pour effectuerun ou plusieurs travaux d'impression.Centralise la gestion <strong>de</strong>s utilisateurs et <strong>de</strong> leurs mots <strong>de</strong> passe.Permet <strong>de</strong> définir, pour une application, un paramétrage <strong>de</strong>s logsd'exécution :- nombre <strong>de</strong> fichiers <strong>de</strong> log qui doivent être conservés,- taille maximale par fichier <strong>de</strong> log,- informations qui doivent être logguées.Cet exemple simule différents traitements pour observer la gestion<strong>de</strong>s fichiers <strong>de</strong> logs (fichiers .wlog).Permet <strong>de</strong> classer et <strong>de</strong> conserver <strong>de</strong>s formulations écrites qu'unclient réutilise régulièrement.Il est ainsi possible <strong>de</strong> proposer en permanence au client un accès àun "Glossaire" qu'il personnalise aisément. Toutes les entrées duglossaire peuvent être classées en catégories arborescentes.Propose trois catégories <strong>de</strong> fonctions permettant <strong>de</strong> rassembler lesinformations sur le poste en cours, l'utilisateur et le réseau auquelest connecté le poste en cours.JournalEvenement Permet <strong>de</strong> :- Lister et lire les événements enregistrés dans le journal <strong>de</strong>s événements<strong>de</strong> Windows.- Ajouter un événement dans le journal <strong>de</strong>s événements <strong>de</strong> Windows.JoursFériés Permet <strong>de</strong> :- Afficher un calendrier et <strong>de</strong> sélectionner une date.- Gérer les jours fériés dans un calendrier.188Partie 7 : Annexes


Le Saviez VousPermet d'afficher <strong>de</strong>s trucs et astuces à partir <strong>de</strong>s diverses sources(Astuces prédéfinies dans le co<strong>de</strong> ou à partir d'un fichier).Limitations Permet <strong>de</strong> limiter une application par différents moyens :- Limitation <strong>de</strong> durée (Application limitée à 30 jours)- Limitation à 1 poste (Application n'a le droit <strong>de</strong> s'exécuter que surun seul poste)- Limitation du nombre d'utilisateurs (Une application ne peut pasêtre exécutée par plus <strong>de</strong> n utilisateurs)ListeGraphiqueModèle impressionMoteur <strong>de</strong> recherchePermet <strong>de</strong> gérer une liste graphique dans une fenêtre interne.Permet <strong>de</strong> gérer <strong>de</strong>s profils d'impression.Permet d’in<strong>de</strong>xer <strong>de</strong>s documents (texte, vidéos, sons, …) selon uni<strong>de</strong>ntifiant géré par l’utilisateur (pouvant provenir d’un fichier <strong>de</strong> donnéesHyperFileSQL, …) et <strong>de</strong>s mots-clés (texte contenu dans un document,nom <strong>de</strong> fichier, …).Il permet également d’effectuer <strong>de</strong>s recherches sur les documentsainsi in<strong>de</strong>xés et <strong>de</strong> générer <strong>de</strong>s statistiques d’in<strong>de</strong>xation (mots-clésinutilisés, nombre <strong>de</strong> documents par mots-clés, …).Paiement sécurisé Permet d’effectuer <strong>de</strong>s transactions bancaires en ligne, telles que :- faire une <strong>de</strong>man<strong>de</strong> <strong>de</strong> prélèvement par carte bancaire- effectuer un remboursement par carte bancaire- annuler une transaction bancaire- faire une <strong>de</strong>man<strong>de</strong> d’autorisation <strong>de</strong> prélèvement- ...Pays du mon<strong>de</strong>PhotocopieurRecherche RTFSaisie assistée <strong>de</strong>répertoireScannerContient la liste <strong>de</strong> tous les pays du mon<strong>de</strong>, et certainesinformations :- co<strong>de</strong> ISO <strong>de</strong> chaque pays- liste <strong>de</strong>s régions, états ou pays constituant un pays (avec le décalagehoraire pour chaque état, région ou pays)- décalage horaire (GMT)- monnaie principale du pays- principales langues parlées- drapeau <strong>de</strong> chaque pays- capitale- indicatif téléphoniquePermet <strong>de</strong> réaliser <strong>de</strong>s photocopies <strong>de</strong> documents à l’ai<strong>de</strong> d’un scanneret d’une imprimante.Permet d'effectuer tout type <strong>de</strong> recherches dans un champ RTF.Permet d’assister la saisie d’un chemin <strong>de</strong> répertoire ou <strong>de</strong> fichierdans un champ <strong>de</strong> saisie.Permet <strong>de</strong> numériser un document à l’ai<strong>de</strong> d’une interface intuitive.Partie 7 : Annexes 189


SélecteursSignatureSimplexeSOAP GMTSocket ClientSocket ServeurTable EtendueRegroupe tous les sélecteurs disponibles en WLangage. Chaque sélecteurmémorise automatiquement le <strong>de</strong>rnier chemin sélectionnédans la base <strong>de</strong> registres. Ceci évite à l’utilisateur <strong>de</strong> re-parcourirtous les dossiers à la recherche du ou <strong>de</strong>s fichiers/répertoires qu’ilsouhaite sélectionner.Permet d'intégrer facilement dans vos applications WinDev unchamp 'Signature' prêt à l'emploi. Ce champ est notamment très pratiquepour les applications qui sont <strong>de</strong>stinées à <strong>de</strong>s terminaux tactiles,TabletPC sous Windows XP, bornes interactives, ...Permet <strong>de</strong> réaliser <strong>de</strong>s calculs à partir <strong>de</strong> l’algorithme du Simplexe.Permet <strong>de</strong> récupérer l’heure et la date système d’un poste distantgrâce au protocole SOAP.Simplifie l’utilisation <strong>de</strong>s fonctions <strong>de</strong> serveur <strong>de</strong> socket. Ce <strong>com</strong>posantgère la connexion à un serveur. Seul le dialogue avec le serveurreste à votre charge.Simplifie l’utilisation <strong>de</strong>s fonctions <strong>de</strong> serveur <strong>de</strong> socket. Ce <strong>com</strong>posantgère le lancement du serveur et l’acceptation <strong>de</strong>s connexionsclientes. Seul le dialogue avec les applications clientes reste à votrecharge.Egalement appelées "TableView", les tables étendues permettentd'afficher <strong>de</strong>s informations hiérarchiques dans une table. Ces tablesétendues sont souvent utilisées dans les logiciels <strong>de</strong> messageriepour lister, par exemple, les messages et leurs réponses, ainsi que ladate, l'heure et l'auteur <strong>de</strong>s messages.WIFI Permet <strong>de</strong> :- lister les cartes réseaux disponibles sur le poste en cours- lister les réseaux WIFI disponibles- connaître la qualité du signal WIFI- récupérer <strong>de</strong>s informations sur une connexion WIFI établieZone mémoirePermet <strong>de</strong> visualiser dans une fenêtre le contenu entier d’une zonemémoire. Permet également <strong>de</strong> modifier et d’ajouter <strong>de</strong>s valeursdans la zone mémoire.Deux sous-répertoires sont spécifiques à chacun <strong>de</strong> ces exemples :•le sous-répertoire "-Exemple" contient un exemple <strong>de</strong> projet utilisantle <strong>com</strong>posant,•le sous-répertoire "-<strong>Source</strong>" contient le projet du <strong>com</strong>posant.Des <strong>com</strong>posants supplémentaires seront livrés avec la Lettre du Support Technique(LST) ou disponibles sur notre site (<strong>www</strong>.<strong>pcsoft</strong>.fr).190Partie 7 : Annexes


Exemples livrésavec WinDevLes exemples livrés avec WinDev présentent <strong>de</strong> manière didactique les différentes fonctionnalités<strong>de</strong> WinDev.Leur co<strong>de</strong> source est <strong>com</strong>menté et détaillé.Ces exemples sont présents dans le sous-répertoire "Exemples" du répertoire d'installation<strong>de</strong> WinDev et peuvent être ouverts directement <strong>de</strong>puis le volet "Assistants, Exempleset Composants".Différents types d'exemples sont livrés avec WinDev :•Exemples <strong>com</strong>plets : ces exemples correspon<strong>de</strong>nt à <strong>de</strong>s applications <strong>com</strong>plètes, quipeuvent être utilisées sans adaptation.•Exemples didactiques : ces exemples illustrent une fonctionnalité spécifique.Voici les fonctionnalités <strong>de</strong> quelques exemples livrés avec WinDev.Exemples <strong>com</strong>pletsCRMGestion CommercialeWD Active Directory DotNetWD Album HTMLWD Calculette EuroWD Client <strong>de</strong> la messagerieWD ComptabilitéWD Congés et RTTWD DictaphonePermet <strong>de</strong> gérer <strong>de</strong>s clients, d'établir <strong>de</strong>s <strong>com</strong>man<strong>de</strong>s et <strong>de</strong>s<strong>de</strong>vis, et <strong>de</strong> gérer une liste <strong>de</strong> tâches et un planning.Cette application est <strong>com</strong>posée <strong>de</strong> 5 projets permettant <strong>de</strong>gérer tous les aspects d’une gestion <strong>com</strong>merciale (clients,fournisseurs, produits, stock).Permet la visualisation du contenu d'un Active Directory.Permet <strong>de</strong> générer un album photo HTML.Présente la conversion multi-<strong>de</strong>vise grâce à une calculette.Messagerie utilisant les fonctionnalités RPC <strong>de</strong> WinDev pourle dialogue avec le serveur <strong>de</strong> messages. Cet exemple est associéà l’exemple "WD Serveur <strong>de</strong> la messagerie".Utilise <strong>de</strong>s filtres et <strong>de</strong>s requêtes.Propose également une utilisation particulière <strong>de</strong>s états : lesétats sur table.Gestion <strong>com</strong>plète <strong>de</strong>s congés et <strong>de</strong>s RTT <strong>de</strong>s collaborateursd'une société.Chaque utilisateur dispose d’un tableau <strong>de</strong> bord <strong>de</strong> l’état <strong>de</strong>ses congés et RTT.Propose les fonctionnalités d'un magnétophone. Il permetd'enregistrer un son au format "WAV" et <strong>de</strong> le réécouter.Partie 7 : Annexes 191


WD Editeur RTFPermet d'éditer du texte avec mise en forme RTF.WD Emprunt Permet <strong>de</strong> simuler <strong>de</strong>s emprunts et notamment <strong>de</strong> :- calculer le montant <strong>de</strong>s mensualités à partir du montant empruntédonné- calculer le montant empruntable à partir d'une mensualitédonnée- calculer le rapport d'un placement à partir d'un apport mensuelPour chaque cas, il est possible d'imprimer le tableau d'amortissementcorrespondant à vos paramètres.WD Frais <strong>de</strong> portWD Génération <strong>de</strong> donnéesWD Gestion ContactsWD Gestion <strong>de</strong> <strong>com</strong>man<strong>de</strong>sWD Gestion <strong>de</strong> parc informatiqueWD Gestionnaire <strong>de</strong> tâchesDOTNETWD GraveurGère les calculs <strong>de</strong> frais <strong>de</strong> port <strong>de</strong> colis.Génère <strong>de</strong>s données <strong>de</strong> tests pour vos applications. Ces donnéessont stockées dans <strong>de</strong>s fichiers <strong>de</strong> données externes àl'application.Pour manipuler ces fichiers <strong>de</strong> données, il n'est pas nécessaired'associer une analyse au projet.Permet <strong>de</strong> gérer <strong>de</strong>s contacts et <strong>de</strong> leur envoyer <strong>de</strong>s emails.Il est également possible <strong>de</strong> synchroniser ces contacts avecceux présents sur le terminal mobile relié au PC, et avec ceux<strong>de</strong> OutlookGestion <strong>de</strong> <strong>com</strong>man<strong>de</strong>s/factures simplifiée.Permet <strong>de</strong> :- créer/modifier/supprimer un produit,- créer/modifier/supprimer un client,- contacter un client par email,- voir l'historique <strong>de</strong>s actions effectuées auprès d'un client,- effectuer une <strong>com</strong>man<strong>de</strong>, imprimer un bon <strong>de</strong> <strong>com</strong>man<strong>de</strong>,- facturer une <strong>com</strong>man<strong>de</strong>, imprimer une facture, envoyerautomatiquement une facture au client par email au formatPDF.Permet <strong>de</strong> gérer un parc informatique.Pour chaque poste du parc, ses caractéristiques, ses <strong>com</strong>posantset ses utilisateurs peuvent être définis.Ces fonctionnalités sont mises en œuvre grâce à l'utilisation<strong>de</strong> requêtes, d'états et <strong>de</strong> <strong>com</strong>bos.Permet <strong>de</strong> lister les applications et les processus grâce à <strong>de</strong>sfonctions .NET.Permet d'effectuer différents traitements sur les applicationset sur les processus.Permet <strong>de</strong> graver <strong>de</strong>s CD Audio et <strong>de</strong>s CD <strong>de</strong> données, DVDou disques Blue-Ray.192Partie 7 : Annexes


WD Graveur LiteWD JaugeFTPWD LDAP ExploreurWD Lecteur RSSWD LoupeWD MailWD Messagerie instantanéeWD MotDePassePermet <strong>de</strong> graver <strong>de</strong>s CD <strong>de</strong> données, DVD ou disques Blue-Ray.Présente l’utilisation d’une fenêtre interne pour avoir une jaugeavancée.Permet <strong>de</strong> visualiser le contenu <strong>de</strong> tout annuaire LDAP et <strong>de</strong>modifier les données LDAP.Présente l’utilisation <strong>de</strong> classes permettant <strong>de</strong> lire <strong>de</strong>s fluxRSSPermet <strong>de</strong> zoomer une partie <strong>de</strong> l’écran grâce à une loupe visuelle.Il est possible <strong>de</strong> zoomer jusqu'à 8 fois.Cette application est un client mail <strong>com</strong>plet développé enWinDev. Il s'appuie sur les objets Email. Ce client mail permet<strong>de</strong> récupérer et d'envoyer <strong>de</strong>s emails en utilisant les protocolesPOP, IMAP et SMTP.Présente les différentes fonctions <strong>de</strong> gestion <strong>de</strong>s socketsavec WinDev.Présente un "coffre" à mot <strong>de</strong> passe. Il peut être utilisé pourgérer les mots <strong>de</strong> passe créés lors <strong>de</strong> l’utilisation <strong>de</strong> sites Internetmais également dans <strong>de</strong>s applications ou <strong>de</strong>s mots <strong>de</strong>passe <strong>de</strong> la vie courante (digico<strong>de</strong>s, co<strong>de</strong>s <strong>de</strong> cartes bancaires,etc.) .WD Multimédia Permet <strong>de</strong> lire et <strong>de</strong> jouer :- <strong>de</strong>s vidéos (AVI, MPEG...),- <strong>de</strong>s fichiers sons (MP3, WAV),- <strong>de</strong>s CD Audio,- <strong>de</strong>s animations Flash.WD Outlook Permet <strong>de</strong> lire et écrire dans les dossiers <strong>de</strong> Outlook :- Messagerie- Calendrier- Contacts- Tâches.Cet exemple est conçu pour fonctionner avec la version standard<strong>de</strong> Outlook livrée avec Office.WD PlanningWD Proxy HTTPPermet <strong>de</strong> réaliser un planning graphique <strong>com</strong>portant <strong>de</strong>s zonesclicables.Cet exemple est un proxy HTTP simplifié. Il est possible d'enregistrerles connexions et <strong>de</strong> connaître les pages consultées.Partie 7 : Annexes 193


WD ProxyPOP3WD PuzzleWD Recherche sur InternetWD Répon<strong>de</strong>ur TéléphoniqueCet exemple présente un proxy POP3. Un proxy est un logicielqui se connecte à un serveur à la place d'un autre. Dans cetexemple, le proxy est utilisé pour archiver automatiquementdans une base Hyper File les emails récupérés.Montre <strong>com</strong>ment utiliser les fonctions Drag&Drop (Glisser &Déposer) ainsi que les fonctions <strong>de</strong> manipulation d'imagesen WLangage.Permet <strong>de</strong> piloter différents moteurs <strong>de</strong> recherche sur Internet(Yahoo, Alta Vista, Voilà, Lycos, Excite, Noma<strong>de</strong>, Google,Euroseek, etc.).Le résultat <strong>de</strong> la recherche est affiché grâce à un ActiveX.Utilise les fonctionnalités <strong>de</strong> téléphonie pour la gestion d'unrépon<strong>de</strong>ur téléphonique.Ce répon<strong>de</strong>ur est interrogeable et paramétrable à distancegrâce à un menu.WD Scanner - Twain Permet <strong>de</strong> :- Prévisualiser une partie d'un document- Numériser un document (format GIF, JPEG, BMP)- Numériser un document et le placer dans le presse-papiers- Numériser un document et l'imprimerWD Serveur <strong>de</strong> la messagerieWD Synchronisation <strong>de</strong> fichiersServeur <strong>de</strong> messagerie à utiliser avec l'exemple WD Client <strong>de</strong>la messagerie.Permet <strong>de</strong> synchroniser <strong>de</strong>ux répertoires <strong>de</strong> fichiers.Après synchronisation, le répertoire <strong>de</strong> <strong>de</strong>stination est i<strong>de</strong>ntiqueau répertoire source. La <strong>com</strong>paraison est effectuée surla présence et la date <strong>de</strong>s fichiers.WD Téléphonie Utilise les fonctions téléphonie <strong>de</strong> WinDev pour :- Composer un numéro <strong>de</strong> téléphone- Détecter et i<strong>de</strong>ntifier <strong>de</strong>s appels entrantsWD TélésurveillanceWD Threads FTPWD Transfert <strong>de</strong> fichiers parFTPWD VisioconférencePermet <strong>de</strong> transmettre <strong>de</strong>s images filmées par une Web Caméraà travers un réseau (Internet, Intranet, etc.).Permet le transfert simultané via FTP <strong>de</strong> plusieurs fichiers setrouvant dans un même répertoire.Permet <strong>de</strong> transférer <strong>de</strong>s fichiers :- d'un serveur FTP vers le poste local,- du poste local vers un serveur FTP.Permet d'entrer en conférence avec un utilisateur distant.Permet d'envoyer un fichier à un correspondant et <strong>de</strong> dialogueravec lui.194Partie 7 : Annexes


WD VisuTIFWD WebCamWD WMI DOTNETWD ZipWDAgendaPetit éditeur d’image conçu avec WinDev mais uniquementpour le format d'image TIF.WD VisuTif permet d’ouvrir une image et d’afficher les différentespages <strong>de</strong> l’image- soit en mo<strong>de</strong> MDI (dans plusieurs fenêtres filles),- soit en mo<strong>de</strong> diaporama.Présente l'intégration d'une Web Caméra dans une fenêtreWinDev.Il est possible <strong>de</strong> :- Visualiser l'image retransmise par la caméra- Effectuer une capture instantanée- Capturer la scène retransmise sous forme d'animation Windows(Fichier "AVI")Le WMI (Windows Management Instrumentation) permet uneadministration exhaustive <strong>de</strong>s applications et <strong>de</strong>s périphériques.Le WMI peut être <strong>com</strong>paré à une base <strong>de</strong> données regroupant<strong>de</strong> multiples informations sur un poste.Il est en effet possible <strong>de</strong> lister les périphériques installés (réseaux,cartes vidéos, processeurs) <strong>com</strong>me les applications(du système d'exploitation à une application "normale").Permet <strong>de</strong> créer et <strong>de</strong> lire <strong>de</strong>s archives <strong>com</strong>pressées au format"WDZ" (ZIP WinDev).Permet <strong>de</strong> synchroniser <strong>de</strong>s ren<strong>de</strong>z-vous entre vos agendasOutlook, Lotus Notes et Google.Exemples didactiquesWD AgentWD AlarmeWD AnimatedWD APISystemesIntègre un "<strong>com</strong>pagnon" dans une application WinDev grâceà un ActiveX.Affiche un message d'alerte dans la barre <strong>de</strong> titre <strong>de</strong> la fenêtreactive (quelle que soit l'application). Ce messagepeut éventuellement s'ac<strong>com</strong>pagner d'une alarme sonore.Présente les principales animations réalisables sur unchamp Image. Cet exemple propose :- <strong>de</strong>s animations sans aucun co<strong>de</strong>,- <strong>de</strong>s animations programmées.Montre l'utilisation <strong>de</strong>s Apis Windows.Partie 7 : Annexes 195


WD Appels JAVAWD Arbre DoublonsWD AssistantWD BGInfoWD BluetoothWD Calculs sur les dates etheuresWD CalculsPersonnalisésWD CaractèresWD CarrouselWD Carte clicableWD Champ RechercheCet exemple illustre l'appel aux métho<strong>de</strong>s <strong>de</strong>s classesd’une archive JAR grâce à la fonction WLangage JavaExécuteFonction.Cet exemple montre également le remplissage d'une tablemémoire (i<strong>de</strong>ntique en mo<strong>de</strong> Java et en mo<strong>de</strong> Windows)Cet exemple permet <strong>de</strong> manipuler les doublons dans un arbregrâce aux fonctions WLangage ArbreID et ArbreSelect.Gère une fenêtre <strong>de</strong> type "Assistant".Cet exemple montre <strong>com</strong>ment écrire <strong>de</strong>s informations surle fond d'écran d'un ordinateur (adresse IP, Nom <strong>de</strong> la machine,Date du jour etc...).Cet exemple didactique montre l'utilisation <strong>de</strong>s fonctionsBluetooth :- pour lister les périphériques Bluetooth accessibles- pour lister les services offerts par un périphérique- pour se connecter à un périphérique Bluetooth- pour envoyer un fichier à un périphérique via les fonctions"OBEX" du WLangage.Effectue différents calculs sur les dates et les heures, àl'ai<strong>de</strong> <strong>de</strong> procédures :- Calculer la durée écoulée entre <strong>de</strong>ux instants (dates etheures)- Effectuer une somme <strong>de</strong> durées- Effectuer une moyenne <strong>de</strong> duréesPropose une solution pour qu'un utilisateur puisse saisirune formule <strong>de</strong> calcul dans une colonne <strong>de</strong> table.Ce programme réalisé avec WinDev permet d'insérer <strong>de</strong>scaractères spéciaux dans un champ RTF et <strong>de</strong> visualiserles co<strong>de</strong>s ASCII et ANSICet exemple montre <strong>com</strong>ment utiliser le champ carrousel<strong>de</strong> WinDev.Il se manipule exactement <strong>com</strong>me un champ Liste Image.Présente une application <strong>de</strong> cartographie grâce à l'utilisationd'une carte routière MICHELIN (autorisationn°9905251).Cet exemple montre <strong>com</strong>ment gérer un champ <strong>de</strong> saisiepermettant <strong>de</strong> réaliser <strong>de</strong>s recherches FullText <strong>de</strong> type"google" dans votre base <strong>de</strong> données.196Partie 7 : Annexes


WD Champs Java Présente quelques champs gérés en Java :- champ "jauge",- champ "splitter",- champ "liste image",- actions prédéfinies,- look Vista grâce au gabarit Vista livré en standard avecWinDev.WD Classe XLSWD Client JavaWD Co<strong>de</strong>BarreWD Coloration RechercheWD Coloration SyntaxiqueWD Comman<strong>de</strong>s vocalesCet exemple didactique a pour but d'offrir une première approche,simple, <strong>de</strong> la manipulation <strong>de</strong>s types avancés xls-Document, xlsColonne, xlsLigne et xlsCellule.Cet exemple est une application Java développée avec Win-Dev. Cet exemple présente notamment :- les ordres Hxxx gérés en Java sur HyperFileSQL (les ordresHxxx sont disponibles en Java sur MySQL et SQL Serverégalement)- les champs avec <strong>de</strong>s liaisons fichiersPermet <strong>de</strong> créer <strong>de</strong>s produits et <strong>de</strong> leur associer un co<strong>de</strong>barresexistant grâce à un lecteur <strong>de</strong> co<strong>de</strong>-barres. Ces produitspeuvent être imprimés sous forme d'étiquettes.Cet exemple présente <strong>com</strong>ment mettre en évi<strong>de</strong>nce lesmots recherchés dans les résultats d'une recherche fulltext.Cet exemple propose une classe <strong>de</strong> base permettant d'effectuerune coloration syntaxique classique sur du texte.Par défaut, une application WinDev répond déjà à la voix,lorsque l’on dicte dans un champ <strong>de</strong> saisie, ou lorsque l'onénonce le libellé d'un bouton.Il est également possible <strong>de</strong> programmer une <strong>com</strong>man<strong>de</strong>vocale spécifique pour effectuer une action particulière.WD Compilation dynamique Présente :- La <strong>com</strong>pilation dynamique <strong>de</strong> co<strong>de</strong> WLangage- L'exécution <strong>de</strong> co<strong>de</strong> <strong>com</strong>pilé dynamiquement- Le traitement <strong>de</strong>s éventuelles erreurs d'exécutionWD ContrôleADistanceWD Contrôles <strong>de</strong> saisiePermet <strong>de</strong> mettre en application le contrôle à distanced’une application WinDev.Effectue la vérification <strong>de</strong>s données saisies par l'utilisateur(nom, société, co<strong>de</strong> postal, ville, adresse e-mail, etc.) dansune fenêtre <strong>de</strong> type formulaire.Partie 7 : Annexes 197


WD Conversion RTFWD Correcteur orthographeWD Cryptage <strong>de</strong> donnéesWD Data BindingWD Dessin sur GrapheWD DessinerWD Dessiner JavaWD DessinGraphiqueWD Détection erreursWD DirectXWD DndTableHPrésente <strong>com</strong>ment transformer un texte au format RTF(avec mise en forme) en un format "texte brut" (pour la réalisation<strong>de</strong> traitements) ou HTML (pour une utilisation dansun email ou un site Internet par exemple)Permet <strong>de</strong> lancer le correcteur orthographique <strong>de</strong> Word àpartir d'une application WinDev.Ce programme établit pour cela une connexion OLE avecWord.Présente les différentes métho<strong>de</strong>s <strong>de</strong> cryptage <strong>de</strong> données(sur <strong>de</strong>s chaînes <strong>de</strong> caractères ou <strong>de</strong>s fichiers textes).L'exemple "WD DataBinding" présente <strong>com</strong>ment lier unchamp à une variable du WLangage.Cet exemple repose sur l'utilisation d'un <strong>com</strong>posant internepermettant <strong>de</strong> <strong>de</strong>ssiner <strong>de</strong>s éléments sur un champgraphe :- Zones min/max- Zones diverses- Drapeaux- Plots et trackers <strong>de</strong> suivi,...Met en évi<strong>de</strong>nce <strong>de</strong>s parties d'un document scanné ou annote<strong>de</strong>s images grâce aux fonctions <strong>de</strong> <strong>de</strong>ssin du WLangage.Présente l'utilisation <strong>de</strong>s fonctions <strong>de</strong> <strong>de</strong>ssin du WLangagepour la génération d'une application Java.Dans cet exemple, nous abordons <strong>de</strong>ux thèmesprincipaux :- la création <strong>de</strong> formes graphiques- la création <strong>de</strong> texte dans <strong>de</strong>s zones graphiquesCet exemple montre l'utilisation du <strong>de</strong>ssin pour générerune interface interactive. Il permet d'afficher <strong>de</strong>s objetssous forme d'image, <strong>de</strong> les redimensionner, <strong>de</strong> les déplacer,<strong>de</strong> les déformer.Présente le module <strong>de</strong> gestion assistée <strong>de</strong>s erreursHyperFileSQL :- le fonctionnement par défaut,- les différentes possibilités <strong>de</strong> personnalisation.Cet exemple permet d'utiliser DirectX 9.0 dans vos applicationsWinDev.Cet exemple montre l'utilisation du drag & drop programmédans une table hiérachique.198Partie 7 : Annexes


WD Drag and Drop WindowsWD DuplicationWD Ecran <strong>de</strong> veilleWD Envoi touchesPropose un catalogue d'images. Les images peuvent êtreajoutées dans le catalogue par drag and drop <strong>de</strong>puis l'explorateur<strong>de</strong> Windows.Cet exemple didactique montre <strong>com</strong>ment il est possible <strong>de</strong>dupliquer une base <strong>de</strong> données sur un serveur.Permet <strong>de</strong> réaliser un économiseur d'écran grâce à la gestion<strong>de</strong>s timers et <strong>de</strong>s événements Windows.Illustre l’envoi <strong>de</strong> séquences clavier à une application avecles fonctions WLangage.WD Etats Présente les différentes sources <strong>de</strong> données d'un état :- Etat à partir d'une table mémoire- Etat à partir d'une zone mémoire- Etat à partir d'une vue- Etat à partir d'une requête- Etat étiquette avec co<strong>de</strong>-barres- Etat à partir d'un fichier texte (gestion automatique ou parprogrammation)- Etat avec passage <strong>de</strong> paramètresWD Etats avancésWD Etats clicablesWD Exemple <strong>de</strong> test unitaireWD Export HTMLPrésente différents types d’états.Permet d’illustrer :- les états internes,- le champ graphe,- l'impression dans un fichier RTF, HTML ou PDF.L'exemple liste les clients et permet d'imprimer cette liste<strong>de</strong> clients. Lors <strong>de</strong> l’aperçu avant impression, un clic sur lenom du client ouvre la fiche du client sélectionné.Cet exemple présente l'utilisation <strong>de</strong> l'éditeur <strong>de</strong> test unitaireintégré <strong>de</strong> WinDev dans <strong>de</strong>ux cas concrets :- le test d'une fenêtre- le test d'une procédure globaleGère <strong>de</strong>s fichiers externes. Présente également la manipulation<strong>de</strong>s fichiers au format HTML.WD Export Table Exporte le contenu d'une table vers :- Word- Excel- Le presse-papiers Windows- Un fichier textePartie 7 : Annexes 199


WD Expressions régulières Présente <strong>de</strong>ux types d'utilisation <strong>de</strong>s expressionsrégulières :- vérification du format d'une saisie- extraction <strong>de</strong>s différents éléments respectant le formatd'une saisie.WD Extraction MIMEWD FaxPermet d'extraire les pièces contenues dans un email.Permet d'envoyer <strong>de</strong>s fax contenant du texte mis en formegrâce au RTF.WD Fermeture Windows Permet :- La fermeture d'une session Windows- L'arrêt et le redémarrage du posteWD Fichier externeWD Fichiers TexteWD Génération PowerPointWD Gestion <strong>de</strong>s erreurs JavaWD GrapheWD Graphe boursierWD Grapheur JavaWD Groupware utilisateurPrésente <strong>com</strong>ment manipuler <strong>de</strong>s fichiers non décrits dansl'analyse.Gère <strong>de</strong>s fichiers externes (création, suppression, modificationdu contenu d'un fichier externe).Cet exemple présente <strong>com</strong>ment générer une présentationPowerPoint à partir :- <strong>de</strong> données contenues dans une application WinDev, tellesque les données <strong>de</strong> tables, <strong>de</strong> graphes.- d'un document PowerPoint .pptx <strong>de</strong> base.Cet exemple didactique permet <strong>de</strong> <strong>com</strong>prendre le fonctionnementet la mise en œuvre du mécanisme <strong>de</strong> gestion <strong>de</strong>serreurs <strong>de</strong> WinDev.Cet exemple didactique présente diverses utilisations duchamp graphe. Les graphes présentés sont : Hémicycle,Beignet (ou donut), Secteur (ou camembert), Courbe, Nuage<strong>de</strong> points, Histogramme, Radar, Aire.Présente les fonctionnalités du grapheur sur les graphesboursiers.WinDev gère sans programmation les types <strong>de</strong> graphesboursiers suivants : BarCharts, Chan<strong>de</strong>liers japonais,Courbe, Histogramme, Minimum/MaximumCet exemple montre <strong>com</strong>ment réaliser <strong>de</strong>s graphes grâce àaux fonctions <strong>de</strong> <strong>de</strong>ssin.Trois types <strong>de</strong> graphe sont présentés : histogramme, nuage<strong>de</strong> points, courbe.Présente le fonctionnement du Groupware Utilisateur.200Partie 7 : Annexes


WD GroupwareCSWD HotkeyWD Image PDFWD Importation <strong>de</strong> pageHTMLWD ImpRectoVersoWD Impression <strong>de</strong> Tree ViewWD Impression directeWD Impression <strong>de</strong> Tree ViewWD JaugesWD JavaMailPrésente le groupware utilisateur avec une base <strong>de</strong> donnéesHyperFileSQL Client/Serveur.Permet <strong>de</strong> définir vos propres raccourcis clavier.Utilise le principe d'état avec source <strong>de</strong> données programméepour proposer la création d'un document PDF regroupantune sélection d'images.Sauvegar<strong>de</strong> une page HTML présente sur un site Web. Cettepage est alors analysée afin d'importer toutes ses dépendances(images, applets, etc.).Présente une solution d'impression recto-verso qu'il estpossible <strong>de</strong> désactiver, c'est-à-dire que les versos peuventne pas être imprimés.Permet d’imprimer un Treeview. Cet exemple utilise uneclasse "TreeImp" facilement réutilisable pour n'importequel champ TreeviewPermet d'imprimer directement sur l'imprimante matricielleconnectée au port parallèle <strong>de</strong> votre choix.Présente l’impression d’un champ Arbre.Permet <strong>de</strong> créer différents types <strong>de</strong> jauges.Permet <strong>de</strong> créer une applet, utilisable dans une page Internet.Cette applet permet <strong>de</strong> lire et envoyer <strong>de</strong>s emails.WD Jump Lists JumpList sous Windows 7Une JumpList est un menu accessible via le menu Démarrerou l'icône <strong>de</strong> l'application dans la barre <strong>de</strong>s tâches.WD Langage ExterneWD LassoWD LicenceIllustre l'utilisation <strong>de</strong> fenêtres faites avec WinDev dansune application en C++ (Visual Studio 2005) et MFC.Utilise un lasso <strong>de</strong> sélection dans un champ image pourréaliser un zoom dans un champ <strong>de</strong> prévisualisation.Permet d’afficher un texte important à un utilisateur. Il peutpar exemple s’agir d'un texte <strong>de</strong> licence affiché à l'utilisateurlors <strong>de</strong> la première exécution d'un programme.La lecture du texte est rendue obligatoire, en activant lechoix <strong>de</strong> validation <strong>de</strong> la fenêtre uniquement lorsque lechamp d'affichage du texte a été consulté dans sa totalité.Partie 7 : Annexes 201


WD Lien réflexif Utilise un lien "réflexif" pour gérer <strong>de</strong>s arbresgénéalogiques : chaque personne a plusieurs parents, etplusieurs enfants.Tous ces enregistrements sont stockés dans le même fichier.WD Limitation <strong>de</strong> durée d’utilisationWD Lissage <strong>de</strong> courbesWD ListeChaînéeWD Mailing par emailsPermet <strong>de</strong> limiter l'utilisation d'une application à une pério<strong>de</strong>donnée (pério<strong>de</strong> d'essai).Permet <strong>de</strong> lisser un graphe <strong>de</strong> type "courbe" en utilisant unalgorithme <strong>de</strong> "splines cubiques".Fournit les outils pour construire <strong>de</strong>s listes chaînées à chaînagesimple. Une liste à chaînage simple permet <strong>de</strong> stockeret parcourir <strong>de</strong> manière ordonnée une collection <strong>de</strong>valeurs quelconques.Permet d'envoyer un "mailing" par Internet.WD Manipulation <strong>de</strong> figures Permet <strong>de</strong> :- Tracer <strong>de</strong> rectangles, <strong>de</strong>s cercles et <strong>de</strong>s losanges- Déplacer les éléments créés- Sélectionner les couleurs <strong>de</strong>s éléments à <strong>de</strong>ssiner- Capturer le double-clic sur un élément afin d'obtenir sescaractéristiques- Appeler un menu contextuel sur un élément- Sélectionner <strong>de</strong>s couleurs par clic sur une formeWD Manipulation du champAgendaWD MapStatiqueExemple simple d'utilisation du champ Agenda. Les fonctionnalitésutilisées sont les suivantes : Création d'un ren<strong>de</strong>z-vous,Sauvegar<strong>de</strong> d'un agenda, Restauration d'unagendaIllustre l'interaction entre une application WinDev et le serviceGoogle Maps API, afin d'afficher une carte géographique,politique ou routière d'un endroit donné sur la planète.WD Masque <strong>de</strong> saisie avancé Illustre les masques <strong>de</strong> saisie avancés :- Format <strong>de</strong>s positifs/négatifs dans un champ <strong>de</strong> saisie numérique- Apparence <strong>de</strong>s négatifs dans un champ <strong>de</strong> saisie numérique- Apparence <strong>de</strong> la valeur 0 dans un champ <strong>de</strong> saisie numérique- Expression régulière pour empêcher la saisie d'autres caractèresque les chiffres 1, 2, 3, 4, 5 et 6.- Expression régulière pour "réguler" la saisie d'un numéro<strong>de</strong> plaque d'immatriculation français202Partie 7 : Annexes


WD Mise en evi<strong>de</strong>nceWD Multi fenêtrageWD Nombre en lettresWD Objets graphiquesWD Observateur RépertoireWD OLE DBWD OPCWD OpenGLWD OrganigrammeWD OSDWD Ouverture PériphériqueWD Paramètres ImpressionsWD PartageMemoirePermet <strong>de</strong> mettre en place une mise en évi<strong>de</strong>nce duchamp en cours <strong>de</strong> saisie, par changement <strong>de</strong> son style.3 types <strong>de</strong> mise en évi<strong>de</strong>nce sont disponibles :- Encadrement du champ,- Changement <strong>de</strong> couleur <strong>de</strong> fond,- Changement <strong>de</strong> la police.Permet <strong>de</strong> <strong>com</strong>prendre les bases <strong>de</strong> la gestion du Multi-fenêtrageavec WinDev.Permet <strong>de</strong> convertir une valeur numérique en lettres.Cette conversion est alors affichée dans un état <strong>de</strong> type"Lettre chèque".Utilise la programmation orientée objet.Cet exemple est un éditeur d'objets graphiques.Cet exemple montre l'utilisation <strong>de</strong>s <strong>de</strong>legates .NET (événements.NET) en WLangage.Permet d'accé<strong>de</strong>r à <strong>de</strong>s bases <strong>de</strong> données externes viaOLE DB.Montre l'implémentation du protocole OPC en WinDev.Permet d’interfacer OpenGL et WinDev. OpenGL est une interfacelogicielle <strong>de</strong>stinée à <strong>de</strong>ssiner <strong>de</strong>s objets tridimensionnels(3D).Cet exemple permet <strong>de</strong> créer <strong>de</strong>s organigrammes.OSD signifie : On-Screen Display. C'est le nom donné aux interfacesqui apparaissent sur les écrans d'ordinateur ou<strong>de</strong>s téléviseurs par exemple. Ils servent souvent à effectuer<strong>de</strong>s réglages.Ces types <strong>de</strong> menus ont <strong>com</strong>me particularité d'être affichéspar <strong>de</strong>ssus tout ce qui se trouve à l'écran. Cet exemplemontre <strong>com</strong>ment réaliser ce type d'interface sousWin<strong>de</strong>v.Cet exemple permet d'ajouter ou supprimer une applicationdu système d'ouverture automatique pour les périphériquesamovibles par programmation.Illustre la fonction iParamètre.Cet exemple montre <strong>com</strong>ment utiliser les fonctions <strong>de</strong> partage<strong>de</strong> mémoire.Partie 7 : Annexes 203


WD PersistanceWD PhonétiqueWD Pilotage <strong>de</strong> ExcelWD Pilotage <strong>de</strong> IEWD Pilotage <strong>de</strong> Open OfficeBaseWD Pilotage <strong>de</strong> OpenOfficeCalcWD Pilotage <strong>de</strong> OpenOfficeWriterWD Pilotage <strong>de</strong> OutlookWD Pilotage <strong>de</strong> TableursWD Pilotage <strong>de</strong> WordWD Pilotage traitement <strong>de</strong>texteWD PoignéesWD Pool <strong>de</strong> threadsCet exemple montre l'utilisation <strong>de</strong>s fonctions InitParamètre,ChargeParamètre, SauveParamètre.Ces fonctions permettent <strong>de</strong> configurer la sauvegar<strong>de</strong> <strong>de</strong>champs, <strong>de</strong> variables et <strong>de</strong> tout autre paramètre.Permet d'effectuer une recherche phonétique sur le nomd'une personne. Cette recherche permet <strong>de</strong> retrouver unenregistrement dont on ne connaît pas l'orthographe exacte.Permet <strong>de</strong> piloter Excel via OLE Automation. Toutes lesfonctions d'Excel peuvent ainsi être utilisées.Permet <strong>de</strong> piloter IE via OLE Automation. Toutes les fonctions<strong>de</strong> IE peuvent ainsi être utilisées.Cet exemple propose une classe permettant <strong>de</strong> manipulerfacilement une base Open Office sans avoir à aucun momentà manipuler <strong>de</strong>s objets OLE.Cet exemple didactique illustre le pilotage du tableur OpenOffice.org.Il est en effet possible <strong>de</strong> créer, ouvrir et manipuler<strong>de</strong>s classeurs ouverts dans OpenOffice.org <strong>de</strong>puisune application WinDev.Cet exemple didactique illustre le pilotage <strong>de</strong> OpenOfficeWriter. Il est en effet possible <strong>de</strong> créer, ouvrir et manipuler<strong>de</strong>s documents ouverts dans OpenOffice Writer <strong>de</strong>puis uneapplication WinDev.Permet <strong>de</strong> piloter Outlook via OLE Automation. Toutes lesfonctions <strong>de</strong> Outlook peuvent ainsi être utilisées.Cet exemple illustre le pilotage du tableur OpenOffice Calcet du tableur Excel, avec un co<strong>de</strong> générique.Permet <strong>de</strong> piloter Word via OLE Automation. Toutes lesfonctions <strong>de</strong> Word peuvent ainsi être utilisées.Le but <strong>de</strong> cet exemple est <strong>de</strong> proposer une interface universelle,permettant <strong>de</strong> piloter ces applications, sans se soucier<strong>de</strong> l'application à piloter.Permet <strong>de</strong> gérer les poignées <strong>de</strong> redimensionnement ou <strong>de</strong>déplacement d'un élément graphique.Met en place une suite ("pool") <strong>de</strong> threads.Pour illustrer ce fonctionnement, les threads sont matérialiséspar <strong>de</strong>s bulles <strong>de</strong> savon qui s'élèvent sur la fenêtre.Lorsqu'une bulle touche un bord <strong>de</strong> la fenêtre, elle est détruiteet le thread qui lui était associé est détruit également.204Partie 7 : Annexes


WD Popup GraphiqueWD ProcessusWD Pyrami<strong>de</strong> Des AgesWD Qui bloqueWD Recherche par clé <strong>com</strong>poséeWD Regroupement <strong>de</strong> liste<strong>de</strong>s tâchesWD Réplication UniverselleWD RequêtesWD Rotation AvancéeWD SAPWD Serveur RMIWD Serveur SOAPDans <strong>de</strong> nombreux logiciels <strong>de</strong> retouche d’images, il estpossible <strong>de</strong> sélectionner une forme à <strong>de</strong>ssiner, <strong>de</strong> choisirune épaisseur pour cette forme, et ceci via une <strong>com</strong>bo popupgraphique avancée.Ce type <strong>de</strong> <strong>com</strong>bo popup graphique offre en effet une prévisualisationen temps réel <strong>de</strong> la forme à l'épaisseur choisie.L’exemple présente <strong>com</strong>ment intégrer une telle interfacedans une application WinDev.Cet exemple montre l’utilisation <strong>de</strong>s fonctions <strong>de</strong> gestion<strong>de</strong>s processus mémoires <strong>de</strong> WinDev (liste <strong>de</strong>s processus,mémoire consommée, listes <strong>de</strong>s DLL utilisées, localisation).Montre <strong>com</strong>ment créer un graphique <strong>de</strong> type "Pyrami<strong>de</strong><strong>de</strong>s âges" à partir <strong>de</strong> <strong>de</strong>ux histogrammes.Signale aux utilisateurs d'une base <strong>de</strong> données HyperFileS-QL en réseau quelle est la personne qui bloque un enregistrementinaccessible.Présente l'utilisation <strong>de</strong>s filtres et l'utilisation <strong>de</strong>s clés <strong>com</strong>poséesafin d'optimiser les temps <strong>de</strong> recherche sur un fichier<strong>de</strong> données HyperFileSQL.Permet <strong>de</strong> regrouper l'ensemble <strong>de</strong>s tâches réparties surplusieurs projets.Montre <strong>com</strong>ment synchroniser les données <strong>de</strong> différentssites en utilisant la réplication universelle.Permet d'effectuer <strong>de</strong>s calculs, <strong>de</strong> passer <strong>de</strong>s paramètresou d'imprimer le résultat d'une requête SQL sur un fichier<strong>de</strong> données HyperFileSQL.Permet d'effectuer la rotation d'une image à partir d'unpoint quelconque qui servira <strong>de</strong> centre <strong>de</strong> rotation.Permet donc d'accé<strong>de</strong>r à vos données SAP directement <strong>de</strong>puisvos applications WinDev grâce aux fonctions SAP.Présente l’utilisation d’un serveur RMI WinDev pour accé<strong>de</strong>raux données au format HyperFileSQL <strong>de</strong>puis un posteMAC par exemple.Illustre l'utilisation <strong>de</strong>s fonctions SOAP disponibles enWLangage. Abor<strong>de</strong> <strong>de</strong>ux thèmes principaux :- Exécution d'une requête SOAP- Récupération du résultat d'une requête SOAPPartie 7 : Annexes 205


WD ServiceWD SNMPWD Sockets JavaWD StatistiquesWD Table HiérarchiqueWD Tables et CombosWD Tables RupturesWD TachymètreWD Text-To-SpeechWD Threads JavaWD TimelineWD Touches clavierCet exemple illustre la création d'une application <strong>de</strong> type"service" avec WinDev.Cet exemple affiche <strong>de</strong>s informations sur la machine du réseauspécifiée : l'adresse IP <strong>de</strong> la machine, son adresseMAC, son système, ...Cet exemple interroge la machine pour obtenir ces informationsgrâce aux fonctions SNMP du WLangage.Cet exemple présente une utilisation <strong>de</strong>s fonctions "socket"et permet <strong>de</strong> générer un .jar.Présente un ensemble <strong>de</strong> calculs statistiques.Les tables hiérarchiques permettent <strong>de</strong> <strong>com</strong>biner l'affichaged'un treeview avec une table WinDev. Cet exemple illustrel'utilisation du champ Table Hiérarchique.Permet <strong>de</strong> sélectionner un produit dans une <strong>com</strong>bo et d'enafficher les informations dans une table.La <strong>de</strong>scription <strong>de</strong> chaque produit est mise en forme grâceau RTF et est illustrée d'une image.Montre <strong>com</strong>ment utiliser <strong>de</strong>s "ruptures" dans une table.Un tachymètre (ou "speedometer") est une jauge qui peutprendre la forme d'un <strong>com</strong>pte-tours, d'un <strong>com</strong>pteur kilomètre.Cet exemple didactique présente les jauges circulaires.Cet exemple montre <strong>com</strong>ment effectuer une synthèse vocaledans une application WinDev en utilisant la classeSpeechSynthesizer du framework DOTNET.Cet exemple didactique Java montre <strong>com</strong>ment utiliser lesthreads. Section critique, sémaphore, tous les points essentielsdu développement multi-threads sont abordés ici.[Propose un <strong>com</strong>posant interne permettant <strong>de</strong> manipulerun modèle <strong>de</strong> champ 'Timeline'. Une timeline permet d'afficher<strong>de</strong> façon linéaire une série d'événements qui se sontdéroulés sur une pério<strong>de</strong> donnée <strong>de</strong> temps.Permet <strong>de</strong> détecter et d’i<strong>de</strong>ntifier l’appui sur une touche duclavier.206Partie 7 : Annexes


WD Tracé <strong>de</strong> courbesWD Trace SocketWD Trames reseauWD TransactionWD TreeMapWD TreeViewWD TriggerWD TSLWD TSL JavaWD Utilisation <strong>de</strong> DOTNETWD Utilisation <strong>de</strong>s aliasWD Utilisation <strong>de</strong>s classesDotNetWD Utilisation <strong>de</strong>s socketsPermet <strong>de</strong> tracer la courbe d'une fonction paramétrée(fonction mathématique).Il est possible d'utiliser <strong>de</strong>s fonctions prédéfinies ou <strong>de</strong>créer ses propres fonctions.Permet <strong>de</strong> tracer tout ce qui passe sur une <strong>com</strong>municationvia socket, sur une adresse donnée, sur un port donné.L'analyse <strong>de</strong>s trames circulant sur le réseau permet aux administrateursd'auditer ce <strong>de</strong>rnier et <strong>de</strong> détecter certainesincohérences. Pour écouter le réseau, l'application se basesur l'API Winsock 2 et les RAW Socket.Illustre le fonctionnement <strong>de</strong>s transactions lors du passaged'une <strong>com</strong>man<strong>de</strong>.Utilise le champ TreeMap afin <strong>de</strong> visualiser le contenu d'unrépertoire et la place prise par chaque fichier constituantce répertoire.Présente l'utilisation et la manipulation <strong>de</strong>s champs Arbre.Permet <strong>de</strong> saisir les notes <strong>de</strong> frais <strong>de</strong>s collaborateurs d'unesociété. Deux mo<strong>de</strong>s sont utilisables :- Consultation avec possibilité <strong>de</strong> modification (lecture/écriture)- Consultation uniquementCe sont les triggers qui permettent <strong>de</strong> contrôler l'accès auxfichiers en fonction du mo<strong>de</strong> choisi.Permet <strong>de</strong> définir une couleur à l’ai<strong>de</strong> <strong>de</strong> ses <strong>com</strong>posantesTSL (Teinte, Saturation, Luminosité).Permet <strong>de</strong> définir une couleur à l’ai<strong>de</strong> <strong>de</strong> ses <strong>com</strong>posantesTSL (Teinte, Saturation, Luminosité), puis <strong>de</strong> générer unearchive Java.Permet <strong>de</strong> convertir <strong>de</strong>s <strong>de</strong>vises dans d'autres <strong>de</strong>vises.La base <strong>de</strong> ce projet (la classe cEuro) est utilisée pour créerun assemblage DotNet.Permet <strong>de</strong> manipuler un même fichier <strong>de</strong> données physiqueau travers <strong>de</strong> plusieurs alias.Permet d'utiliser <strong>de</strong>s classes DOTNET en WLangage. Permet<strong>de</strong> :- analyser une chaîne <strong>de</strong> caractères,- configurer les boîtes <strong>de</strong> dialogue affichées.Présente l'utilisation <strong>de</strong>s sockets en mo<strong>de</strong> client/serveur.Chaque socket est manipulée au travers d'un thread.Partie 7 : Annexes 207


WD VerrouWD Visualisateur PDFWD WindowsUpdateWD XMLWD XML JavaWD Zone <strong>de</strong> clicagePrésente <strong>com</strong>ment utiliser les fonctions <strong>de</strong> verrouillageautomatique d'une application.Présente la gestion d’un PDF dans un champ Image d’unefenêtre.Cet exemple montre <strong>com</strong>ment gérer les mises à jour disponiblessur Windows Update.Permet d’importer un fichier XML au format HyperFileSQLet d'exporter <strong>de</strong>s fichiers au format XML (eXtensibleMarkup Language).Cet exemple montre l'utilisation <strong>de</strong>s fonctions XML dans unprojet WinDev Java.Gère <strong>de</strong>s zones <strong>de</strong> clicage sur <strong>de</strong>s formes non rectangulaires.Lors d'un clic sur la carte, la région sélectionnée est affichéeen bas <strong>de</strong> l'écran.Des exemples supplémentaires seront livrés avec la Lettre du Support Technique (LST)ou seront disponibles sur notre site (<strong>www</strong>.<strong>pcsoft</strong>.fr).208Partie 7 : Annexes

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!