Vous êtes sur la page 1sur 501

WinDev 18

Documentation version 18 (2) - 1212

Visitez rgulirement le site www.pcsoft.fr, espace tlchargement, pour vrier si des mises
jour sont proposes.

Adresse e-mail Support Technique Gratuit : supportgratuit@pcsoft.fr

Conseil : Pour recevoir directement des mises jour intermdiaires et des conseils dutilisation, abonnez-vous la LST (revue trimestrielle + DVD), en franais.

Cette documentation nest pas contractuelle. PC SOFT se rserve le droit de modier ou de


supprimer tout sujet trait dans ce document.

Tous les noms de produits ou autres marques cits dans cet ouvrage sont des marques dposes par leurs propritaires respectifs.
PC SOFT 2012 : Aucune reproduction intgrale ou partielle du prsent ouvrage sur quelque support que ce soit ne peut tre
effectue sans lautorisation expresse de PC SOFT.

SOMMAIRE
Introduction
Prliminaires.......................................................................................................................................................... 17
Prsentation du cours dauto-formation ............................................................................................................. 17
Comment accder laide en ligne ? ..................................................................................................................18
Lgende des symboles.......................................................................................................................................... 20
Si vous connaissez WinDev 17.............................................................................................................................. 21
Que fait-on avec WinDev ? .................................................................................................................................... 21

PARTIE 1 - A LA DCOUVERTE DE WINDEV


Leon 1.1. Dcouvrez WinDev
Prsentation .......................................................................................................................................................... 26
Lancement de WinDev .......................................................................................................................................... 26
Environnement de dveloppement...................................................................................................................... 27

Leon 1.2. Ma premire fenetre


Prsentation .......................................................................................................................................................... 31
Ouverture du projet ................................................................................................................................. 31
Ma premire fentre : saisir et afcher des donnes ......................................................................................... 32
Prsentation ............................................................................................................................................ 32
Cration de la fentre ............................................................................................................................. 32
Saisie et afchage de la valeur saisie .................................................................................................... 34
Amliorations de la fentre .................................................................................................................... 37

Leon 1.3. Mes premires fentres


Prsentation .......................................................................................................................................................... 40
Ma premire fentre : un compteur ..................................................................................................................... 40
Prsentation ............................................................................................................................................ 40
Ralisation............................................................................................................................................... 40
Gestion du compteur............................................................................................................................... 41
Cration dun bouton pour quitter la fentre ......................................................................................... 44
Afcher la date et lheure en temps rel ............................................................................................................. 46
Cration de la fentre ............................................................................................................................. 46
Mise en place du timer............................................................................................................................ 48
Grer la saisie dun numrique pour faire un calcul ........................................................................................... 49
Utiliser une procdure............................................................................................................................. 52
Cration dune fentre avec un menu.................................................................................................................. 52
Dcrire le menu ....................................................................................................................................... 52
Associer un code aux options de menu ................................................................................................. 55
WinDev : Concepts de base et terminologie........................................................................................................ 57
Concepts de base.................................................................................................................................... 57
Terminologie ............................................................................................................................................ 58

Sommaire

Leon 1.4. Bases de programmation


Introduction............................................................................................................................................................ 60
Dclaration des diffrents types de variables..................................................................................................... 60
Les diffrents types de variables............................................................................................................ 60
La dclaration des variables et leur porte ........................................................................................... 60
Instructions de base du WLangage...................................................................................................................... 61
Instructions conditionnelles ................................................................................................................... 61
Instructions de boucle ............................................................................................................................ 62
Commentaires ......................................................................................................................................... 63
Exemple pratique sur les diffrentes instructions de base................................................................... 63
Oprateurs de base du WLangage.......................................................................................................................64
Les oprateurs logiques ......................................................................................................................... 64
Les oprateurs de comparaison............................................................................................................. 64
Les oprateurs dindirection................................................................................................................... 65
Procdures et fonctions ........................................................................................................................................ 66
Dnition ................................................................................................................................................. 66
Procdure locale ..................................................................................................................................... 66
Procdure globale et collection de procdures ..................................................................................... 66
Comment choisir si une procdure est globale ou locale ? ................................................................... 66
A propos du passage des paramtres.................................................................................................... 67
Appel dune procdure............................................................................................................................ 67
Cration dune procdure ....................................................................................................................... 67
Un exemple pratique sur les procdures et fonctions ........................................................................... 68
Traitements des chanes ....................................................................................................................................... 68
Exemple pratique .................................................................................................................................... 68
Dtails ...................................................................................................................................................... 69
Traitements des numriques ............................................................................................................................... 70
Exemple pratique .................................................................................................................................... 70
Dtails ...................................................................................................................................................... 70
Traitement des montaires .................................................................................................................................. 72
Exemple pratique .................................................................................................................................... 72
Dtails ...................................................................................................................................................... 72
Traitements des dates et des heures ................................................................................................................... 74
Les dates ................................................................................................................................................................ 74
Exemple pratique .....................................................................................................................................74
Masque de saisie et valeur retourne .....................................................................................................74
Quel jour sommes-nous ? ....................................................................................................................... 76
Quel jour sommes-nous, mais avec le jour et le mois en lettres ? ........................................................ 76
Quel est le nombre de jours entre 2 dates ? .......................................................................................... 76
Quel est le jour de la semaine dune date donne ?.............................................................................. 77
Petit exercice pratique ............................................................................................................................ 77
Manipulation des variables de type Date .............................................................................................. 77
Les heures .............................................................................................................................................................. 78
Exemple pratique .................................................................................................................................... 78
Quelle heure est-il ? ................................................................................................................................. 79
Combien de temps sest coul entre deux heures ? ............................................................................ 79
Calculs avec des dates et des heures .................................................................................................................. 80

Sommaire

Leon 1.5. Questions / Rponses


Questions / Rponses ........................................................................................................................................... 82
Comment visualiser llment auquel appartient le traitement en cours ? ......................................... 82
Comment imprimer le code source ?...................................................................................................... 82
Comment rechercher et/ou remplacer une variable dans le code ? .................................................... 82
Que signie les signes "+" ou "-" dans lditeur de code ? ..................................................................... 82
Est-il possible didentier la personne qui a crit une ligne de code ? ................................................. 83
Est-il possible de connatre le numro dune ligne de code ? ............................................................... 83
Existe-t-il un moyen dobtenir facilement la syntaxe ou de laide sur une fonction ? .......................... 83
Quels sont les raccourcis clavier connatre sous lditeur de code ? ................................................ 84
Comment dialoguer avec lutilisateur ? .................................................................................................. 84

PARTIE 2 - APPLICATION AVEC DONNES


Leon 2.1. Prsentation
Prsentation de lapplication ralise dans cette partie ................................................................................... 88

Leon 2.2. Projet et analyse


Prsentation .......................................................................................................................................................... 90
Cration du projet .................................................................................................................................................. 90
Cration de lanalyse ............................................................................................................................................. 91
Cration de la description des chiers de donnes ............................................................................................ 92
Cration dun chier de donnes et de ses rubriques sous lditeur ................................................... 93
Importation dun chier CSV ................................................................................................................... 99
Importation de chiers du dictionnaire ................................................................................................102
Importation directe de chiers de donnes existants .........................................................................102
Cration des liaisons .......................................................................................................................................... 103
Conguration de lanalyse pour le RAD ............................................................................................................ 105
Conguration du RAD dans la description des chiers de donnes ...................................................105
Conguration du RAD dans la description des rubriques ...................................................................106
Gnration de lanalyse ......................................................................................................................................107

Leon 2.3. Le RAD complet


Quest-ce que le RAD ? ...................................................................................................................................... 109
Gnration du RAD............................................................................................................................................. 109
Test de lapplication ........................................................................................................................................... 112
Modication rapide : Verrouillage de lapplication .......................................................................................... 113

Leon 2.4. Fentre de saisie


Prsentation ....................................................................................................................................................... 115
Cration dune fentre de saisie ....................................................................................................................... 115
Gestion de lajout dun enregistrement .............................................................................................................117
Cration du bouton dajout ................................................................................................................... 117
Ajout dun masque de saisie.................................................................................................................118
Effacement des donnes aprs lajout ................................................................................................119
Visualiser les enregistrements saisis...................................................................................................120

Sommaire

Gestion de la recherche puis de la modication.............................................................................................. 121


Recherche lidentique ........................................................................................................................121
Recherche gnrique ............................................................................................................................123
Modication de la che afche ...........................................................................................................124
Parcours des ches ...............................................................................................................................124

Leon 2.5. Table sur une requte


Prsentation ....................................................................................................................................................... 127
Cration dune requte paramtre ................................................................................................................. 127
Cration dune fentre avec une table base sur la requte .......................................................................... 129
Imprimer le contenu de la table ........................................................................................................................ 131
Cration dun tat automatique sur la table .................................................................................................... 132

Leon 2.6. Etat avec requte intgre


Prsentation ....................................................................................................................................................... 134
Cration dun tat ............................................................................................................................................... 134
Test dun tat ...................................................................................................................................................... 137

Leon 2.7. Le groupware utilisateur


Prsentation ....................................................................................................................................................... 140
Intgrer le groupware utilisateur ....................................................................................................................... 140
Congurer le groupware utilisateur .................................................................................................................. 142

Leon 2.8. Le tableau de bord


Prsentation ....................................................................................................................................................... 145
Tests automatiques ............................................................................................................................................ 145
Audit statique et optimisation des requtes .................................................................................................... 150

Leon 2.9. Dploiement de lapplication


Prsentation ....................................................................................................................................................... 153
Cration de lexcutable .................................................................................................................................... 153
Cration de linstallation .................................................................................................................................... 156
Conclusion........................................................................................................................................................... 158

Leon 2.10. Questions / Rponses


Comment crer le menu principal de mon application ?.....................................................................160
Comment insrer automatiquement le menu "?" ? .............................................................................160
Comment crer un menu contextuel ? .................................................................................................160
Comment fermer une fentre automatiquement aprs une dure prdnie ?................................ 161
Comment rcuprer des paramtres passs en ligne de commande un excutable ? ................. 161
Comment dsinstaller une application ralise avec WinDev ? ......................................................... 161
Comment crer une installation par CD-ROM ? ...................................................................................162
Comment installer une application ? ...................................................................................................162
Comment associer une image de lancement (splash screen) mon excutable ? ...........................162
Comment mettre licne de mon application en bas droite dans la barre de tches ?...................163
Comment installer un raccourci dune application sur le bureau ? ....................................................163
Comment partager le framework WinDev entre les diffrentes applications installes sur un
mme poste ? ........................................................................................................................................163
Comment dtecter les lments non utiliss par mon application ? .................................................164
6

Sommaire

PARTIE 3 - FENTRES ET CHAMPS


Leon 3.1. Les fentres
Comment crer une fentre ? ............................................................................................................................ 168
Description dune fentre : 8 onglets votre disposition ................................................................................ 169

Leon 3.2. Les champs


Introduction..........................................................................................................................................................173
Exemple pratique .................................................................................................................................. 173
Les champs classiques ....................................................................................................................................... 174
Type de champ : Libell ......................................................................................................................... 174
Type de champ : Champ de saisie ........................................................................................................ 176
Type de champ : Bouton ........................................................................................................................181
Type de champ : Image..........................................................................................................................185
Type de champ : Slecteur ....................................................................................................................191
Type de champ : Interrupteur ................................................................................................................193
Type de champ : Liste ............................................................................................................................195
Type de champ : Liste Image .................................................................................................................200
Type de champ : Combo ........................................................................................................................203
Type de champ : Table ...........................................................................................................................205
Type de champ : Zone rpte .............................................................................................................. 210
Type de champ : Arbre ...........................................................................................................................212
Type de champ : Table Hirarchique.....................................................................................................213
Type de champ : Jauge .......................................................................................................................... 214
Type de champ : Champ Graphe...........................................................................................................215
Les champs spcialiss ..................................................................................................................................... 218
Type de champ : Calendrier ..................................................................................................................219
Type de champ : Agenda .......................................................................................................................219
Type de champ : Planning .....................................................................................................................219
Type de champ : Organigramme ...........................................................................................................220
Type de champ : TreeMap .....................................................................................................................220
Type de champ : Carrousel ....................................................................................................................220
Type de champ : Cube ...........................................................................................................................221
Type de champ : Tiroir ...........................................................................................................................221
Type de champ : Forme .........................................................................................................................221
Type de champ : Champ Code-Barres...................................................................................................222
Type de champ : Ascenseur ..................................................................................................................222
Type de champ : Range Slider ...............................................................................................................223
Type de champ : Potentiomtre ............................................................................................................223
Type de champ : Spin ............................................................................................................................224
Type de champ : Notation .....................................................................................................................224
Type de champ : Web camra ...............................................................................................................224
Type de champ : HTML ..........................................................................................................................225
Type de champ : OLE, ActiveX ...............................................................................................................226
Type de champ : Bote outils ..............................................................................................................227
Type de champ : Barre doutils..............................................................................................................227
Type de champ : Ruban .........................................................................................................................228
Type de champ : Cube Rolap .................................................................................................................228
Sommaire

Type de champ : Zone Multiligne ..........................................................................................................229


Type de champ : TimeLine.....................................................................................................................229
Type de champ : Xaml............................................................................................................................229

Leon 3.3. Ergonomie de lapplication


Amliorer lergonomie des champs et des fentres ........................................................................................231
Style/gabarit..........................................................................................................................................231
Redimensionnement des fentres.......................................................................................................232
Ancrage ..................................................................................................................................................232
Tabulation/ordre de saisie....................................................................................................................233
Rgles/Correcteur dinterface/Alignement.........................................................................................234
Plan/Onglet ...........................................................................................................................................235
Sparateur.............................................................................................................................................236
Animation de fentres...........................................................................................................................237
Grisage automatique des fentres .......................................................................................................237
Totaux dans les tables ..........................................................................................................................237
Images des champs paramtrables dans le style ...............................................................................238
Transparence des champs, transparence des fentres......................................................................238
Sauvegarde de la position dans les colonnes dans les tables ...........................................................239
Ergonomie de lapplication ................................................................................................................................ 239
Exemple de programme grant le multi fentrage de fentres libres (non MDI) ...............................239
Exemple de programme grant des fentres MDI ...............................................................................243

Leon 3.4. Rutilisabilit


Quest-ce que la rutilisabilit ? ........................................................................................................................ 248
Rutiliser un ensemble de champs .................................................................................................................. 248
Exemple pratique ..................................................................................................................................248
Le superchamp......................................................................................................................................248
Fentre interne ......................................................................................................................................249
Modle de champs................................................................................................................................ 251

Leon 3.5. Questions/Rponses


Comment dupliquer un champ dans une fentre par programmation ? ............................................254
Comment supprimer un champ dans une fentre par programmation ?...........................................254
Comment grer les plans dune fentre ? ............................................................................................254
Comment grer le clic sur un volet dun onglet ? .................................................................................255
Comment afcher la progression dun traitement ? ............................................................................255
Comment afcher un site Internet dans une fentre ? ........................................................................255
Comment modier la couleur dun champ ? ........................................................................................256
Comment rendre un bouton invisible ? ................................................................................................256
Comment crer le menu principal de mon application ? ....................................................................257
Comment crer un menu contextuel ? .................................................................................................257
Comment modier le curseur de survol pour un champ ou une fentre ? .........................................257
Comment passer des paramtres une fentre ? ..............................................................................258
Comment regrouper des champs pour modier leurs proprits par programmation ? ...................258
Comment transformer un champ interrupteur en un champ slecteur ?...........................................259
Comment mettre des boutons la mme taille ? ................................................................................259
Comment grer la persistance des champs ?......................................................................................259
Comment ajouter une image en fond dans une fentre ? ...................................................................259
Comment grer la transparence dune fentre ?.................................................................................260
8

Sommaire

PARTIE 4 - BASES DE DONNES ET ANALYSES


Leon 4.1. Introduction
Prsentation ....................................................................................................................................................... 264
Les diffrents modes daccs aux bases de donnes ..................................................................................... 265
Accs Natif .............................................................................................................................................265
Accs ODBC direct.................................................................................................................................265
Accs OLE DB ........................................................................................................................................266
Accs ODBC via OLE DB ........................................................................................................................266

Leon 4.2. Parcours de chiers de donnes et de requtes


Parcours de type HLitPremier ........................................................................................................................... 268
Parcours de type HLitRecherche ....................................................................................................................... 268
Parcours de type POUR TOUT ............................................................................................................................ 269
Parcours de type POUR TOUT AVEC................................................................................................................... 269
Quel type de parcours choisir ?.......................................................................................................................... 270

Leon 4.3. Gestion des erreurs


Prsentation ....................................................................................................................................................... 272
Gestion des erreurs en mode automatique ..................................................................................................... 272
Gestion des erreurs en mode programm avanc ...........................................................................................274

Leon 4.4. Cryptage de donnes


A quoi sert le cryptage des donnes ?................................................................................................................277
Comment crypter les chiers de donnes ? ..................................................................................................... 278
Mettre en place le cryptage des chiers de donnes ..........................................................................278
Gestion du cryptage en WLangage.......................................................................................................280

Leon 4.5. Concepts avancs


Prsentation ....................................................................................................................................................... 282
La journalisation ................................................................................................................................................. 282
Les transactions ................................................................................................................................................. 282
Un exemple simple de la ncessit des transactions pour certains types de traitements ...............283
Les transactions sur HyperFileSQL ......................................................................................................283
La rplication ...................................................................................................................................................... 284
Les triggers.......................................................................................................................................................... 284

Leon 4.6. Bases externes


Prsentation ....................................................................................................................................................... 286
Connexion une base de donnes dans lditeur danalyses ........................................................................ 286
Connexion une base de donnes par programmation ................................................................................. 289
Cration de la connexion : HOuvreConnexion......................................................................................289
Association de la connexion aux chiers de donnes : HChangeConnexion .....................................290

Sommaire

PARTIE 5 - ADMINISTRER UNE BASE HYPERFILESQL CLIENT/SERVEUR


Leon 5.1. Introduction
Prsentation ....................................................................................................................................................... 294
Pourquoi passer une application en mode HyperFileSQL Client/Serveur ? .................................................. 295

Leon 5.2. Mise en place dune application Client/Serveur


Prsentation ........................................................................................................................................................297
Installation dun serveur HyperFileSQL local ....................................................................................................297
Cration dune application en mode HyperFileSQL Client/Serveur ................................................................297
Adaptation dune application HyperFileSQL Classic pour grer le mode Client/Serveur ............................ 298
Prsentation ..........................................................................................................................................298
Migration de lexemple..........................................................................................................................298
Fonctionnalits disponibles en mode HyperFileSQL Client/Serveur ............................................................. 300

Leon 5.3. Administrer une base de donnes Client/Serveur


Prsentation ....................................................................................................................................................... 302
Conguration des postes ................................................................................................................................... 302
Le Centre de Contrle HyperFileSQL ................................................................................................................. 302
Crer un compte utilisateur dans le Centre de Contrle HyperFileSQL ......................................................... 304
Sauvegarder la base de donnes .......................................................................................................................307
Conclusion............................................................................................................................................................307

Leon 5.4. Installation en clientle


Prsentation ....................................................................................................................................................... 309
Lancement de lassistant de cration dinstallation ....................................................................................... 309

PARTIE 6 - REQUTES
Leon 6.1. Crez une requte de slection
Introduction..........................................................................................................................................................314
Votre premire requte .......................................................................................................................................315

Leon 6.2. Requtes avec comptage


Ralisation dune requte avec comptage....................................................................................................... 321

Leon 6.3. Requtes Somme


Ralisation dune requte "Somme" ................................................................................................................ 324

Leon 6.4. Le langage SQL


Code source dune requte ................................................................................................................................ 327
Les ordres SQL .................................................................................................................................................... 328
Linstruction SELECT .............................................................................................................................328
Linstruction FROM................................................................................................................................328
La clause WHERE ..................................................................................................................................328
10

Sommaire

La clause GROUP BY .............................................................................................................................329


La clause ORDER BY .............................................................................................................................329

Leon 6.5. Utilisation des Requtes


Utilisation dune requte depuis un tat ...........................................................................................................331
Utilisation dune requte depuis un champ ......................................................................................................331
Utilisation dune requte depuis le WLangage .................................................................................................331

PARTIE 7- ETATS
Leon 7.1. Votre premier tat
Vocabulaire de base ........................................................................................................................................... 336
Prsentation ....................................................................................................................................................... 338
Imprimer avec lditeur dtats ou imprimer en WLangage ................................................................338
Les tats crer ....................................................................................................................................339
Cration de votre premier tat .......................................................................................................................... 339
Cration de ltat : Liste des clients trie par ville ...............................................................................339
Quest-ce quune rupture ?....................................................................................................................342

Leon 7.2. Etats statistiques


Prsentation ....................................................................................................................................................... 348
Etape par tape .................................................................................................................................................. 348

Leon 7.3. Etats Tableau Crois


Prsentation ....................................................................................................................................................... 358
Etape par tape .................................................................................................................................................. 358

Leon 7.4. Champs spciques


Prsentation ....................................................................................................................................................... 363
Manipulations pour crer un champ Lien......................................................................................................... 363
Manipulations pour crer un champ clicable................................................................................................... 364

Leon 7.5. Excution des tats


Excuter les tats en WLangage ....................................................................................................................... 367
Fonctions iAperu et iDestination ........................................................................................................367
Fonction iImprimeEtat ..........................................................................................................................368

Leon 7.6. Diffusez "Etats & Requtes" avec vos applications


Lancement du logiciel "Etats & Requtes" ...................................................................................................... 370
Paramtrage du projet .......................................................................................................................... 371
Paramtrage de lanalyse ..................................................................................................................... 371
Paramtrage des tats .........................................................................................................................372
Paramtrage des requtes ...................................................................................................................372
Cration de lexcutable et diffusion de lapplication .........................................................................372
Installation de lapplication .................................................................................................................. 374
Test de lapplication ..............................................................................................................................375
Sommaire

11

PARTIE 8 - PROGRAMMATION AVANCE


Leon 8.1. Gestion automatique des erreurs
Prsentation ....................................................................................................................................................... 380
Fonctionnement ....................................................................................................................................380
Mise en place ........................................................................................................................................380
Types derreurs concernes..................................................................................................................381
Utilisation de la gestion automatique des erreurs........................................................................................... 381

Leon 8.2. Import/Export


Prsentation ....................................................................................................................................................... 383
Exemple pratique ..................................................................................................................................383
Manipulation des chiers texte, CSV, ... ............................................................................................................ 383
Exemple pratique ..................................................................................................................................383
Manipulation des chiers XML .......................................................................................................................... 384
Exemple pratique ..................................................................................................................................385
Manipulation des chiers XLS ........................................................................................................................... 385
Exemple pratique ..................................................................................................................................385

Leon 8.3. Compilation dynamique


Prsentation ....................................................................................................................................................... 388
Exemple ............................................................................................................................................................... 388

Leon 8.4. Evnement Windows


Introduction......................................................................................................................................................... 391
Exemple : Dtecter le clic sur une liste ............................................................................................................. 392

Leon 8.5. Les threads


Dnition ............................................................................................................................................................. 395
Exemple ............................................................................................................................................................... 395

Leon 8.6. Les sockets


Prsentation ........................................................................................................................................................397
Exemple pratique ..................................................................................................................................397
Application Serveur (simpli) ...........................................................................................................................397
Cration de la socket.............................................................................................................................398
Echange de donnes ............................................................................................................................398
Fermeture de la socket .........................................................................................................................398
Exemple pratique ..................................................................................................................................398
Application Cliente ............................................................................................................................................. 399
Connexion au serveur ...........................................................................................................................399
Echange de donnes ............................................................................................................................399
Fin de communication ..........................................................................................................................399
Exemple pratique ..................................................................................................................................399

12

Sommaire

Leon 8.7. Le FTP


Prsentation ....................................................................................................................................................... 402
Se connecter un serveur FTP .......................................................................................................................... 402
Envoyer un chier................................................................................................................................................ 402
Rcuprer un chier ........................................................................................................................................... 403
Se dconnecter dun serveur FTP ...................................................................................................................... 403

Leon 8.8. Les emails


Prsentation ....................................................................................................................................................... 405
Protocoles POP3/SMTP : Principe .................................................................................................................... 405
Exemple pratique ..................................................................................................................................406
Envoyer un email : les diffrentes tapes ......................................................................................................... 406
Ouvrir une session de messagerie SMTP.............................................................................................406
Prparer lemail .....................................................................................................................................407
Envoyer lemail ......................................................................................................................................407
Se dconnecter .....................................................................................................................................407
Autres possibilits .............................................................................................................................................. 408

Leon 8.9. La POO


Concepts...............................................................................................................................................................410
Les classes ............................................................................................................................................ 410
Les objets .............................................................................................................................................. 410
Les membres ......................................................................................................................................... 410
Les mthodes ........................................................................................................................................ 410
Notion dhritage................................................................................................................................... 410
Constructeur et Destructeur ................................................................................................................. 410
Encapsulation de donnes ................................................................................................................... 411
Exemple ................................................................................................................................................. 411
Crer un programme orient objet ....................................................................................................... 411
Dclarer une classe .............................................................................................................................. 411
Dcrire les mthodes ............................................................................................................................ 412
Dclarer et manipuler les objets .......................................................................................................... 412

PARTIE 9 - GESTION DE PROJET AVANCE


Leon 9.1. Tableau de bord
Prsentation ....................................................................................................................................................... 418
Exemple ................................................................................................................................................. 418
Les diffrents lments du tableau de bord .................................................................................................... 418
Les listes ................................................................................................................................................ 419
Les voyants ............................................................................................................................................420
Les compteurs en relation avec les Centres de Contrle ....................................................................422
Conguration du tableau de bord ..................................................................................................................... 423

Sommaire

13

Leon 9.2. GDS


Introduction......................................................................................................................................................... 426
GDS (Gestionnaire de Sources) ......................................................................................................................... 426
Principe du GDS ....................................................................................................................................426
Cration de la base de sources ............................................................................................................427
Intgration dun projet dans le GDS .....................................................................................................428
Ouverture du projet depuis le GDS .......................................................................................................430
Conguration du GDS............................................................................................................................431
Extraction dun lment........................................................................................................................432
Modication de llment extrait ..........................................................................................................433
Rintgration de llment extrait ........................................................................................................433
Synchronisation du projet .....................................................................................................................434
Mode dconnect (ou nomade) ...........................................................................................................435
Administrateur du GDS .........................................................................................................................435

Leon 9.3. Centres de contrle


Prsentation ....................................................................................................................................................... 437
Le Centre de Suivi de Projets ............................................................................................................................. 437
Grer son temps ................................................................................................................................................. 440
Suivre les retours client avec les Centres de Contrle ..................................................................................... 441
Les autres Centres de Contrle ......................................................................................................................... 441

Leon 9.4. Rgles mtier


Prsentation ....................................................................................................................................................... 443
Exemple .................................................................................................................................................443
Application sur un exemple concret.................................................................................................................. 443
Cration dune rgle mtier ..................................................................................................................443

Leon 9.5. Multi-congurations


Prsentation ........................................................................................................................................................447
Cration dune conguration de projet ..............................................................................................................447
Gestion des congurations de projet ................................................................................................................ 448
Gnration multiple ........................................................................................................................................... 449

Leon 9.6. Les composants externes


Prsentation ....................................................................................................................................................... 451
Travail en quipe ................................................................................................................................... 451
Les projets volumineux ......................................................................................................................... 451
Les bases de donnes accdes par plusieurs projets ......................................................................452
Les traitements utiliss dans plusieurs projets...................................................................................452
La possibilit de diffuser une fonctionnalit ou un ensemble de fonctionnalits .............................452
Composant externe multiproduits ........................................................................................................452

14

Sommaire

Etape par tape .................................................................................................................................................. 453


Etape 1 : Cration dun composant externe ........................................................................................453
Etape 2 : Utilisation du composant externe .........................................................................................456
Distribuer un composant externe...................................................................................................................... 458
Distribution simple ................................................................................................................................458
Distribution professionnelle .................................................................................................................458

Leon 9.7. Le dbogueur


Prsentation ....................................................................................................................................................... 460
Dboguer une fentre ........................................................................................................................................ 460
Lancer le dbogueur .............................................................................................................................460
Visualiser les informations sous le dbogueur ....................................................................................461
Fentre de trace du dbogueur ......................................................................................................................... 462
Dboguer un projet............................................................................................................................................. 462
Options avances du dbogueur ....................................................................................................................... 463

Leon 9.8. Lanalyseur de performances


Prsentation ....................................................................................................................................................... 465
Utiliser lanalyseur de performances ................................................................................................................ 465
Optimiser un traitement avec lanalyseur de performances .......................................................................... 466
Lire le rsultat de lanalyseur de performances ..................................................................................466
Choisir un traitement optimiser .........................................................................................................466
Optimiser un traitement........................................................................................................................466

Leon 9.9. Import/Export


Importer des lments....................................................................................................................................... 469
Exporter des lments ........................................................................................................................................470
Importations spciques ....................................................................................................................................471
Importation dun projet WebDev .......................................................................................................... 471
Importation dune fentre..................................................................................................................... 471
Importation Access ............................................................................................................................... 472
Importation Visual Basic ....................................................................................................................... 472

Leon 9.10. Installation dune application


Prsentation ........................................................................................................................................................ 474
Update rseau/update Web ............................................................................................................................... 474
Installation avec mise jour rseau..................................................................................................... 474
Installation avec mise jour Internet ................................................................................................... 476
Editeur dinstallation ...........................................................................................................................................478
Questions/Rponses ..........................................................................................................................................479
Comment dsinstaller une application ralise avec WinDev ? ......................................................... 479
Comment crer une installation par CD-ROM ? ................................................................................... 479
Comment installer une application ? ................................................................................................... 479

Sommaire

15

Leon 9.11. UML et 3-tiers


Quest-ce que UML ? ........................................................................................................................................... 481
Les diagrammes grs par WinDev .................................................................................................................. 481
Diagramme de classes .........................................................................................................................481
Diagramme de cas dutilisation............................................................................................................481
Diagramme dobjets..............................................................................................................................481
Diagramme de composants .................................................................................................................481
Diagramme dactivit ............................................................................................................................481
Diagramme de squence .....................................................................................................................481
Diagramme de collaboration ................................................................................................................481
Diagramme dtats-transitions ............................................................................................................482
Diagramme de dploiement .................................................................................................................482
3-Tiers .................................................................................................................................................................. 482
Le 3 tiers, cest quoi ?............................................................................................................................482
Comment mettre en uvre le 3 tiers ?.................................................................................................482
Manipulation des diffrentes couches ................................................................................................483

Leon 9.12. Modlisation souple


Principe ............................................................................................................................................................... 485
Manipulations ..................................................................................................................................................... 485

Leon 9.13. Multilingue


Quest-ce quune application multilingue ? ...................................................................................................... 489
Choix des langues du projet ............................................................................................................................... 489
Internationalisation de lanalyse....................................................................................................................... 490
Internationalisation des lments du projet .................................................................................................... 492
Caractristiques traduire ...................................................................................................................492
Comment traduire toutes ces informations ? ......................................................................................494
Saisie directe des traductions ..............................................................................................................494
Cas particuliers .....................................................................................................................................495
Traduction avec WDMSG et WDTRAD...................................................................................................498
Programmation du changement de langue..................................................................................................... 498
Utilisation dun chier de paramtres ..................................................................................................498
Utilisation des options de menu ...........................................................................................................499
Gestion de lUnicode et des alphabets spciques ......................................................................................... 500

Conclusion

16

Sommaire

INTRODUCTION
Prliminaires
Attention : Ce manuel est un cours dauto-formation. Il est conseill de consulter laide en ligne
lorsque vous utilisez WinDev.
Le manuel du cours dauto-formation a pour objectif de vous faire dcouvrir WinDev, de vous familiariser avec les diteurs et de vous apprendre les concepts de WinDev.
Ce manuel nest PAS exhaustif des possibilits de WinDev.
Consacrez au moins quelques heures pour suivre ce cours et pour apprendre WinDev : vous les
rentabiliserez vite !
Si vous essayez de dmarrer le dveloppement dune application sans avoir suivi ce cours, vous
perdrez du temps, beaucoup plus que deux jours.
Le cours a t conu pour tre suivi de deux faons :
soit vous suivez tous les exercices dtaills dans les leons du cours (mthode conseille).
soit, si vous tes press et disposez dune exprience signicative, vous pouvez uniquement
le lire sans excuter les exercices, tous les exercices sont illustrs. Toutefois, pour que les
concepts soient plus rapidement assimils, il est prfrable de suivre les manipulations.
WinDev voluant en permanence, les copies des fentres illustrant le cours peuvent tre diffrentes de celles du produit que vous possdez.

Prsentation du cours dauto-formation


Le cours dauto-formation a t conu pour vous permettre dapprendre progressivement utiliser
WinDev. En suivant ce cours :
dune part, vous dcouvrirez les concepts importants expliqus dune faon informelle; en
effet dans ce cas, il sagit de concepts acqurir et comprendre.
dautre part, vous serez amen effectuer des manipulations pour illustrer les concepts qui
viennent dtre expliqus.
Au l de la lecture du cours, si vous voulez approfondir un concept ou si vous voulez avoir plus
de dtails sur une fonction de programmation, consultez laide en ligne (accessible directement
depuis les diteurs ou dans le guide).
La taille dune leon nest pas obligatoirement proportionnelle son intrt ...
Noubliez pas dtudier ensuite les exemples livrs avec WinDev : ils sont trs didactiques !

Introduction

17

Notes

Depuis limpression de ce document, le cours dauto-formation a peut-tre volu. Nhsitez pas consulter la version lectronique du cours dauto-formation
(chier PDF accessible directement dans le menu de WinDev : sous le volet "Accueil", dans le groupe "Aide en ligne", droulez "Guide dauto-formation" et slectionnez loption "Guide dauto-formation (PDF)".

Comment accder laide en ligne ?


Laide en ligne de WinDev permet de consulter les informations dtailles concernant les 2500
fonctions du WLangage. Laide en ligne contient galement laide des diteurs, des champs, des
astuces, ...
Laide en ligne est disponible tout moment dans WinDev :
Sous lditeur de code, une aide spcique est directement accessible pour chaque nom de
fonction slectionn, grce la touche [F1].
Chaque fentre de dialogue afche par WinDev propose un bouton
permettant daccder
la page daide correspondante.
Le menu daide des diteurs (option "Aide" disponible sous le volet "Accueil", dans le groupe
"Aide en ligne" du menu de WinDev) vous permet de lancer laide en ligne.

"Laide peut tre afche :


dans un "browser daide" spcique :

18

Introduction

Notes

dans un navigateur Internet, si vous avez accs Internet :

Laide en ligne de WinDev, WebDev et WinDev Mobile sur Internet est accessible
depuis nimporte quel poste disposant dun accs Internet, sans que le produit
soit forcment install. Cette aide est mise jour rgulirement.
Chaque internaute peut ajouter des commentaires sur les pages de documentation : explications personnelles, exemples, liens, ...

Pour lancer directement laide en ligne Internet depuis le produit :


1. Sous le volet "Accueil", dans le groupe "Environnement", droulez "Options" et slectionnez
loption "Options gnrales de WinDev".

Introduction

19

2. Dans longlet "Aide", slectionnez :


le mode daccs la base daide.

le contenu de laide : aide commune WinDev, WebDev et WinDev Mobile ou aide du produit en cours dutilisation.

Lgende des symboles


Ce symbole indique la dure de la leon et de ses manipulations. Attention, le temps
rel peut varier selon votre exprience
Un exemple est disponible pour complter le cours. Les exemples sont disponibles
dans le volet "Assistants, Exemples et Composants" de WinDev.
Ce symbole prsente une "Astuce", la lecture du texte associ est vivement conseille.
Ce symbole prsente un "Avertissement", la lecture du texte associ est primordiale.
Ce symbole prsente une "Note", la lecture du texte associ est conseille.
Ce symbole prsente le rsultat dun "Test", la lecture du texte associ est conseille.

20

Introduction

Si vous connaissez WinDev 17...


Si vous connaissez dj WinDev 17, le suivi de ce nouveau cours ne pourra tre que bnque : ce
sera une bonne occasion de "rviser" les possibilits de WinDev !

Que fait-on avec WinDev ?


WinDev est un AGL (Atelier de Gnie Logiciel). Il vous permet de dvelopper des applications dans
tous les domaines :
Gestion des stocks, inventaire, traabilit des marchandises
Rglage et suivi de machines sur chane de production
Prise de commandes pour traitement rapide sur un lieu de vente de passage (foire, cole,
stand, ...)
Fiches clients
Outil daide la prise de dcision durgence sur tlphone portable
Vrication didentit des visiteurs dune manifestation : salon, prsentation de produits, ...
Mdecin ou vtrinaire en dplacement
Prises dinformations sur un lieu de passage : salon professionnel, rue pour un sondage,
stade, ...
WinDev est un outil de dveloppement complet qui intgre tous les outils ncessaires au cycle de
ralisation dune application.
Contrairement dautres langages de dveloppement traditionnels, il nest pas ncessaire de
chercher et de rajouter des modules pour pouvoir concevoir, tester et installer une application.
Le L5G (Langage de 5me Gnration) de WinDev, le WLangage, vous tonnera par sa simplicit :
quelques heures sufsent pour apprhender le langage, une semaine suft en gnral pour matriser toute sa puissance !
Comme il est en franais, le WLangage (disponible galement en anglais) vous fera gagner du
temps !

Introduction

21

22

Introduction

PARTIE 1
A la dcouverte
de WinDev

LEON 1.1. DCOUVREZ WINDEV


Ce que vous allez apprendre dans cette leon ...
Lancement de WinDev

Dure estime : 5 mn

Partie 1 : A la dcouverte de WinDev

25

Prsentation
WinDev est un AGL (Atelier de Gnie Logiciel) complet permettant de dvelopper des applications
Windows dans de nombreux domaines : gestion, industrie, mdical, ... Les applications dveloppes peuvent inclure laccs des informations stockes dans des bases de donnes.
Tout au long de ce cours dauto-formation, vous allez apprendre crer vos applications (avec ou
sans base de donnes), et les enrichir en utilisant les nombreuses fonctionnalits proposes
par WinDev.

Lancement de WinDev

"Lancez WinDev 18 (si ce nest dj fait).


"Si vous navez jamais lanc WinDev 18, un assistant de bienvenue se lance. Cet assistant
permet :
Si vous possdiez une ancienne version de WinDev, de rcuprer les congurations existantes.
Si vous tes nouvel utilisateur, de paramtrer votre environnement. Vous pouvez ainsi choisir la conguration cran utilise et paramtrer les Centres de Contrle (nous verrons en
dtail les Centres de Contrle dans le chapitre "Centres de contrle", page 436).

"Si vous avez dj lanc WinDev 18, identiez-vous si ncessaire. Lenvironnement de


dveloppement se lance. La fentre de bienvenue apparat.
Arrtons-nous un instant sur lenvironnement de dveloppement de WinDev.

26

Partie 1 : A la dcouverte de WinDev

Environnement de dveloppement
Lditeur
Lenvironnement de dveloppement de WinDev est constitu dune interface spcique, et de
plusieurs diteurs permettant de crer les diffrents lments de vos applications.
Ainsi, lditeur de fentres permet de crer des fentres, lditeur dtats permet de crer des
tats, ...
Tous les diteurs utilisent le mme environnement :

1. Menu des diteurs, afch sous forme de ruban (nous allons voir sa manipulation dans le paragraphe suivant).
2. Editeur en cours (ici, diteur de fentres). Cet espace permet de visualiser de manire WYSIWYG (What You See Is What You Get) llment en cours de cration ou de modication.
3. Volets. Linterface de WinDev dispose de plusieurs volets permettant daccder rapidement
diffrents types dinformations. Quelques exemples :
Le volet "Explorateur de projet" (ici, afch droite) permet de lister tous les lments du projet
par catgorie.
Le volet "Assistant, Exemples et Composant" (ici en bas) permet daccder rapidement des
exemples complets, des fentres dexemples, des champs facilement intgrables dans vos applications.
Si ncessaire, ces volets peuvent tre cachs rapidement en utilisant la combinaison de touches
[CTRL] + [W].
Partie 1 : A la dcouverte de WinDev

27

4. Barre des documents ouverts. Cette barre permet de visualiser rapidement tous les lments
ouverts. Un simple clic sur le bouton correspondant llment lafche dans son propre diteur.
La barre de menu (ruban) en dtail
La barre de menu de WinDev est prsente sous forme dun ruban. Ce ruban est compos de
volets dans lesquels sont regroupes les diffrentes options des diteurs.
Nous allons dtailler ici, les diffrents lments importants du ruban, ainsi que la manire dont
nous le manipulerons dans ce cours.

Les diffrents lments du ruban


Le ruban est constitu de 3 zones :
la zone de boutons, gauche.
la zone des volets en haut
la zone des options.
Voyons ces diffrentes zones en dtail.
La zone des boutons
La zone des boutons regroupe principalement les boutons daccs rapide.
Ces boutons permettent deffectuer les oprations les plus courantes, bien
souvent communes tous les diteurs : enregistrer, ouvrir, crer, ...
Les 3 boutons en haut de cette zone sont galement spciques :

Le logo 18 permet dafcher la fentre "A propos" et dafcher les


perso-menus (menus personnaliss).

Les 2 pictogrammes suivants permettent de retrouver les barres


doutils et les menus des versions prcdentes.
La zone des volets

Les diffrents volets du ruban permettent daccder aux options des diffrents diteurs. Plusieurs
types de volets sont disponibles :
le volet en cours : Longlet du volet apparat en gris clair et un trait orange est afch en haut
de longlet.
les volets contextuels, spciques llment en cours : Le nom du volet est afch en orange.
les volets disponibles : Le nom du volet apparat en blanc.

28

Partie 1 : A la dcouverte de WinDev

La zone des options

En fonction du volet slectionn, les options afches dans le ruban diffrent. Plusieurs types
doptions sont disponibles :
Options cocher
Boutons cliquer
Boutons che permettant de drouler des options. Deux types de boutons che sont disponibles :
les boutons che permettant uniquement de drouler un menu
les boutons che permettant soit de drouler un menu (clic sur la che), soit deffectuer
une action par dfaut (clic sur licne du bouton).
Les options sont regroupes par groupe. Chaque groupe doptions a un nom et peut avoir un bouton de regroupement
. Ce bouton permet deffectuer une action spcique selon le groupe en
cours : afchage de la description de llment en cours, afchage de laide, ...).
Dans ce cours, pour dsigner une option de menu, nous parlerons donc de volets, de groupes et
doptions.
Par exemple :
Pour afcher laide, sous le volet "Accueil", dans le groupe "Aide en ligne", cliquez sur "Aide".

Partie 1 : A la dcouverte de WinDev

29

LEON 1.2. MA

PREMIRE FENETRE

Ce que vous allez apprendre dans cette leon ...


Comment crer une fentre
Comment saisir un texte et lafcher

Dure estime : 30 mn

30

Partie 1 : A la dcouverte de WinDev

Prsentation

Note

Pour commencer utiliser WinDev, nous allons simplement crer quelques fentres.
Les fentres permettent dafcher ou de saisir lcran des informations. Lutilisateur peut agir directement sur les fentres par lintermdiaire de champs, de
boutons, ...

Ces quelques exemples vous permettront de connatre les bases de la programmation en WinDev
et vous permettront ensuite daborder des sujets plus complets.
Les leons de cette premire partie vont vous permettre de :
crer des fentres simples,
manipuler des chanes, des numriques, des montaires,
manipuler des dates et des heures.
Ouverture du projet

"Lancez WinDev 18 (si ce nest dj fait). Si ncessaire, fermez le projet en cours pour faire
apparatre la fentre de bienvenue.

"Ouvrez le projet "WD Mes Premires Fentres".

Important

Dans cette partie, nous nous concentrons sur la cration de fentres simples. Le
projet "WD Mes Premires Fentres" est un projet vide, dj cr. La cration de
projet sera aborde dans une prochaine leon.

Corrig

Pour cela, dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez
le premier projet "Mes premires fentres (Exercice)".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Mes premires
fentres (Exercice)".

Un projet corrig est disponible. Ce projet contient les diffrentes fentres cres
dans cette leon. Pour ouvrir le projet corrig, sous le volet "Accueil", dans le
groupe "Aide en ligne", droulez "Guide dauto-formation" puis slectionnez "Mes
premires fentres (Corrig)".

Partie 1 : A la dcouverte de WinDev

31

Ma premire fentre : saisir et afficher des donnes


Prsentation
Voici la fentre que vous allez crer :

Cette fentre permet lutilisateur de saisir son prnom et dafcher un message de bienvenue
grce au bouton "Afcher".
Vous pouvez tre tent de dire que cest trop simple, trop basique, mais nous vous conseillons
de raliser cette fentre. Vous risquez dtre surpris par la facilit et lintuitivit de lditeur de
WinDev. De plus, cette fentre vous permettra de dcouvrir des concepts fondamentaux pour la
suite de ce cours.
Cration de la fentre

"Pour crer la fentre :


1. Cliquez sur

parmi les boutons daccs rapide du menu de WinDev :

Note

2. Une fentre en forme de roue safche. Cette fentre permet de crer tous les lments
pouvant tre associs un projet.
3. Cliquez sur "Fentre". Lassistant de cration de fentres safche.
4. Slectionnez "Vierge" dans la liste des fentres "standard" afche sur la gauche. Dans la
liste des gabarits prsente sur la droite, le gabarit "Elegant" est slectionn par dfaut. Vous
pouvez choisir un autre gabarit propos dans la liste.
Les gabarits permettent de crer rapidement des interfaces professionnelles. Un
gabarit dnit le look de la fentre mais galement le look de tous les champs
qui seront utiliss dans cette fentre. Ainsi, aucune faute de got nest possible.

5. Validez. La fentre est automatiquement cre sous lditeur.

32

Partie 1 : A la dcouverte de WinDev

"Nous allons dnir les caractristiques de base de la fentre : son nom et le titre qui sera

Note

afch dans la barre de titre.


Double-cliquez sur la fentre qui vient dtre cre. La fentre de description safche sur
longlet "Gnral". Le nom de la fentre propos par dfaut est "FEN_SansNom1".
Observez bien le nom de la fentre que WinDev propose par dfaut : ce nom
commence par les lettres "FEN_". Ce prxe est automatiquement ajout car le
projet utilise une charte de programmation.
La charte de programmation permet de dnir un prxe pour chaque type dobjet et ainsi didentier rapidement llment manipul :
une fentre commence par FEN,
un bouton commence par BTN,
etc.
Si vous ne voulez pas utiliser cette charte, il suft de la dbrancher : sous le volet
"Projet", dans le groupe "Autres actions", droulez "Charte" et dcochez loption
"Utiliser la charte".

"Saisissez les informations suivantes :

1. Le nom "logique" de la fentre : remplacez "FEN_SansNom1" par "FEN_Saisie".


Ce nom sera le nom sous lequel sera enregistre la fentre sur le disque (avec lextension
"WDW") dans le rpertoire des sources du projet. Ce nom sera galement utilis en programmation pour manipuler la fentre, nous y reviendrons.
2. Le titre de la fentre : saisissez "Ma premire fentre". Ce titre est afch dans la barre de
titre de la fentre.

"Validez (bouton vert). Le titre apparat dans la barre de titre de la fentre.

Partie 1 : A la dcouverte de WinDev

33

"Enregistrez la fentre en cliquant sur

parmi les boutons daccs rapide. Par dfaut :


le titre de llment correspond au titre que nous avons saisi.
le nom de llment est le nom logique de la fentre.
lemplacement propos correspond au rpertoire du projet.

" Validez en cliquant sur le bouton vert.


Saisie et affichage de la valeur saisie
Pour grer la saisie et lafchage de la valeur saisie, vous allez crer :
un champ dans lequel lutilisateur va saisir son prnom. Ce type de champ est donc un "champ
de saisie".
un bouton permettant dafcher le prnom saisi.

"Pour crer le champ de saisie :


1. Sous le volet "Cration", dans le groupe "Champs usuels", droulez "Saisie" (cliquez sur la
che) :

La liste des champs de saisie proposs par dfaut safche.


2. Cliquez sur "Texte simple" dans la liste des champs. Le champ en cration suit alors le mouvement de la souris.
3. Dplacez la souris dans la fentre vers la position o le champ doit tre cr (par exemple
en haut de la fentre). Pour poser le champ dans la fentre, il suft de faire un nouveau clic
gauche de souris.
4. Faites un clic droit de la souris sur le champ que vous venez de crer. Le menu contextuel
du champ safche. Dans le menu contextuel afch, slectionnez loption "Description". La
fentre de description du champ de saisie safche.

34

Partie 1 : A la dcouverte de WinDev

5. Modiez les caractristiques du champ en saisissant les informations suivantes :

Ce champ a pour nom : "SAI_Prnom".


Ce champ a pour libell : "Prnom"
Ce champ est de type texte.
6. Validez la fentre de description du champ (bouton vert). Le champ apparat sous lditeur
de fentres.

"Le libell du champ apparat tronqu sous lditeur. Pour afcher correctement le champ :
1. Slectionnez le champ (il suft de cliquer dessus avec la souris).
2. Dans le menu contextuel (clic droit), slectionnez loption "Adapter la taille".
3. Le champ est immdiatement agrandi.

"Pour crer le bouton "Afcher" :


1. Sous le volet "Cration", dans le groupe "Champs usuels", cliquez sur
.
2. Positionnez le champ dans la fentre. Cliquez lemplacement de cration du bouton (par
exemple droite du champ de saisie).
3. Cliquez sur le bouton que vous venez de crer. Le texte afch dans le bouton passe en
dition. Saisissez le libell "Afcher". Le nom du bouton devient automatiquement "BTN_Afcher". Vous pouvez voir le nom du bouton :
soit dans la bulle daide afche lors du survol du champ :

soit dans la barre de message de lditeur :

Partie 1 : A la dcouverte de WinDev

35

"Nous allons afcher le texte saisi dans une bote de dialogue (une mini-fentre propose par
Notes

le systme). Pour cela, nous allons utiliser notre premire fonction WLangage : la fonction
Info.

Le WLangage est le langage de programmation fourni avec WinDev. Cest un langage de 5 gnration (L5G), possdant des ordres volus.

1. Slectionnez laide de la souris le bouton "Afcher".


2. Afchez le menu contextuel du champ (clic droit de la souris).
3. Slectionnnez loption "Code". Cette option ouvre lditeur de code de WinDev, dans lequel
toutes les instructions WLangage peuvent tre saisies.
4. Dans le traitement "Clic sur BTN_Afcher", saisissez le code suivant :
Info("Bonjour " + SAI_Prnom)

Notes

Cest pour cela que la charte de programmation est trs importante. Tous les
lments manipuls dans le code de lapplication utilisent la mme norme et
peuvent ainsi tre facilement retrouvs lors de la saisie du code.

Notes

Remarque sur laide la saisie : Ds la saisie des trois premiers caractres, WinDev propose tous
les mots du vocabulaire WLangage contenant ces caractres. Lassistance au dveloppement est
pousse trs loin. Vous ne pouvez plus vous tromper en saisissant le nom dun lment : les
erreurs de syntaxes sont minimises. Il suft de slectionner le mot dsir et de valider par la
touche [Entre]. Vous pourrez ainsi vous concentrer sur lalgorithme.

En saisissant ce code sous lditeur de code, vous constatez que les diffrents
lments saisis utilisent des couleurs diffrentes. Cest la coloration syntaxique.
Lditeur de code permet ainsi didentier rapidement les diffrents lments
manipuls par le code :
les fonctions du WLangage apparaissent en bleu,
les chanes de caractres (entre guillemets) apparaissent en violet,
les noms de champs apparaissent en cyan.

Notes

La fonction Info afche le message pass en paramtre. Notre message est construit partir du
texte "Bonjour " et de la valeur du champ "SAI_Prnom". Le signe "+" indique une opration dite de
"concatnation" entre deux chanes.

36

Dans cet exemple, le texte saisi est afch dans une fentre systme, mais il est
galement possible de lafcher dans une fentre cre avec WinDev.

Partie 1 : A la dcouverte de WinDev

"Nous allons enregistrer la fentre et la tester :


parmi les boutons daccs rapide ( gauche
1. Enregistrez les modications en cliquant sur
du ruban), ou par la combinaison de touches [Ctrl]+[S].
parmi les boutons daccs rapide (ou utilisez la touche [F9]).
2. Cliquez sur
3. La fentre que vous avez cr se lance en excution. Saisissez votre prnom.
4. Cliquez sur le bouton "Afcher".
5. Validez la fentre systme qui safche.
Tout dveloppeur sait que tester un programme est souvent long, voire fastidieux. Avec WinDev,
en UN CLIC, vous testez la fentre, ltat, ou la procdure que vous tes en train de raliser. Cest
la fois simple et rapide !

"Cliquez sur le bouton "x" situ dans la barre de titre pour fermer la fentre.
"Lditeur de WinDev rapparat. Fermez lditeur de code (sous longlet "Accueil", dans le
groupe "Gnral", cliquez sur "Fermer").
Amliorations de la fentre
Lors de ce premier test, vous avez remarqu que :
votre fentre est trop grande,
votre fentre peut tre redimensionne alors quelle ne contient que deux champs,
le prnom saisi est afch avec la casse utilise dans le champ de saisie. Nous allons forcer
lutilisation dune majuscule en dbut de mot.
Nous allons revoir rapidement linterface de cette fentre.

"Pour rduire la taille de la fentre sous lditeur :


1. Cliquez sur la fentre : des poignes bleues apparaissent autour de la fentre (selon le gabarit utilis, la couleur de ces poignes peut tre diffrente).
2. Cliquez sur la poigne situe en bas droite, et rduisez la taille de la fentre en maintenant le bouton de la souris enfonc.

"Pour que la fentre ne soit pas redimensionnable pendant lexcution :

Notes

1. Double-cliquez sur la fentre. La fentre de description safche.


2. Dans longlet "IHM", dcochez loption "Redimensionnable" (il suft de cliquer sur loption)
3. Validez.
Nous approfondirons les conseils dinterface et dergonomie dans un prochain
chapitre de ce cours.

"Relancez le test de cette fentre, pour visualiser le rsultat en excution.


"Nous allons maintenant forcer lutilisation dune majuscule lors de la saisie et de lafchage
du prnom.

Partie 1 : A la dcouverte de WinDev

37

Notes

Par dfaut, les caractres seront saisis en majuscules ou en minuscules selon


la position de la touche [CAPSLOCK] du clavier. Ce genre de saisie peut tre trs
gnant lors dune recherche par exemple.
WinDev propose la gestion dun masque de saisie pour un champ. Le masque
de saisie permet de mettre en forme la valeur saisie, automatiquement et sans
aucune ligne de code.

"Pour modier le masque de saisie :


1. Double-cliquez sur le champ "Prnom". La fentre de description safche.
2. Dans longlet "Gnral", droulez la liste "Masque de saisie" et choisissez "1re lettre maj.".

3. Validez la fentre de description du champ.


4. Sous lditeur, le nom du masque apparat automatiquement dans le champ.

"Relancez le test de cette fentre, pour visualiser le rsultat en excution.

Vous venez de crer rapidement et avec succs votre premire fentre. Nous allons dans la suite
de ce cours dcouvrir de nouveaux concepts de WinDev.

"Validez le message, et fermez la fentre de test (cliquez sur la croix en haut, droite de la
fentre). Lditeur de WinDev rapparat.

"Fermez la fentre "FEN_Saisie" afche sous lditeur (sous le volet "Accueil", dans le groupe
"Gnral", cliquez sur "Fermer").

"Fermez le projet (sous le volet "Accueil", dans le groupe "Gnral", droulez "Fermer" et
slectionnez "Fermer le projet").

38

Partie 1 : A la dcouverte de WinDev

LEON 1.3. MES

PREMIRES FENTRES

Ce que vous allez apprendre dans cette leon ...


Comment crer une fentre compteur
Comment crer une fentre afchant la date et lheure en temps rel
Comment faire un calcul
Crer une fentre avec menu

Dure estime : 30 mn

Partie 1 : A la dcouverte de WinDev

39

Prsentation
Dans la leon prcdente, nous avons dj vu comment saisir et afcher un texte.
Dans cette leon, nous allons crer les fentres suivantes :
Une fentre compteur,
Une fentre afchant la date et lheure en temps rel,
Une fentre de calcul,
Un menu pour rassembler les fentres cres prcdemment.
Ces fentres seront regroupes pour des besoins pratiques dans un projet.

Ma premire fentre : un compteur


Prsentation
Nous allons raliser la fentre suivante :

Le compteur numrique sera incrment ou dcrment avec les boutons chs.


Ralisation

"Ouvrez le projet "WD Mes Premires Fentres".

Corrig

Pour cela, dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez
le premier projet "Mes premires fentres (Exercice)".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Mes premires
fentres (Exercice)".

40

Un projet corrig est disponible. Ce projet contient les diffrentes fentres cres
dans cette leon. Pour ouvrir le projet corrig, sous le volet "Accueil", dans le
groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez "Mes
premires fentres (Corrig)".

Partie 1 : A la dcouverte de WinDev

"Pour crer la fentre :

Notes

1. Cliquez sur
parmi les boutons daccs rapide du menu de WinDev.
2. Dans la fentre en forme de roue qui safche, cliquez sur loption "Fentre". Lassistant de
cration de fentres safche.
3. Slectionnez "Vierge" dans la liste des fentres "standard" afche sur la gauche. Dans la
liste des gabarits prsente sur la droite, le gabarit "Elegant" est propos automatiquement.
4. Validez. La fentre est automatiquement cre sous lditeur.
5. Faites un clic droit sur la fentre qui vient dtre cre et slectionnez loption "Description"
dans le menu contextuel afch. La fentre de description safche.
6. Dans longlet "Gnral", indiquez le nom de la fentre ("FEN_Compteur") ainsi que le titre
("Exemple dun compteur"). Validez la fentre de description.
7. Enregistrez la fentre (CTRL + S).
Il est trs important de sauvegarder la fentre ds sa cration.
Lenregistrement de la fentre permet par la suite WinDev :
de proposer le nom des champs automatiquement dans le code.
de proposer le renommage automatique des champs dans le code.

Gestion du compteur
Pour grer le compteur numrique, vous allez crer :
un champ dans lequel va safcher la valeur numrique,
un champ spin (compos de deux boutons) qui va permettre dajouter 1 ou de soustraire 1 au
compteur.
WinDev permet de crer ces diffrents champs en une seule opration grce aux champs prdnis proposs la cration.

"Pour crer les diffrents champs du compteur :


1. Sous le volet "Cration", dans le groupe "Champs usuels", droulez "Saisie" (cliquez sur la
che). La liste des diffrents champs de saisie prdnis safche. Le champ numrique de
type "Entier + Spin" correspond ce que nous voulons.
2. Cliquez sur le champ "Entier + Spin".
3. Cliquez dans la fentre lendroit o le champ doit tre cr.
4. Sauvegardez la fentre.
Nous allons maintenant modier les caractristiques des champs que nous venons de crer.

"Cliquez dans la fentre. Le champ que nous venons de crer nest plus slectionn.
"Double-cliquez sur le champ de saisie pour afcher la fentre de description du champ.
Cette fentre contient les informations gnres par dfaut.

Partie 1 : A la dcouverte de WinDev

41

Nous allons modier ces informations :

Notes

Par dfaut, le masque de saisie du champ correspond au masque numrique


dni pour le projet. Cette information est slectionne dans longlet "Langue
de la description du projet. Pour afcher la description du projet, sous longlet
"Projet", dans le groupe "Projet", cliquez sur "Description".
Ainsi, le mme masque est utilis automatiquement dans tous les champs
numriques de lapplication. Cette fonctionnalit est trs utile dans les
applications multilingues.

Notes

1. Saisissez le nom "SAI_Compteur".


2. Entrez le libell "Compteur".
3. Ce champ est de type numrique.
4. Modiez le format (option "Masque de saisie") : droulez la liste des formats proposs par
dfaut et slectionnez "999 999" (il est galement possible de saisir directement la valeur
"999 999" dans le champ "Masque de saisie"). Le masque "999 999" signie que :
le nombre peut comporter jusqu 6 chiffres.
le nombre ne comporte aucune partie dcimale.
le sparateur de milliers est un espace.

Deux types de masques sont disponibles :


Le masque dafchage : il correspond au format utilis lorsque la valeur est
afche dans le champ.
Le masque de saisie : il correspond au format utilis lorsque lutilisateur va
saisir la valeur dans le champ.

Nous voulons donner une valeur initiale au compteur. Pour cela, il suft dinitialiser le contenu du
champ avec cette valeur (onglet "Contenu" de la fentre de description du champ).

42

Partie 1 : A la dcouverte de WinDev

Notes

Beaucoup de dveloppeurs feraient cette opration par programme : il faudrait


crire une ligne de code pour affecter une valeur dans ce champ.
Avec WinDev, pas besoin de saisir du code. Ce type dinformation fait partie des
caractristiques du champ.

"Cliquez sur longlet "Contenu" et saisissez la valeur initiale, par exemple, "100".
Bien entendu, comme partout dans WinDev, vous pouvez procder de manire traditionnelle
en saisissant la ligne suivante en WLangage dans le code dinitialisation du champ :

Notes

SAI_Compteur = 100

Dans cette ligne de code, le signe "=" permet daffecter le champ "SAI_Compteur"
avec la valeur indique. La syntaxe utilise est la suivante :
<Destination> = <Valeur affecter>

"Validez les informations du champ (bouton vert de la fentre de description).


Sous lditeur, le champ contient maintenant la valeur 100. Ce concept se nomme "Live
Data" : vous voyez les donnes en temps rel ! Vous retrouverez ce concept un peu plus tard,
lors de la manipulation des chiers de donnes.

"Enregistrez la fentre. Un "warning" et plusieurs erreurs de compilation apparaissent


automatiquement dans le volet "Erreur de compilation".

Ces erreurs indiquent que le nom "SAI_Entier_Spin" est inconnu. Ce nom est utilis dans un
des traitements de la fentre "FEN_Compteur". WinDev a dtect quun champ a t
renomm (dans notre cas, le nom du champ de saisie a t modi), et afche une erreur de
compilation pour chaque utilisation du champ.
Afchez le menu contextuel de lerreur (clic droit sur lerreur). Ce menu propose de renommer
automatiquement ce champ dans toutes les utilisations qui sont faites dans la fentre
(notamment dans les traitements WLangage).
Slectionnez loption "Renommer toutes les rfrences" du menu contextuel de lerreur.

"Le champ "Spin" (les deux petites ches) a automatiquement t cr ct du champ de


saisie. Ce champ afche deux petites ches permettant de modier la valeur prsente dans
le champ de saisie. Nous allons maintenant le modier pour grer la valeur du compteur.

Partie 1 : A la dcouverte de WinDev

43

"Afchez le code du champ Spin :


Afchez le menu contextuel du champ (clic droit sur le champ).
Slectionnez loption "Code" prsente dans le menu contextuel.

"Ce champ contient en plus du code dinitialisation, deux codes spciques :


Le code dincrmentation : ce code est excut lorsque lutilisateur manipule le champ spin
pour augmenter une valeur.
Le code de dcrmentation : ce code est excut lorsque lutilisateur manipule le champ
spin pour diminuer une valeur.

"Dans le code dincrmentation, le code suivant est afch :


SAI_Compteur++

Notes

Cette ligne de code signie que lon ajoute 1 la valeur du champ SAI_Compteur.
Le champ SAI_Compteur est alors manipul comme une variable.
Vous pouvez galement utiliser les syntaxes :
SAI_Compteur += 1
SAI_Compteur = SAI_Compteur + 1

Le principe est le mme pour le code de dcrmentation :


SAI_Compteur--

Ce code signie que lon enlve 1 la valeur du champ SAI_Compteur.

"Enregistrez la fentre et testez-la (en cliquant sur

puis sur

parmi les boutons

daccs rapide).

"Cliquez sur le bouton "x" situ dans la barre de titre pour fermer la fentre. Lditeur de
WinDev rapparat.

"Vous pouvez maintenant rduire la taille de la fentre laide des poignes, et la rendre non
dimensionnable (nous avons vu comment le faire dans la leon prcdente).
Cration dun bouton pour quitter la fentre
Dans une fentre, il y a toujours un bouton ou une option pour quitter la fentre. Bien entendu,
si vous najoutez pas de bouton ou doption, il reste toujours la possibilit de fermer la fentre en
cliquant sur licne "X" de la barre de titre, mais ce nest pas trs convivial.

"Pour crer le bouton de fermeture :


1. Sous le volet "Cration", dans le groupe "Champs usuels", droulez "Bouton" (cliquez sur la
che). La liste des boutons prdnis safche.
2. Cliquez sur le bouton de type "Fermer".
3. Cliquez dans la fentre la position o le bouton doit tre cr.

44

Partie 1 : A la dcouverte de WinDev

"Vrions la description du bouton cr :


1. Afchez la description du champ (option "Description" du menu contextuel ou double-clic sur
le bouton).
2. Dans longlet "Gnral" :
Le nom du bouton respecte la charte de programmation.
Une action est associe au bouton : cette action permet de fermer la fentre.
Les images correspondant au gabarit utilis sont automatiquement associes au bouton.

Notes

3. Dans longlet "IHM", le bouton est de type "Abandon".


WinDev propose plusieurs types pour les boutons. Nous les verrons en dtail
dans le chapitre consacr lergonomie.
Pour fermer une fentre, le bouton utilis doit tre de type "Abandon".

4. Fermez la fentre de description du bouton.

"Vous pouvez facilement dplacer le bouton de fermeture :


1. Cliquez sur le bouton de fermeture avec le bouton gauche de la souris.
2. Tout en maintenant le bouton de la souris enfonc, faites glisser la souris (et le champ)
lemplacement voulu.

"Relancez le test de cette fentre, pour visualiser le rsultat en excution.


Nous en avons termin avec notre compteur !

Partie 1 : A la dcouverte de WinDev

45

Afficher la date et lheure en temps rel


Dans une nouvelle fentre nous allons maintenant afcher la date et lheure. Simple ! Cependant,
lheure sera mise jour en temps rel. Pour cela, WinDev met votre disposition les "Timer".
Un timer permet dexcuter en parallle une tche qui doit tre lance priodiquement (acquisition de donnes en tche de fond, rafrachissement automatique de donnes, dclencher un
programme une heure donne ...). Seules les procdures (globales ou locales une fentre) et
les mthodes globales de classe peuvent tre appeles par un timer.
Mais commenons par crer notre fentre !
Cration de la fentre

"Crez une nouvelle fentre vierge :


1. Cliquez sur
parmi les boutons daccs rapide. Dans la roue qui safche, cliquez sur "Fentre". Lassistant de cration de fentres safche.
2. Slectionnez "Vierge" et le gabarit "Elegant".
3. Validez. La fentre est automatiquement cre sous lditeur.
4. Faites un clic droit sur la fentre et slectionnez loption "Description".
5. Donnez la fentre le nom "FEN_Timer" et le titre "Mise jour de lheure par timer". Validez
la fentre de description.
6. Enregistrez la fentre.
Nous allons maintenant ajouter un champ de type date dans notre fentre pour afcher la date
du jour.

"Pour crer le champ de saisie de type date :


1. Sous longlet "Cration", dans le groupe "Champs usuels", droulez "Saisie" (cliquez sur la
che). La liste des diffrents champs de saisie disponibles safche.
2. Slectionnez le champ "Date" (sans le petit calendrier) et positionnez le champ dans la
fentre.
3. Faites un clic droit sur le champ et slectionnez loption "Description".
4. Dans longlet "Gnral" de la fentre de description :
Saisissez le nom du champ "SAI_Jour".
Saisissez le libell "Nous sommes le : ".
Slectionnez le masque dafchage " JJJJ JJ MMMM AAAA". Ce masque dafchage permet
dafcher la date sous une forme littraire par exemple "Mercredi 26 septembre 2012".
5. Ce champ permet uniquement dafcher la date. Aucune saisie ne doit tre effectue. Pour
cela, il suft dindiquer que ce champ est en mode "Afchage seul" dans longlet "IHM" de la
fentre de description du champ.
6. Validez.
Pour afcher la date du jour dans le champ de type date, il suft de linitialiser avec cette date.
Cette opration est ralise par programmation.

46

Partie 1 : A la dcouverte de WinDev

"Afchez le code associ au champ que vous venez de crer :


1. Slectionnez le champ de saisie : il suft de cliquer dessus avec la souris.
2. Afchez le menu contextuel (clic droit de la souris) et slectionnez loption "Code". Lditeur
de code apparat.
3. Dans le traitement "Initialisation de SAI_Jour", saisissez le code suivant :
MoiMme = DateDuJour()

Examinons ce code dinitialisation :


MoiMme est un mot-cl qui reprsente le nom du champ en cours. MoiMme permet de rendre
un code local (traitement dun champ, ...) ou global (procdure globale, classe, ...) indpendant
du champ en cours.
DateDuJour est une fonction WLangage permettant (comme son nom lindique) dobtenir la date
du jour.

"Enregistrez la fentre et testez-la (en cliquant sur

puis sur
daccs rapide).
Le champ de saisie est bien initialis avec la date du jour.

parmi les boutons

Nous allons maintenant ajouter un nouveau champ de saisie permettant dafcher lheure en
temps rel.

"Pour crer le champ de saisie de type heure :


1. Sous le volet "Cration", dans le groupe "Champs usuels", droulez "Saisie" (cliquez sur la
che). La liste des diffrents champs de saisie disponibles safche.
Slectionnez le champ "Heure" et positionnez le champ dans la fentre.
2. Faites un clic droit sur le champ et slectionnez loption "Description".
3. Dans longlet "Gnral" de la fentre de description :
Saisissez le nom du champ "SAI_Heure".
Saisissez le libell "Il est : ".
Le masque dafchage slectionn par dfaut afche les heures, les minutes et les secondes. Nous ny touchons pas.
4. Comme pour le champ Date, ce champ permet uniquement dafcher lheure. Slectionnez
loption "Afchage seul" dans longlet "IHM" de la fentre de description du champ.
5. Validez.

Partie 1 : A la dcouverte de WinDev

47

"De la mme manire que pour le champ Date, nous allons initialiser le champ Heure avec
lheure actuelle.
1. Afchez le code associ au champ que vous venez de crer.
2. Dans le traitement "Initialisation de SAI_Heure", saisissez le code suivant :
MoiMme = Maintenant()

La fonction Maintenant est une fonction WLangage permettant (comme son nom lindique) dobtenir lheure actuelle.

"Enregistrez la fentre et testez-la (en cliquant sur

puis sur
). La date et lheure
safchent. Nous allons maintenant actualiser lheure au l du temps.

Mise en place du timer


Pour mettre jour le champ Heure, nous allons appeler toutes les secondes une procdure qui va
mettre jour le champ Heure avec lheure actuelle.

"Pour crer une procdure locale :


1. Slectionnez dans le volet "Explorateur de projet" le nom de la fentre "FEN_Timer".
2. Cliquez sur la che gauche pour afcher les diffrents lments.
3. Cliquez sur "Procdures locales". le dossier est slectionn.
4. Dans le menu contextuel de "Procdures locales" (clic droit), slectionnez loption "Nouvelle
procdure locale".
5. Dans la fentre qui apparat, indiquez le nom de la procdure "MiseAheure" et validez.
6. La procdure apparat sous lditeur de code. Saisissez le code suivant :
SAI_Heure = Maintenant()

7. Ce code permet de mettre jour le champ afchant lheure. Nous allons maintenant lappeler toutes les secondes grce au timer.

"Pour mettre en place le timer :


1. Revenez sur la fentre "FEN_Timer". Vous pouvez par exemple cliquer sur le bouton "FEN_Timer" en bas.

2. Cliquez dans la fentre daccueil de la fentre (fond vert). Afchez le menu contextuel (clic
droit) et slectionnez loption "Code".
3. Les diffrents traitements associs la fentre safchent.
4. Dans le code "Initialisation de FEN_Timer", saisissez le code suivant :
TimerSys(MiseAheure, 100,1)

5. Ce code permet dindiquer que la procdure "MiseAheure" va tre appele toutes les secondes (100 reprsente les centimes de seconde).

"Notre fentre est termine.


Enregistrez la fentre et testez-la (en cliquant sur
daccs rapide).

48

Partie 1 : A la dcouverte de WinDev

puis sur

parmi les boutons

Notes

Nous avons vu ici la cration dun timer par programmation. Il est galement
possible de crer un timer automatiquement depuis lditeur de code. Pour plus
de dtails, consultez laide en ligne (mot-cl : Procdures automatiques).

Grer la saisie dun numrique pour faire un calcul


Dans une nouvelle fentre, nous allons maintenant :
Crer deux champs de saisie numriques.
Calculer et afcher la valeur TTC du montant HT saisi.
Le rsultat du calcul sera afch dans le champ "Prix TTC".

"Crez une nouvelle fentre vierge :


1. Cliquez sur
parmi les boutons daccs rapide. Dans la roue qui safche, cliquez sur "Fentre". Lassistant de cration de fentres safche.
2. Slectionnez "Vierge" et le gabarit "Elegant".
3. Validez. La fentre est automatiquement cre sous lditeur.
4. Faites un clic droit sur la fentre et slectionnez loption "Description".
5. Donnez la fentre le nom "FEN_Calcul" et le titre "Exemple de calcul". Validez la fentre
de description.
6. Enregistrez la fentre.

"Pour crer le champ de saisie du prix HT :


1. Sous le volet "Cration", dans le groupe "Champs usuels", droulez "Saisie" (cliquez sur la
che). La liste des diffrents champs de saisie disponibles safche. Slectionnez le champ
"Montaire" et positionnez le champ dans la fentre.
2. Faites un clic droit sur le champ et slectionnez loption "Description".
3. Dans la fentre de description :
Saisissez le nom du champ "SAI_PrixHT".
Saisissez le libell "Prix HT".
Slectionnez le type "Montaire + Euro".
4. Validez.

"Pour crer le champ dans lequel sera afch le rsultat :


1. Sous le volet "Cration", dans le groupe "Champs usuels", droulez "Saisie" (cliquez sur la
che). La liste des diffrents champs de saisie disponibles safche. Slectionnez le champ
"Montaire" et positionnez le champ dans la fentre.
2. Saisissez les informations du champ : faites un clic droit sur le champ et slectionnez loption "Description".
Indiquez le nom du champ "SAI_PrixTTC".
Modiez le libell par "Prix TTC".
Slectionnez le type "Montaire + Euro".
3. Le rsultat afch dans ce champ ne doit pas tre modiable. Cliquez sur longlet "IHM" et
choisissez ltat initial "Afchage seul".
4. Validez.
5. Sauvez la fentre.
Partie 1 : A la dcouverte de WinDev

49

Il existe galement des champs de saisie "Numriques" (pour plus de dtails, consultez laide en
ligne).
Le calcul du montant TTC va tre ralis chaque modication du champ contenant le montant
hors taxe.

"Pour raliser le calcul du montant TTC :


1. Afchez le code du champ "SAI_PrixHT" (option "Code" du menu contextuel du champ).
2. Dans le code "A chaque modication", saisissez le code suivant :
// TVA fige 19.6% pour lexemple
// Cela aurait pu tre une variable quelconque
// provenant dune base de donnes
SAI_PrixTTC = SAI_PrixHT * 1.196

3. Fermez la fentre de code (icne "x" de la fentre de code).


4. Enregistrez la fentre.
5. Testez la fentre : cliquez sur
parmi les boutons daccs rapide). Saisissez une valeur
dans le champ "Prix HT". Le rsultat apparat immdiatement dans le champ "Prix TTC".

6. Fermez la fentre de test.


Ce calcul prend en compte un taux xe de TVA. Pour compliquer un peu notre exemple, nous
allons donner la possibilit de slectionner le taux de TVA dans une liste droulante (appele
"combo").

"Pour crer le champ combo de slection de la TVA :


1. Sous longlet "Cration", dans le groupe "Champs usuels", cliquez sur "Combo" puis cliquez
dans la fentre la position o le champ doit tre cr ( ct du champ "Prix HT").
2. Lassistant de cration de combo safche. Cet assistant permet de dnir simplement les
principales caractristiques du champ.
3. Slectionnez loption "Remplir la combo par programmation ou saisir directement une liste
de valeurs". Afchez lcran suivant.
4. Laissez les options proposes par dfaut. Afchez lcran suivant.
5. Saisissez la liste des valeurs de TVA possibles :
5.5
Appuyez sur la touche ENTREE
19.6
Appuyez sur la touche ENTREE
25.
6. Afchez lcran suivant, et donnez un nom au champ (COMBO_TVA) et un libell (TVA).
7. Validez.
Nous allons maintenant modier le code du champ "Prix HT" pour prendre en compte le montant
de la TVA slectionn dans la combo.
50

Partie 1 : A la dcouverte de WinDev

"Pour prendre en compte le montant de la TVA slectionn :


1. Afchez le code du champ "Prix HT" (option "Code" du menu contextuel).
2. Modiez le code de la faon suivante :
SAI_PrixTTC = ...
SAI_PrixHT*(1+Val(COMBO_TVA..ValeurAffiche)/100)

Notes

Ce code calcule le montant TTC en utilisant la valeur slectionne dans la combo (donne
obtenue avec la proprit ..ValeurAfche). Le contenu de la combo tant une chane de
caractres, la fonction Val permet dobtenir une valeur numrique an de calculer le montant
TTC.
Le WLangage est compos de fonctions et de proprits. Les fonctions peuvent
attendre des paramtres et renvoient des rsultats. Les proprits sont directement appliques aux champs grce la syntaxe :
<Nom du champ>..<Nom de la proprit>.
A tout moment, il est possible de consulter laide en ligne dune fonction grce
la touche F1 (pour plus de dtails sur laide en ligne, consultez "Comment accder laide en ligne ?", page 18).
3. Testez votre fentre. Saisissez une valeur dans le champ "Prix HT". Le rsultat apparat immdiatement dans le champ "Prix TTC" en fonction de la TVA slectionne. Cependant si vous
changez le taux de TVA, la valeur du champ "Prix TTC" nest pas modie. Nous allons maintenant corriger ce problme.
4. Fermez la fentre. Lditeur de code est de nouveau afch.

"Pour prendre en compte le montant de la TVA, chaque modication de la valeur de la TVA


dans la combo, il suft de recopier le code "A chaque modication" de "Prix HT" dans le code
"Slection dune ligne" de la combo "COMBO_TVA" :
1. Afchez le code du champ "Prix HT" (option "Code" du menu contextuel par exemple).
2. Slectionnez le code prsent dans le traitement "A chaque modication" de "Prix HT".
3. Utilisez les touches "CTRL" + "C".
4. Afchez le code du champ combo "TVA".
5. Placez-vous dans le traitement "Slection dune ligne", et utilisez les touches "CTRL"+ "V".
6. Testez votre fentre et slectionnez les diffrentes valeurs dans la combo.

Maintenant, notre fentre fonctionne correctement. Mais le mme code est utilis 2 endroits
diffrents ! Comment grer les modications et leur report ? Le plus simple est dutiliser une procdure. Cest ce que nous allons faire maintenant.

Partie 1 : A la dcouverte de WinDev

51

Utiliser une procdure


La cration dune procdure partir dun code existant est trs simple avec WinDev : une option
de menu se charge de tout.

"Pour crer la procdure de calcul de la TVA :


1. Slectionnez le code prsent dans le traitement "Slection dune ligne" de la combo "TVA".
2. Afchez le menu contextuel du code slectionn (clic droit de la souris).
3. Slectionnez loption "Crer une procdure .. Crer une procdure locale contenant le code
slectionn".
4. Donnez le nom de la procdure crer : CalculTVA. Validez.
5. La procdure locale "CalculTVA" est automatiquement cre avec le code slectionn. Votre
code a t remplac par lappel la procdure "CalculTVA()".
6. Pour terminer, il suft de remplacer le second code de calcul de la TVA (prsent dans le
code "A chaque modication" du champ "Prix HT") par lappel la procdure "CalculTVA()".
7. Voil, cest termin. Vous pouvez enregistrer et tester votre fentre pour vrier si tout fonctionne correctement.

Cration dune fentre avec un menu


Voil, nous venons de raliser quelques fentres. Nous allons maintenant crer la fentre principale de cet exemple. Cette fentre contiendra le menu organisant laccs aux diffrentes fentres
de lapplication.

WinDev permet de crer des menus droulants.


Un menu est toujours associ une fentre. Ainsi, pour crer un menu, il faut en premier crer la
fentre afchant ce menu.
Dcrire le menu

"Pour crer une fentre comportant un menu :


parmi les boutons daccs rapides pour crer une nouvelle fentre.
1. Cliquez sur
2. Dans la roue qui safche, cliquez sur "Fentre".
3. Dans lassistant qui safche, slectionnez "Vierge" et validez.
4. Donnez un nom et un titre cette fentre. Cette fentre a pour nom "FEN_Menu" et pour
titre "Menu principal".
5. Enregistrez la fentre.
6. Sous le volet "Fentres", dans le groupe "Barres et menus", droulez "Menu principal" et
slectionnez loption "Ajouter le menu principal". Un menu sinsre dans la fentre sous la
52

Partie 1 : A la dcouverte de WinDev

barre de titre. Ce menu contient par dfaut une option qui se nomme "Menu".
Remarque : Chaque option de menu est saisie directement dans le menu.
Chaque option comporte une lettre dappel. Cette lettre dappel permet daccder directement loption avec la combinaison de touches [Alt]+Lettre. Le caractre & doit alors prcder la lettre dappel (par exemple "&Fentres").

"Pour crer une option de menu et pour la modier, il suft dutiliser le menu contextuel du
menu ou de loption de menu. Pour afcher le menu contextuel dune option de menu :
1. Slectionnez le menu.
2. Cliquez avec le bouton droit de la souris.
3. Le menu contextuel suivant safche :

Plusieurs choix sont possibles. Les principales options de gestion de menu sont :
"Description de loption" pour modier le libell de loption et la lettre dappel.
"Code" pour saisir le code source correspondant au traitement excuter lors du clic sur
cette option.
"Ajouter aprs" pour ajouter une option de menu aprs loption en cours.
"Ajouter avant" pour ajouter une option de menu avant loption en cours.
"Transformer pour drouler un sous-menu" pour ajouter dans loption en cours un sousmenu (arborescence).

"Ralisez le menu suivant :

Partie 1 : A la dcouverte de WinDev

53

"Pour le menu "Fichier .. Quitter" :


Notes

1. Afchez la description de loption "Menu" insre par dfaut, et changez le libell en


"Fichie&r". Validez la fentre de description.
Rappel : Le "&" permet de dnir la lettre dappel de loption de menu.

2. Dans le menu contextuel de loption "Fichier", slectionnez loption "Transformer pour drouler un sous-menu" et saisissez "Quitter".

"Pour le menu "Fentres" :


1. Slectionnez loption "Fichier".
2. Dans le menu contextuel de loption "Fichier", slectionnez loption "Ajouter aprs" et saisissez "&Fentres".
3. Dans le menu contextuel de loption "Fentres", slectionnez "Transformer pour drouler un
sous-menu" et saisissez "&Saisie dun texte".
4. Dans le menu contextuel de loption "Saisie dun texte", slectionnez "Ajouter aprs" et saisissez "&Compteur".
5. Dans le menu contextuel de loption "Compteur", slectionnez "Ajouter aprs" et saisissez
"&Heure en temps rel".
6. Dans le menu contextuel de loption "Heure en temps Rel", slectionnez "Ajouter aprs" et
saisissez "Calcul de &TVA".

"Nous allons maintenant ajouter le raccourci [ALT + F4] pour loption "Quitter".

Astuce

1. Slectionnez loption "Quitter".


2. Afchez la description de loption (option "Description de loption" du menu contextuel).
3. Dans la zone "Raccourci clavier", droulez la combo, parcourez les lments et slectionnez
"F4". Puis cochez la case "Alt".
4. Validez.
Lorsque toutes les options de menu sont saisies, visualisez la fentre (cliquez sur "Aperu" dans
le volet "modication" ou utilisez la combinaison de touches [SHIFT]+[F9]). Ce mode de visualisation permet de visualiser laspect nal du menu. Pour fermer cette fentre, utilisez le bouton
"Fermer" de la tlcommande de laperu.

54

Dans vos applications, nous vous conseillons de suivre le standard des menus
Windows. Veillez en particulier aux points suivants :
Chaque option du menu principal doit proposer au moins une sous-option.
La premire lettre de chaque option doit tre en majuscules, mme si ce
nest pas la lettre dappel. La lettre dappel est souligne (utilisez le caractre "&").
Si un choix de menu appelle une fentre de paramtrage avant dexcuter
loption choisie, terminez le libell par trois points ().
Loption "Quitter" doit tre la dernire sous-option de la premire option de
la barre de menu (exemple : "Fichier .. Quitter").
Si une option daide est prsente, elle doit se trouver la n de la premire
ligne de menu (loption la plus droite).

Partie 1 : A la dcouverte de WinDev

Associer un code aux options de menu


Chaque option terminale de menu doit comporter un traitement associ. Classiquement, ce traitement ouvre une fentre, mais nimporte quel type de traitement peut tre excut.

"Nous allons saisir le code des diffrentes options :


1. Slectionnez loption "Quitter". Cette option va permettre de quitter lapplication. Dans le
menu contextuel, slectionnez loption "Code". Dans la fentre de code qui souvre, saisissez le
code suivant :

2. Fermez ensuite la fentre de code. La fentre en cours ddition apparat.


3. Dans la fentre, slectionnez loption de menu "Saisie dun texte". Cette option va permettre douvrir la fentre "FEN_Saisie". Dans le menu contextuel, slectionnez loption
"Code". Dans la fentre de code qui souvre, saisissez le code suivant :

4. Fermez la fentre de code.


5. Rptez cette opration pour loption "Compteur" et saisissez le code suivant :

6. Fermez la fentre de code.


7. Rptez cette opration pour loption "Heure en temps rel" et saisissez le code suivant :

Partie 1 : A la dcouverte de WinDev

55

8. Rptez cette opration pour loption "Calcul de TVA" et saisissez le code suivant :

Notes

Vous laurez devin : la fonction Ouvre permet dafcher une fentre pour effectuer une saisie. La
fonction Ferme quant elle, ferme la fentre en cours.
Si la fentre contenant le menu est la premire fentre afche par lapplication, la fermeture
de la fentre contenant le menu (par loption "Fichier .. Quitter" dans notre exemple) quivaut
quitter lapplication.
Dans ce code, les fonctions WLangage utilises sont en franais. Si vous tes
plus familiaris avec la langue de Shakespeare, il est possible de visualiser et
de saisir le code en version anglaise (sous longlet "Code", dans le groupe "Langues", droulez "Convertir le code" et slectionnez "Convertir en anglais").
Dans cette documentation, seuls les termes franais seront utiliss. Laide en
ligne indique pour chaque terme sa traduction en anglais.

"Enregistrez et testez la fentre. Lors du test :

Notes

Slectionnez une des options de menu. Fermez la fentre qui souvre.


Cliquez sur loption "Fichier .. Quitter" pour quitter le programme.

56

Manipuler les options de menu par programmation


Le WLangage offre diverses fonctions et proprits permettant de manipuler les
options de menu.
Il est ainsi possible dajouter par programmation des menus, options de menu,
sparateurs, ou encore de cloner une option de menu.
Les proprits permettent de savoir si une option est visible ou non, marque ou
non, ...
Pour plus de dtails, consultez laide en ligne (mot-cl : "Menu").

Partie 1 : A la dcouverte de WinDev

WinDev : Concepts de base et terminologie


Aprs la pratique, revenons un peu de thorie pour aborder les concepts de base de WinDev et
la terminologie spcique WinDev.
Concepts de base
WinDev permet de crer simplement une application. Mais que recouvre exactement ce terme
Application ?
Une application est un outil qui permet de raliser des tches, des actions automatiquement. Une
application est constitue dun programme excutable (ou dun ensemble de programmes excutables), de librairies, de chiers de donnes, ...
Un programme excutable est un chier compos dlments directement manipulables par lutilisateur (fentres, tats imprims, ...). Cest ce que lance lutilisateur nal dune application.
Pour crer un excutable, WinDev propose de crer un projet. Un projet relie entre eux les diffrents lments du programme, et les organise. Cest partir du projet que pourra tre cr le
programme excutable.

Notes

Si votre application manipule des donnes, WinDev permet de dnir la structure de la base de
donnes grce lanalyse. Lanalyse WinDev contient la description des chiers (appels souvent "Tables" dans de nombreuses bases de donnes). Ces chiers contiendront les donnes de
lapplication.
La description des chiers de donnes dans lanalyse nentrane pas leur cration. Les chiers de donnes sont crs physiquement uniquement lexcution
de lapplication.

Un ou plusieurs projets WinDev peuvent tre lis la mme analyse. Dans ce cas, on parle danalyse partage. Par exemple, une application de gestion commerciale peut tre spare en plusieurs modules excutables. Chaque module utilise la mme analyse (et en excution, chaque
excutable peut galement utiliser les mmes chiers de donnes).

Partie 1 : A la dcouverte de WinDev

57

Terminologie
Comme nous venons de le voir, un projet WinDev (li si ncessaire une analyse) permet de crer
une application. Avant de commencer rellement travailler avec WinDev, revenons sur les termes
utiliss dans WinDev. En effet, si vous avez travaill avec dautres outils, de nombreux termes sont
spciques WinDev, et ne recouvrent pas toujours la mme ralit que dans dautres logiciels.
Dans lanalyse, les termes utiliss sont les suivants :
Fichier : Lanalyse permet de dcrire la structure des chiers de la base de donnes. Le terme
"Fichier" correspond dans certaines bases de donnes "une table".
Dans WinDev, le terme "Table" est rserv pour dsigner un objet graphique permettant de
visualiser le contenu dun chier de donnes sous forme de tableau, et/ou de saisir des lignes.
Par exemple, une table peut permettre de saisir le dtail dune commande.
Enregistrement : Un enregistrement est quelquefois galement appel ligne. Lenregistrement
dun chier de donnes correspond lensemble des rubriques dnies pour le chier.
Rubrique : Dans lanalyse, le terme rubrique dsigne une zone dun chier de donnes. Lensemble des rubriques dun chier de donnes permet de dnir la structure dun enregistrement.
Cl/index : Avec WinDev et sa base de donnes HyperFileSQL, la notion dindex est lie la
notion de cl. La notion de cl fait partie des caractristiques dune rubrique. Les cls permettent dacclrer les accs aux donnes ou de faciliter les parcours des chiers de donnes.
En WinDev, si un chier de donnes HyperFileSQL a plusieurs rubriques cls, en excution, un
seul chier dindex sera cr.

Important

Dans les fentres et les tats, les termes utiliss sont les suivants :
Fentre : Les fentres permettent dafcher ou de saisir lcran des informations. Les fentres
sont galement appeles "crans" ou "Boites de dialogue". Lutilisateur peut agir directement
sur les fentres par lintermdiaire de champs, de boutons, ...
Etat : Les tats permettent dobtenir une vue personnalise dinformations. Ces informations
peuvent provenir de la base de donnes, de chiers texte, de champs prsents dans les fentres, ... Les tats peuvent tre visualiss lcran, imprims sur papier, gnrs en PDF ou
en HTML, ...
Champ : Le mot "champ" est le terme utilis pour dsigner les diffrents objets graphiques afchs dans une fentre ou dans un tat.
Gabarit : Le gabarit permet de dnir le "look" de lapplication : apparence visuelle des fentres,
des boutons, des champs, ...
Style : Le style regroupe les caractristiques graphiques dun lment : image de fond, bordure,
police, ... Les styles des diffrents lments constituant linterface dune application WinDev
sont regroups dans une feuille de styles.

58

Dans une application, lentit "NomClient" peut correspondre :


au nom dun champ dune fentre
au nom dun champ dun tat
la rubrique dun chier de donnes
une variable dnie par le programmeur

Partie 1 : A la dcouverte de WinDev

LEON 1.4. BASES

DE PROGRAMMATION

Ce que vous allez apprendre dans cette leon ...


Les diffrents types de variables
Instructions de base du WLangage
Les oprateurs de base du WLangage
Procdures et fonctions
Traitement des chanes, des numriques et des montaires
Traitement des dates et des heures

Dure estime : 30 min

Partie 1 : A la dcouverte de WinDev

59

Introduction
Dans la leon prcdente, nous avons un peu manipul lditeur de code de WinDev et son langage, le WLangage. Cette leon va vous permettre de revenir sur les bases de la programmation
en WLangage, en prsentant les sujets suivants :
Dclaration des diffrents types de variables
Instructions de base du WLangage
Procdures et fonctions
Traitements des chanes
Traitements des numriques
Traitements des dates et des heures

Dclaration des diffrents types de variables


Les diffrents types de variables
WinDev propose une grande varit de types de variables (boolen, entier, rel, montaire, chane,
date, heure, dure, dateheure, variant, tableau, structure, ...).
La syntaxe utiliser pour dclarer une variable est trs simple : il suft dindiquer le nom de la
variable et son type :
NomVariable EST UN(e) TypeVariable

Quelques exemples :
Indice est un entier
NomFournisseur est une chane
TablePrix est un tableau de 10 montaires
I, J, K sont des entiers
Compteur est un entier = 120
B1 est un boolen = Faux

Pour plus dinformations tous les types de variables disponibles (types simples, types avancs, ...),
consultez laide en ligne (mot-cl : "Types de donnes").
La dclaration des variables et leur porte
Le WLangage permet de manipuler deux types de variables :
Les variables globales
Les variables locales
Les variables globales peuvent tre globales au projet ou une fentre. Il suft de dclarer ces
variables :
dans le code dinitialisation du projet, pour dclarer les variables globales au projet. Ces variables pourront tre utilises dans tous les traitements du projet et des lments du projet
(fentres, tats, ...)
dans le code de dclarations des globales de la fentre, pour dclarer les variables globales de
la fentre. Ces variables pourront tre utilises dans tous les traitements de la fentre et des
lments de la fentre.
60

Partie 1 : A la dcouverte de WinDev

Attention !

Toutes les variables dclares ailleurs sont des variables locales.


La plupart des dveloppeurs est tente de dclarer toutes ses variables en "global" dans un projet. Ce type de programmation est en effet "facile". Les variables
tant toutes globales, elles sont alors manipulables depuis nimporte quel traitement.
Mais ce type de programmation est souvent la cause dcrasement de variables
et deffets de bord indsirables.
Il est donc prfrable de dclarer un nombre limit de variables globales et ensuite de dclarer des variables locales.
Si vous souhaitez partager des valeurs entre 2 fentres, il est vivement conseill
dutiliser la mthode du "passage de paramtres", mthode que nous verrons un
peu plus tard.

Instructions de base du WLangage


Le WLangage est un L5G riche, compos de :
Fonctions WLangage
Proprits WLangage
Mots-cls WLangage
Instructions WLangage
Au fur et mesure de votre formation, vous dcouvrirez les instructions ncessaires.
Dans cette leon, nous allons simplement vous prsenter les instructions de base, permettant de
raliser des conditions et des boucles ou simplement de saisir des commentaires.
Instructions conditionnelles
Le WLangage permet de grer des instructions conditionnelles du type :
SI, SINON, FIN pour effectuer un test sur une condition.
SELON, CAS, FIN pour excuter une ou plusieurs actions selon les diffrents rsultats dun
test sur une condition.
Quelques exemples
SI Maximum > Hasard(1, 999) ALORS
Info("Bravo, vous avez gagn !")
SINON
Info("Dommage, vous avez perdu !")
FIN

Partie 1 : A la dcouverte de WinDev

61

SELON Jour
CAS "Lundi"
// Premier jour de la semaine
CAS "Mercredi"
// Troisime jour de la semaine
CAS "Vendredi"
// Cinquime jour de la semaine
CAS "Samedi", "Dimanche"
// Cest le week-end
AUTRES CAS
// Cest un autre jour
FIN

Instructions de boucle

Notes

Le WLangage propose plusieurs possibilits pour grer des boucles :


POUR, FIN pour un nombre ditrations dtermin.
TANTQUE, FIN pour un nombre ditrations indtermin et dont la condition de sortie de la
boucle est teste au dbut de la boucle.
BOUCLE, FIN pour un nombre ditrations indtermin et dont la condition de sortie de la
boucle est teste dans la boucle. Linstruction SORTIR permet de sortir de cette boucle.
Le WLangage propose galement des boucles de type POUR TOUT, FIN permettant de parcourir les lments dun champ, les chanes de caractres, les enregistrements dun chier de donnes, ... Ces boucles avances seront tudies
dans la suite de ce cours dauto-formation.

Quelques exemples
Ind est un entier = 0
TANTQUE Ind<Maximum
Ind ++
FIN
Ind est un entier = 0
BOUCLE
Ind ++
SI Ind>Maximum ALORS SORTIR
FIN
POUR Ind = 1 A 100
Cpt = Cpt + 1
FIN

62

// Il nest pas ncessaire de dclarer Ind

Partie 1 : A la dcouverte de WinDev

Commentaires
Pour saisir des commentaires dans le code, il suft de commencer le code par // (deux caractres
"/").
Exemple :

Astuce

// Ceci est une ligne de commentaire

Vous pouvez mettre en commentaires plusieurs lignes de code en slectionnant


au clavier (ou la souris) les lignes mettre en commentaires puis en appuyant
sur les touches [Ctrl] / (du pav numrique).
Vous ralisez lopration inverse (enlever les commentaires) en slectionnant au
clavier (ou la souris) les lignes enlever des commentaires puis en appuyant
sur les touches [Ctrl] [Shift] / (du pav numrique).

Exemple pratique sur les diffrentes instructions de base


Aprs avoir prsent les principales instructions de base, rien ne vaut un petit test rel !

"Lancez WinDev 18 si ce nest dj fait. Fermez le projet en cours. Sous le volet "Accueil",
dans le groupe "Gnral", droulez "Fermer" et slectionnez loption "Fermer le projet".

"Dans la fentre de bienvenue, cliquez sur loption "Cours dauto-formation" et slectionnez le


projet "Bases de la programmation".
Astuce : il est galement possible sous le volet "Accueil", dans le groupe "Aide en ligne", de
drouler "Guide dAuto-formation" puis de slectionner loption "Bases de la programmation".

"Ouvrez la fentre "FEN_Code.wdw" (dans le volet "Explorateur de projet", dans le dossier

Astuce

"Fentres", double-cliquez sur le nom de la fentre). Cette fentre prsente diffrents


exemples.
Pour rechercher rapidement une fentre dans le projet en cours, utilisez la combinaison de touches [CTRL] + [E]. Une fentre safche permettant de raliser
une recherche sur toutes les fentres contenant la suite de lettres saisies dans
le champ de recherche. Il suft de slectionner la fentre voulue et de valider
pour que cette fentre souvre sous lditeur.

"Lancez le test de cette fentre (

parmi les boutons daccs rapide).


1. Cliquez sur longlet "Boucle".
2. Testez les diffrents exemples.
3. Cliquez sur longlet "SI / Selon".
4. Testez les diffrents exemples.
5. Fermez la fentre et revenez sous lditeur.

Partie 1 : A la dcouverte de WinDev

63

Oprateurs de base du WLangage


Le WLangage dispose de plusieurs types doprateurs :
les oprateurs logiques (ET, OU, PAS, ...)
les oprateurs arithmtiques qui permettent dadditionner, de soustraire, ...
les oprateurs de comparaison qui permettent de comparer des valeurs. Nous en avons vu
quelques-uns dans le paragraphe prcdent (>, <, =, ...)
les oprateurs binaires qui permettent deffectuer des oprations sur des valeurs binaires,
les oprateurs daffectation et dchange (=, <=>)
les oprateurs dindirections qui permettent de construire le nom dun champ partir dune
expression.
les oprateurs sur les chanes de caractres (que nous verrons dans le paragraphe "Traitements
des chanes", page 68).
...
Nous allons ici dtailler lutilisation des oprateurs logiques, des oprateurs de comparaison et
des oprateurs dindirection. Nous verrons les autres types doprateurs au l de nos besoins
dans ce cours. Pour plus de dtails sur un type doprateur, consultez laide en ligne (mot-cl :
"Oprateurs").
Les oprateurs logiques
Le WLangage dispose de 5 oprateurs logiques qui permettent deffectuer des oprations logiques et de construire des conditions :
ET et _ET_ qui correspondent la multiplication logique.
OU et _OU_ qui correspondent laddition logique.
PAS qui correspond la ngation logique.
Exemple pratique
Rien ne vaut un bon exemple pour comprendre les subtilits de ces oprateurs.

"Dans le projet "WD Bases Programmation", ouvrez la fentre "FEN_Oprateur".


"Lancez le test de cette fentre ( parmi les boutons daccs rapide) et testez les oprateurs logiques.
Les oprateurs de comparaison
Le WLangage possde de nombreux oprateurs de comparaison qui permettent de raliser de
nombreux traitements :
oprateurs dgalit : galit (=), galit souple (~=) ou galit trs souple (~~).
oprateurs de comparaison : diffrent (<>), infrieur et suprieur (<, <=, >, >=), ou commence
par ([=, [=~, [=~~).

64

Partie 1 : A la dcouverte de WinDev

Exemple pratique
Une page dexemple est disponible pour tester quelques cas dutilisation des diffrents oprateurs de comparaison.

"Dans le projet "WD Bases Programmation", ouvrez la fentre "FEN_Oprateur".


"Lancez le test de cette fentre ( parmi les boutons daccs rapide) et testez les oprateurs de comparaison.
Les oprateurs dindirection
Le mcanisme "dindirection" permet de construire le nom dun champ, dune rubrique de chier
ou le nom dune variable partir dune expression de type chane.
Ceci permet par exemple de crer des traitements gnriques indpendants des noms des
champs, des variables, des rubriques de chier ...
Lindirection est ralise laide des oprateurs { }.
Pour optimiser la vitesse de vos applications, il est conseill de prciser lors de lutilisation de la
syntaxe dindirection le type de llment manipul.
Ainsi, si vous manipulez un champ, le type correspondant sera IndChamp (voir exemple ci-dessous).
Voici quelques exemples dindirection :
Exemple dindirections simples :
{"NOM",indChamp} = NomCli
//est quivalent NOM=NomCli
{"NOM",indChamp} = {"CL.NOMCLI"}
//est quivalent NOM=CL.NOMCLI
{"FENCLI.NOM",indChamp} = NomCli
//est quivalent FENCLI.NOM=NomCli
{"FENCLI"+".NOM",indChamp} = NomCli
//est quivalent FENCLI.NOM=NomCli

Exemple dindirection avec une procdure :


NomChamp est une chane
NomChamp = "SAISIE1"
//SAISIE1 est le nom du champ
//appel dune procdure rendant un champ invisible
INVISIBLE(NomChamp)

Exemple

PROCEDURE INVISIBLE(NChamp)
{NChamp,indChamp}..Visible = Faux

Pour plus de dtails sur lutilisation des indirections, consultez lexemple "Manipulation des indirections" (exemple unitaire), livr en standard avec WinDev. Cet
exemple est accessible depuis le volet "Assistants, Exemples et Composants".

Partie 1 : A la dcouverte de WinDev

65

Procdures et fonctions
Dfinition
Comme nous lavons vu dans la leon prcdente, lorsquun traitement est appel plusieurs fois
dans un projet ou dans une fentre, il est souvent intressant de crer une procdure contenant
ce traitement. Il suft alors dappeler la procdure chaque fois que cela est ncessaire.
Ct programmation, il existe les procdures et les fonctions :
Les fonctions renvoient un rsultat.
Les procdures servent excuter un traitement spcique.
WinDev permet de grer simplement les deux types de traitements, de manire identique : sous
WinDev, il ny a pas de diffrence entre une procdure et une fonction. Cest pourquoi dans la
suite de ce cours, nous utiliserons uniquement le terme "procdure".
Vous avez la possibilit de crer des procdures "locales" et des procdures "globales".
Procdure locale
Une procdure "locale" est lie une fentre et uniquement cette fentre.
Une procdure, lorsquelle est locale, peut tre utilise uniquement dans les traitements de la
fentre et des champs de la fentre dans laquelle elle a t dclare. Elle fait partie de la fentre.
Procdure globale et collection de procdures
Les procdures "globales" sont contenues dans des "collections de procdures". Chaque "collection de procdures" est un chier qui contient toutes les procdures globales qui lui sont associes. Ce chier possde lextension ".WDG". Par exemple, une collection permet de regrouper les
procdures selon un thme : CalculsTVA, CalculsFraisDePorts, ...
Vous pouvez crer autant de collections de procdures que vous le dsirez dans un projet.
Une collection de procdures permet de :
partager des procdures globales entre plusieurs dveloppeurs, pour un mme projet.
partager des procdures globales entre plusieurs projets. En effet, une mme collection de
procdures peut tre utilise dans plusieurs projets.
Comment choisir si une procdure est globale ou locale ?
Pour choisir si une procdure doit tre globale ou locale, posez-vous la question suivante : "La
procdure va-t-elle tre utilise uniquement dans cette fentre, ou peut-elle tre appele depuis
une autre fentre ?"
Si la procdure est appele "uniquement depuis cette fentre", la procdure peut tre "locale".
Si la procdure peut tre appele "depuis plusieurs fentres", la procdure doit tre "globale".

66

Partie 1 : A la dcouverte de WinDev

A propos du passage des paramtres


Dans le projet "WD Mes Premires fentres", vous avez pu voir quune procdure pouvait grer
des paramtres. Les paramtres peuvent tre obligatoires ou optionnels.
Les paramtres "obligatoires" sont toujours dnis avant les paramtres "optionnels". La dclaration dun paramtre "optionnel" est effectue en affectant une valeur par dfaut lors de la dclaration du paramtre. Par exemple :
PROCEDURE MaProcdure (Param1, ParamOption = "Valeur par dfaut")

Une fentre peut galement renvoyer une valeur au traitement qui la appele. Pour plus de dtails, consultez laide en ligne sur la proprit ..ValeurRenvoye.
Appel dune procdure

Astuce

Pour appeler une procdure dans un traitement, il suft dcrire son nom dans lditeur de code et
si ncessaire dindiquer des paramtres.
WinDev sait bien videmment grer les appels de procdures imbriques.
Dans lditeur de code, lorsque vous tes positionn sur un nom de procdure,
lappui sur la touche de fonction [F2] permet de visualiser le code de cette procdure. Lappui simultan sur les touches [CTRL]+[F2] permet de revenir dans le
code prcdent sur le nom de la procdure.

Cration dune procdure


Une procdure peut tre cre directement depuis lditeur principal de WinDev. Il suft dutiliser
le volet "Explorateur de projet".

"Pour crer une procdure locale :


1. Slectionnez dans le volet "Explorateur de projet" le nom de la fentre voulu.
2. Cliquez sur la che gauche pour afcher les diffrents lments.
3. Slectionnez "Procdures locales".
4. Dans le menu contextuel de "Procdures locales", slectionnez loption "Nouvelle procdure
locale".
5. Dans la fentre qui apparat, indiquez le nom de la procdure et validez.
6. La procdure apparat sous lditeur de code. Saisissez le code de la procdure.

"Pour crer une procdure globale :


1. Slectionnez le volet "Explorateur de projet".
2. Slectionnez "Procdures".
3. Slectionnez la collection de procdures dans laquelle la procdure globale doit tre cre.
4. Dans le menu contextuel, slectionnez loption "Nouvelle procdure globale".
5. Dans la fentre qui apparat, indiquez le nom de la procdure et validez.
6. La procdure apparat sous lditeur de code. Saisissez le code de la procdure.
Rappel : Il est galement possible de crer directement une procdure partir du code slectionn dans lditeur de code (option "Crer une procdure .. Crer une procdure contenant le
code slectionn" du menu contextuel). Cest ce que nous avons fait dans la leon prcdente.
Partie 1 : A la dcouverte de WinDev

67

Astuce

Quand utiliser les procdures ?


Lorsquun traitement est utilis plusieurs fois dans une mme fentre, il est
conseill dutiliser une procdure locale la fentre qui contiendra ce traitement.
Lorsquun traitement est utilis plusieurs fois dans un ensemble de fentres,
il est conseill dutiliser une procdure globale au projet qui contiendra ce traitement.

Un exemple pratique sur les procdures et fonctions


Aprs avoir vu la thorie, un peu de pratique !

"Ouvrez le projet "WD Bases Programmation" si ce nest dj fait :


1. Fermez si ncessaire le projet en cours.
2. Dans la fentre de bienvenue, cliquez sur loption "Cours dAuto-formation" et slectionnez
le projet "Bases de la programmation".

"Ouvrez la fentre "FEN_Code.wdw" (double-cliquez sur son nom dans lexplorateur de projet).
Cette fentre prsente diffrents exemples.

"Lancez le test de cette fentre (

parmi les boutons daccs rapide).


1. Cliquez sur longlet "Fonction" pour tester le fonctionnement dune fonction.
2. Cliquez sur longlet "Procdure" pour tester le fonctionnement dune procdure.
3. Fermez la fentre.

"Consultez la liste des diffrentes procdures locales (accessible depuis le volet "Explorateur
de projet"). En double-cliquant sur le nom de la procdure, le code de cette procdure est
afch dans lditeur de code.

Traitements des chanes


Parmi les fonctionnalits de base dun langage de programmation, la manipulation des chanes
de caractres est une des fonctionnalits les plus importantes.
Le WLangage offre une palette impressionnante de possibilits pour manipuler les chanes de
caractres : fonctions WLangage, oprateurs dextraction, de concatnation, ...
Nous prsentons ici les fonctions les plus courantes pour manipuler les chanes de caractres.
Pour plus de dtails, consultez laide en ligne (mot-cl : "Chane de caractres").
Exemple pratique

"Ouvrez si ncessaire le projet "WD Bases Programmation.WDP".


"Ouvrez la fentre "FEN_Chanes.WDW" (double-cliquez sur son nom dans lexplorateur de
projet). Cette fentre illustre les diffrentes manipulations que nous expliquerons dans cette
leon.

"Testez la fentre (

68

parmi les boutons daccs rapide).

Partie 1 : A la dcouverte de WinDev

Dtails
Un champ de type texte (par exemple un libell) peut tre initialis :
soit directement avec la chane :
SAI_TEXT1 = "WinDev est un outil formidable"

soit avec une variable de type chane :


ch est une chane
ch = "Japprends travailler avec WinDev"
SAI_TEXT2 = ch

Une chane peut tre construite partir de plusieurs autres chanes. On parle alors de concatnation de chanes. Pour concatner deux chanes, il suft dutiliser loprateur "+".
// La fonction Info permet dafficher le rsultat lcran
Info(SAI_TEXT2 + SAI_TEXT1)

Lextraction dune partie dune chane peut tre ralise avec :


les oprateurs [[ et ]] (attention il ne faut pas despace entre les crochets [[ et ]]).
Info(SAI_TEXT1[[1 6]])

//affiche "WinDev"

la fonction ExtraitChane qui extrait une sous-chane depuis une chane :


Info(ExtraitChane(SAI_TEXT1,1," "))

//affiche "WinDev"

la fonction Milieu, qui extrait un morceau de chane depuis une chane :


Info(Milieu(SAI_TEXT2,29)) //affiche "WinDev"

la fonction Gauche, qui retourne la partie gauche dune chane :


Info(Gauche(SAI_TEXT2,10)) // affiche "Japprends"

la fonction Droite, qui retourne la partie droite dune chane :


Info(Droite(SAI_TEXT1,10)) //affiche "formidable"

La taille dune chane peut tre connue avec la fonction Taille :


Info(Taille(SAI_TEXT2))

//affiche 35

Une chane peut tre transforme en majuscules avec la fonction Majuscule ou en minuscules
avec la fonction Minuscule :
Info(Majuscule(SAI_TEXT2))
Info(Minuscule(SAI_TEXT2))

Une chane peut tre recherche dans une autre avec la fonction Position :
ChaineRecherche est une chane = "WinDev"
Pos est un entier
Pos = Position(SAI_TEXT2, ChaineRecherche)
SI Pos = 0 ALORS
Info(ChaineRecherche + " non trouv dans le texte 2")
SINON
Info(ChaineRecherche + " trouv dans texte 2")
FIN

Partie 1 : A la dcouverte de WinDev

69

Astuce

Vous pouvez galement effectuer une recherche de position dune chane de


caractres dans une autre sans tenir compte de la casse. Il suft dindiquer la
fonction Position la constante SansCasse.
Exemple :
Pos = Position(TEXT2, ChaineRecherche, 1, SansCasse)

Pour connatre le nombre doccurrences dune chane de caractres donne dans une autre
chane de caractres, utilisez la fonction ChaneOccurrence :
NbOccurrences est un entier
NbOccurrences = ChaneOccurrence("anastasia", "a") // Renvoie 4

Traitements des numriques


Les calculs sur les numriques peuvent tre effectus partir des champs de saisie de type
numrique ou directement en manipulant les variables types (entier, rel, numrique, montaire, ...)
Exemple pratique

"Ouvrez si ncessaire le projet "WD Bases Programmation.WDP" :


1. Fermez si ncessaire le projet en cours.
2. Dans la fentre de bienvenue, cliquez sur loption "Cours dauto-formation" et slectionnez
le projet "Bases de la programmation".

"Ouvrez la fentre "FEN_Numrique.WDW" (double-cliquez sur le nom de la fentre dans le


volet "Explorateur de projet").

"Testez la fentre. Cette fentre prsente un aperu des manipulations sur les "numriques".
Dtails
Un champ de saisie de type numrique peut tre initialis :
soit directement avec la valeur numrique :
SAI_NUM1 = 3.14

soit avec une variable numrique :


ent1 est un entier
ent1 = 1234
SAI_NUM1 = ent1

Il est possible de concatner une chane et un numrique avec loprateur "+" :


Info("Le champ SAI_NUM1 contient la valeur : "+ SAI_NUM1)

70

Partie 1 : A la dcouverte de WinDev

Si vous excutez le code suivant :


Astuce

Info("Un calcul : " + 1 + 2)

La bote de dialogue afchera "Un calcul : 12".


Si vous souhaitez afcher le rsultat du calcul, il faut utiliser le code suivant :
Info("Un calcul : " + (1 + 2))

La bote de dialogue afchera "Un calcul : 3".


Quelques exemples de manipulations de numriques raliss en WLangage :
La partie entire dun nombre est connue par la fonction PartieEntire, la partie dcimale
par la fonction PartieDcimale :
Info("Partie entire de "+SAI_NUM1+" : "+...
PartieEntire(SAI_NUM1), ...
"Partie dcimale de "+SAI_NUM1+" : "+ ...
PartieDcimale(SAI_NUM1))

La valeur absolue dun nombre est retourne par la fonction Abs :


Info("Valeur absolue de "+ SAI_SAISIE2 + " : "+Abs(SAI_SAISIE2))

La valeur arrondie dun nombre est retourne par la fonction Arrondi :


Info("Arrondi de " +SAI_SAISIE2+ " : " + Arrondi(SAI_SAISIE2,1))

La fonction Racine permet de calculer la racine Nime dun nombre :


SAI_Racine = Racine(SAI_Puissance, 2)

La fonction Puissance permet dlever un nombre la puissance N :


SAI_Puissance = Puissance(SAI_Racine, 2)

Remarque : le type des champs de saisie numriques


Lorsquun champ est dni comme numrique, on ne connat pas a priori son type (entier, rel,
rel double, ...). Son type est dni automatiquement en fonction du masque slectionn pour le
champ.
Pour forcer le type dun champ, il suft dutiliser une variable type. Par exemple :
Val1 est un entier
Val1 = 123456789 //affectation du champ
SAI_NUM1 = Val1
Val1 = SAI_NUM1
//rcupration du champ

Partie 1 : A la dcouverte de WinDev

71

Traitement des montaires


Exemple pratique

"Ouvrez si ncessaire le projet "WD Bases Programmation.WDP" :


1. Fermez si ncessaire le projet en cours.
2. Dans la fentre de bienvenue, cliquez sur loption "Cours dauto-formation" et slectionnez
le projet "Bases de la programmation".

"Ouvrez la fentre "FEN_RelMontaire.wdw" (double-cliquez sur son nom dans le volet


"Explorateur de projet").

"Testez la fentre. Cette fentre permet de tester les diffrents codes prsents dans ce
paragraphe.
Dtails
Le type "Montaire" est un rel cod sur 10 octets. Il permet de donner la solution deux problmes non rsolus par les rels :
avoir plus de 15 chiffres signicatifs (les rels doubles grent 15 chiffres signicatifs maximum),
le type "Montaire" gre 23 chiffres signicatifs.
viter une erreur induite par le codage binaire des rels :
Un rel gre jusqu 15 chiffres signicatifs. Or, en ralit, le codage binaire des rels ne
permet pas de coder tous les rels de 15 chiffres signicatifs.
Le type "Montaire" a un codage diffrent des rels qui ninduit pas derreur darrondi.
En effet, le code suivant donne un rsultat faux :
// Avec une variable de type Rel, le calcul est faux
x est un Rel
x = 18.6 - 8.6 - 10
Erreur ("18.6-8.6-10="+x)

Par contre avec le code suivant, le calcul est correct :


x est un Montaire
x = 18.6-8.6-10
Info(x)

Pour effectuer des divisions sur des montaires, il est conseill de passer par des variables intermdiaires de type "Montaire".
x, y sont des Montaires
x = 12345678901234567.123456
y = 12345678901234567.123456
x = x/y
Info ("21345678901234567.123456", ...
"/","12345678901234567.123456","= "+x)

72

Partie 1 : A la dcouverte de WinDev

Remarque

Pour faire des calculs avancs, le WLangage met galement votre disposition
le type Numrique. Par dfaut, le type Numrique correspond 32 chiffres pour
la partie entire et 6 chiffres pour la partie dcimale (comme le type montaire). Mais lavantage du type numrique est de pouvoir congurer le nombre
de chiffres utiliser pour la partie entire et le nombre de chiffres utiliser pour
la partie dcimale.
Pour plus de dtails, consultez laide en ligne (mot-cl : "Numrique").

Mlange de chanes et de numriques

Les numriques et les chanes font bon mnage. WinDev est trs souple dans les affectations de
variables. Ainsi il est possible daffecter une chane de chiffres dans une variable numrique et
inversement. Par exemple :
i
c
i
c
c
i

est un entier
est une chane
= 123
= i
//la variable c contient la chane "123"
= "456"
= c
//la variable i contient la valeur 456

Si vous voulez transformer un nombre en une chane de caractres en respectant un format bien
prcis, il suft dutiliser la fonction NumriqueVersChane. Par exemple :
NumriqueVersChane(1234.567,"012,3f")// renvoie "00001234,567"

"Ouvrez la fentre "FEN_NumeriqueVersChane.wdw". Double-cliquez par exemple sur son nom


dans lexplorateur de projet.

"Testez la fentre.

Notes

A chaque fois que vous devez utiliser la fonction NumriqueVersChane et que vous ne savez pas
exactement quels paramtres utiliser, vous pouvez excuter cette fentre : elle vous donnera la
syntaxe utiliser en fonction du rsultat souhait.
La fonction "inverse" de NumriqueVersChane, est la fonction Val. Cette fonction
permet de convertir une chane en un numrique.

Partie 1 : A la dcouverte de WinDev

73

Traitements des dates et des heures


Pour grer simplement les dates et les heures dans vos applications, WinDev met votre disposition :
un champ de saisie de type Date, Heure ou Dure. Avec ce champ, plus aucun problme pour
saisir une date ou une heure valide.
un champ libell de type Date, Heure ou Dure. Avec ce champ, plus aucun problme pour afcher une date ou une heure au bon format.
des variables de type Date, Heure, DateHeure et Dure. Ces variables simplient la manipulation des dates et des heures par programmation et permettent de multiples calculs.

Les dates
Exemple pratique

"Ouvrez si ncessaire le projet "WD Bases Programmation.WDP" :


1. Fermez si ncessaire le projet en cours.
2. Dans la fentre de bienvenue, cliquez sur loption "Cours dauto-formation" et slectionnez
le projet "Bases de la programmation".

"Ouvrez la fentre "FEN_Date.WDW". Cette fentre illustre les explications donnes dans la
suite de cette leon.
Masque de saisie et valeur retourne
Les dates (comme les heures) sont des chanes qui ont un format prdni.
Dans un champ de saisie de type "Date" (ou de type "Heure"), il faut distinguer :
Le masque de saisie : cest le format avec lequel la date et lheure seront saisies.
Le masque dafchage : cest le format avec lequel la date et lheure seront afches.
La valeur retourne (ou mmorise) : cest la valeur retourne par le champ vers le programme.
Ces informations sont saisies dans la fentre de description du champ de saisie.

"Dans la fentre "FEN_Date", afchez la fentre de description du champ "Saisissez une date"
(option "Description" du menu contextuel du champ). Afchez longlet "Gnral" de cette
fentre. Les informations afches sont les suivantes :

Par exemple, pour un champ de type "Date" :


le masque de saisie sera "JJ/MM/AAAA". La date saisie par lutilisateur sera de la forme
"01/11/2009".
le masque dafchage sera "JJJJ JJ MMMM AAAA". La date afche dans le champ sera de la
forme "Mardi 13 Juin 2000"

74

Partie 1 : A la dcouverte de WinDev

Remarque

la valeur retourne sera par dfaut "AAAAMMJJ" (Exemple : la valeur saisie sous la forme
"23/04/2009" retournera au programme "20090423").
Il existe la possibilit de choisir un masque de saisie de type "Date systme".
Dans ce cas, le format afch sera celui dni dans les "Paramtres rgionaux
du panneau de conguration de Windows" de la machine en cours dexcution.

Pour comprendre limportance et les relations entre le masque de saisie et la valeur retourne,
regardons les exemples suivants :
Si le masque de saisie et dafchage dun champ date est "JJ/MM/AA" et la valeur
retourne est "AAAAMMJJ" :
DATEJ = "19981225" //Affiche la date sous la forme "25/12/98"
DATEJ = "981225" //Affiche la date sous une forme incorrecte

La date afche sera incorrecte.


Si le masque de saisie et dafchage dun champ date est "MM/JJ/AAAA" et la valeur
retourne est "AAMMJJ" :
DATEJ = "981225" //Affiche la date sous la forme "12/25/1998"
DATEJ = "19981225" //Affiche la date sous une forme incorrecte

La date afche est incorrecte.

Notes

Il faut donc faire attention au format de la valeur retourne dans un champ de type date ou
heure.
Les fonctions du WLangage qui manipulent :
des dates utilisent le format "AAAAMMJJ".
des heures utilisent le format "HHMMSSCC" (certaines utilisent le format "HHMMSSCCMMM",
pour la gestion des millisecondes).
Rappel : Par dfaut, le format (masque de saisie) du champ correspond au
masque date dni dans longlet "Langues" de la fentre de description du projet
(sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description"). Ainsi, le
mme masque est utilis automatiquement dans tous les champs de type date
de lapplication.
Cette fonctionnalit est galement trs utile dans les applications multilingues.

"Nous allons maintenant voir comment grer les dates par programmation. Fermez si
ncessaire la fentre de description du champ et testez la fentre "FEN_Date" (
les boutons daccs rapide).

parmi

Partie 1 : A la dcouverte de WinDev

75

Quel jour sommes-nous ?


Pour connatre la date du jour, il suft dutiliser la fonction DateDuJour (ou DateSys). La fonction
DateDuJour retourne la date systme de votre ordinateur sous la forme dune chane de caractres au format "AAAAMMJJ". Exemple :
Info("Nous sommes le " + DateDuJour())

"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "DateDuJour".
Comme vous pouvez le constater, la date afche est au format "AAAAMMJJ".
Pour afcher la date sous un format plus explicite, il suft dutiliser la fonction DateVersChane :
Info("Nous sommes le " + DateVersChane(DateDuJour(),...
MaskDateSystme))

La fonction DateVersChane transforme une chane au format "AAAAMMJJ" en chane au format


choisi. La constante MaskDateSystme permet dutiliser le format de date dni dans longlet
"Langues" des caractristiques du projet.
Rappel : Pour afcher les caractristiques du projet, sous le volet "Projet", dans le groupe "Projet",
cliquez sur "Description".

"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "DateVersChane".
Quel jour sommes-nous, mais avec le jour et le mois en lettres ?
Pour afcher la date en toutes lettres, il faut utiliser la fonction DateVersChane en utilisant un
format de date spcique :
Info("Nous sommes le " + DateVersChane(DateDuJour(),...
"JJJJ JJ MMMM AAAA")

Dans ce code :
la chane "JJJJ JJ" permet dobtenir le jour en toutes lettres. Par exemple : Lundi 17.
la chane "MMMM" permet dobtenir le mois en toutes lettres. Par exemple : Septembre.
la chane "AAAA" permet dobtenir lanne. Par exemple : 2012.

"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "En lettres".
Quel est le nombre de jours entre 2 dates ?
Vous voulez savoir combien de jours se sont couls entre deux dates ? Cest trs simple : il suft
dutiliser la fonction DateDiffrence :
NombreJour est un entier
NombreJour = DateDiffrence("20100101", DateDuJour())
InfoConstruit(...
"Le nombre de jours entre le %1 et le %2 est : %3", ...
DateVersChane("20100101", maskDateSystme),...
DateVersChane(DateDuJour(), maskDateSystme), nNombreJour)

Dans ce code, la fonction InfoConstruit est utilise pour afcher le rsultat. Cette fonction permet
de construire une chane de caractres en fonction de paramtres. Ces paramtres apparaissent
dans la chane sous forme de "%1", "%2", ...

76

Partie 1 : A la dcouverte de WinDev

Notes

Pourquoi ne pas construire directement une chane avec le rsultat des fonctions ?
Bien entendu, il aurait t possible de construire le contenu du message de la
manire suivante :
Info( "Le nombre de jours entre le " + ...
DateVersChane("20010101", maskDateSystme) + " et le " + ...
DateVersChane (DateDuJour(), maskDateSystme), ...
Nombrejour)
Cette notation prsente plusieurs inconvnients :
la lisibilit du code : une chane est plus simple lire.
la traduction : une chane peut tre traduite dans son intgralit. Il est possible dinverser les mots et les paramtres.
Le traducteur na quune obligation : remettre les %1, %2, %3.

"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "DateDiffrence".
Quel est le jour de la semaine dune date donne ?
Toujours aussi simplement, vous pouvez connatre le jour de nimporte quelle date avec la fonction DateVersJourEnLettre :
J est une chane
J = DateVersJourEnLettre("17890714")
Info("Le 14 juillet 1789 tait un " + J)

"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "DateVersJourEnLettre".
Petit exercice pratique
Maintenant que vous matrisez les dates, une colle : que fait le code suivant ?
DateVersChane(DateDuJour(),"JJJJ JJ MMM AAAA")

Rponse : Afche la date littrale (le jour et la date en clair).


Manipulation des variables de type Date
Le WLangage propose des types de variables spciques pour les valeurs de type Date, DateHeure ou de Dure.
Ces variables sont assimilables des "chanes". Chacune contient une valeur selon le tableau
suivant :
Type

Format par dfaut

Date

AAAAMMJJ

DateHeure

AAAAMMJJHHMMSSCC

Dure

AAAAMMJJHHMMSSCC

Partie 1 : A la dcouverte de WinDev

77

Le type "Date" permet de grer des dates comprises entre le 01/01/0001 et le 31/12/9999 (de
quoi tre tranquille pour un bon moment !).
Plus srieusement, pour manipuler la valeur de ces variables, vous pouvez utiliser les syntaxes
suivantes :
MaDate est une Date = "20121021"
Info(DateVersChane(MaDate)) //Affiche "21/10/2012"
MaDate..Anne = MaDate..Anne + 1
MaDate..Mois = MaDate..Mois + 1
MaDate..Jour = MaDate..Jour + 1
Info(DateVersChane(MaDate)) //Affiche "22/11/2013"

Dans ce code, Anne, Mois et Jour sont des proprits WLangage.

"Dans la fentre "FEN_Date", le bouton "Exemple de code" permet de calculer la date du


prochain 1er Janvier en utilisant une variable de type Date.
Le code utilis est le suivant :
MaDate est une Date
// MaDate est automatiquement initialise la date du jour
//Calcul de la date du prochain 1er Janvier
NouvelleAnne est une Date
NouvelleAnne..Anne++
NouvelleAnne..Jour = 1
NouvelleAnne..Mois = 1
MaDure est une Dure = NouvelleAnne - MaDate
Info(ChaneConstruit(...
"Il reste %1 jours avant le prochain rveillon du jour de lan",...
" le %2.", MaDure..EnJours, DateVersChane(NouvelleAnne))

Les heures
Exemple pratique

"Ouvrez si ncessaire le projet "WD Bases Programmation.WDP".


1. Fermez si ncessaire le projet en cours.
2. Dans la fentre de bienvenue, cliquez sur loption "Cours dauto-formation" et slectionnez
le projet "Bases de la programmation".

"Ouvrez la fentre "FEN_Heure.WDW". Cette fentre illustre les explications donnes dans la
suite de cette leon.

"Testez cette fentre.

78

Partie 1 : A la dcouverte de WinDev

Quelle heure est-il ?


Pour connatre lheure, il suft dutiliser la fonction Maintenant (ou HeureSys). La fonction Maintenant retourne lheure actuelle de votre systme sous la forme dune chane de caractres au
format "HHMMSSCC" :
Info("Il est " + Maintenant())

"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "Maintenant".
"Vous souhaitez afcher lheure au format standard "HH:MM:SS:CC" ? Le code devient alors :
Info("Il est " + HeureVersChane(Maintenant()))

La fonction HeureVersChane transforme une heure au format "HHMMSSCC" en une chane au


format "HH:MM:SS:CC".

"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "HeureVersChane".
Pour ne pas afcher les centimes de seconde, le code est :
HeureInfo est une chane
HeureInfo = HeureVersChane(Maintenant()),"HH:MM:SS")
Info("Il est " + HeureInfo)

Il suft de prciser le format dafchage de lheure avec la fonction HeureVersChane.

"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "Sans les centimes".
Combien de temps sest coul entre deux heures ?
Il est 17h25. Combien de temps sest coul depuis 12h15 ? Le code est le suivant :
// Affiche le temps coul depuis 12h15
Diff est un entier = HeureDiffrence("1215", Maintenant())
Signe_Temps est une chane
Rsultat_Temps est une chane = EntierVersHeure(Abs(Diff))
SI Diff < 0 ALORS Signe_Temps = "-"
InfoConstruit(...
"Temps coul depuis 12:15 -> %1 %2 h %3 min %4 s ", ...
Signe_Temps, Rsultat_Temps..Heure, ...
Rsultat_Temps..Minute, Rsultat_Temps..Seconde)

Attention !

La fonction EntierVersHeure transforme un entier (qui correspond au nombre de centimes de


secondes coules depuis minuit (ou 00h00)) vers une heure sous la forme "HHMMSSCC".
La fonction HeureVersEntier effectue lopration inverse.
Ne mettez pas de ":" dans lheure passe en paramtre la fonction HeureVersEntier, cela fausserait le rsultat.
Pour calculer des dures de plus de 24 heures, utilisez les types Date, Heure, ...

Partie 1 : A la dcouverte de WinDev

79

"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "1er exemple".
Le mme calcul peut tre effectu en utilisant les variables de type Heure et Dure.
Le WLangage propose des types de variables spciques pour les valeurs de type Date, Heure,
DateHeure ou de Dure. Ces variables sont assimilables des "chanes". Chacune contient une
valeur selon le tableau suivant :
Type

Format par dfaut

Heure

HHMMSSCC

Dure

AAAAMMJJHHMMSSCC

Le code peut devenir :


Dans12H est une Heure
Dans12H..Heure+= 12
Dans12H..Minute+= 30
InfoConstruit("Dans 12 heures et 30 minutes, il sera %1", ...
HeureVersChane(Dans12H, "HH:MM"))

"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "2

exemple".

Calculs avec des dates et des heures


Le WLangage possde de trs nombreuses fonctions pour grer les dates et les heures et effectuer diffrents calculs.
Pour plus de dtails, consultez laide en ligne (mot-cl : "Date, Fonctions WLangage").

80

Partie 1 : A la dcouverte de WinDev

LEON 1.5. QUESTIONS / RPONSES


Ce que vous allez apprendre dans cette leon ...
Questions / Rponses

Dure estime : 5 mn

Partie 1 : A la dcouverte de WinDev

81

Questions / Rponses
Question

Comment visualiser llment auquel appartient le traitement en cours ?

Pour visualiser llment correspondant au traitement en cours, sous le volet "Code", dans le
groupe "Navigation", cliquez sur "Aller lobjet" (CTRL + TAB). La fentre contenant llment voulu
safche.
Question

Comment imprimer le code source ?

Le code source en cours peut tre imprim directement en cliquant sur licne
"Accueil" ou grce la combinaison de touches [CTRL] + [P].
Question

dans le volet

Comment rechercher et/ou remplacer une variable dans le code ?

Les fonctions de recherche ou de remplacement dans le code sont accessibles depuis le volet
"Accueil", dans le groupe "Rechercher" ou dans le volet "Rechercher - Remplacer" :

Vous pouvez accder la recherche tout moment en appuyant sur les touches [CTRL]+[F].
Question

Que signifie les signes "+" ou "-" dans lditeur de code ?

Lditeur de code permet denrouler ou de drouler le code WLangage. Cette fonctionnalit est
trs utile si vos traitements utilisent de nombreuses instructions structures (boucles, condition,
parcours, ...).
Pour replier un code, sous le volet "Afchage", droulez "Replier" et slectionnez loption de menu
"Replier tout" (ou le raccourci [CTRL] + [SHIFT] + * (du clavier numrique)).
Seuls les commentaires restent visibles. Le survol de chaque ligne de commentaire permet de visualiser le code associ dans une bulle :

La combinaison de touches [CTRL] + * (du clavier numrique) permet de dplier tout le code. Le
clic sur les symboles "-" ou "+" permettent denrouler ou de drouler uniquement la partie de code
correspondante.
82

Partie 1 : A la dcouverte de WinDev

Question

Est-il possible didentifier la personne qui a crit une ligne de code ?

Lappui de la touche [F6] permet dafcher les informations (nom et date de la cration/modication) de chaque ligne de code.

Question

Est-il possible de connatre le numro dune ligne de code ?

Dans lditeur de code, pour activer (ou non) la numrotation des lignes de code, sous le volet
"Afchage", dans le groupe "Aide ldition", cliquez sur "Afcher les numros de ligne".

Question

Existe-t-il un moyen dobtenir facilement la syntaxe ou de laide sur une


fonction ?

Lors de la frappe dune fonction, la syntaxe de la fonction safche :


dans une bulle daide au-dessous de la ligne en cours de saisie. Pour chaque paramtre (y
compris le rsultat de la fonction), une bulle explicative est afche.
Si plusieurs syntaxes sont disponibles, il est possible de passer dune syntaxe lautre
grce aux touches [ALT] + che droite ou che gauche.
dans la barre de message de lditeur.
Dans laide afche, les paramtres entours par [ et ] sont optionnels.
Pour les fonctions utilisant des noms de chiers de donnes, de champs, de fentres, ou dtats,
la saisie assiste permet dafcher la liste des lments du projet correspondant au paramtre de
la fonction en cours de saisie.
Exemple de saisie assiste pour la fonction HLitPremier : loption <Assistant> permet de lancer
un assistant de code. Cet assistant vous pose diffrentes questions sur lutilisation de la fonction
et gnre automatiquement le code correspondant.
Toutes les fonctions et les proprits du WLangage ont une aide associe. Cette aide est directement accessible depuis lditeur en appuyant sur la touche [F1] sur le nom de la fonction ou de la
proprit voulue.

Partie 1 : A la dcouverte de WinDev

83

Question

Quels sont les raccourcis clavier connatre sous lditeur de code ?

[CTRL]+[L] supprime la ligne en cours.


[CTRL]+[D] duplique la ligne en cours (ou les lignes slectionnes) sur la ligne du dessous.
[TAB] et [SHIFT]+[TAB] permettent de grer lindentation de lensemble des lignes slectionnes.
[CTRL]+[/] met en commentaires les lignes slectionnes, [CTRL]+[SHIFT]+[/] enlve les commentaires (Attention touche [/] du pav numrique).
[F2] sur le nom dun champ, dune mthode, dune classe, dune procdure ou dun bloc dtat
afche le traitement de cet objet.
[CTRL]+[F2] permet de revenir au traitement initial.
Il est possible par lappui rpt sur la touche [F2] de se dplacer dun traitement un
autre. Pour revenir sur le traitement initial, il suft dappuyer autant de fois sur les touches
[CTRL]+[F2].
[CTRL]+[R] permet de rindenter automatiquement le code afch.
Question

Comment dialoguer avec lutilisateur ?

Il suft dutiliser une bote de dialogue avance. Ces botes de dialogue permettent de grer :
linterrogation directive (fonction Dialogue) : lutilisateur rpond une question grce des
boutons contenant le texte de laction effectuer.
la saisie immdiate (fonction Saisie), en proposant lutilisateur de saisir directement dans
la bote de dialogue la valeur voulue.
Pour plus de dtails sur ces fonctions, consultez laide en ligne (mot-cl : "Dialogue" et "Saisie").
Pour tester les diffrents modes de dialogue avec lutilisateur :

"Ouvrez si ncessaire le projet "WD Bases Programmation.WDP" : sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Bases
de la programmation".

"Ouvrez la fentre "FEN_Dialogue.WDW". Cette fentre illustre les diffrents modes de


dialogue possibles.

"Testez cette fentre (bouton "GO").

84

Partie 1 : A la dcouverte de WinDev

PARTIE 2
Application avec
donnes

86

Partie 2 : Application avec donnes

LEON 2.1. PRSENTATION


Ce que vous allez apprendre dans cette leon ...
Prsentation de lapplication ralise dans cette partie

Dure estime : 5mn

Partie 2 : Application avec donnes

87

Prsentation de lapplication ralise dans cette partie

Notes

Dans cette partie, nous allons tudier les bases de donnes pouvant tre manipules avec WinDev. Dans un but pdagogique, nous vous proposons de dvelopper une application de A Z, de
la conception de lanalyse la distribution de lapplication.
Vous verrez ainsi tous les points importants du dveloppement dune application.
Lapplication que nous allons raliser ensemble est une gestion de comptes bancaires : vous allez
pouvoir suivre en temps rel ltat de vos comptes quand lapplication sera ralise. La base de
donnes utilise est HyperFileSQL Classic, la base de donnes gratuite fournie avec WinDev. Plus
loin dans ce cours, nous tudierons la base de donnes HyperFileSQL Client/Serveur.
Lapplication dveloppe dans ce cours dauto-formation est une application
pdagogique, qui ne contient pas tous les lments ncessaires la gestion de
comptes bancaires. Cette application sert uniquement de support pour dcouvrir
les fonctionnalits de WinDev.

Mais avant de se mettre au travail, voyons ce que vous allez faire. Le projet complet de lapplication est livr avec ce cours dauto-formation :
1. Sous le volet "Accueil", dans le groupe "Aide en ligne", droulez "Guide dAuto-formation".
2. Slectionnez "WD Application avec donnes (Excutable)".
3. Manipulez lapplication. Cette application a t cre par le gnrateur automatique dapplication de WinDev (RAD).
4. Fermez lapplication.

88

Partie 2 : Application avec donnes

LEON 2.2. PROJET

ET ANALYSE

Ce que vous allez apprendre dans cette leon ...


Cration dun projet
Cration dune analyse

Dure estime : 40mn

Partie 2 : Application avec donnes

89

Prsentation
Pour crer une application avec une base de donnes, il faut :
Crer le projet li lapplication. Ce projet regroupera tous les lments de lapplication (fentres, codes, requtes, tats, ...).
Crer lanalyse lie au projet. Lanalyse permet de dcrire tous les chiers de donnes manipuls par lapplication.
Nous crerons ensuite lapplication grce au module RAD (Rapid Application Development).

Cration du projet

"Pour crer le projet :

Notes

1. Lancez WinDev si ce nest pas dj fait. Si ncessaire fermez le projet en cours.


2. Dans la fentre de bienvenue, cliquez sur le bouton "Crer un projet", puis sur loption "Application". Lassistant de cration de projet se lance. Les diffrents crans de lassistant vont
vous aider crer votre projet. Tous les renseignements indiqus dans cet assistant pourront
tre modis par la suite.
Astuce : Pour crer un projet, vous pouvez galement :
parmi les boutons daccs rapide du menu de WinDev.
1. Cliquer sur
2. Dans la roue qui safche, cliquer sur "Projet".

3. Le premier cran de lassistant permet de saisir le nom du projet, son emplacement et sa


description. Dans notre cas, ce projet va simplement sappeler "WD Application avec donnes". Par dfaut, WinDev propose de crer ce projet dans le rpertoire "\Mes projets\WD Application avec donnes". Vous pouvez conserver cet emplacement ou le modier grce au
bouton [...]. Pour le rsum du projet, saisissez "Le projet a pour but de grer des comptes
bancaires".

90

Partie 2 : Application avec donnes

Notes

4. Les diffrentes tapes de lassistant sont indiques gauche de lassistant. Ces tapes
sont directement clicables. Les autres crans de ltape 1 ("Description") ntant pas fondamentaux, cliquez directement sur "3 Chartes".
5. Cette tape permet de dnir la charte de programmation utilise. Ne modiez pas les options proposes. Passez lcran suivant laide des ches situes en bas.
6. Cette tape permet de dnir la charte graphique. Slectionnez "ActivUbuntu". Passez
lcran suivant laide des ches situes en bas.
7. Nous choisissons une taille de 800x600 pour les crans, car notre application naura pas
de grandes fentres, et sera ainsi adapte la plupart des rsolutions utilises. Le choix serait diffrent pour une application de gestion dimages par exemple.
8. Cliquez sur ltape "5 Le saviez-vous". Cet cran permet de grer lafchage dune fentre
de type "Le saviez-vous".
Nous nafcherons pas cette fentre : slectionnez loption "Ne pas afcher la fentre Le
saviez-vous au lancement de lapplication". Passez lcran suivant.
9. Nous allons maintenant donner les renseignements concernant la base de donnes.
10. Slectionnez loption "Oui, crer une nouvelle base de donnes" et validez. Lassistant de
cration de lanalyse se lance.
Pour suivre les diffrentes leons de cette partie et optimiser votre apprentissage de WinDev, il est conseill de crer le projet "WD Application avec donnes".
Un exemple corrig est disponible tout moment pour vrier la validit des oprations effectues.
Pour ouvrir ce projet corrig, sous le volet "Accueil", dans le groupe "Aide en
ligne", droulez "Guide dAuto-formation" puis slectionnez loption "WD Application avec donnes (Corrig)".

Cration de lanalyse

"Les tapes de lassistant de cration danalyse sont les suivantes :


1. Indiquez le nom et le rpertoire de lanalyse. Par dfaut, le nom de lanalyse correspond au
nom du projet et le rpertoire de lanalyse est un rpertoire ".ana" dans le rpertoire du projet.
Nous allons conserver ces paramtres par dfaut. Passez lcran suivant de lassistant.

Partie 2 : Application avec donnes

91

2. Vous pouvez ensuite choisir le ou les types de bases de donnes manipules par le projet.
Slectionnez HyperFileSQL Classic (la base de donnes propose par dfaut avec WinDev).

Passez lcran suivant de lassistant.


3. Validez. Lassistant de cration dun chier de donnes se lance automatiquement.

Cration de la description des fichiers de donnes


Notre application de gestion de compte va tre associe lanalyse suivante. Cette analyse comporte sept chiers de donnes diffrents :
BANQUE
COMPTE
TYPECOMPTE
PERSONNE
MOUVEMENT
NATUREMVT
TYPEMVT

92

Partie 2 : Application avec donnes

Pour crer les diffrents chiers de donnes de cette analyse, nous allons utiliser diffrentes mthodes disponibles dans WinDev.
Cration dun fichier de donnes et de ses rubriques sous lditeur

"Les tapes de lassistant de cration dun chier de donnes sont les suivantes :

Notes

1. Slectionnez dans lassistant loption "Crer une nouvelle description dun chier de donnes". Passez lcran suivant de lassistant.
2. Le chier de donnes que nous allons crer est le chier "COMPTE". Son nom est donc
"COMPTE". Ce nom sera utilis :
- pour manipuler le chier de donnes en programmation. La variable associe au chier sera
compte.
- pour construire le nom du chier de donnes physique associ (chier COMPTE.c).
Automatiquement, le libell et la description des lments reprsents par les enregistrements du chier de donnes apparaissent.
Dans lassistant, le champ "Un enregistrement reprsente" indique linformation
qui sera utilise pour dcrire les liaisons entre les chiers de donnes. Il est important de renseigner avec soin cette information !

3. Conservez loption "Le chier de donnes possde un identiant automatique". Cette option
indique si le chier de donnes doit possder une cl unique, gre automatiquement par
WinDev.

Partie 2 : Application avec donnes

93

Notes

Pour crer lidentiant (un identiant est une cl unique), vous pouvez crer une
rubrique numrique de type "Identiant automatique".
Cet identiant est automatiquement gr par WinDev. Chaque fois quun enregistrement est ajout dans le chier de donnes, WinDev affecte automatiquement
une valeur lidentiant du chier. Cette valeur est unique.
Vous pouvez dcocher ce choix si vous navez pas besoin didentiant automatique (si aucune cl unique nest ncessaire, ou si une cl unique existe dj
dans le chier de donnes).

4. Passez lcran suivant et slectionnez le type de la base associe au chier de donnes.


Nous allons travailler sur des chiers de donnes HyperFileSQL Classic. Passez lcran suivant.
5. Conservez les options par dfaut et passez lcran suivant.
6. Cliquez sur le bouton vert pour valider. Le chier de donnes est automatiquement cr
dans lanalyse. La fentre de description des rubriques souvre.

94

Partie 2 : Application avec donnes

Nous allons saisir les rubriques du chier COMPTE. Dans la fentre de description du chier de
donnes, vous pouvez dj voir quune rubrique a t automatiquement cre : IDCOMPTE. Cette
rubrique correspond lidentiant automatique du chier de donnes. Cette rubrique est compose des lettres "ID" et du nom du chier.
Nous allons crer les autres rubriques de ce chier de donnes.

"Tout dabord, nous allons crer la rubrique "NumCompte". Cette rubrique contiendra le
numro de compte.
1. Dans la fentre de description des rubriques, cliquez dans la colonne "Nom" de la premire
ligne vide deux fois. Cette colonne passe automatiquement en saisie. Saisissez "NumCompte".
2. Cliquez dans la colonne "Libell". Automatiquement, le nom de la rubrique apparat. Nous
allons modier le libell de la rubrique en cliquant dessus : saisissez "Numro de compte".
Dans la colonne "Type", le type "Texte" est automatiquement slectionn. Nous ny touchons
pas.
3. Nous allons modier la taille de la rubrique. Cliquez sur la case "50" et remplacez "50" par
"25". Cliquez sur la ligne suivante. Les valeurs sont automatiquement mises jour.

Partie 2 : Application avec donnes

95

Notes

4. Cette rubrique va tre une cl de notre chier de donnes : les cls permettent dacclrer
les accs aux donnes ou de faciliter les parcours des chiers de donnes.
Il sera possible de faire des recherches ou des parcours sur cette rubrique.
La notion de cl fait partie des caractristiques dune rubrique. En fait, lors de la
cration dune rubrique, vous avez la possibilit dindiquer si elle est :
non cl,
cl unique : la valeur de cette cl sera unique dans lensemble du chier de
donnes (cest--dire dans tous les enregistrements du chier de donnes)
cl avec doublons : la valeur de cette cl pourra tre retrouve plusieurs fois
dans le chier de donnes.

5. La dnition de la cl se fait de la manire suivante : re-slectionnez la ligne de la rubrique


"NumCompte" pour activer les champs de description prsents sur la droite de lcran. Il suft
alors de prciser le type de cl utilis. Dans notre cas, le numro de compte est une cl
unique.

"De la mme manire, crez les rubriques suivantes (ces rubriques ne sont pas des cls) :
Nom

Libell

Type

Taille

Intitul

Intitul

Texte

50

SoldeInitial

Solde initial

Montaire

La taille est automatiquement xe 10.

"Nous allons maintenant crer les rubriques "Statut" et "Devise".


1. Positionnez-vous sur une nouvelle ligne de la table. Saisissez :
le nom : Statut
le libell : Statut du compte
le type : Slecteur, liste, Combo. Dans la fentre qui souvre, vous pouvez slectionner le
type de champ utilis par dfaut pour cette rubrique. Ici, ce sera un slecteur. Validez la fentre.
2. Dans la partie basse de lcran, cliquez sur la double che pour afcher les paramtres
du champ li la rubrique slectionne.

Les informations saisies ici seront automatiquement utilises lors de la cration des fentres
lies au chier de donnes. Vous retrouvez ici le type du champ et le libell.
96

Partie 2 : Application avec donnes

Nous allons saisir les options suivantes dans longlet "Contenu" :


Cliquez sur longlet "Contenu".
Cliquez sur le bouton "+" pour ajouter la premire option.
Loption 1 correspond Actif. Saisissez "Actif" dans le champ de saisie droite du slecteur.
Cliquez sur le bouton "+" pour ajouter la seconde option.
Saisissez "Suspendu" la place de "Option 2".
Cliquez nouveau sur le bouton "+".
Saisissez "Cltur" la place de "Option 3".
3. Cliquez nouveau sur la double che.
4. De la mme manire, positionnez-vous sur une nouvelle ligne de la table et crez la rubrique "Devise". Cette rubrique est de type "Slecteur, Liste, Combo". Le champ par dfaut li
cette rubrique est une combo. Le contenu initial de cette combo doit tre saisi dans longlet
"Gnral" de la partie basse de lcran. Dans la zone "Contenu initial", saisissez les informations suivantes :
EUR - Euro
USD - Dollar Amricain
JPY - Yen Japonais
AUD - Dollar Australien
CAD - Dollar Canadien
Remarque : Entre chaque valeur, il suft dappuyer sur la touche [ENTREE] pour passer la
ligne suivante.
5. Voil, la description du chier COMPTE est termine. Validez la fentre de description des
rubriques. Dans la fentre qui safche, slectionnez loption "Retourner sous lditeur de WinDev". Puis, slectionnez loption "Editeur de WinDev".
6. Le chier COMPTE apparat sous lditeur danalyses. Il est possible dagrandir le chier afch. Il suft de cliquer sur le chier, de slectionner la poigne noire en bas du chier, et de
dplacer la souris vers le bas.

Maintenant que vous devenez "expert" en cration de chiers de donnes, crez le chier "PERSONNE".

Partie 2 : Application avec donnes

97

Pour lancer lassistant de cration dun chier de donnes, sous le volet "Analyse", dans le groupe
"Cration", cliquez sur "Nouveau chier". Le chier PERSONNE a un identiant automatique et
contient les rubriques suivantes :
Nom

Libell

Type et taille

Nom

Nom de la personne

Texte, 50, cl avec doublons

Prnom

Prnom de la personne

Texte, 50

Adresse

Adresse

Texte, sous-type "Mmo texte"


Le sous-type est slectionner
dans la partie droite de la fentre.

DateNaissance

Date de Naissance

Date, 8

Tlphone

Tlphone

Texte, 20

Portable

Portable

Texte, 20

Notes

Nous allons ajouter une petite nouveaut dans ce chier de donnes. Nous allons crer une rubrique email. Facile ! Mais pour cela, nous allons utiliser les mtatypes.
Mtatype
Un mtatype est une combinaison de caractristiques dune rubrique et de son
champ reli. Par exemple, un mtatype "Fax" contiendra le type et la longueur de
la rubrique, le masque de saisie, le cadrage, ...
Vous pouvez utiliser les rubriques mtatypes fournies avec WinDev, ou crer vos
propres mtatypes.
Pour utiliser une rubrique mtatype, il suft de cliquer sur le bouton "Mtatypes"
dans la description des rubriques de lanalyse.

"Pour ajouter une rubrique cre partir dun mtatype :


1. Cliquez sur le bouton
.
2. Slectionnez "Adresse email".
3. Validez.
4. Cette rubrique est une cl unique.
5. Validez la fentre de description des rubriques et index dun chier de donnes.

98

Partie 2 : Application avec donnes

Importation dun fichier CSV


Pour crer le chier BANQUE, contenant les caractristiques des banques, nous allons utiliser une
autre mthode : limport dun chier CSV. partir du chier CSV contenant les donnes, WinDev
va crer la description du chier de donnes dans lanalyse ainsi que le chier de donnes HyperFileSQL correspondant avec les donnes prsentes dans le chier CSV.

"Pour importer un chier CSV dans lanalyse :


1. Dans lexplorateur de chiers de Windows, ouvrez le sous-rpertoire de WinDev suivant : "\
Autoformation\Exercices\WD Application Avec Donnes".
2. Slectionnez le chier "Banque.csv".
3. Ralisez un "Drag an Drop" du chier "Banque.csv" vers lditeur danalyses de WinDev.
Lassistant dimportation de chiers se lance.
4. Nous allons convertir le contenu du chier CSV au format HyperFileSQL. Cochez loption
"Convertir les donnes dans le format HyperFileSQL Classic ou HyperFileSQL Client/Serveur".
Passez lcran suivant de lassistant.
5. Slectionnez le format des chiers importer. Ici, slectionnez "Fichier texte". Passez
lcran suivant de lassistant.
6. WinDev indique le chemin du chier importer. Passez lcran suivant de lassistant.
7. Indiquez les paramtres dimportation suivants :

Noubliez pas de cocher loption "La premire ligne contient les noms des colonnes".
8. Passez lcran suivant.

Partie 2 : Application avec donnes

99

9. La structure du chier de donnes qui va tre cr apparat. Nous allons en proter pour
faire quelques modications :
Rubrique
Organisme
Succursale
Adresse
CodeBanque
CodeGuichet
Tlphone
Fax
Email
Contact

Type
Texte
Texte
Texte
Texte
Texte
Texte
Texte
Texte
Texte

Taille
20
50
33
5
5
20
20
260
50

10. Validez lassistant. Lassistant de conversion des donnes se lance.


11. Validez le rpertoire de cration des chiers de donnes HyperFileSQL. Passez lcran
suivant de lassistant.
12. Dcochez "Enregistrer les paramtres de la conversion" et validez. Le chier de donnes
apparat dans lanalyse.

"Voyons la description du chier de donnes import :


1. Slectionnez le chier "Banque" puis loption "Description du chier de donnes" du menu
contextuel.
2. Ce chier de donnes ne contient pas didentiant automatique : cochez loption "Identiant automatique".
3. Modifez le libell du chier : supprimez "(Import)".
4. Cliquez sur licne
pour afcher la description des rubriques du chier de donnes.
5. Nous allons modier quelques informations :
La rubrique Adresse doit tre de sous-type "Mmo texte".
La rubrique "Telephone" doit tre renomme en Tlphone" (ainsi que le libell).
6. Nous obtenons les donnes suivantes :

"Pour simplier les recherches dans le chier de donnes, nous allons crer une cl compose.

100

Partie 2 : Application avec donnes

Notes

Une cl compose est une cl qui est compose de plusieurs rubriques du


mme chier de donnes.
Ce type de cl permet de parcourir le chier de donnes sur des critres plus
complexes ou de faire des recherches plus prcises.

Cette cl sera compose du code banque et du code guichet.


1. Cliquez sur licne
.
2. Slectionnez "CodeBanque" et cliquez sur ">".
3. Slectionnez "CodeGuichet" et cliquez sur ">".

Notes

4. Validez. La cl compose apparat dans la description du chier de donnes.


5. Validez la description du chier "BANQUE".
6. Validez la description des chiers de donnes.
Lditeur danalyses permet galement dajouter des cls full-text. Ces cls
permettent de rechercher la prsence dun mot ou dune phrase dans une ou
plusieurs rubriques de type texte (chane de caractres, mmo texte, ...).
Cette recherche sera effectue laide dune requte, et le rsultat de cette
recherche pourra tre afch dans un champ.
Pour plus de dtails sur les index full-text, consultez laide en ligne (mot-cl :
"Index full-text").

Partie 2 : Application avec donnes

101

Importation de fichiers du dictionnaire


Pour simplier la cration des chiers de donnes de lanalyse, nous avons prpar une description de chier que nous avons place dans un dictionnaire. Nous allons voir comment importer
rapidement ce chier de donnes. WinDev propose un volet spcique, le volet "Dictionnaire", an
de manipuler simplement et facilement les dictionnaires.

"Pour importer des lments depuis un dictionnaire :


1. Afchez si ncessaire le volet "Dictionnaire" (sous le volet "Accueil", dans le groupe "Environnement", droulez "Volets" et slectionnez "Autres volets .. Dictionnaire"). Une bote de dialogue
demande la synchronisation de lanalyse. Cliquez sur "Non".
2. Cliquez dans le volet et slectionnez loption "Ouvrir" du menu contextuel.
3. Slectionnez le chier "Dico_GAF" prsent dans le sous-rpertoire de WinDev suivant : "\Autoformation\Exercices\WD Application Avec Donnes". Le dictionnaire apparat dans le volet.
Ce dictionnaire contient le chier "Mouvement".
4. Effectuez un "Drag and Drop" du chier "Mouvement" vers lditeur danalyses.
5. Lditeur demande si un abonnement est ncessaire. Rpondez "Non". Nous verrons plus
en dtail le dictionnaire dans la suite de ce cours.
6. Validez. La description du chier "Mouvement" est intgre lanalyse.
Importation directe de fichiers de donnes existants
La dernire mthode que nous allons voir pour crer des chiers de donnes est la simple importation de chiers de donnes HyperFileSQL existants. Nous avons prpar les derniers chiers
sous cette forme.

"Pour importer des chiers de donnes HyperFileSQL :


1. Dans lexplorateur de chiers de Windows, ouvrez le sous-rpertoire de WinDev suivant :
"\Autoformation\Exercices\WD Application Avec Donnes".
2. Slectionnez le chier "TypeMvt.c".
3. Ralisez un "Drag and Drop" du chier "TypeMvt" vers lditeur danalyses de WinDev.
4. Lassistant dimportation se lance. Validez les diffrents crans. Le chier de donnes apparat sous lditeur danalyses.
5. Rptez cette opration avec les chiers Typecompte.c et Naturemvt.c.
Tous les chiers de donnes ncessaires sont maintenant prsents dans lditeur danalyses.
Important : Pour manipuler les donnes des chiers que vous venez dimporter, copiez les chiers
"xxx.c" et "xxx.ndx" (prsents dans le rpertoire "\Autoformation\Exercices\WD Application Avec
Donnes") vers le rpertoire EXE de votre projet.

102

Partie 2 : Application avec donnes

Cration des liaisons


Nous avons cr toutes les descriptions de chiers ncessaires lapplication de gestion de
comptes.

Maintenant nous allons crer les liaisons entre les chiers de donnes.

"Crons tout dabord la liaison entre le chier BANQUE et le chier COMPTE.


1. Sous le volet "Analyse", dans le groupe "Cration", cliquez sur "Nouvelle liaison". Le curseur
de la souris se transforme en crayon.
2. Cliquez sur le chier "BANQUE" puis sur le chier "COMPTE".
3. Lassistant de cration de liaison se lance.
4. Rpondez aux questions poses par lassistant :

Partie 2 : Application avec donnes

103

Notes

Chaque Banque a au moins un compte : Non


Chaque Banque peut avoir plusieurs comptes : Oui
Chaque Compte a au moins une banque : Oui
Chaque Compte peut avoir plusieurs banques : Non
Vous pouvez galement saisir directement les cardinalits de la liaison dans
lassistant.

5. Passez lcran suivant. Lassistant propose automatiquement la cl utilise par la liaison.


Afchez lcran suivant de lassistant.
6. Lassistant propose de crer une nouvelle cl dans le chier Compte. Acceptez cette option
en passant lcran suivant.
7. Validez les rgles dintgrit en passant lcran suivant.
8. Cliquez sur la che verte. La liaison est automatiquement cre dans lditeur danalyses.

"Vous pouvez crer les liaisons suivantes :


Fichier source
Personne
Compte
TypeCompte
NatureMvt
TypeMvt

Fichier reli
Compte
Mouvement
Compte
Mouvement
Mouvement

Cardinalits
0,n - 1,1
0,n - 1,1
0,n - 1,1
0,n - 1,1
0,n - 1,1

"Lanalyse est alors la suivante :

104

Partie 2 : Application avec donnes

Configuration de lanalyse pour le RAD


Lors de la gnration de lapplication, de fentres, dtats, le module RAD (Rapid Application Development) utilise des options spcies directement dans lanalyse. Il est ncessaire de consacrer un peu de temps la conguration de ces options pour obtenir le meilleur rsultat possible
automatiquement.
Les lments utiliss par le RAD sont dnis :
dans la description des chiers de donnes (onglet RAD)
dans la description des rubriques (onglet RAD)
dans les informations partages spcies pour chaque rubrique.
Configuration du RAD dans la description des fichiers de donnes

"Pour congurer les options RAD des chiers de donnes :


1. Afchez la description des chiers de donnes : sous le volet "Analyse", cliquez sur le bouton
de regroupement du groupe "Fichier" (icne ) .
2. Afchez longlet "RAD".

Les informations congurer pour chaque chier de donnes sont :


La rubrique afcher pour la visualisation
Les lments gnrs par le RAD pour le chier de donnes.
Les informations congurer pour chaque chier de donnes sont les suivantes :
Fichier de donnes
BANQUE
COMPTE
MOUVEMENT
NATUREMVT
PERSONNE
TYPECOMPTE
TYPEMVT

Rubrique visualiser
Organisme
Intitul
Intitul
Intitul
Nom
Intitul
Intitul

Elment gnrer
Table, Fiche, Etat
Table, Fiche, Etat
Table, Fiche, Etat
Table, Fiche, Etat
Table, Fiche, Etat
Table, Fiche, Etat
Table, Fiche, Etat

Partie 2 : Application avec donnes

105

"Pour raliser ces modications :


1. Slectionnez le chier dans la table.
2. Ralisez les modications dans longlet "RAD".
3. Passez au chier suivant.
Validez la fentre la n de lopration.
Configuration du RAD dans la description des rubriques

"Pour congurer les options RAD des rubriques :


1. Pour chaque chier de donnes, afchez la description des rubriques (option "Description
des rubriques" du menu contextuel).
2. Afchez longlet "Avanc".
3. Congurez les options RAD.
Pour chaque chier de donnes, les identiants des chiers (rubriques IDBanque, IDCompte,
IDPersonne, IDTypeCompte, IDMouvement, IDNatureMvt, IDTypeMvt) doivent avoir les caractristiques suivantes :

En effet, lidentiant ne doit pas tre afch sur les fentres en mode che et les tats.
Laissez tout coch pour les autres rubriques (y compris les autres identiants prsents dans
les chiers).
4. Validez la description des rubriques du chier de donnes.
Lanalyse est prte tre utilise par le RAD.

106

Partie 2 : Application avec donnes

Gnration de lanalyse

Attention!

La gnration de lanalyse consiste rendre disponible aux autres modules du projet, les informations sur les chiers de donnes. Ces chiers de donnes pourront tre manipuls dans les
programmes.
Sans la gnration, bien que la description du chier de donnes existe, vous ne pourrez pas utiliser le chier de donnes dans vos programmes.
Lors de la gnration de lanalyse, toutes les modications effectues sur lanalyse et les chiers
de donnes seront automatiquement propages dans tout le projet (fentres, champs relis,
tats, ...).
La gnration doit tre effectue chaque fois que vous voulez que les modications effectues dans lanalyse soient prises en compte dans les programmes
utilisant cette analyse.
Si vous modiez lanalyse plusieurs fois, sans programmer entre chaque modication, il nest pas ncessaire de gnrer lanalyse chaque modication. Gnrez uniquement lanalyse lorsque toutes les modications sont faites et que vous
passez la programmation.

"Pour gnrer lanalyse :


1. Sous lditeur danalyses, sous le volet "Analyse", dans le groupe "Analyse", cliquez sur "Gnration".
2. La gnration de lanalyse est automatiquement lance.
Nous avons modi les descriptions des chiers de donnes prsents dans lanalyse (chier
BANQUE).
Pour mettre jour les chiers de donnes de lapplication, WinDev lance automatiquement la
procdure de modication des chiers de donnes. Cette opration permet de mettre jour les
chiers de donnes (chiers .c) en fonction de leur description dans lanalyse.

"Lassistant de modication automatique se lance. Validez les diffrents crans jusqu


lexcution de la modication automatique des donnes.
Remarque : WinDev dtecte une ambigut sur les chiers de donnes copis et imports :
slectionnez les chiers pour les mettre jour.

"Fermez lditeur danalyses. Maintenant, nous pouvons commencer programmer lapplication.

Partie 2 : Application avec donnes

107

LEON 2.3. LE RAD

COMPLET

Ce que vous allez apprendre dans cette leon ...


Quest-ce le RAD ?
Gnration du RAD
Test du projet

Dure estime : 20mn

108

Partie 2 : Application avec donnes

Quest-ce que le RAD ?


R.A.D. sont les initiales de "Rapid Application Developpement".
Le RAD permet de construire automatiquement une application, cest--dire construire toutes les
fentres, les tats et les requtes ncessaires.
Comme nous lavons vu prcdemment, pour dvelopper une application en WinDev, il faut commencer par crer un projet et ventuellement une analyse. Lanalyse contient la dnition des
structures des chiers de donnes manipuls dans les traitements.

Note

Le module RAD de WinDev sappuie sur cette analyse. Le module RAD est constitu dun assistant dans lequel vous pouvez choisir le modle dapplication gnrer (le pattern RAD) et les
principales options de fonctionnement de votre application.
WinDev est livr avec diffrents "Patterns RAD", permettant de gnrer plusieurs
modles dapplication. Vous pouvez galement crer vos propres patterns RAD.
Pour plus de dtails, consultez laide en ligne (mot-cl : "Pattern RAD").

Note

Toutes les fentres, les tats, les requtes et le code gnrs par le RAD sont entirement personnalisables. Vous avez galement la possibilit de modier les types de champs, les valeurs par
dfaut, ...
Le RAD permet galement de gnrer des fentres de plusieurs types, cest le RAD fentre. Le
RAD Fentre est disponible lorsque vous crez une nouvelle fentre dans votre application.
Nous allons ici dcouvrir comment utiliser le module RAD Projet.
RID (Rapid graphical Interface Design)
WinDev permet galement de gnrer des fentres contenant uniquement les
champs lis aux rubriques de lanalyse. Tout le code ncessaire au fonctionnement de ces fentres reste la charge du dveloppeur.
Pour plus de dtails, consultez laide en ligne (mot-cl : "RID").

Gnration du RAD

"Pour lancer la gnration du RAD :


1. Sous le volet "Projet", dans le groupe "Gnration", cliquez sur "RAD Application complte".
Lassistant de gnration de lapplication RAD se lance.
2. Slectionnez le modle utiliser pour la gnration du RAD : par exemple "RAD Simple".
Passez lcran suivant de lassistant.

Partie 2 : Application avec donnes

109

3. Tous les chiers de donnes de lanalyse vont tre pris en compte :

Afchez lcran suivant.


4. Les points dentre de lapplication correspondent aux entres disponibles dans le menu.

Conservez uniquement les chiers Banque, Compte, Mouvement et Personne. Afchez lcran
suivant.

110

Partie 2 : Application avec donnes

Note

5. Indiquez si les tables gnres dans les fentres de lapplication doivent permettre la saisie
ou non. Dans notre exemple, les tables permettront lutilisateur de saisir de nouvelles informations. Slectionnez "Oui : Autoriser la saisie dans les tables". Afchez lcran suivant.
6. Indiquez si le groupware utilisateur doit tre utilis dans lapplication. Nous lintgrerons plus tard dans lapplication : slectionnez loption "Non : Ne pas intgrer la gestion du
groupware utilisateur". Passez lcran suivant.
7. Indiquez si le menu automatique doit tre intgr lapplication. Rpondez "Oui : Intgrer le
menu "?"". Passez lcran suivant. Lassistant de gnration du RAD se termine et lassistant
de gnration du menu automatique se lance.
Le menu automatique est un menu daide adapt vos applications. Ce menu
permettra aux utilisateurs de vos applications daccder directement plusieurs
fonctionnalits.

"Les diffrentes tapes de lassistant de gnration du menu automatique sont les suivantes :

Notes

1. Conservez loption "Aide des FAA (Fonctionnalits automatiques de lapplication)".


2. Terminez lassistant.
Lors de la cration du menu "?", loption "? .. Aide des fonctionnalits automatiques" a ajout automatiquement dans votre application :
le composant "CCMenu". En effet, cette option utilise une procdure de ce
composant pour fonctionner.
le chier "WinDev FAA 18.PDF". Ce chier sera automatiquement ouvert
lors de lutilisation de loption de menu.

Partie 2 : Application avec donnes

111

Notes

Lapplication est gnre et peut tre teste.


Des erreurs dIHM peuvent apparatre dans le volet des erreurs de compilation.
Ces erreurs signalent des problmes dinterface notamment dans les tats (libells trop longs par exemple). Pour corriger ces erreurs, il est ncessaire de modier les tats.

Test de lapplication
Testons immdiatement lapplication gnre.

"Pour lancer le test de lapplication :


parmi les boutons daccs rapide de WinDev. Lapplication se lance.
1. Cliquez sur
2. Dans le menu, slectionnez loption "Personne .. Liste des personnes".
3. La liste des personnes safche.
4. Pour ajouter une nouvelle personne, cliquer sur le bouton "Nouveau". Un formulaire de saisie apparat. Saisissez par exemple des informations vous concernant et validez.
5. Fermez la liste des personnes.
6. Dans le menu, slectionnez loption "Compte .. Liste des comptes". La liste des comptes
apparat.
7. Cliquez sur le bouton "Nouveau". Saisissez les informations concernant le nouveau compte.
Par exemple :
Numro de compte
0123456L030
Devise
Euro
Statut du compte
Actif

Intitul
THA
Organisme
BNP Paribas
Intitul (TypeCompte)
Compte chque

Solde initial
1500
Personne
Vous par exemple

8. Crez de la mme manire plusieurs mouvements. Par exemple :


Mouvement
Date du mouvement
Sens
Montant
Numro de compte
Nature du mouvement
Type
Intitul du compte

Essence
10/10/2012
Dbit
56
0123456L030
Carburant
Carte bancaire
THA

Loyer
01/10/2012
Dbit
737
0123456L030
Loyer
Chque
THA

Remarque : pour slectionner les dates, utilisez le calendrier situ droite des champs.

112

Partie 2 : Application avec donnes

Modification rapide : Verrouillage de lapplication


Bien souvent, lors de lutilisation dune application, celle-ci reste en cours sur le poste de lutilisateur alors que celui-ci nest pas prsent (runion, repas, ...). Pour viter lutilisation de lapplication
par des personnes non autorises, il est possible de verrouiller automatiquement lapplication.
Pour se reconnecter, lutilisateur devra utiliser son identiant et son mot de passe Windows.
Pour utiliser cette fonctionnalit, quelques clics de souris sufsent.

"Pour verrouiller une application :


1. Afchez la description du projet (sous longlet "Projet", dans le groupe "Projet", cliquez sur
"Description").
2. Afchez longlet "Avanc".
3. Spciez les options de verrouillage (par exemple 2 minutes).

Si lapplication nest pas utilise pendant 2 minutes, la fentre suivante sera afche :

Notes

Lutilisateur naura qu saisir son mot de passe Windows pour continuer utiliser lapplication.
Si le Groupware Utilisateur est utilis par lapplication (voir "Le groupware utilisateur", page 139), le mot de passe utiliser sera celui dni pour le Groupware
Utilisateur.

"Pour tester le verrouillage de lapplication, lancez le test de lapplication, et attendez 2


minutes.
La fentre de demande de mot de passe apparat. Saisissez votre mot de passe Windows et
validez.

"Pour ne pas alourdir nos prochains tests, nous allons supprimer cette option.
"Afchez nouveau la description du projet (sous longlet "Projet", dans le groupe "Projet",
cliquez sur "Description"), et dans longlet "Avanc", dcochez loption "Verrouiller lapplication...". Validez.
La suite de ce cours utilise ce mme projet. Conservez ce projet ouvert.

Partie 2 : Application avec donnes

113

LEON 2.4. FENTRE

DE SAISIE

Ce que vous allez apprendre dans cette leon ...


Cration dune fentre de saisie
Gestion de lajout dun enregistrement
Gestion de la recherche puis de la modication

Dure estime : 20mn

114

Partie 2 : Application avec donnes

Prsentation
Nous avons vu les diffrentes fentres cres automatiquement par le RAD. Maintenant, nous
allons crer nous-mme une fentre permettant de grer lajout et la modication denregistrements. Ces manipulations vous feront dcouvrir plusieurs aspects de la gestion des chiers de
donnes et vous feront galement utiliser certaines fonctionnalits bien utiles de WinDev.
La fentre que nous allons crer va permettre de grer la saisie, la recherche et la modication
des personnes. Cette fentre est la suivante :

Cration dune fentre de saisie


Pour crer la fentre de saisie sur le chier Personne, nous pourrions utiliser lassistant de cration de fentre RAD et crer une fentre de type "Fiche".
Mais nous avons choisi de crer cette fentre partir dune fentre vierge : nous verrons ainsi
toutes les tapes ncessaires la programmation dune telle fentre.

"Pour crer une fentre de saisie :


1. Ouvrez si ncessaire le projet "WD Application Avec Donnes" que vous avez cr dans les leons prcdentes.
parmi les boutons daccs rapide. Dans
2. Crez une nouvelle fentre vierge. Cliquez sur
la roue qui safche, cliquez sur "Fentre". Choisissez "Vierge" et validez lassistant.
3. Dans la fentre de description, indiquez :
le nom de la fentre "FEN_PersonneX".
le titre et la description de la fentre "Gestion des personnes".
4. Validez la fentre de description.

Partie 2 : Application avec donnes

115

5. Afchez si ncessaire le volet "Analyse" (sous longlet "Accueil", dans le groupe "Environnement", droulez "Volets" et slectionnez "Analyse"). Les diffrents chiers de donnes dcrits
dans lanalyse "WD Application avec donnes" apparaissent dans le volet.
6. Cliquez sur licne "+" gauche du chier "PERSONNE" : les rubriques du chier sont listes.
7. Slectionnez laide de la souris lensemble des rubriques afches dans le volet et effectuez un "Drag and Drop" (glisser/dplacer) de ces rubriques vers la fentre que vous venez de
crer.
8. Diffrents champs sont automatiquement crs dans la fentre. Ces champs sont automatiquement lis la rubrique correspondante dans le chier de donnes. Pour le vrier, il suft dafcher longlet "Liaison" de la description dun des champs (option "Description" du
menu contextuel).

9. Fermez la description.
10. Enregistrez la fentre.

"Testez la fentre (

parmi les boutons daccs rapide). La fentre apparat avec tous les

champs vides.

116

Partie 2 : Application avec donnes

Gestion de lajout dun enregistrement


Nous allons maintenant grer lajout dun enregistrement dans notre fentre. En effet, la fentre
actuellement contient des champs relis au chier de donnes, mais nous voulons maintenant
pouvoir saisir des informations dans ces champs et les enregistrer dans le chier de donnes
"Personne".
Nous allons ajouter deux boutons dans notre fentre : un bouton "Ajouter" qui va permettre denregistrer les donnes et un bouton "Fermer" pour sortir de la fentre sans enregistrer.
Cration du bouton dajout

"Pour crer le bouton dajout :


prsent sous le volet "Cration", dans le groupe
1. Crez un nouveau bouton : cliquez sur
"Champs usuels".
2. Ce bouton a pour libell "Ajouter" et pour nom "BTN_Ajouter".

"Pour saisir le code du bouton :


1. Afchez le code du bouton "BTN_Ajouter" (par exemple, slectionnez le bouton et utilisez la
touche F2).
2. Saisissez le code suivant :
EcranVersFichier()
HAjoute(PERSONNE)

Dtaillons ce code :
La fonction EcranVersFichier permet dinitialiser les rubriques avec les valeurs des champs
lis. Cette fonction est donc quivalente aux lignes suivantes :
Personne.Nom = SAI_Nom
Personne.Prnom = SAI_Prnom
Personne.Adresse = SAI_Adresse
Personne.DateNaissance = SAI_DateNaissance
...

Notre fentre utilise moins de 10 champs et dj lavantage se fait sentir ; pensez simplement aux fentres qui contiennent plusieurs dizaines de champs : 1 seule ligne de code effectue toutes les affectations !
La fonction HAjoute ajoute lenregistrement dans le chier de donnes. Cette fonction prend
les valeurs en mmoire et crit le contenu des rubriques du chier dans le chier de donnes lui-mme. Les index sont immdiatement et automatiquement mis jour. Ici, le chier
de donnes mis jour est bien entendu le chier "Personne".
parmi les boutons daccs rapide).
3. Enregistrez votre fentre (

"Testez la fentre (

parmi les boutons daccs rapide). Remplissez les champs et cliquez


sur le bouton "Ajouter".
Plusieurs remarques :
Aucun masque nest utilis. Vous pouvez saisir des majuscules et des minuscules dans les
diffrents champs.
Aprs lajout, les champs ne sont pas remis vide.
Aucun bouton de fermeture : il faut utiliser la croix en haut de la fentre.
Nous allons faire les modications ncessaires.

Partie 2 : Application avec donnes

117

Ajout dun masque de saisie

"Tout dabord, le masque de saisie. Nous allons mettre un masque de saisie sur le champ
"Nom". Nous allons slectionner le masque "1re lettre en majuscule" dans la description du
champ.

Aprs avoir modi le masque, le bouton de validation de la fentre de description change


daspect. Un bouton "On/Off" apparat. Si vous cliquez sur ce bouton, lcran suivant
apparat :

Cet cran permet de grer la modication des informations partages dans lanalyse (les
informations concernant le champ associ la rubrique "Nom"). Si les informations partages sont modies dans lanalyse, la prochaine gnration de lanalyse, tous les champs
lis la rubrique auront cette information galement modie.
Validez la fentre de description du champ.

"Dnissez le mme masque pour le champ Prnom.


118

Partie 2 : Application avec donnes

"Ajoutez de la mme faon un masque de saisie sur le champ "SAI_DateNaissance". Ce


Note

masque est de la forme "JJ/MM/AAAA" . La valeur retourne est de la forme "AAAAMMJJ".


Pour les champs de type Date ou Heure, le masque de saisie permet de dnir le
format de saisie des informations, et la valeur retourne permet dindiquer le format qui sera utilis en programmation. Ce format sera par exemple utilis pour le
stockage de la valeur dans le chier de donnes.

Effacement des donnes aprs lajout

"Nous allons maintenant grer leffacement des donnes dans les champs, aprs lutilisation
du bouton "Ajouter". Seules deux nouvelles fonctions du WLangage vont nous permettre de
raliser cette opration sur tous les champs de la fentre.
1. Afchez le code du bouton "Ajouter" (F2 sur le bouton par exemple).
2. Compltez le code de la faon suivante :
EcranVersFichier()
HAjoute(PERSONNE)
RAZ()
HRAZ(PERSONNE)

La fonction RAZ remet blanc tous les champs pour la prochaine saisie. Cela permet ainsi de
signaler lutilisateur que lenregistrement a t ajout.
La fonction HRAZ remet blanc toutes les variables du chier (vite de conserver le buffer
prcdent en cas dajout partiel de rubriques dans un enregistrement).
3. Enregistrez la fentre.

"Pour ajouter un bouton de fermeture :


1. Crez un bouton de type "Fermer" (sous le volet "Cration", dans le groupe "Champs usuels",
droulez "Bouton" et slectionnez un bouton "Fermer").
2. Enregistrez la fentre.

"Testez la fentre (

parmi les boutons daccs rapide). Remplissez les champs et cliquez


sur le bouton "Ajouter". Vous pouvez dsormais saisir plusieurs enregistrements la suite.
Quelques exemples :

Nom
Moulain
Teste
Vini
Vini

Prnom
Franoise
Florence
Herv
Emma

Date de naissance
03/11/1945
19/07/1970
01/12/1965
25/07/2000

Email
moulain@gmail.com
test@yahoo.com
vini@gmail.com
vini@gmail.com

Partie 2 : Application avec donnes

119

"Lors de la validation du dernier enregistrement, une fentre spcique apparat :

Cette fentre signale lutilisateur quil existe un doublon : en effet, ladresse email (qui est une
cl unique) est identique pour deux personnes. Cette fentre permet de modier la valeur de
ladresse email : saisissez par exemple "vini2@gmail.com".
Cette fentre est une des fentres de gestion automatique des erreurs HyperFileSQL, disponible
en standard. Nous verrons dans la suite de ce cours comment grer par programmation les diffrents types derreur pouvant survenir sur les bases de donnes.
Visualiser les enregistrements saisis
Depuis le dbut de lutilisation de notre fentre, nous avons ajout plusieurs enregistrements.
Comment voir leur contenu ? WinDev propose un outil simple permettant de voir le contenu des
chiers de donnes pendant le dveloppement de lapplication (lorsque par exemple, les fentres
de visualisation nont pas encore t cres). Cet outil sappelle WDMAP. Nous allons lutiliser
pour voir le contenu du chier Personne.

"Pour lancer WDMAP :


1. Sous le volet "Outils", dans le groupe "Base de donnes", cliquez sur "WDMap".
2. Slectionnez le chier "Personne". Le contenu du chier de donnes safche.

120

Partie 2 : Application avec donnes

Gestion de la recherche puis de la modification


Nous avons gr lajout denregistrements dans le chier PERSONNE. Cest bien. Mais ce serait
encore mieux de pouvoir rechercher et modier un enregistrement. Cest ce que nous allons faire
maintenant, sur la mme fentre.
Cette fentre va nous permettre de raliser une recherche sur le nom. Nous allons mettre en
place deux modes de recherche :
une recherche lidentique
une recherche gnrique.
Ensuite, il sera possible de modier lenregistrement afch.
Recherche lidentique
Pour effectuer la recherche lidentique, nous allons slectionner le nom de lutilisateur dans une
combo. Le bouton "Rechercher" permettra dafcher la che de la personne correspondante. Une
seule personne correspond au nom slectionn.
Dans ce premier cas, le champ de recherche est une combo.

"Pour crer le champ de recherche :


1. Crez un champ de type combo : sous le volet "Cration", cliquez sur "Combo" .
2. Lassistant de cration des combos safche. Nous allons crer une combo base sur le chier de donnes "PERSONNE". Slectionnez loption "Afcher les donnes dun chier ou
dune requte existante".

Passez lcran suivant de lassistant.


3. Slectionnez le chier de donnes "PERSONNE". Passez lcran suivant.
4. Nous allons afcher le nom et le prnom de la personne.
Dslectionnez la rubrique "IDPERSONNE".
Slectionnez la rubrique "Nom".
Passez lcran suivant.

Partie 2 : Application avec donnes

121

5. La rubrique "Nom" sera galement utilise pour trier la liste. Slectionnez la rubrique
"Nom". Passez lcran suivant.
6. La rubrique retourne par la combo sera lidentiant "IDPERSONNE". Cest cette valeur qui
sera recherche dans le chier PERSONNE. Slectionnez la rubrique "IDPERSONNE" et passez
lcran suivant.
7. La combo ne sera lie aucune rubrique. Conservez loption "Non" et passez lcran suivant.
8. Validez lcran suivant avec la che jaune.
9. Donnez un nom la combo, par exemple "COMBO_PERSONNE", et comme libell "Personne recherche".
10. Validez. Positionnez la combo dans la fentre (par exemple en haut gauche).

"Pour crer le bouton de recherche :


1. Crez un bouton : sous le volet "Cration, dans le groupe "Champs usuels", cliquez sur
2. Positionnez le bouton ct de la combo qui vient dtre cre.
3. Ce champ a pour nom "BTN_Identique", et pour libell "Recherche identique".
4. Saisissez le code suivant :

HLitRecherchePremier(PERSONNE, IDPersonne, COMBO_Personne)


SI HTrouve(PERSONNE) = Vrai ALORS
FichierVersEcran()
FIN

Note

La fonction HLitRecherchePremier permet de raliser une recherche lidentique. Dans


cet exemple, la recherche se fait sur le chier PERSONNE et sur la rubrique IDPersonne. La
valeur recherche correspond au dernier paramtre de la fonction. Ici, la valeur recherche
correspond la valeur slectionne dans la combo. Cette valeur est obtenue en utilisant
directement le nom de la combo (COMBO_Personne).
La fonction HTrouve permet de tester le rsultat de la recherche. Si la fonction HTrouve renvoie Vrai, une valeur a t trouve, si la fonction HTrouve renvoie Faux, aucune valeur na t
trouve. Lorsquun enregistrement a t trouv, cet enregistrement est lu : il devient lenregistrement courant du chier de donnes.
Dans ce code, si lenregistrement a t trouv, il est afch grce la fonction FichierVersEcran.
La fonction FichierVersEcran effectue lopration inverse de la fonction
EcranVersFichier : les donnes prsentes dans les rubriques du chier de donnes sont afches dans les champs correspondants.

5. Enregistrez la fentre.

"Testez la fentre. Saisissez une valeur dans la combo et cliquez sur le bouton de recherche.
Le rsultat est immdiat.

122

Partie 2 : Application avec donnes

Recherche gnrique
Nous allons maintenant effectuer une recherche gnrique. Au lieu de rechercher exactement la
valeur saisie, nous allons rechercher tous les lments qui commencent par la valeur saisie.
Pour effectuer cette recherche, nous allons crer un champ de saisie an de saisir le nom recherch et un bouton pour lancer la recherche.

"Pour crer le champ de recherche :


1. Crez un champ de saisie : sous le volet "Cration", dans le groupe "Champs usuels", cliquez
sur
.
2. Ce champ a pour nom "SAI_Nom_recherch" et pour libell "Nom recherch".

"Pour crer le bouton de recherche :


1. Crez un bouton : sous le volet "Cration", dans le groupe "Champs usuels", cliquez sur
2. Positionnez le bouton ct du champ de saisie qui vient dtre cr.
3. Ce champ a pour nom "BTN_Generique", et pour libell "Recherche gnrique".
4. Saisissez le code suivant :

HLitRecherche(PERSONNE, Nom, SAI_Nom_Recherch)


SI HTrouve(PERSONNE)=Vrai ALORS
RAZ()
FichierVersEcran()
SINON
Erreur("Aucune personne ne correspond")
FIN

Note

La fonction HLitRecherche permet de raliser une recherche gnrique. Dans cet exemple, la
recherche se fait sur le chier PERSONNE et sur la rubrique "NomPrnom". La valeur recherche correspond la valeur saisie dans le champ SAI_Nom_Recherch. Cette valeur est obtenue en utilisant directement le nom du champ.
Il est possible de faire une recherche lidentique avec la fonction HLitRecherche : il suft dutiliser la constante hIdentique.

5. Enregistrez la fentre.

"Testez la fentre. Saisissez une valeur dans le champ de saisie et cliquez sur le bouton de
recherche. Le rsultat est immdiat. Cependant, si plusieurs enregistrements correspondent,
seul le premier est afch.

Partie 2 : Application avec donnes

123

Modification de la fiche affiche


Lorsque le rsultat de la recherche est afch, il peut tre intressant de modier les informations
afches. Modier les valeurs des champs de saisie est simple, mais il faut ensuite les prendre en
compte dans le chier de donnes. Pour cela, nous allons crer un bouton de modication.

"Pour crer le bouton de modication :


1. Crez un bouton de type "Modier" : sous le volet "Cration", dans le groupe "Champs usuels",
droulez "Bouton" (che sous
).
2. Positionnez le bouton sous le bouton "Ajouter".
3. Ce champ a pour nom "BTN_Modier", et pour libell "Modier".
4. Saisissez le code suivant :
EcranVersFichier()
HModie(PERSONNE)
ListeAfche(COMBO_PERSONNE, taCourantBandeau)

Note

Dans ce code, la fonction HModie permet de modier lenregistrement en cours avec les
donnes prsentes dans lcran.
La fonction ListeAfche permet de mettre jour la combo de recherche (par exemple en cas
de modication du nom).
Lors de la modication dun enregistrement, des erreurs dintgrit, de doublons, ... peuvent survenir. Par dfaut, le mcanisme de la gestion automatique
des erreurs est activ (comme nous lavons dj vu lors de lajout).

5. Enregistrez et testez votre fentre.


Parcours des fiches
Nous allons maintenant ajouter des boutons pour parcourir les diffrents enregistrements.

"Crez quatre boutons qui ont pour nom par exemple "BTN_Premier", "BTN_Prcdent", "BTN_
Suivant", et "BTN_Dernier".
Le code de ces boutons sera :
// Bouton BTN_Premier : appeler le premier
HLitPremier(Personne)
SI HEnDehors(Personne) = Vrai ALORS
Info("Aucune fiche visualiser")
SINON
FichierVersEcran()
FIN
// Bouton BTN_Prcdent : appeler le prcdent
HLitPrcdent(Personne)
SI HEnDehors(Personne) = Vrai ALORS
Info("Dbut du fichier atteint")
SINON
FichierVersEcran()
FIN

124

Partie 2 : Application avec donnes

// Bouton BTN_Suivant : appeler le suivant


HLitSuivant(Personne)
SI HEnDehors(Personne) = Vrai ALORS
Info("Fin du fichier atteinte")
SINON
FichierVersEcran()
FIN
// Bouton BTN_Dernier : appeler le dernier
HLitDernier(Personne)
SI HEnDehors(Personne) = Vrai ALORS
Info("Aucune fiche visualiser")
SINON
FichierVersEcran()
FIN

La fonction HLitPremier permet de lire le premier enregistrement du chier de donnes, selon la


cl utilise pour la dernire recherche.
La fonction HLitDernier est base sur le mme principe, cette fonction va lire lenregistrement qui
a la valeur de cl la plus grande.
La fonction HLitSuivant va lire lenregistrement qui a la valeur de cl immdiatement suprieure
celle de lenregistrement en cours.
La fonction HLitPrcdent va lire lenregistrement qui a la valeur de cl immdiatement infrieure
celle de lenregistrement en cours.
Dans tous les cas :
la fonction HEnDehors permet de savoir si le chier de donnes est vide.
la fonction FichierVersEcran permet dafcher lenregistrement lcran.

"Enregistrez la fentre et testez-la. Parcourez le chier de donnes en cliquant sur chacun des
boutons.

Partie 2 : Application avec donnes

125

LEON 2.5. TABLE

SUR UNE REQUTE

Ce que vous allez apprendre dans cette leon ...


Cration dune requte paramtre
Cration dune fentre avec une table base sur la requte
Cration dun tat automatique sur la table

Dure estime : 20mn

126

Partie 2 : Application avec donnes

Prsentation

Note

Dans cette leon, nous allons apprendre manipuler les tables. Dans notre exemple, nous allons
crer une fentre contenant une table listant les mouvements effectus dans une priode donne.
Cette table est base sur une requte que nous allons crer. La requte permet de slectionner
les enregistrements afchs dans la table.
La fentre est la suivante :

Cette leon "survole" la cration de requte. Une partie entire de ce cours


dauto-formation est consacre la gestion des requtes ("Crez une requte de
slection", page 313).

Cration dune requte paramtre

"Pour crer une requte, nous allons utiliser lditeur de requtes.


parmi les boutons daccs rapide. Dans la roue qui safche, cliquez sur "Re1. Cliquez sur
qute". Lassistant de cration de requtes se lance.
2. Slectionnez loption "Slection (SELECT)".
En effet, la requte que nous allons crer va nous permettre de slectionner des enregistrements. Passez lcran suivant.
3. La fentre de description de la requte apparat. Nous allons construire la requte en slectionnant les lments que nous voulons dans le rsultat.
4. Double-cliquez sur les rubriques prsentes dans lanalyse gauche de la fentre de description. Les rubriques prises en compte apparaissent alors au centre de lcran.
Partie 2 : Application avec donnes

127

Nous voulons afcher :


le numro de compte (rubrique NumCompte du chier COMPTE),
la date du mouvement qui a t ralis (rubrique DateMvt du chier MOUVEMENT),
son intitul (rubrique Intitul du chier MOUVEMENT),
la nature du mouvement (rubrique Intitul du chier NATUREMVT)
son montant (rubrique Montant du chier MOUVEMENT).
La fentre de description de la requte est la suivante :

5. Nous allons trier les donnes par date. Slectionnez la rubrique "MOUVEMENT.DateMvt",
puis cliquez sur le bouton "Trier" et slectionnez loption "Trier sur la rubrique slectionne".
Indiquez un tri croissant sur la rubrique et validez.
6. Nous allons maintenant indiquer que la date correspond une priode saisie par lutilisateur. Pour cela, slectionnez la rubrique "MOUVEMENT.DateMvt", puis cliquez sur le bouton
"Entre deux dates".

128

Partie 2 : Application avec donnes

7. Les deux dates seront fournies par lutilisateur : indiquez que la valeur est comprise entre
deux paramtres et validez.

8. Notre requte est termine. Donnez un nom la requte (par exemple REQ_Mouvement, en
haut gauche de lcran). Validez la fentre de description de la requte.
. La fentre qui safche demande les para9. Nous allons tester la requte : cliquez sur
mtres de la requte.
Slectionnez le paramtre "Param1" dans la table et saisissez sa valeur dans le champ de
saisie, par exemple 01/10/2012.
Slectionnez le paramtre "Param2" dans la table et saisissez sa valeur (par exemple
01/12/2012).
10. Validez. Le rsultat safche automatiquement.
Nous allons maintenant crer la fentre contenant la table associe cette requte.

Cration dune fentre avec une table base sur la requte


La fentre que nous allons crer va permettre lutilisateur de saisir lintervalle de dates pour
lequel la liste des mouvements effectus doit tre afche.

"Pour crer la fentre avec le champ table :


parmi les boutons daccs rapide, puis dans la
1. Crez une nouvelle fentre (cliquez sur
roue qui safche, cliquez sur "Fentre"). Dans lassistant, slectionnez "vierge" et validez.
2. Donnez un nom et un titre votre fentre : par exemple : FEN_Mouvements et "Mouvements pour une priode donne".
3. Crez un champ table : sous longlet "Cration", dans le groupe "Donnes", droulez "Table
et liste" et slectionnez "Table (Verticale)". Lassistant de cration de table se lance.
4. Nous allons crer une table base sur la requte que nous venons de crer. Slectionnez
loption "Afcher les donnes dun chier ou dune requte existante". Passez lcran suivant
de lassistant.
Partie 2 : Application avec donnes

129

Attention!

5. Slectionnez la requte qui sera la source de donnes de la table : REQ_Mouvement. Passez lcran suivant de lassistant.
6. Slectionnez toutes les rubriques proposes. Passez lcran suivant de lassistant.
7. Slectionnez la rubrique de parcours : "DateMvt". Passez lcran suivant de lassistant.
8. Saisissez les diffrents paramtres de la table : gardez les options proposes par dfaut et
dcochez loption "Gnrer le code dinitialisation des paramtres de la requte".
Loption "Gnrer le code dinitialisation des paramtres de la requte" permet
de gnrer le code dinitialisation du champ Table. Cette option est utiliser avec
prcaution car le code gnr utilise les valeurs par dfaut donnes lors du test
de la requte.

Passez lcran suivant de lassistant.


9. Slectionnez lorientation de la table : Vertical. Passez lcran suivant de lassistant.
10. Donnez un nom et un titre la table (par exemple "TABLE_Mouvements" et "Mouvements
raliss pour la priode donne"). Validez.
11. La table est automatiquement cre. Vous pouvez la redimensionner ou redimensionner
la fentre.
12. Enregistrez la fentre.

"Pour crer les champs permettant de saisir lintervalle de dates, nous allons utiliser un
superchamp fourni par dfaut avec WinDev.
1. Afchez si ncessaire le volet "Assistants, exemples et composants" : sous le volet "Accueil",
dans le groupe "Environnement", droulez "Volets" et slectionnez "Assistants, exemples et
composants".
2. Slectionnez "Champs".
3. Slectionnez "Superchamp".
4. Slectionnez le superchamp "Saisie dune priode" et ralisez un "Glisser/dplacer" vers la
fentre : positionnez le superchamp par exemple au-dessus de la table.

"Nous allons maintenant saisir le code qui va permettre dinitialiser la table. Ce code va tre
saisi dans un bouton spcique.
1. Crez un nouveau bouton. Ce bouton a pour nom "BTN_Mouvement" et pour libell "Mouvements de la priode".
2. Afchez le code du bouton (par exemple avec loption "Code" du menu contextuel du bouton).

130

Partie 2 : Application avec donnes

3. Saisissez le code suivant dans le code de clic du bouton :


REQ_Mouvement.Param1 = SC_SlectionPriode.SAI_DateDbut
REQ_Mouvement.Param2 = SC_SlectionPriode.SAI_DateFin
HExcuteRequte(REQ_Mouvement)
TableAffiche(TABLE_Mouvements, taCourantPremier)

Ce code permet dinitialiser les paramtres de la requte REQ_Mouvement avec les valeurs
saisies dans les champs Date.
La requte est ensuite excute, puis la table est afche.

"Il ne nous reste plus qu enregistrer et tester la fentre.


Imprimer le contenu de la table
La fentre afche correctement les mouvements effectus par compte entre deux dates. Pourquoi
ne pas mettre ces informations dans un tat pour les imprimer ? Mais comment faire ltat ?
Rien de plus simple avec WinDev ! Les donnes sont afches dans une table ? La table propose
automatiquement un menu contextuel contenant une option "Imprimer".

"Pour imprimer automatiquement le contenu de la table :


1. Lancez le test de la fentre (icne GO).
2. Saisissez la priode voulue pour afcher les mouvements. Cliquez sur le bouton "Mouvements de la priode".
3. Lorsque les donnes sont afches dans la table, afchez le menu contextuel de la table
(icne
en haut droite ou clic droit sur la table). Cliquez sur loption "Imprimer". La fentre suivante safche :

Note

4. Slectionnez loption "Imprimer directement". Si ncessaire, choisissez dimprimer en mode


"Paysage" le contenu de la table. Ltat correspondant la table est aussitt afch dans une
fentre daperu.
En mode test, vous avez la possibilit dimprimer directement le contenu de la
table ou de crer un tat sur table. Cette option cre automatiquement ltat
correspondant dans lditeur dtats.
En excution, lutilisateur nal a la possibilit dimprimer directement ou de lancer le logiciel "Etats et Requtes" pour crer ltat correspondant. Pour plus de
dtails sur le logiciel Etats et Requtes, consultez "Diffusez "Etats & Requtes"
avec vos applications", page 369.

5. Fermez la fentre daperu et arrtez le test de lapplication.

Partie 2 : Application avec donnes

131

Note

Est-ce que lon peut imaginer plus simple ? En fait, vous venez dutiliser une FAA de lapplication
WinDev. Ces trois lettres correspondent Fonctionnalits Automatiques de lApplication. En effet,
une application WinDev contient par dfaut un ensemble de fonctionnalits qui sont automatiques : aucun dveloppement supplmentaire nest ncessaire. WinDev est votre service pour
simplier vos dveloppements.
La liste complte des FAA (Fonctionnalits automatiques de lapplication) est
disponible dans le chier WinDev FAA 18.PDF. Ce chier est automatiquement
intgr dans votre application si vous choisissez loption "Aide des FAA" lors de la
cration du menu automatique.

Vous voulez personnaliser ltat propos par dfaut ? Il suft de crer un tat automatique sur la
table. Cet tat (sil existe) sera automatiquement utilis par loption dimpression de la table.

Cration dun tat automatique sur la table


Pour crer un tat imprimant les donnes dune table, il suft de crer un bouton de type "Bouton
Etat sur table" et ltat correspondant la table est cr automatiquement.

"Pour ajouter un bouton "Etat sur table" :


1. Sous le volet "Cration", dans le groupe "Donnes", droulez "Table et liste" et slectionnez
"Etat sur table".
2. Ltat est immdiatement cr.
3. Une fentre safche proposant dajouter ltat au projet. Validez.
4. Revenez sur la fentre "FEN_Mouvements" (par exemple en cliquant sur le bouton "FEN_
Mouvements" prsent dans la barre des lments ouverts sous WinDev).
5. Le bouton "Imprimer" a t positionn en haut gauche de la fentre. Dplacez-le par
exemple au-dessus de la table.
6. Enregistrez la fentre et testez-la. Utilisez le bouton dimpression ou loption "Imprimer" du
menu contextuel de la table : ltat que vous venez de crer est utilis dans les deux cas.

132

Partie 2 : Application avec donnes

LEON 2.6. ETAT

AVEC REQUTE INTGRE

Ce que vous allez apprendre dans cette leon ...


Crer un tat avec requte intgre.
Modier un tat avec requte intgre.
Tester un tat avec requte intgre.

Dure estime : 20mn

Partie 2 : Application avec donnes

133

Prsentation

Note

Dans la leon prcdente, nous avons cr un tat trs rapidement. Dans cette leon, nous allons nous arrter sur la cration dun tat bas sur une requte. Mais au lieu de faire dabord la
requte, puis ltat, nous allons crer la requte pendant la description de ltat. Dans ce cas, la
requte sera intgre ltat : elle ne pourra pas tre utilise ailleurs dans le projet.
Ltat que nous allons crer est relativement simple : nous voulons afcher pour chaque compte
de chaque banque les oprations ralises.

Cette leon "survole" la cration dun tat. Une partie entire de ce cours dautoformation est consacre la gestion des tats ("Votre premier etat", page 335).

Cration dun tat

"Pour crer un tat :


parmi les boutons daccs rapide. Dans la roue qui safche, cliquez sur
1. Cliquez sur
"Etat". Lassistant de cration dun tat se lance automatiquement.
2. Slectionnez un tat de type "Tableau". Passez lcran suivant de lassistant.
3. Ltat va tre bas sur une requte que nous allons crer : slectionnez loption "Dune nouvelle requte". Passez lcran suivant de lassistant.

134

Partie 2 : Application avec donnes

4. Lcran de description de la requte apparat. Nous allons dnir les rubriques qui vont
composer la requte :
La rubrique "Organisme" du chier BANQUE : le nom de la banque
La rubrique "NumCompte" du chier COMPTE : le numro de compte
La rubrique "Intitul" du chier NATUREMVT : lintitul de lopration
La rubrique "DateMvt" du chier MOUVEMENT : la date de lopration
La rubrique "Montant" du chier MOUVEMENT : le montant de lopration
La rubrique "Sens" du chier MOUVEMENT : le sens de lopration.

5. Nous allons trier les donnes :


slectionnez la rubrique Organisme et dnissez un tri croissant (bouton "Trier").
slectionnez la rubrique NumCompte et dnissez un tri croissant (bouton "Trier")
6. Validez la requte. Lassistant de cration dtat continue.

Partie 2 : Application avec donnes

135

7. Ltat va contenir une rupture (cochez "Oui"). Les ruptures servent regrouper les donnes.
Dans ltat, les donnes vont tre regroupes par organisme bancaire. Passez lcran suivant.

8. Lassistant propose automatiquement la rubrique Organisme et la rubrique NumCompte


comme rubriques de rupture. Ce sont les rubriques pour lesquelles nous avons dni un tri
dans la requte. Slectionnez uniquement la rubrique Organisme et passez lcran suivant.
9. Cet cran est trs important. En effet, il permet dassocier les diffrentes rubriques associes ltat aux diffrentes zones de ltat. Dans cet exemple, lorganisme et le numro de
compte seront afchs en haut de rupture.
Nous allons galement changer lordre des rubriques : dans le "corps" de ltat (le bloc principal), le tableau afchera la date, lintitul, le sens et le montant. Utilisez les ches ct du
tableau pour rorganiser les rubriques.

136

Partie 2 : Application avec donnes

Passez lcran suivant.


10. Lcran suivant nous propose de faire un total sur la rubrique Montant chaque n de
rupture. Acceptez en passant lcran suivant.
11. Pour les dimensions du papier, choisissez lafchage en mode paysage. Passez lcran
suivant.
12. Choisissez un gabarit pour votre tat (ActivUbuntu par exemple).
13. Donnez un nom et un titre ltat (par exemple "ETAT_Opration", et "Oprations par
compte bancaire").
14. Validez.
15. Ltat est automatiquement cr.
16. Enregistrez ltat.

Test dun tat

"Pour tester un tat :


parmi les boutons daccs rapide).
1. Lancez le test (
2. Choisissez le mode dimpression "Aperu avant impression" :

3. Ltat apparat dans une fentre daperu.

"Si vous regardez attentivement cet tat, vous vous rendrez compte que cet tat est faux ! La
somme des montants calculs ne tient pas compte du sens du mouvement. Nous allons faire
quelques modications dans ltat pour y remdier.
1. Editez le code du bloc CORPS (positionnez le curseur de la souris dans la partie CORPS de
ltat et slectionnez loption "Code du bloc" du menu contextuel).
2. Dans le code "Avant impression" du bloc, ajoutez le code suivant :
// Affichage des montants ngatifs en cas de dbit
SI RUB_Sens = 1 ALORS
RUB_Montant = RUB_Montant*-1
FIN

Ce code permet de prendre en compte les montants ngatifs.


3. Fermez lditeur de code (cliquez sur la croix en haut droite de la fentre de code).
4. ditez la description du champ "CALC_Montant". Ce champ correspond au montant prsent
dans le bloc BAS DE RUPTURE. Ce champ afche le montant total. Par dfaut, il est li la
rubrique "Montant" de la requte utilise par ltat.
Partie 2 : Application avec donnes

137

5. Modiez la mthode de calcul du total : le total doit tre fait sur le champ "RUB_Montant".
6. Afchez longlet "Liaison" de la description du champ et slectionnez le champ de ltat
RUB_Montant" :

7. Validez.
8. Enregistrez ltat et testez-le.

138

Partie 2 : Application avec donnes

LEON 2.7. LE

GROUPWARE UTILISATEUR

Ce que vous allez apprendre dans cette leon ...


Quest-ce le groupware utilisateur ?
Intgrer le groupware utilisateur
Congurer le groupware utilisateur
Tester le groupware utilisateur

Dure estime : 20mn

Partie 2 : Application avec donnes

139

Prsentation
Une application peut tre utilise par diffrents intervenants, ayant tous des prols diffrents. Il
est souvent ncessaire de prvoir des niveaux daccs selon les fonctions de lutilisateur.
Prenons un exemple simple : lors de la mise en place dune gestion commerciale, lapplication
propose les fonctionnalits suivantes :
Consultation du tarif
Modication du tarif
Saisie des commandes
Saisie des clients.
Selon lutilisateur, les accs possibles sont diffrents. Quelques exemples :
les secrtaires peuvent consulter le tarif et crer des commandes
les commerciaux peuvent consulter le tarif et tablir les commandes, grer de nouveaux clients.
les directeurs commerciaux ont accs toutes les options.
WinDev permet de grer ces diffrents niveaux daccs en quelques clics dans vos applications
grce au groupware utilisateur.
Nous allons intgrer le groupware utilisateur dans notre application "WD Application Avec Donnes" et le congurer.

Intgrer le groupware utilisateur

"Pour intgrer le groupware utilisateur dans le projet "WD Application Avec Donnes" :
1. Sous le volet "Projet", dans le groupe "Projet", cliquez sur "Groupware Utilisateur". La fentre
de paramtrage du groupware utilisateur safche.

2. Dans longlet "Intgration", deux modes dintgration sont disponibles :


Intgration automatique : tous les lments du groupware utilisateur sont intgrs directement dans votre application. Vous protez ainsi automatiquement de toutes les volutions
du groupware. De plus, il est possible dappliquer le gabarit du projet aux fentres de
groupware.
Intgration personnalise : tous les lments du groupware sont intgrs dans votre application via un composant interne. Il est possible de personnaliser les diffrents lments du
groupware utilisateur. Cependant, les volutions ne seront pas prises en compte.

140

Partie 2 : Application avec donnes

Note

3. Slectionnez loption "Groupware utilisateur automatique".


4. Dans longlet "Excution", deux modes sont disponibles :
Lancement automatique : le groupware est lanc ds le dmarrage de lapplication.
Lancement manuel : le groupware sera lanc par programmation.
5. Conservez loption "Lancement automatique".
6. Slectionnez longlet "Fichiers". Cet onglet permet de dnir le format et lemplacement des
chiers de donnes du groupware utilisateur. Dans notre cas, nous utiliserons des chiers de
donnes HyperFileSQL Classic, dans lemplacement spci par dfaut.
Si vous utilisez (ou si lutilisateur nal utilise) Windows Vista (ou un systme
dexploitation plus rcent), il est conseill dutiliser le rpertoire des donnes.

7. Slectionnez loption "Activer lhistorique des connexions". Cette option permet au superviseur de savoir qui sest connect, quand et quelle heure.
8. Slectionnez longlet "Identication". Cet onglet permet de dnir le mode didentication
de lutilisateur :
gestion par le groupware utilisateur
utilisation dun annuaire LDAP. Dans ce cas, lors de linstallation de lapplication, lutilisateur pourra saisir les paramtres de son annuaire LDAP.
utilisation de lauthentication Windows.
9. Validez. Un message apparat indiquant que par dfaut, un utilisateur Superviseur est cr..

Note

Par dfaut, un seul utilisateur existe, le superviseur. Au premier lancement de


lapplication, connectez-vous en utilisant le nom : SUPERVISEUR. Vous pourrez
alors dnir le mot de passe utilis par le superviseur.

10. Validez ce message. Le groupware utilisateur est intgr dans lapplication.

Partie 2 : Application avec donnes

141

"Nous allons tout de suite tester notre application :


). Une fentre de login apparat.
1. Lancez le test du projet (
2. Connectez-vous en tant que superviseur.
3. Un nouveau menu apparat, permettant soit de tester lapplication, soit de congurer lapplication.
4. Choisissez loption "Congurer le groupware". Nous allons congurer le groupware utilisateur.

Configurer le groupware utilisateur

Note

La conguration du groupware utilisateur consiste dnir les diffrents utilisateurs de lapplication et leurs droits sur les diffrentes fentres et champs de lapplication.
La conguration des utilisateurs peut tre ralise :
lors du dveloppement de lapplication. Les chiers de donnes ncessaires
(des utilisateurs et de leurs droits) pourront tre installs avec lapplication.
lorsque lapplication est installe, par ladministrateur de lapplication.

"Pour congurer le groupware utilisateur :

1. Crez les diffrents utilisateurs qui auront accs lapplication (bouton "Nouveau" de la
zone "Utilisateurs"). Par dfaut, seul le superviseur existe.
Crez le nouvel utilisateur TEST.
Cliquez sur "Mot de passe" et indiquez le mot de passe : "test".
Cliquez sur "Enregistrer".
2. Associez si ncessaire les utilisateurs un groupe. Le bouton "Nouveau" de la zone
"Groupes" permet de crer des groupes.

142

Partie 2 : Application avec donnes

3. Paramtrez les droits des utilisateurs (option "Gestion des droits" gauche de la fentre).
Slectionnez lutilisateur "TEST et cliquez sur "Suivant". La fentre qui safche permet de slectionner chaque fentre de lapplication. Pour chaque lment de la fentre, il est possible
de dire si le champ aura le comportement de lapplication (dfaut) ou sera inactif, invisible ou
gris.
4. Fermez la fentre de conguration.
5. Si vous choisissez de lancer lapplication, lapplication fonctionne normalement.
6. Fermez lapplication et revenez sous lditeur.

"Dans la suite de ce cours, nous nutiliserons plus le groupware utilisateur. Vous pouvez direc-

Note

tement le dbrancher. Pour cela, sous le volet "Projet", dans le groupe "Projet", cliquez sur
"Groupware Utilisateur". Dans la fentre qui safche, dans longlet "Intgration", slectionnez
loption "Aucune gestion automatique du groupware utilisateur". Validez.
Si vous effectuez des tests automatiques dans votre application, il est ncessaire de congurer le groupware utilisateur pour ne pas utiliser la fentre de
login. Il suft de renseigner loption "Login automatique en mode test" dans longlet "Excution" de la fentre de paramtrage du groupware.

Partie 2 : Application avec donnes

143

LEON 2.8. LE

TABLEAU DE BORD

Ce que vous allez apprendre dans cette leon ...


Quest-ce que le tableau de bord ?
Tests automatiques
Optimisation de requtes

Dure estime : 20mn

144

Partie 2 : Application avec donnes

Prsentation
Le tableau de bord du projet est un lment indispensable la gestion de projets WinDev. Le tableau de bord permet davoir une vision globale et synthtique de ltat davancement dun projet.
Le tableau de bord est constitu de jauges, de voyants, de compteurs permettant de voir dun
seul coup dil ltat dun projet.
Dans cette partie, nous nous limiterons la gestion des tests automatiques et loptimisation
des requtes.
Le tableau de bord sera abord plus en dtail dans le chapitre "Tableau de bord", page 417.

"Pour afcher le tableau de bord du projet (si ce nest pas dj fait), sous le volet "Projet",
dans le groupe "Projet", cliquez sur licne

Tests automatiques
Une des fonctionnalits intressante du tableau de bord est de renseigner sur les tests qui ont t
raliss sur lapplication.
Nous avons dj fait de nombreux tests dutilisation, au fur et mesure de la conception de notre
application.
Cliquez sur le voyant test. La fentre de taux de validation de lapplication apparat.

Cette fentre recense tous les tests qui ont t effectus sur lapplication :
Tests manuels (cest les tests que nous avons dj effectus)
Tests automatiques.

Partie 2 : Application avec donnes

145

Les tests automatiques sont une catgorie de tests spciques. Les tests automatiques permettent dautomatiser certaines manipulations de vos fentres. Ces tests sont enregistrs sous
forme de scnarios WLangage, facilement modiables sous lditeur de code. Une fois enregistr,
le test automatique peut tre rexcut autant de fois que vous voulez, pour tester par exemple
limpact dune modication sur une fentre, une procdure, ...

Note

Faisons immdiatement un essai ! Nous allons crer un test automatique sur la fentre de saisie
que nous avons cre au dbut de cette leon.
Les tests automatiques peuvent tre raliss sur des fentres, des procdures,
des classes.

"Pour crer un test automatique sur une fentre, il suft de tester la fentre :

Note

1. Ouvrez la fentre "FEN_PersonneX" cre prcdemment.


2. Sous le volet "Tests automatiques", dans le groupe "Tests", droulez "Nouveau" et slectionnez loption "Enregistrer un nouveau test".
3. Dans la fentre qui safche, cliquez sur "Commencer lenregistrement".
4. Le test de la fentre se lance.
5. Saisissez un nom dans la zone "Nom recherch" et cliquez sur le bouton "Recherche gnrique".
6. Cliquez sur le bouton "Fermer".
7. Le test est termin.
8. Lditeur de tests propose denregistrer une description pour le test. Le test sappelle "Test
gnrique" et sa description correspond "Test de la recherche gnrique". Validez.
9. Le code du test en WLangage apparat sous lditeur de code. Fermez cette fentre de
code.
Les fonctions WLangage permettant de raliser des tests automatiques sont les
fonctions PiloteXXX.

10. Lditeur de tests apparat :

Le test est actuellement en cours de construction.

146

Partie 2 : Application avec donnes

11. Nous allons rendre le test disponible (cliquez sur le lien "Terminer la construction du test
et le rendre disponible"). Maintenant, le test pourra tre lanc tout moment. Lditeur de
tests nous indique que le test nest jamais pass. Cliquez sur le lien "Lancer le test".
12. Le test sexcute automatiquement et lditeur de tests afche le rsultat (le test est
pass avec succs dans notre cas).
13. Fermez lditeur de tests et enregistrez le test si ncessaire.

"Nous allons maintenant faire une modication dans notre fentre, puis repasser le test. La
modication porte sur le champ de recherche "SAI_Nom_Recherch". Nous allons ajouter un
code de vrication dans le code "A chaque modication".
1. Ajoutez le code suivant dans le code "A chaque modication" du champ SAI_Nom_Recherch :
SI Taille(SAI_Nom_Recherch)>=2 ALORS
BTN_GENERIQUE..Etat = Gris
SINON
BTN_GENERIQUE..Etat = Actif
FIN

2. Enregistrez la fentre.
3. Passez le test associ la fentre : sous le volet "Tests automatiques", droulez "Excuter"
et slectionnez loption "Lancer les tests".
4. Le test est dsormais en erreur.
5. Modiez le code du champ de recherche de la faon suivante :
SI Taille(SAI_Nom_Recherch)<=2 ALORS

6. Relancez le test. Le test passe maintenant correctement.


Une autre possibilit de lditeur de tests est la possibilit dutiliser un jeu de tests : cest le
concept des itrations. En effet, dans notre exemple, nous avons test uniquement la recherche
sur une personne. Nous allons modier notre test pour rechercher les diffrentes personnes de
notre chier. Ce test nest pas un cas rel de test, mais il permet de tester la fonctionnalit des
itrations.
1. Afchez lditeur de tests (par exemple double-cliquez sur "TEST_PersonneX" dans lexplorateur de projet).
2. Afchez la description du test (option "Description" du menu contextuel du "Test gnrique").
3. Longlet "Donnes" permet de saisir les paramtres prendre en compte dans le test. Dans
notre exemple, nous aurons uniquement en paramtre dentre, le nom recherch :
Cliquez sur le bouton "+" situ droite du tableau "Paramtres dentre".
Remplacez "Paramtre1" par "Individu".
Le type du paramtre est "Chane Ansi" (slectionnez ce type dans la liste).

Partie 2 : Application avec donnes

147

En commentaire, indiquez "Personne recherche".

Validez la fentre de description.


4. Sous lditeur de tests, cliquez sur longlet "Donnes de test". Nous allons saisir les noms
des personnes prsentes dans notre chier de donnes, par exemple :

Pour cela :
Cliquez sur le bouton "+" droite de la table.
Saisissez dans la colonne "Individu", Moulain.
Cliquez sur le bouton "+" droite de la table.

148

Partie 2 : Application avec donnes

Saisissez dans la colonne "Individu", Teste.


Cliquez sur le bouton "+" droite de la table.
Saisissez dans la colonne "Individu", Vini
5. Nous allons maintenant diter le code du test pour prendre en compte le paramtre. Slectionnez loption "Code" du menu contextuel du test "Test gnrique". Il est ncessaire de remplacer le nom utilis pendant le test par la variable "Individu"

6. Lancez le test.
Lditeur de tests propose de nombreuses fonctionnalits que nous ne pourrons pas aborder
dans ce cours :
la dnition de paramtres dentre et de sortie du test.
la possibilit de crer une bibliothque de tests pour tester un excutable par exemple sur
une machine diffrente du poste de dveloppement.
Pour plus de dtails sur les tests automatiques, nous vous conseillons de consulter laide en ligne
(mot-cl : "Test automatique").

"Fermez lditeur de tests automatiques.

Partie 2 : Application avec donnes

149

Audit statique et optimisation des requtes


Revenons au tableau de bord de notre application : sous longlet "Projet", dans le groupe "Projet",
cliquez sur le bouton
.
Nous allons lancer un audit statique de notre application. Laudit statique permet de dtecter rapidement toutes les amliorations pouvant tre effectues : correction des fautes dorthographe,
optimisation des requtes, ...

"Dans le tableau de bord, cliquez sur le bouton "Audit statique". Dans lassistant, slectionnez
"Lancer laudit statique sur le projet complet". La fentre de compte-rendu de laudit safche :

Remarque : Il est possible de congurer les informations afches dans laudit statique grce au
bouton
.
Regardons la synthse de cet audit :
Lancement du proler (galement appel lanalyseur de performances). Lanalyseur de performances sera tudi dans une prochaine partie de ce cours dauto-formation.
Optimisation des requtes : laudit statique a dtect quune requte de notre application pouvait tre optimise. Nous allons effectuer cette opration immdiatement.

150

Partie 2 : Application avec donnes

"Pour optimiser la requte :


1. Cliquez sur le bouton [...] de la ligne correspondante dans laudit statique.
2. La fentre doptimisation est automatiquement afche.

Pour optimiser les requtes du projet, WinDev propose de crer des cls composes. Ces cls
composes doivent tre cres dans lanalyse. WinDev va raliser ces modications automatiquement.
3. Cliquez sur le bouton "Appliquer ces modications dans lanalyse" et validez.
4. Pour prendre en compte les modications, il est ncessaire de rgnrer lanalyse puis deffectuer la modication automatique des chiers de donnes. Validez les diffrentes fentres
qui souvrent. Votre projet est dsormais en phase avec lanalyse.

Partie 2 : Application avec donnes

151

LEON 2.9. DPLOIEMENT

DE LAPPLICATION

Ce que vous allez apprendre dans cette leon ...


Cration de lexcutable
Aide des nouveauts
Cration de linstallation

Dure estime : 20mn

152

Partie 2 : Application avec donnes

Prsentation
Notre premire application est termine. Maintenant, il faut gnrer lexcutable et installer lapplication chez les utilisateurs. Cest ce que nous allons faire pour conclure cette partie. Nous aurons ainsi vu la majorit des points importants lors du dveloppement dune application WinDev.

Cration de lexcutable
La cration de lexcutable est une opration trs simple : une option de menu et quelques clics
sufsent.
Nous vous proposons ici de dtailler toutes les tapes de la cration de lexcutable an de
connatre toutes les possibilits de WinDev. tout moment, vous pouvez cliquer sur le bouton vert
pour valider la totalit des crans de lassistant.

"Pour crer lexcutable :

Note

1. Dans la zone des boutons daccs rapide du ruban, droulez la roue et slectionnez loption
"Gnrer lexcutable Windows 32 bits (.exe)".

WinDev permet galement de crer des excutables 64 bits, des excutables


Linux. des services, des applications Java, ...

2. Lassistant de cration dexcutable se lance. Un premier cran prsentant ltat des tests
automatiques est afch. Dans notre cas, tous les tests automatiques ont t passs avec
succs. Passez lcran suivant.
3. Lcran suivant permet de dcrire les options gnrales de lexcutable :
le nom de lexcutable : nous conservons le nom par dfaut.
le nom de licne associe lexcutable : vous pouvez slectionner une icne dans le catalogue dimages.
limage dintroduction. WinDev propose plusieurs types de splash screen. Par dfaut, un
splash screen avec texte anim est slectionn. Le bouton "Options" permet de le congurer.
4. Passez lcran suivant. Pour le fonctionnement de lexcutable, nous garderons les options par dfaut. Passez lcran suivant.
5. Lcran suivant permet de personnaliser le message derreur de lapplication. Nous garderons le message propos par dfaut. Passez lcran suivant.
6. Lcran suivant permet de dnir lutilisation du MCU dans notre application.

Partie 2 : Application avec donnes

153

Note

Le MCU (Macro Code Utilisateur) donne la possibilit lutilisateur nal de


crer ses propres procdures en WLangage pour modier le fonctionnement
dun champ, dune fentre, ... Si le MCU est intgr dans lapplication, lutilisateur disposera dun bouton supplmentaire dans la barre de titre pour
saisir les codes supplmentaires.
Pour plus dinformations, consultez laide en ligne (mot-cl "MCU").

Note

Nous garderons les options par dfaut. Passez lcran suivant.


7. Lcran suivant permet de dire si lexcutable prendra en compte les patchs.
Lors dune modication de lapplication, pour viter de livrer la totalit de
lexcutable, il est possible de livrer des ressources complmentaires (fentres, tats, ...) sous forme de patchs. Ces patchs sont en fait des bibliothques additives.
Si lexcutable a t cr avec loption "Oui, lexcutable prendra en compte
ces mises jour par patch", lors du lancement de lapplication, les lments
prsents dans le patch se substitueront aux lments prsents dans la bibliothque de lapplication.
Pour plus dinformations, consultez laide en ligne.

Note

Nous garderons les options par dfaut. Passez lcran suivant.


8. Lcran suivant permet de grer les langues de lexcutable. Nous aborderons le sujet
du multilingue dans une prochaine leon. Nous garderons les options par dfaut. Passez
lcran suivant.
9. Lcran suivant rcapitule tous les chiers qui seront intgrs dans la bibliothque de lexcutable. Ce sont tous les lments de votre projet qui peuvent tre manipuls par lutilisateur
nal. Nous garderons les options par dfaut. Passez lcran suivant.
10. Lcran suivant permet de grer les composants utiliss par lexcutable. Nous verrons
la cration et lutilisation des composants plus loin dans ce cours dauto-formation. Passez
lcran suivant.
11. Lcran suivant concerne le rpertoire des chiers de donnes. Si votre application doit
tre dploye sur Windows Vista, il est conseill de choisir loption "Rpertoire des donnes
de lapplication".
Sous Windows Vista et suprieur, le systme de lUAC implique lutilisation
des normes de programmation Windows.
Pour plus dinformations, consultez laide en ligne.

Slectionnez loption correspondant votre systme. Passez lcran suivant.

154

Partie 2 : Application avec donnes

12. Nous allons maintenant saisir les informations de lexcutable. Ces informations sont afches sous lexplorateur Windows en slectionnant les proprits du chier.
Entrez par exemple les informations suivantes :

Note

Cet cran permet galement de signer si ncessaire lexcutable.


Passez lcran suivant.
13. Lcran suivant concerne le numro de version de lexcutable. Il est possible dutiliser :
un format compatible avec les prcdentes versions de WinDev,
un format standard Windows. Slectionnez cette option.
14. Lcran suivant concerne le framework WinDev.
Le framework correspond aux diffrentes librairies ncessaires au fonctionnement de lexcutable.

Loption "Utiliser uniquement le framework propre lapplication" permet dutiliser uniquement les librairies ncessaires.
Loption "Utiliser le framework WinDev commun" permet dutiliser le framework commun
toutes les applications WinDev installes sur le poste. Avec cette option, le framework est install une seule fois sur le poste (il est possible de le tlcharger par Internet) et il est utilis
par toutes les applications WinDev. Cochez cette option.
Passez lcran suivant.
15. Un cran concernant Windows Vista apparat. Cet cran permet dintgrer un manifeste
pour une utilisation sous Windows Vista.
Passez lcran suivant.
16. Lexcutable est cr. Il est possible de le lancer immdiatement, pour vrier son fonctionnement. Pour cela, cliquez sur le bouton "Lancer lexcutable").

Partie 2 : Application avec donnes

155

Note

Voil, la cration de lexcutable est termine. Beaucoup dtapes, mais aprs une premire conguration de vos choix, vous pouvez valider ds le dbut toutes les tapes.
Il est galement possible de cliquer directement sur les tapes indiques dans
lassistant pour parvenir directement un cran. Les options par dfaut des
autres crans seront automatiquement valides.

Cration de linstallation
La cration de linstallation est une opration trs simple : un assistant vous permet de dnir les
choix principaux. Si les options proposes par lassistant ne sufsent pas, il est possible dutiliser
lditeur dinstallation. Nous ne dtaillerons pas son utilisation dans cette leon. Pour plus de
dtails, consultez "Installation dune application", page 473.
Nous vous proposons ici de dtailler toutes les tapes de la cration du programme dinstallation
an de connatre toutes les possibilits de WinDev. tout moment, vous pouvez cliquer sur le bouton vert pour valider la totalit des crans de lassistant.

"Pour crer le programme dinstallation :

Note

1. Sous longlet "Projet", dans le groupe "Gnration", droulez "Procdure dinstallation" et slectionnez loption "Crer la procdure dinstallation". Lassistant de cration dexcutable et
dinstallation se lance.
Nous avons dj cr lexcutable : les options choisies sont mmorises. Cliquez directement dans lassistant sur lintitul "Complments" de la partie
"Excutable".

2. Un cran safche proposant de crer la page des nouveauts.

156

Partie 2 : Application avec donnes

Note

Cette option permet de crer un chier daide pour prsenter lutilisateur nal les nouveauts de la version. Lors dune premire installation, ce chier peut correspondre laide du logiciel.
Slectionnez loption "Crer une documentation des nouveauts" et passez lcran suivant.
3. Lcran suivant permet de dnir les lments qui seront automatiquement intgrs au
chier daide. Conservez les options par dfaut et passez lcran suivant.
Si lapplication possde dj un systme daide, il est possible de lutiliser pour
le complter avec une page de nouveauts.

4. Validez le message. Lexcutable est automatiquement cr (avec les options que nous
avons dnies lors de la cration de lexcutable) et le systme daide est cr. Vous pouvez
saisir les informations spciques dans le systme daide. Pour lexemple, laissez les informations cres par dfaut. Pour reprendre la cration du programme dinstallation, cliquez
sur loption "Poursuivre la cration de la procdure dinstallation".

Laide est automatiquement compile.


5. Choisissez le mode dinstallation :
Installation individuelle pour une application indpendante, installe et lance sur chaque
poste. Nous choisissons cette option.
Installation avec mise jour automatique, pour une installation sur un poste serveur. Les
applications seront installes partir du serveur. En cas de mise jour, seule une mise
jour du serveur est ncessaire. Les applications installes se mettront jour automatiquement.
Passez lcran suivant.
6. Choisissez une installation standard. Passez lcran suivant.
7. Nous ne changeons pas le rpertoire dinstallation par dfaut. Passez lcran suivant.
8. Dans la liste des chiers installs, conservez les chiers proposs. Passez lcran suivant.
9. Dans les paramtres de la base de donnes, dcochez toutes les options. Passez lcran
suivant.

Partie 2 : Application avec donnes

157

10. Dans les modules complmentaires, conservez les options suivantes :

Nous allons choisir les outils optionnels installer et inclure le dsinstallateur. Grce au dsinstallateur, les utilisateurs pourront dsinstaller lapplication depuis le gestionnaire de programmes de Windows. Passez lcran suivant.
11. Nous allons slectionner WDOptimiseur. Cet outil permet de rindexer rgulirement les
chiers de donnes de lapplication.
12. Cliquez sur loption "Support" gauche de lassistant. Nous allons gnrer linstallation
dans un rpertoire unique. Par dfaut, le programme dinstallation est cr dans le sous-rpertoire "Install" du projet. Il est possible de spcier un mot de passe pour linstallation. Seul
lutilisateur connaissant le mot de passe pourra lancer linstallation de lapplication.
13. Validez. Le programme dinstallation est automatiquement cr.
14. Testez immdiatement le programme dinstallation cr.

Conclusion
Voil, nous avons ralis une application de sa conception sous lditeur danalyses sa distribution en clientle. Nous avons dcouvert de nombreuses fonctionnalits de WinDev. Les chapitres
suivants vont permettre dapprofondir certaines de ces fonctionnalits.

158

Partie 2 : Application avec donnes

LEON 2.10. QUESTIONS / RPONSES


Ce que vous allez apprendre dans cette leon ...
Trucs et astuces

Partie 2 : Application avec donnes

159

Question

Comment crer le menu principal de mon application ?

Effectuez les oprations suivantes :


1. Crez une nouvelle fentre ou ouvrez une fentre existante.
2. Sous longlet "Fentre", dans le groupe "Barres et menus", droulez "Menu principal" et slectionnez loption "Ajouter le menu principal". Une option est cre automatiquement.
3. Faites un clic droit sur cette option.
4. Cliquez sur "Description de loption" pour modier loption slectionne.
5. Cliquez sur "Ajouter aprs" pour ajouter une nouvelle option aprs.
6. Cliquez sur "Ajouter avant" pour insrer une nouvelle option avant.
7. Cliquez sur "Insrer un sous-menu" pour ajouter un sous-menu dans larborescence du
menu.

Question

Comment lier une fentre une option de mon menu principal ?

La fonction Ouvre permet dassocier une fentre une option de menu. Saisissez le code suivant
dans le code de clic de votre option de menu :

Notes

Ouvre(FEN_NomMaFentre)

Question

Pour associer un tat une option de menu, utilisez la fonction iImprimeEtat :


iImprimeEtat(ETAT_NomMonEtat)

Comment insrer automatiquement le menu "?" ?

Pour insrer automatiquement un menu "?" dans votre application, sous le volet "Fentre", dans le
groupe "Barres et menus", droulez "Menu principal" et slectionnez loption "Ajouter le menu ?".
Dans lassistant qui se lance, slectionnez les options dsires.
Question

Comment crer un menu contextuel ?

Un menu contextuel peut tre ajout :


soit au niveau de la fentre.
soit au niveau dun champ.
Pour une fentre :
1. Faites un clic droit sur la fentre et slectionnez loption "Description".
ct de la combo "Menu Ctx".
2. Cliquez sur longlet "IHM" et cliquez sur licne

160

Partie 2 : Application avec donnes

Pour un champ :
1. Faites un clic droit sur le champ et slectionnez loption "Description".
2. Cliquez sur longlet "IHM" et cliquez sur licne
ct de la combo "Menu Ctx".
Pour connatre ou modier le menu contextuel dun champ ou dune fentre par programmation,
utilisez la proprit ..MenuContextuel.

Question

Comment fermer une fentre automatiquement aprs une dure


prdfinie ?

Il suft dutiliser un bouton et la fonction DlaiAvantFermeture. Par exemple :


DlaiAvantFermeture("FENETRE", "BOUTON", 200)

Pour plus de dtails, consultez laide en ligne (mot-cl : "Fermer, Fermeture automatique (bouton)").
Notez que vous pouvez galement utiliser loption "Validation automatique" disponible dans longlet "Dtail" de la description de la fentre.

Question

Comment rcuprer des paramtres passs en ligne de commande un


excutable ?

Astuce

Il suft dutiliser la fonction LigneCommande dans le code dinitialisation du projet.


Consultez laide en ligne pour plus de dtails sur cette fonctionnalit (mot-cl : "Ligne de commande").

Question

Vous pouvez simuler le passage de paramtres en ligne de commande votre


projet en mode test. Dans lditeur :
1. Sous le volet "Projet", dans le groupe "Mode test", droulez "Mode test" et
slectionnez loption "Paramtrage du mode test".
2. Saisissez les paramtres de la ligne de commande.

Comment dsinstaller une application ralise avec WinDev ?

Lors de la cration du programme dinstallation, il est possible de prvoir la dsinstallation de


lapplication.
Si cette option a t choisie, le programme de dsinstallation a automatiquement t cr. Votre
application a donc t enregistre auprs de Windows pour pouvoir la dsinstaller ultrieurement.
Pour dsinstaller une application :
1. Cliquez dans le menu "Dmarrer".
2. Slectionnez le choix "Panneau de conguration".
3. Slectionnez "Ajout/Suppression de programmes".
4. Slectionnez lapplication et cliquez sur "Dsinstaller".
Partie 2 : Application avec donnes

161

Question

Comment crer une installation par CD-ROM ?

Lors de la cration de linstallation (option "Procdure dinstallation" dans le groupe "Gnration"


sous le volet "Projet"), vous avez la possibilit de choisir diffrents supports dinstallation.
En slectionnant loption "Support avec autorun", WinDev crera un dossier dans lequel tous les
chiers ncessaires une installation par CD-ROM seront crs (chier AUTORUN, chiers dinstallation, ...).
Vous navez plus alors qu graver le contenu de ce dossier complet sur un CD-ROM vierge pour
distribuer votre application !

Question

Comment installer une application ?

Lorsque lexcutable a t ralis, le rpertoire de votre projet contient un sous-rpertoire


"EXE\<Nom du projet>", contenant tous les lments permettant de faire fonctionner votre application.
Pour prparer une installation de votre application :
1. Sous le volet "Projet", dans le groupe "Gnration", droulez "Procdure dinstallation" et slectionnez "Crer la procdure dinstallation". Lassistant de prparation dune installation dmarre.
2. Suivez les instructions lcran.

Question

Comment associer une icne mon excutable ?

Notes

Licne qui est associe votre excutable peut tre dnie lors de la cration de lexcutable.
Cette icne doit tre au format ICO.

Question

Un catalogue dicnes prdnies est fourni en standard avec WinDev. Ce catalogue est accessible lors de la slection de licne.

Comment associer une image de lancement (splash screen) mon


excutable ?

Limage de lancement qui est associe votre excutable peut tre dnie lors de la cration
de lexcutable. Cette image doit tre un format standard reconnu par WinDev (BMP, WMF, GIF,
JPEG, TIFF, )
Un catalogue dimages prdnies est fourni en standard avec WinDev. Ce catalogue est accessible lors de la slection de limage.
WinDev offre la possibilit de personnaliser directement cette image lors de la cration de lexcutable. Vous pouvez ainsi crire le texte de votre choix (avec la mise en forme voulue) sur cette
image.
162

Partie 2 : Application avec donnes

Question

Comment mettre licne de mon application en bas droite dans la barre


de tches ?

Utilisez la fonction SysIconeAjoute. Exemple :


Res = SysIconeAjoute("C:\Icones\Icone.ICO","MenuContextuel",...
"Message survol", "Nom Procdure associe")

Pour rtablir votre application, utilisez la fonction SysIconeSupprime.


Pour plus de dtails sur ces fonctions, consultez laide en ligne (mot-cl : "SysIconeAjoute").

Question

Comment installer un raccourci dune application sur le bureau ?

La fonction CreRaccourci permet de crer un raccourci dune application par programmation.


Cette fonction permet de crer aussi bien un raccourci sur le bureau que dans un groupe de programmes.
Par exemple, pour installer un raccourci sur le bureau :
CreRaccourci(raccourciBureau, "Libell de mon icne", ...
"C:\Program Files\Compta\Compta.EXE")

Consultez laide en ligne pour la syntaxe dtaille de cette fonction (mot-cl : "Crer, Un raccourci").

Question

Comment partager le framework WinDev entre les diffrentes applications


installes sur un mme poste ?

Lors de la cration du programme dinstallation de lapplication, vous avez la possibilit de dire


si votre application partage le Framework WinDev avec les autres applications installes sur le
poste. Dans ce cas, le Framework WinDev sera install dans le rpertoire "C:\Program Files\Fichiers communs\PC SOFT\18.0\Framework".
Consultez laide en ligne pour plus de dtails (mot-cl : "Framework").

Partie 2 : Application avec donnes

163

Question

Comment dtecter les lments non utiliss par mon application ?

Aprs quelques mois ou quelques annes de dveloppement et de maintenance, le rpertoire de


votre projet contient souvent plusieurs chiers qui ne sont plus utiliss, mais que, dans le doute,
vous nosez pas supprimer.
Fichiers et fentres de test, images abandonnes, ... Un nettoyage simpose !
Un outil de WinDev permet dune part de dtecter automatiquement ces lments inutiliss et
dautre part de les supprimer du projet, sans aucun risque. Les lments supprims du projet
seront archivs (au format ZIP, ou dans un rpertoire de sauvegarde) pour le cas o une de ces
ressources aurait un jour une utilit ...

"Pour utiliser cet assistant, sous le volet "Projet", dans le groupe "Autres actions", droulez
"Sauver/Restaurer", puis slectionnez loption "Nettoyer le rpertoire du projet".
Remarque : Il est possible de connatre :
le code mort dun projet : sous longlet "Projet", dans le groupe "Audit et performances", droulez "Audit ddition" et slectionnez loption "Code mort".
les lments orphelins dun projet : sous longlet "Projet", dans le groupe "Audit et performances", droulez "Audit ddition" et slectionnez loption "Elments orphelins".

164

Partie 2 : Application avec donnes

PARTIE 3
Fentres et
champs

LEON 3.1. LES

FENTRES

Ce que vous allez apprendre dans cette leon ...


Comment crer une fentre ?
Les caractristiques dune fentre

Dure estime : 10 mn

Partie 3 : Fentres et champs

167

Comment crer une fentre ?


Depuis le dbut de ce cours, nous avons cr des fentres de diffrentes faons :
cration de fentres vierges bases sur un gabarit (partie 1 de ce cours).
cration de fentres de diffrents types (che, table, ...) bases sur les chiers de donnes (partie 2 de ce cours).
WinDev propose dautres possibilits pour crer des fentres. Ces possibilits sont regroupes
dans lassistant de cration de fentres.
Rappel : Pour lancer lassistant de cration de fentres :
1. Cliquez sur
parmi les boutons daccs rapide du menu de WinDev :

2. Une fentre en forme de roue safche. Cette fentre permet de crer tous les lments
pouvant tre associs un projet.
3. Cliquez sur "Fentre". Lassistant de cration de fentres safche.
Lassistant de cration de fentres permet :
de crer des fentres RAD (Rapid Application Development) : ces fentres sont bases sur les
chiers de donnes dcrits dans lanalyse et contiennent tout le code ncessaire leur fonctionnement. Ces fentres sont associes un pattern RAD (qui xe les fonctionnalits intgres
dans la fentre et si ncessaire linterface) et un gabarit (qui dnit le look de la fentre).
Ces fentres peuvent tre utilises immdiatement. Plusieurs types de fentres sont proposs :
fentre de type che, fentre avec table, fentre avec zone rpte, ...
de crer des fentres RID (Rapid Interface Development) : ces fentres sont bases sur les
chiers de donnes dcrits dans lanalyse. Elles contiennent uniquement les champs et les boutons, et le code ncessaire aux lments intgrs par le pattern RID associ. La saisie du code
correspondant est effectue par le dveloppeur. Ces fentres sont lies un pattern RID et si
ncessaire un gabarit. Ces fentres peuvent tre utilises immdiatement. Plusieurs types de
fentres sont proposs : fentre de type che, fentre avec table, ...
de crer des fentres standard : Cet onglet permet de crer des fentres vierges standard.
de crer des fentres internes. Les fentres internes sont un type spcique de fentre. Nous
dtaillerons leur fonctionnement dans la suite de cette partie.
de crer des fentres bases sur un modle de fentres. Les modles de fentres permettent
de dnir un ensemble de critres (graphique, champ, code) devant tre repris dans chaque
fentre de lapplication. Nous dtaillerons la cration et lutilisation dun modle de fentres
dans la suite de cette partie.
dimporter une fentre existante (et non WinDev). Cette option permet de "recopier" linterface
dune fentre dans votre application WinDev. Vous slectionnez la fentre qui vous intresse et
WinDev se charge de tout. Loption "Gnrer des images pour les champs non reconnus" permet
de rendre linterface plus proche de la fentre importe.
Bien sr, vous avez toujours la possibilit de crer une fentre vierge, sans aucun champ, utilisant
ou non un gabarit.
168

Partie 3 : Fentres et champs

Aprs avoir vu les diffrentes faons de crer une fentre, nous allons voir quelles sont les principales caractristiques dune fentre.

Description dune fentre : 8 onglets votre disposition


Ds le dbut de ce cours dauto-formation, vous avez cr des fentres. La premire chose que
vous avez afche, cest la fentre de description an de saisir le titre de la fentre, son nom et
sa description.
Mais la fentre de description renferme de nombreux paramtrages trs pratiques, qui vitent
bien souvent des dizaines de lignes de code.
Nous allons dtailler quelques-unes de ces fonctionnalits sur un exemple simple.
Exemple pratique

Notes

Pour manipuler les diffrents onglets des fentres, nous allons utiliser un projet exemple prpar
cet effet. Pour ouvrir ce projet sous WinDev :
1. Si ncessaire, fermez le projet en cours pour faire apparatre la fentre de bienvenue.
2. Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Fentres et champs".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Fentres et
champs".
3. Ouvrez la fentre "FEN_ChampSaisie" (prsente dans le dossier "Champs classiques" de
lexplorateur de projet).
Ouvrir une fentre sous lditeur
Nous avons vu plusieurs mthodes pour ouvrir une fentre sous lditeur. Voici
un rcapitulatif des diffrentes possibilits :
Utilisation du raccourci clavier [CTRL] + [E] et slection de la fentre ouvrir.
Lavantage de cette mthode est la visualisation de laperu de la fentre.
Dans le volet "Explorateur de projet", double-clic sur le nom de la fentre
ouvrir.
Bouton
prsent parmi les boutons daccs rapide et slection du chier
correspondant la fentre ouvrir.

4. Afchez la description de la fentre (option "Description" du menu contextuel de la fentre).


Onglet "Gnral"
Le premier onglet de la fentre de description est longlet "Gnral". Cet onglet permet dindiquer
les paramtres gnraux de la fentre, par exemple :
le nom logique de la fentre : ce nom sera utilis en programmation pour manipuler la fentre.
la description de la fentre : cette description est purement indicative pour le dveloppeur. Elle
permet de rsumer un peu plus longuement ce quoi sert la fentre. Elle sert galement
dcrire la fentre lors de limpression du dossier.
le titre de la fentre : comme nous lavons dj vu, le titre est afch dans la fentre et permet
dindiquer lutilisateur le sujet trait.

Partie 3 : Fentres et champs

169

Onglet "IHM"
Le second onglet de la fentre de description est longlet "IHM". Cet onglet permet de dnir les
paramtres concernant linterface de la fentre. Cet onglet regroupe ainsi les caractristiques
concernant :
la taille et la position de la fentre
le menu contextuel de la fentre,
le curseur de survol et laction du clic droit sur la fentre, ...
Dans cet onglet, de nombreuses options sont intressantes :
Dplacement par le fond : cette option permet lutilisateur de dplacer la fentre en cliquant
nimporte quel endroit (et non uniquement par la barre de titre). Vous pouvez dailleurs tester
cette option directement sur la fentre de description.
Redimensionnable : grce cette option, lutilisateur pourra redimensionner la fentre. Mais
cette option ncessite une gestion prcise du redimensionnement des champs (appel ancrage). Nous consacrerons un chapitre cette notion dans la leon concernant lergonomie des
fentres.
Mmoriser la taille et la position de la fentre : cette option est trs intressante car la position
de la fentre dtermine par lutilisateur sera automatiquement enregistre et utilise la prochaine ouverture de la fentre. Ainsi, si lutilisateur dispose de plusieurs crans, lafchage de la
fentre sur un cran ou un autre sera automatiquement mmoris.
Assombrir la fentre lorsquelle devient inaccessible : encore une option trs apprcie par
les utilisateurs. Si des botes de dialogue sont afches par lapplication, lutilisateur ne se demande plus o il doit cliquer : en effet, la fentre en arrire-plan est automatiquement grise
pour que lutilisateur puisse se concentrer sur le message afch.
Adapter la taille en fonction du contenu : cette option permet dadapter automatiquement la
taille de la fentre en fonction des champs prsents dans cette fentre. Les zones vides sont
ainsi automatiquement limines.
Onglet "Dtail"
Dans cet onglet, les paramtres spciques au fonctionnement de la fentre sont regroups. On
retrouve les caractristiques concernant :
Le type de la fentre (nous reviendrons en dtail sur cette caractristique dans la leon sur
lergonomie),
Les paramtres avancs de la fentre (contexte HyperFileSQL, ...),
Lanimation de la fentre en ouverture et/ou en fermeture,
Excution automatique dun bouton de la fentre.
Arrtons-nous un instant sur ces deux derniers points.
Lanimation de fentre permet de donner un aspect dynamique votre application. Vous pouvez
paramtrer louverture et/ou la fermeture de votre fentre.
Pour paramtrer lanimation ? Rien de plus simple : il suft de cliquer sur les caractristiques de
lanimation. La fentre de paramtrage apparat. Saisissez vos paramtres et testez-les immdiatement (et mme sur la fentre de paramtrage).

170

Partie 3 : Fentres et champs

La fermeture automatique de la fentre ou la validation automatique dun bouton permet de ne


pas laisser votre application bloque sur une fentre. En effet, un utilisateur peut par exemple afcher une che Client et la laisser ouverte pendant une absence. Pour viter le blocage des autres
utilisateurs, il suft de dnir une dure et laction raliser au bout de cette dure (clic sur le
bouton Valider, Annuler, ...).
Onglet "Image"
Cet onglet permet de dnir les diffrentes images utilises par la fentre :
Limage de fond de la fentre et son mode dafchage.
Vous pouvez utiliser une image dnissant la forme de votre fentre (par exemple pour crer
une fentre reprenant la forme dune tlcommande). Dans ce cas, il suft de slectionner
loption "Dtourer la fentre" et de suivre les indications.
Il est galement possible dutiliser une image qui sagrandira avec votre fentre. Il suft de dnir le mode "9 images" associ.
Limage de la poigne de redimensionnement de la fentre.
Licne associe la fentre : cette icne est visible dans le coin en haut gauche de la fentre
au niveau de la barre de titre. Elle personnalise la fentre. Si aucune icne nest indique, cest
licne associe au projet qui sera visible.
Onglet "Langue"
Cet onglet permet dindiquer les diffrentes langues grer dans la fentre (Cas des projets "multilingues"). Pour plus de dtails, consultez la leon "Multilingue", page 488.
Onglet "Note"
Cet onglet permet de saisir du texte. Ce texte est imprim lors de ldition du dossier. Vous pouvez
par exemple, saisir des informations concernant le fonctionnement de la fentre, les diffrentes
rgles de gestion des traitements effectus.
Onglet "Aide"
Cet onglet permet dindiquer le nom du chier daide contextuelle associ la fentre. Ce chier
daide est utilis lors de lappui sur le bouton daide de la fentre pour activer une aide contextuelle au clic sur la fentre.
Onglet "Style"
Cet onglet regroupe les paramtres relatifs au style de la fentre. On peut slectionner :
le gabarit
les icnes afches (agrandissement, rduction, aide, menu systme, )
le type de bordure
la couleur de fond
le thme XP
lopacit (permet de dnir la transparence dune fentre)
la prsence de la barre de message,

Partie 3 : Fentres et champs

171

LEON 3.2. LES

CHAMPS

Ce que vous allez apprendre dans cette leon ...


Les diffrents types de champs
Les champs les plus classiques
Les champs spcialiss

Dure estime : 45 min

172

Partie 3 : Fentres et champs

Introduction
WinDev met plus de 40 types de champs votre disposition pour communiquer avec lutilisateur
nal. Ils permettent de saisir ou de visualiser des valeurs.
Les valeurs afches peuvent provenir dun calcul effectu par programmation, dun chier dune
base de donnes ou dune affectation.
Les valeurs saisies peuvent servir faire des calculs, tre enregistres dans un chier de donnes ou tre affectes dautres champs.
Cette leon va vous permettre de connatre les diffrents types de champs disponibles, de les
tester dans des cas dutilisation relle, et pour les plus courants, daborder leur programmation.
Pour simplier cette leon, nous avons dcoup les diffrents champs en deux catgories :
les champs classiques : ce sont les champs les plus utiliss.
les champs spcialiss, qui permettent dobtenir une interface spcique, ou de grer des
fonctionnalits spciques.
Exemple pratique
Pour apprendre utiliser ces diffrents types de champs, nous allons utiliser le projet exemple
"WD Fentre et champs" prpar cet effet. Pour ouvrir ce projet sous WinDev :
1. Si ncessaire, fermez le projet en cours pour faire apparatre la fentre de bienvenue.
2. Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Fentres et champs".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Fentres et
champs".

Partie 3 : Fentres et champs

173

Les champs classiques


Sous lappellation "Champs classiques", nous avons regroup tous les champs les plus communs,
utiliss constamment dans les applications cres avec WinDev. Ces champs sont les suivants :
Libell
Champ de saisie
Bouton
Image
Zone de clicage
Slecteur
Interrupteur
Liste
Combo
Liste image
Table
Zone rpte
Table hirarchique
Arbre
Jauge
Graphe
Nous allons tudier ces champs un par un. Pour chaque type de champ, une fentre spcique
est disponible permettant de tester les principales fonctionnalits du champ. Ces fentres sont
regroupes dans lexplorateur de projet dans le dossier "Champs classiques".

Type de champ : Libell


Rsum
Les libells permettent dafcher du texte statique. Ils ne peuvent pas tre saisis en excution. Ils
peuvent tre modis par programmation (comme tous les champs).
Les libells sont utiliss pour afcher une information, par exemple un titre en gros caractres.
Le contenu dun libell peut tre dni sous lditeur lors de la description du libell ainsi que par
programmation.
Les libells permettent galement dafcher un texte en fonction de la langue utilise dans le
projet, sans programmation particulire.
Exemple pratique

"Ouvrez la fentre "FEN_ChampLibelle.WDW" et testez cette fentre.


Cette fentre prsente :
- les diffrents types de libells pouvant tre utiliss.
- les diffrentes manipulations pouvant tre effectues sur un libell.

"Testez les diffrentes manipulations des libells.


Le libell est afch en vert.
Le bouton "Couleur" change la couleur du libell.
174

Partie 3 : Fentres et champs

Le bouton "Rcuprer" rcupre le libell afch.


Les boutons "Remplir" et "Construire" modient le libell afch.

"Retournez sous lditeur.


Les diffrents types de libells
WinDev propose plusieurs types de libells.
Dans longlet "Gnral" de la description du champ, il est possible de slectionner les types prdnis :
Libells multi-lignes : ce type de libell permet de grer les libells afchs sur plusieurs
lignes.
Libells RTF : ce type de libell permet de grer toutes les caractristiques du format RTF
(Gras, italique, soulign, couleurs, ...).
Remarque : Pour quun libell soit au format RTF, il est galement possible de cocher
loption "Texte avec mise en forme (R.T.F)" dans longlet "Dtail" de la description du champ.
Libell numrique : ce type de libell permet dafcher un numrique. Il est possible de
spcier le masque de saisie/dafchage utilis par le libell.
Libell montaire : ce type de libell permet dafcher une valeur montaire. Il est possible
de spcier le masque de saisie/dafchage utilis par le libell. Il est par exemple possible
dafcher la devise.
Libell date, heure, dure : ces types de libells permettent dafcher dans un champ une
date, heure, dure au format spci par le masque de saisie/dafchage. Dans ce cas, il
est galement possible de spcier la valeur de retour (utilise par exemple si le champ est
manipul par programmation).
Il est galement possible de dnir dautres libells spciques :
les libells anims : Faire clignoter ou dler un libell est un jeu denfant. Il suft de choisir
le mode danimation et de congurer les paramtres correspondants dans longlet "Dtail"
de la description du champ.
les libells avec ombre oue : une ombre oue apparat derrire le libell an de crer un
effet de relief. La conguration de lombre oue est ralise dans longlet "Style" de la description du champ.
Manipulation des libells par programmation
Nous allons tudier le code des boutons permettant de modier le champ Libell.
Pour construire le libell "LIB_LibellManipul" (bouton "Construire"), il faut adopter la syntaxe suivante (dans cet exemple la chane est construite partir de chanes et du rsultat de la fonction
DateDuJour qui retourne la date du jour).
LIB_LibellManipul = "Coucou" + RC + "Nous sommes le " + ...
DateVersChane(DateDuJour(), maskDateSystme)

Pour rcuprer le libell de "LIB_LibellManipul" (bouton "Rcuprer"), la syntaxe est :


// Rcupration dans une chane
Ch est une Chane
Ch = "Le libell est "+ RC + LIB_LibellManipul
// Autre mthode : Affichage dans une bote de dialogue
// Info("Le libell est "+ RC + LIB_LibellManipul)

Partie 3 : Fentres et champs

175

Il est galement possible de changer la couleur du texte du libell (bouton "Couleur") avec la proprit ..Couleur.
LIB_LibellManipul..Couleur = RougePastel

Notes

RougePastel est une constante WLangage correspondant la couleur Rouge Pastel.


Les proprits permettent de modier par programmation certaines caractristiques des champs : couleur, libell, police, ... Nous ne citerons pas toutes les
proprits. Nous dcouvrirons quelques-unes des principales proprits au fur et
mesure de cette partie.
Toutes les proprits sont relatives un champ donn. Leur syntaxe dutilisation
est :
Nom_Champ..Nom_Proprit

La liste des proprits disponibles sur les champs est prsente dans laide en
ligne de WinDev, mot-cl : "Proprits, Proprits des champs dune fentre".

Type de champ : Champ de saisie


Rsum

Rappel

Les champs de saisie sont les premiers champs que vous avez manipuls. Ils permettent de saisir
ou dafcher des donnes provenant de variables, de calculs ou de chiers de donnes.
Ils permettent par exemple de saisir un mot de passe, une quantit commander, le nom dun
client, une adresse,
Si vous crez une fentre, il y a 9 chances sur 10 pour que vous utilisiez ensuite un champ de
saisie. Voyons un peu plus en dtail leurs fonctionnements et leurs possibilits.
Quelle que soit linformation saisir ou afcher, vous pouvez choisir le type correspondant :
texte, RTF, HTML, mot de passe,
numrique,
heure,
date,
dure,
montaire,
montaire+Euro.
chaque type de champ correspondent plusieurs masques de saisie (ou dafchage si le champ
est en afchage).
Nous avons vu lintrt de ce masque lors du dveloppement de lapplication "Mes comptes",
nous ny reviendrons pas.

176

Les champs de saisie numriques ne sont pas typs. Cest le masque slectionn pour le champ qui va dnir si le champ est un rel, rel double, entier, ...

Partie 3 : Fentres et champs

Exemple pratique

"Ouvrez la fentre "FEN_ChampSaisie.WDW" sous lditeur. Cette fentre prsente la gestion


des champs de saisie de type texte et des champs numriques.

"Testez la fentre.
"Saisissez des valeurs dans les champs qui ont le libell "En saisie". Dans les autres champs,
il nest pas possible de saisir. En effet, ils ont t dcrits en afchage. Cliquez sur les
diffrents boutons et observez ce quil se passe.
En dtail
Pour afcher et rcuprer une valeur dans un champ de saisie une simple affectation suft et ce
quel que soit le type du champ de saisie.
Quelques exemples dinitialisation :
Code dinitialisation dun champ de saisie texte :
SAI_EnAffichage = "Coucou" // Affiche Coucou dans le champ texte

Code dinitialisation du champ de saisie numrique :

Rappel

// Affiche la valeur 20.6 dans le champ numrique


SAI_Numrique = 20.6

Il est galement possible dinitialiser la valeur dun champ de saisie en utilisant


longlet "Contenu" de la description du champ.

Quelques exemples de rcupration :


Code de clic dun bouton pour rcuprer la valeur dun champ de saisie texte :
Ch est une Chane
Ch = SAI_EnSaisie

// Rcupre le contenu du champ texte

Code de clic dun bouton pour rcuprer la valeur dun champ de saisie numrique :
Valeur est un Rel
// Rcupre le contenu du champ numrique
Valeur = SAI_Numrique_EnSaisie

Gestion de la couleur dans les champs de saisie


Dans la zone de saisie, la couleur du texte et la couleur du fond sont modiables par programmation avec les proprits ..Couleur et ..CouleurFond.
// Change la couleur du texte
SAI_Manip..Couleur = RougeClair
// Change la couleur du fond
SAI_Manip..CouleurFond = JauneClair

Partie 3 : Fentres et champs

177

Caractristiques dun champ de saisie


Comme pour les fentres, les champs possdent une fentre de description. Cette fentre de
description permet de paramtrer de nombreuses options du champ, options daspect ou de fonctionnement.
Nous allons dtailler les caractristiques du champ de saisie, sachant que de nombreuses options
sont reprises dans la description dautres champs. Nous ne dtaillerons pas toutes les options ici
(cest un cours, pas une documentation exhaustive).

Astuce

Onglet "Gnral"
Comme nous lavons dj vu, longlet "Gnral" du champ de saisie permet de dnir :
le nom du champ
son libell
son type
son masque de saisie.
Quelques types peuvent se rvler utiles :
RTF : Ce type de champ de saisie permet davoir des mots en Italique, en Gras, en couleur,
de tailles et de polices diffrentes, ... Il suft de copier/coller dans le champ un contenu au
format RTF ("Rich Text Format") pour que celui-ci soit pris en compte. Il est galement possible dassocier une barre doutils de formatage aux champs de saisie RTF.
HTML : Ce type de champ de saisie permet aussi bien dafcher un texte au format HTML
que de saisir un texte au format HTML. Il est galement possible dassocier une barre doutils de formatage aux champs de saisie HTML.
Mot de passe : Si ce type de champ de saisie est slectionn, les caractres frapps sont
remplacs par des puces uniquement lafchage.
Ce type de champ est idal pour la saisie du mot de passe dun utilisateur dans une fentre de login.

Astuce

Texte multi-ligne : ce type permet de saisir un texte sur plusieurs lignes. Des RC (Retours
Chariots) peuvent tre insrs dans le texte.
Ce type de champ est idal pour saisir un commentaire ou une observation. Lutilisation de ce paramtre est fondamentale pour lutilisation des champs "Mmo" (tudis plus loin).

Loption "Unicode" permet de saisir une chane au format Unicode dans le champ de saisie. Cette
option est intressante pour les applications utilisant des alphabets non latins.
Onglet "IHM"
Longlet IHM permet de dnir les caractristiques dinterface du champ.
Nous allons dtailler les points suivants :
Etat initial
Gestion de la touche TAB
Eye magnet
Gestion de la lettre dappel et du clic droit
La gestion de lancrage est dtaille dans le paragraphe "Ancrage", page 232.
178

Partie 3 : Fentres et champs

Ltat initial du champ correspond ltat du champ lors de lexcution de la fentre. Cette caractristique se retrouve pour presque tous les types de champ.
Au lancement dune fentre, un champ de saisie peut tre :
En saisie : le champ est actif, il sera en saisie dans la fentre. Lutilisateur pourra saisir des
informations dans ce champ.
Afchage seul : le champ est inactif, aucune saisie ne sera possible. Ce champ se comportera comme un champ de type libell. Il sera cependant possible de slectionner le contenu
du champ laide de la souris si loption "Avec slection en afchage" est coche dans longlet "Dtail".
Gris : le champ est inactif et il apparat en gris. Cet tat est trs pratique pour indiquer
lutilisateur que ce champ existe, mais quil nest actuellement pas accessible.
Visible : Comme son nom lindique, le champ "existe" dans la fentre. Ce champ peut tre
visible ou non. Cet tat est souvent utile en programmation lorsquun champ doit apparatre certains moments et disparatre dautres !
Cette option est indpendante des 3 options prcdentes. Vous pouvez rendre ainsi le
champ visible ou non tout en conservant les paramtres dafchage.
Ltat du champ peut tre modi par la suite par programme en utilisant :
la proprit ..Etat pour les options "Saisie", "Afchage seul" et "Gris",
la proprit ..Visible pour loption "Visible".
La gestion de la touche TAB permet de congurer la prise en compte de la touche TAB dans la fentre. Le plus souvent, la touche TAB du clavier permet lutilisateur de se dplacer entre les diffrents champs de la fentre (option "Champ accessible par TAB"). Il est alors possible de dnir
lordre de navigation dans la fentre (nous le verrons dans le chapitre Ergonomie de cette partie).
WinDev permet cependant de ne pas grer la touche TAB ou daccepter les TAB en saisie. Cette
dernire option peut tre intressante dans des champs multi-lignes permettant de saisir de longs
textes.
Le "eye magnet" (appel galement mise en forme conditionnelle) consiste modier laspect
visuel dun champ an dattirer lattention de lutilisateur sur ce champ. WinDev permet de modier cet aspect visuel automatiquement en fonction dune srie de conditions. Par exemple, un
champ dont la saisie est obligatoire safchera sur un fond rouge tant que son contenu sera vide.
La "lettre dappel" permet lutilisateur de se positionner directement sur le champ en tapant
simplement une combinaison de touches du clavier (par exemple [ALT] + [Lettre]).
Dans le libell dun champ de saisie, si une lettre est prcde de "&", elle devient automatiquement "lettre dappel".
Par exemple : "&Nom du client" dcrit [ALT]+[N] comme lettre dappel.

Notes

Le traitement du "clic droit" (de la souris) permet dassocier une action au clic droit de la souris.
Le traitement est par exemple "validation des informations saisies", "appel de laide", ... Le traitement est choisi parmi ceux des boutons (texte et graphique) prsents dans la fentre.
Parfois il est plus utile dutiliser les lettres dappel plutt que les actions de souris.
WinDev permet de raliser facilement des interfaces (IHM) o lutilisation de
la souris nest pas ncessaire. Par exemple, pour des applications de points
de vente (la place manque sur les comptoirs !) ou dans le domaine industriel :
bornes interactives, machine-outil, ...
Partie 3 : Fentres et champs

179

Notes

Onglet "Dtail"
Longlet permet de dnir les diffrentes fonctionnalits sappliquant au champ de saisie.
Quelques points importants :
Dans le cas dune saisie multi-ligne, il est possible de slectionner le mode de dlement
des informations dans le champ (onglet "Dtail" de la fentre de description).
Si le champ est en "Dlement Horizontal ET Vertical", le passage la ligne suivante seffectue par la combinaison de touches [CTRL] + [ENTREE] (standard Windows) ou [ENTREE].
Le saviez-vous ? La taille maximale dune variable texte est de 2 Go. En
tapant 3 lettres par seconde, il faudrait ... plus de 22 ans pour remplir le
champ !

Astuce

Il est galement possible dafcher et de rendre actifs les liens (URL par exemple) prsents
dans le texte multi-ligne.
Pour les champs de type numrique, il est possible de saisir une valeur minimale et maximale (dans longlet "Dtail" de la fentre de description du champ). Lors de la saisie dans
ce champ, WinDev contrlera automatiquement que ces valeurs sont respectes. Il est possible dinformer lutilisateur des valeurs saisir en afchant les bornes soit dans la bulle
daide, soit dans le texte dindication.
Saisie obligatoire : si la saisie de ce champ est obligatoire, il sera possible de se positionner
sur un autre champ uniquement si une valeur a t saisie.
Saisie assiste : si le champ est li une rubrique cl, la valeur trouve dans le chier de
donnes et correspondant aux premires lettres saisies est automatiquement propose.
Vrier lorthographe : si Open Ofce et ses dictionnaires sont installs sur le poste de lutilisateur, la correction orthographique sera automatiquement propose lutilisateur.
Mmoriser la valeur : permet de mmoriser la dernire valeur saisie dans le champ avant la
fermeture de la fentre. Cette valeur sera automatiquement propose la prochaine ouverture de la fentre.
Historique des saisies : permet de proposer les dernires valeurs saisies par lutilisateur
pour ce champ.
Retourne NULL si vide : retourne la valeur NULL si le champ na pas de valeur (Attention ! Ni
0, ni chane vide !).
La valeur NULL est trs utile pour grer le passage de paramtres une
requte et rendre les conditions optionnelles pour des recherches multicritres. Nous aborderons cela plus tard lors de la leon sur lditeur de
requtes.

Mode ellipse : Permet de tronquer le contenu du champ si ncessaire. Si le champ est tronqu "en n", les caractres "..." remplaceront la n du texte lafchage.

180

Partie 3 : Fentres et champs

Type de champ : Bouton


Rsum
Les boutons sont utiliss pour lancer des traitements. Le traitement associ au bouton sexcutera lorsque le bouton sera activ (lorsque lutilisateur clique sur le bouton).

Les boutons peuvent contenir un texte simple et/ou une image.


Vous avez dj cr plusieurs boutons. Revenons sur les types de boutons proposs par WinDev.
Exemple pratique

"Ouvrez la fentre "FEN_ChampBouton.WDW" sous lditeur. Cette fentre prsente les


diffrents types de boutons. Nous allons tudier tous les types de boutons disponibles.
Les diffrents types de boutons
Un bouton peut tre de 5 types (informations renseigner dans la fentre de description, onglet
"IHM") :
1. Bouton de type Normal
2. Bouton de type Validation
3. Bouton de type Interruption
4. Bouton de type Abandon
5. Bouton de type Aide
Bouton NORMAL
Un bouton de type Normal est un bouton comme ceux que vous avez dj crs. Ce type de bouton na pas daction prdnie particulire. Le code de sortie du champ qui tait en cours lors de
la validation du bouton est excut avant le traitement du bouton.

"Pour le vrier, cliquez sur le bouton "Normal". Le message "Code de sortie du champ NOM"
Astuce

safche et ensuite le message "Clic sur le bouton Normal" safche.


Les boutons de type NORMAL ne doivent pas tre utiliss dans des fentres
contenant des champs.
Les boutons de type NORMAL peuvent tre utiliss dans des barres doutils, des
barres dicnes ou dans des fentres sans champs de saisie.

Bouton VALIDATION
Lorsquun bouton est en Validation, la frappe de la touche [RC] ou [Entre] excute le traitement
du bouton, le code de sortie du champ qui tait en cours est excut.

"Pour le vrier, repositionnez-vous sur le champ "Nom" puis cliquez sur le bouton "Validation".

Partie 3 : Fentres et champs

181

Astuce

Un bouton de type VALIDATION doit tre utilis pour effectuer la validation de la


saisie dune fentre.
Ds quune fentre permet de faire une saisie dans un champ de saisie, un bouton de type VALIDATION doit tre prsent. Cest gnralement le type utilis pour
les boutons "OK".

Bouton INTERRUPTION
Un bouton en Interruption signie que lorsque le bouton est activ, le code de sortie du champ
qui tait en cours nest pas excut. Le code du bouton sexcute, puis le curseur est repositionn
sur le champ.

"Pour le vrier, repositionnez-vous sur le champ "Nom" puis cliquez sur le bouton "InterrupAstuce

tion". Seul le code du bouton sexcute, le code de sortie du champ ne sexcute pas.
Un bouton INTERRUPTION sera par exemple utilis pour appeler une fentre (an
dinterrompre la saisie en cours sans valider) puis revenir pour continuer la saisie.
Cest gnralement le type utilis pour les boutons "Aide".

Bouton ABANDON
Lorsquun bouton est en Abandon, la frappe de la touche [ESC] ou [Echap] excute le traitement
du bouton, le code de sortie du champ qui tait en cours nest pas excut.

Astuce

Un bouton ABANDON sera utilis pour "sortir" de la fentre en cours de saisie


sans effectuer aucune validation.
Dans une fentre de saisie, un bouton de type ABANDON est ncessaire pour
abandonner la saisie en cours sans la valider.
Cest gnralement le type utilis pour les boutons "Annuler".

Attention !

"Pour le vrier, repositionnez-vous sur le champ "Nom" puis cliquez la touche "Echap".

La "croix" est identique un bouton de type Abandon. Lors du clic sur la "croix",
la fentre est ferme en excutant le code du bouton Abandon de la fentre. Le
code de fermeture de la fentre est ensuite appel. Lquivalent de cliquer sur la
"croix" est dappuyer sur la combinaison de touches [Alt]+[F4].

Bouton AIDE
Lorsquun bouton est de type Aide, la validation du bouton afche automatiquement laide associe au champ en cours (active normalement par [F1]) sans excuter les codes de sortie et
dentre du champ en cours.

"Pour le vrier, cliquez sur le bouton "Aide".


182

Partie 3 : Fentres et champs

Rcapitulatif
Si votre fentre ne comporte pas de champs de saisie
Type de bouton utiliser

Tous les boutons peuvent tre de type NORMAL

Si votre fentre a au moins un champ de saisie


Type de bouton utiliser

Un bouton de type VALIDATION


Un bouton de type ABANDON
Un bouton de type AIDE (si les champs ont des
fentres daide associes)
Tous les autres boutons de type INTERRUPTION

Caractristiques dun bouton


Action associe un bouton
Un bouton peut tre associ une action prdnie. WinDev propose de nombreuses actions prdnies : ouvrir une fentre du projet, fermer une fentre, ouvrir laperu avant
impression dun tat, lancer un site Internet, ... Pour toutes ces actions, aucune ligne de
code nest saisir : WinDev soccupe de tout.
Les actions peuvent tre associes aux boutons dans longlet "Gnral" de la fentre de
description.

Notes

Lettre dappel dun bouton


Un bouton peut tre associ une lettre dappel. Cette lettre dappel peut correspondre
une touche de fonction, une touche de dplacement ou encore une combinaison de
touches.
La lettre dappel associe au bouton est indique dans les informations concernant lIHM
du champ. Le bouton doit tre de type "Interruption" (ou "Normal" dans une fentre ne permettant pas la saisie). Cela permet par exemple dexcuter un traitement, douvrir une fentre, ... sous laction dune touche.
Fonctionnalit automatique de lapplication (FAA) : Vous avez oubli de
mettre un raccourci clavier ? En excution, lutilisateur a la possibilit de choisir lui-mme le raccourci clavier associ un bouton. Il lui suft dutiliser loption "Choisir le raccourci clavier" du menu contextuel du bouton.

"Dans notre fentre, appuyez sur [F2] : une fentre de type "Info" safche.

Partie 3 : Fentres et champs

183

Astuce

Dans certaines applications, pour viter lutilisation de la souris, les traitements


sont dclenchs par les touches de fonctions. Pour cela, il suft de crer les boutons hors cran et de leur associer une lettre dappel.
Pour crer un bouton hors cran, il suft de placer ce bouton dans la fentre
hte de la fentre sous lditeur. La fentre hte correspond la fentre dans laquelle la fentre WinDev est afche.

Fentre daccueil

Bouton minuterie
Un bouton de votre fentre peut tre dni comme bouton minuterie : au bout dune certaine
dure, le bouton sexcutera automatiquement. Ce type de bouton est trs utile pour ne pas bloquer des enregistrements (par exemple, la che dun client, pendant la pause djeuner) : il suft
de dnir le bouton annuler comme bouton minuterie.

"Un bouton minuterie est prsent dans la fentre de test. Le dlai dexcution de ce bouton
est de 5 minutes. Lutilisateur peut le modier lui-mme. Il suft deffectuer un clic droit sur
le bouton et de slectionner loption "Validation automatique ...". Une fentre apparat
permettant lutilisateur de dterminer le dlai de la validation automatique.
Bouton On/Off
Les boutons On/Off (galement appels bouton poussoir) sont des boutons qui fonctionnent
comme des interrupteurs. Les boutons On/Off passent dun tat "normal" un tat "enfonc" et
inversement lorsque lutilisateur clique sur ce type de bouton.
Image dun bouton
Il est possible dassocier des images aux boutons. Deux types dimages peuvent tre utiliss :
limage qui illustre le bouton. Dans ce cas, le bouton est un bouton graphique :
limage qui dnit la forme et le fond du bouton :
Limage associe au bouton peut permettre de grer :
les tats du bouton (normal, enfonc, gris, focus, survol). Dans ce cas, limage contient les
diffrents dessins associs chaque tat. Ces images sont places horizontalement.
lanimation du bouton. Dans ce cas, limage du bouton contient les diffrents dessins de
lanimation pour chaque tat gr. Ces images sont places verticalement.
Limage du bouton peut tre :
une image que vous avez cre.
choisie parmi celles proposes dans le catalogue de WinDev (dans les"Cliparts" ou dans les
"Boutons graphiques" par exemple).

184

Partie 3 : Fentres et champs

Astuce

Il est aussi possible dutiliser pour le bouton une image avec un fond transparent. Dans ce cas,
vous pouvez :
soit crer une image dont la couleur de fond est "Magenta clair".
soit dnir que la couleur du point (pixel) en haut gauche de limage est la couleur transparente.
Nous vous conseillons de :
ne pas donner de libell un bouton graphique dont limage comporte un
libell, sinon le bouton comportera deux libells.
ne pas mlanger dans une mme fentre, les boutons graphiques et les
boutons texte.

Le libell dun bouton texte ou dun bouton graphique peut tre modi par programmation avec
la proprit ..Libell. Si le libell contient le caractre "&", la lettre qui suit sera souligne et deviendra la lettre dappel du bouton :
BTN_Texte..Libell = "Nouveau &libell"

De la mme faon, limage dun bouton graphique peut tre modie par programmation :
BTN_Image..Libell = "MonImage.BMP"

La proprit ..Libell reconnat automatiquement si cest le libell ou limage qui doit tre modi.
Type de champ : Image
Rsum
Les champs images permettent dafcher des images, statiques ou animes. Il est ainsi possible
dafcher les images dun catalogue de produits, la photo dune personne, ...
Ces images peuvent tre au format BMP, JPEG, GIF, PCD, PSD, TGA, TIF, PNG, ICO (icnes Windows), EMF, WMF, CUR, OS2 (BMP sous OS/2), PCX, SVG.
Tous les modes sont supports du mode "256 couleurs" au mode "couleurs vraies" (16 bits, 24
bits ou 32 bits).
Les champs images peuvent galement servir de zones de clicage.
Exemple pratique

"Ouvrez la fentre "FEN_ChampImage.WDW" sous lditeur. Cette fentre prsente diffrents


types dimages :
image statique.
gif anim et image anime.
image clicable.

"Testez cette fentre.

Partie 3 : Fentres et champs

185

Les diffrents types dimages


Images statiques

Les images statiques sont les images les plus courantes. Pour utiliser une image statique dans
une application WinDev, il suft de crer un champ image et dassocier ce champ un chier
image. Cette image peut tre slectionne dans un des rpertoires de votre disque, ou provenir du
catalogue dimages.
WinDev permet de paramtrer directement le mode dafchage de limage (onglet "Gnral" de la
fentre de description) :

Mode dafchage

186

Exemple

Description

100 %

Limage safche avec sa taille initiale. La taille du


champ peut tre modie mais cela na aucune incidence sur limage.

100 % Centr

Limage est centre dans le champ image. La taille du


champ peut tre modie. Si limage est plus petite
(en hauteur ou en largeur) que le champ, des bandes
apparaissent sur les cts.

Etir

Limage est dforme pour occuper toute la surface du


champ. La taille de limage sadapte celle du champ.

Rpt

Limage dans sa taille initiale est rpte autant de


fois que possible pour occuper toute la surface du
champ image.

Homothtique

Limage est agrandie proportionnellement pour tre afche entirement dans le champ image. Limage est
cadre en haut gauche.

Homothtique
tendu

Limage est agrandie proportionnellement pour que le


plus petit cot de limage soit afch entirement dans
le champ image.

Homothtique
centr

Limage est agrandie ou rduite (selon le cas) en


conservant les proportions hauteur/largeur pour occuper la plus grande surface possible du champ. Limage
nest pas dforme.

Partie 3 : Fentres et champs

Homothtique
centr tendu

Limage est agrandie proportionnellement pour que le


plus petit cot de limage soit afch entirement dans
le champ image. Limage est centre dans le champ
image.

Homothtique
sans agrandissement

Limage peut tre rduite si ncessaire mais ne dpassera pas sa taille originale si le champ daccueil est
trop grand.

Homothtique
centr sans
agrandissement

Limage est centre. Limage peut tre rduite si ncessaire mais ne dpassera pas sa taille originale si le
champ daccueil est trop grand.

Loption "Afchage Haute Qualit" permet en mode homothtique damliorer la qualit de limage
lorsque celle-ci est rduite par rapport sa taille initiale.

Attention !

WinDev gre des images avec un fond transparent. Dans ce cas, il faut :
soit crer une image avec une couleur de fond "Magenta Clair" (couleur RVB : 255, 0, 255).
Le magenta est automatiquement considr comme la couleur de transparence.
soit crer une image dont la couleur du pixel (point) en haut gauche est la couleur de rfrence pour la transparence. Vous tes matre de la couleur "transparente".
La couleur "transparente" est analyse dans la totalit de limage. Il peut donc y
avoir des zones transparentes en plein centre de limage. Cela peut donner des
effets dafchage, vriez les images !

Partie 3 : Fentres et champs

187

Le catalogue dimages
Ds quune image peut tre afche dans un champ, une fentre, WinDev propose dutiliser le catalogue dimages grce au bouton "Catalogue". Ce catalogue contient plusieurs milliers dimages,
de cliparts, ...
Pour slectionner un clipart, vous pouvez effectuer une recherche selon un mot-cl.
Dans la fentre de recherche :
Saisissez un mot-cl (par exemple "Animaux")
Indiquez si ncessaire le thme, les dimensions et la catgorie de recherche.
Cliquez sur le bouton de recherche (les jumelles). Les images se rapprochant le plus du motcl safchent dans la fentre.
Choisissez limage que vous prfrez en cliquant dessus (par exemple un poisson) et validez.

Indiquez les caractristiques de limage gnrer : taille, luminosit, extension, ...

Le nom de limage spci safche alors dans la fentre de description de limage et le chier de
limage (au format voulu) est copi dans le rpertoire du projet.

188

Partie 3 : Fentres et champs

GIF anim et image anime

Pour animer une image, WinDev propose 2 solutions :


utiliser une image au format GIF anim : lanimation est contenue dans le chier image.
utiliser une image contenant les diffrents dessins de lanimation.

"Sous lditeur, dans la fentre "FEN_ChampImage.WDW" :


1. Cliquez sur longlet "Animation, zoom, clic, mode 9 images".
2. Afchez la description du champ contenant le Gif anim Longlet "Gnral" contient uniquement le nom de limage afcher. Ce chier est au format GIF. Lanimation est contenue dans
le chier.

"La fentre "FEN_ChampImage.WDW" utilise galement une image anime par WinDev. Le
premier champ Image contient limage dans sa totalit : cette image est compose de 6
dessins en largeur, et de 4 dessins en hauteur. Nous allons voir en dtail le paramtrage
utilis pour crer limage anime.

"Afchez la description du champ image contenant limage de limprimante anime. Dans


longlet "Dtail" du champ, loption "Anim la cration" est coche. Cette option permet
dindiquer que le champ contient une image animer ds lafchage du champ.
Cliquez sur le bouton [...] situ ct de loption "Animation : Image animer". La fentre de
conguration de lanimation safche.

Cette fentre contient tous les paramtres de lanimation. On retrouve dans cette fentre le
nombre de dessins utiliss en largeur et en hauteur. Pour tester ces paramtres sur limage
en cours, cochez la case "Utiliser limage du champ". Vous pouvez modier les paramtres de
lanimation et tester immdiatement leur effet.

Exemple

"Fermez la description du champ Image.


Pour plus de dtails sur lutilisation de tous les paramtres proposs, consultez
lexemple "WD Animated" (exemple didactique), livr avec WinDev (accessible
depuis le volet "Assistants, Exemples et Composants").

Partie 3 : Fentres et champs

189

Astuce

Les paramtres danimation peuvent tre dcrits directement dans le champ,


mais peuvent aussi tre modis par programme laide des fonctions du WLangage : AnimationChangeParamtre, AnimationChangeType et AnimationLitParamtre. Consultez laide en ligne pour une utilisation approfondie de ces fonctions (mots-cls : "Animation, Animer une image").

Image clicable

WinDev permet de transformer vos images en images clicables en ... un clic de souris. En effet, il
suft de :
1. Afcher la description de limage.
2. Dans longlet "Dtail", slectionner les options :
"Cette image est une zone de clicage" : cette option permet de dnir que limage peut tre
clique
"Prioritaire pour les clics souris" : cette option permet de grer le clic sur limage quelle que
soit laltitude du champ (premier plan ou non).
3. Un nouveau traitement est alors associ limage : Code de clic sur limage. Dans ce code,
vous pouvez grer leffet du clic sur le champ.

"Dans la fentre "FEN_ChampImage.WDW", les zones de clicage sont :


limage contenant la tte du lion.
diffrents champs images placs sur la tte du lion. Ces champs Image nont pas dimage
associe et permettent de dnir les zones de clic.
Mode 9 images

Le mode 9 images permet une image prsente dans un champ Image de sadapter automatiquement la taille du champ.
Prenons un exemple simple : une fentre redimensionnable. Pour harmoniser la position des
champs lors du redimensionnement, WinDev propose le mcanisme de lancrage (nous le verrons
plus tard dans ce chapitre). Dans ce cas, le champ Image peut sagrandir en mme temps que la
fentre. Le mode 9 image permet doptimiser le comportement de limage.

"Lancez le test de la fentre "FEN_ChampImage". Cliquez sur longlet "Animation, ..." et


agrandissez la fentre. Le champ Image sagrandit et un nouveau palmier apparat.

190

Partie 3 : Fentres et champs

Type de champ : Slecteur


Rsum

Astuce !

Les slecteurs doptions sont galement appels "case doptions". Ils permettent de slectionner
une option et une seule, parmi celles proposes.
Selon le mode dafchage slectionn, chaque option peut tre
constitue :
dune case de slection et dun libell
dune case de slection, dun libell et dun sous-libell
dune image, dun libell (et si ncessaire dun sous-libell).
Les diffrents lments constituant loption (image, libell et sous-libell) doivent tre saisis lors
de la description du slecteur sous lditeur. Ils sont modiables par programmation.
Comment diffrencier le slecteur et linterrupteur ?
Le slecteur est galement appel "Bouton radio". un moyen mnmotechnique
simple : pensez aux anciennes radios : le bouton permettait de slectionner une
seule frquence !
Le slecteur permet de slectionner une seule option.

Exemple pratique

"Ouvrez la fentre "FEN_ChampSelecteur.WDW" sous lditeur.


"Testez la fentre : cette fentre contient deux types de slecteur :
un slecteur standard
un slecteur au look Vista avec sous-libells.

"Cliquez sur les diffrents boutons, modiez les slecteurs. Constatez ce quil se passe.
"Retournez sous lditeur.
Caractristiques des slecteurs
WinDev propose quatre modes dafchage des slecteurs :
slecteur standard.
slecteur standard avec sous-libells.
slecteur au look Vista (avec possibilit dutiliser une image pour chaque option).
slecteur au look Vista avec sous-libells (avec possibilit dutiliser une image pour chaque option).

Partie 3 : Fentres et champs

191

Notes

Pour tous ces types de slecteur, il est possible dassocier chaque option :
un entier (qui peut prendre une valeur de 1 N, N tant le nombre total doptions du slecteur).
La premire option a le numro 1, la deuxime le numro 2, ... Les options sont numrotes de
haut en bas et de gauche droite.
Dans notre fentre :
"SEL_Civilit = 1" signie que loption "Monsieur" est slectionne,
"SEL_Civilit = 2" signie que loption "Madame" est slectionne
et "SEL_Civilit = 3" signie que loption "Mademoiselle" est slectionne.
une valeur renvoye spcique. Cette valeur renvoye est spcie dans lcran "Contenu".
Dans notre exemple :
SEL_PlatDuJour = "Moussaka" signie que loption "Moussaka" est slectionne.
SEL_PlatDuJour = "Parmentier" signie que loption "Parmentier" est slectionne.
SEL_PlatDuJour = "Cont" signie que loption "Cont" est slectionne.
Utiliser la numrotation ou les valeurs renvoyes ?
La programmation des slecteurs renvoyant un entier ou une valeur est diffrente. Lavantage de lutilisation des valeurs renvoyes est visible lors de linsertion ou du dplacement dune option dans le slecteur :
Si le slecteur renvoie un entier, linsertion ou le dplacement dune option
dans le slecteur oblige revoir tout le code de gestion de la valeur du slecteur (pour grer le dcalage des numros).
Si le slecteur renvoie une valeur spcique, linsertion dune option dans le
slecteur entrane uniquement la prise en compte de la nouvelle option. Linsertion dune option nentrane aucune modication.

"Etudiez le code des diffrentes actions proposes par la fentre : le code utilis pour la
gestion des deux slecteurs prsente quelques diffrences.

192

Partie 3 : Fentres et champs

Type de champ : Interrupteur

Rsum
Les interrupteurs sont galement appels "cases cocher". Ils permettent de choisir si la valeur
de chaque option propose est "vraie" ("Oui") ou "fausse" ("Non").
Selon le mode dafchage slectionn, chaque option peut tre constitue :
dune case cocher et dun libell
dune case cocher, dun libell et dun sous-libell
dune image, dun libell (et si ncessaire dun sous-libell).
Les diffrents lments constituant loption (image, libell et sous-libell)
doivent tre saisis lors de la description de linterrupteur sous lditeur. Ils sont
modiables par programmation.
Exemple pratique

"Ouvrez la fentre "FEN_ChampInterrupteur.WDW" sous lditeur.


"Testez la fentre et cliquez sur les diffrents boutons, modiez les diffrents interrupteurs.
Constatez ce quil se passe.

"Retournez sous lditeur. Nous allons tudier le code associ aux diffrents boutons.
Caractristiques des interrupteurs
WinDev propose quatre modes dafchage des interrupteurs :
interrupteur standard
interrupteur standard avec sous-libells
interrupteur au look Vista (avec possibilit dutiliser une image pour chaque option)
interrupteur au look Vista avec sous-libells (avec possibilit dutiliser une image pour chaque
option)
Chaque option dun interrupteur est "repre" par un indice (qui peut prendre une valeur de 1 N,
N tant le nombre total doptions de linterrupteur).
La premire option a le numro 1, la deuxime le numro 2, ... Les options sont numrotes de
haut en bas et de gauche droite :
"INT_Loisir[2] = Vrai" signie : "Ecrire" est coche.
"INT_Loisir[3] = Faux" signie : "Danser" nest pas coche.
Lorsquil y a plusieurs options, linterrupteur se comporte comme un tableau doptions.
Pour accder une option, il suft de passer lindice de loption en utilisant la syntaxe avec les
crochets [ ].

Partie 3 : Fentres et champs

193

Pour initialiser une case cocher (bouton "Initialiser linterrupteur" dans notre exemple), il faut
initialiser le choix correspondant avec la valeur "Vrai" ou "Faux" selon le cas.
INT_Loisir[2] = Vrai

// pour cocher loption 2 "Ecrire"

Pour connatre la valeur dune option (bouton "Rcuprer les options" dans notre exemple), il suft
de rcuprer la valeur du champ ("Vrai" ou "Faux").

Notes

SI INT_Loisir[2] = Vrai ALORS


// option coche
SINON
// option non coche
FIN

Par dfaut, aucune option nest coche dans un interrupteur.

Astuce

Les programmeurs habitus manipuler des expressions boolennes peuvent


omettre le test avec la valeur "Vrai" ou "Faux" :
SI INT_Loisir[2] ALORS
//option coche
SINON
//option non coche
FIN

Il est possible de modier :


le libell dun interrupteur ou dune option dun interrupteur avec la proprit ..Libell. Cependant, il nest pas possible dajouter des options par programmation. Dans notre exemple, cette
opration est ralise avec les boutons "Libell" et "Options". Par exemple :
// Change le libell
INT_Loisir..Libell = "Vous aimez plutt"
// Change la seconde option
INT_Loisir[2]..Libell = "Ecrire avec un stylo"

le sous-libell de loption (sil existe) avec la proprit ..SousLibell.


limage de loption (si elle existe) avec la proprit ..Image. Par exemple :
INT_Dossier[2]..Libell = "Film"
INT_Dossier[2]..Image = "Film.png"
INT_Dossier[2]..SousLibell = "Films numriques (vacances)"

194

Partie 3 : Fentres et champs

Type de champ : Liste

Rsum

Attention !

Les listes sont toujours droules. Cest pourquoi on les nomme galement "listes droules".
Elles permettent de visualiser plusieurs lments et den slectionner
un ou plusieurs. Une liste peut contenir du texte et/ou des graphismes.
Lors de la cration dun champ "Liste", un assistant dmarre et propose
de crer :
une liste dont le contenu est li un chier de donnes ou une
requte (liste chier).
une liste dont le contenu est li une variable (liste sur source).
une liste dont vous dnissez le contenu dans lditeur ou par programmation (liste mmoire).
Rgles appliquer pour connatre le type de liste crer
Utilisez une liste lie un chier de donnes ou une requte lorsque vous
souhaitez proposer lutilisateur une liste de valeurs qui sont contenues dans
un chier de donnes. Si la liste est lie un chier de donnes, cest tout le
contenu du chier de donnes qui est propos directement. Si la liste est lie
une requte, la liste contiendra une slection denregistrements du chier de
donnes.
Utilisez une liste dont le contenu est dni dans lditeur si les valeurs sont
"STATIQUES". Elles ne changent pas durant le droulement du programme.
Utilisez une liste remplie par programmation lorsque le contenu de la liste est
issu de calculs ou si la slection des lments intgrer la liste ne peut tre
ralise par une requte.
Utilisez une liste dont le contenu est li une variable lorsque le contenu de la
liste est par exemple issu de calculs raliss laide dune variable.

Partie 3 : Fentres et champs

195

Exemple pratique

"Ouvrez la fentre "FEN_ChampListe.WDW" sous lditeur.


"Lancez le test de cette fentre. Cette fentre contient les 3 types de liste :

Notes

Liste mmoire mono slection, remplie par programmation. Cette liste est vide et peut tre
remplie avec le bouton "Remplir".
Liste mono slection
Une liste mono slection est quivalente une combo ou un slecteur.
Un seul choix est possible. Selon linterface de votre application, choisissez le
champ qui permet le plus facilement lutilisateur de slectionner son choix.

Liste chier contenant la liste des collaborateurs. Cette liste est automatiquement remplie
avec le contenu du chier de donnes associ.
Liste sur source afchant la liste des mois. Cette liste est automatiquement remplie avec le
contenu de la variable associe.
Les deux listes du bas sont des listes mmoire multi-slections.

"Cliquez sur les diffrents boutons et observez ce quil se passe.


En excution, dans une liste multi-slections (selon le standard Windows) :
pour slectionner plusieurs lments un par un, appuyez sur la touche [CTRL] tout en slectionnant les lments avec la souris.
pour slectionner plusieurs lments conscutifs en mme temps, cliquez sur le premier
lment, appuyez sur la touche [SHIFT], maintenez cette touche enfonce et cliquez sur le
dernier lment de la slection.

"Revenez sous lditeur.


Mode de remplissage dune liste
Nous avons vu que lassistant de cration dune liste proposait de crer plusieurs types de liste :
liste relie un chier de donnes ou une requte (appele liste chier)
liste remplie par programmation (appele liste mmoire)
liste remplie partir dune variable (appele liste sur source)
chaque type de liste correspond un mode de remplissage spcique.
Remplissage dune liste mmoire

Dans le cas dune liste mmoire, vous disposez de deux mthodes pour remplir la liste :
sous lditeur,
par programmation.
Sous lditeur, rien de plus simple : le contenu dune liste peut tre dni directement dans la
fentre de description du champ (onglet "Gnral", champ "Contenu initial"). Vous pouvez bien
entendu saisir plusieurs valeurs. Pour aller la ligne suivante, appuyez sur la touche [Entre].
Pour remplir une liste par programmation, il faut utiliser la fonction ListeAjoute.

196

Partie 3 : Fentres et champs

"Dans lexemple pratique, linitialisation de la liste mmoire est ralise dans le bouton
"Remplir". Le code utilis est le suivant :
// Ajoute Lundi dans la liste LISTE_Jour
ListeAjoute(LISTE_Jour, "Lundi")
Remplissage dune liste partir dun fichier de donnes ou dune requte

Notes

Dans le cas dune liste chier, le remplissage est effectu partir des lments fournis lors de
la cration de la liste. Ces informations sont galement disponibles dans longlet "Contenu". Ces
informations sont les suivantes :
le chier de lanalyse ou la requte qui servira de source de donnes pour le remplissage.
Si la requte nexiste pas lors de la cration du champ, il est possible de
crer la requte en mme temps que le champ. La requte sera alors intgre la fentre qui contient le champ.
Attention : si vous utilisez une requte intgre, cette requte sera utilise
uniquement pour ce champ. Elle ne pourra pas tre rutilise dans votre
projet.

Ce chier de donnes ou cette requte sera lu(e) automatiquement sans avoir crire une
seule ligne de code.
la rubrique afcher dans la liste.
la cl de parcours utilise : cette rubrique sert de tri pour le remplissage de la liste et donc
indique lordre dans lequel seront visualises les valeurs de la liste.
la valeur rcupre : lors de la slection dun lment de la liste, la valeur rcupre pourra
tre :
soit lindice de la ligne slectionne,
soit une valeur du chier de donnes.
Gnralement, on choisit comme valeur rcupre une rubrique du chier de donnes. Il
sagit le plus souvent de la cl unique, ce qui permet de faire par exemple des recherches
dans les chiers de donnes.

"Dans lexemple pratique, consultez lcran "Contenu" de la liste "Sur Fichier" pour vrier les

Notes

caractristiques de la liste chier utilise.


Les diffrents types de liste chier
Deux types de liste chier sont disponibles :
Liste chier "Charg en mmoire" : Le contenu de la liste est charg en
mmoire, puis afch dans la liste. Laccs aux diffrents lments de
la liste est plus rapide. Ce mode est rserv pour des chiers de donnes de moins de 100 000 enregistrements.
Liste chier "Mode Accs direct (sans limite)" : La liste afche directement le contenu du chier de donnes ou de la requte. Lenregistrement en cours correspond llment slectionn. Chaque dplacement dans la liste entrane un accs au chier li. Ce type de liste est
rserv aux chiers de plus de 100 000 enregistrements.

Partie 3 : Fentres et champs

197

Remplissage dune liste sur source

Il est par exemple possible de remplir une liste avec des informations contenues dans un tableau
WLangage. Le tableau est une variable globale de la fentre :
MonTableauMois est un tableau de 12 chanes
MonTableauMois = ["Janvier", "Fvrier", "Mars", "Avril", ...
"Mai", "Juin", "Juillet", "Aot", "Septembre", ...
"Octobre", "Novembre", "Dcembre"]

Dans le cas dune liste sur source, le remplissage est effectu partir des lments fournis lors
de la cration de la liste. Ces informations sont galement disponibles dans longlet "Contenu".
Ces informations sont les suivantes :
le nom de la variable source,
la variable afcher dans la liste,
la variable mmorise.

"Dans lexemple pratique, consultez lcran "Contenu" de la liste "Sur source" pour vrier les
caractristiques de la liste sur source utilise.
Caractristiques de la liste
Lorsque la liste est cre, ses caractristiques sont modiables directement dans la fentre
de description du champ (option "Description" du menu contextuel). Les diffrents onglets permettent de prciser toutes les options des listes.
Par exemple, longlet "Dtail" permet de :
dnir si la liste est multislection.
dnir si la liste est trie.
si lascenseur doit afcher une bulle, si le dplacement doit tre ralis au pixel, ...
Programmation dune liste

Notes

La programmation des champs Liste est trs simple avec WinDev : il suft dutiliser les fonctions
WLangage commenant par les lettres LISTE. Ces fonctions peuvent tre utilises sur les listes
mmoire, chier ou sur source.
Vous ne savez pas si la fonction peut tre utilise sur une liste mmoire, chier
ou sur source ? Consultez laide en ligne ! Utilisez la touche F1 sur le nom de la
fonction.

Modification dune liste (mmoire uniquement)

Pour modier un lment dans une liste, deux mthodes sont disponibles :
la fonction ListeModie
laffectation directe en utilisant lindice de llment modier.
ListeModifie(LISTE_Jour, "LUNDI") // Modifie llment en cours
ListeModifie(LISTE_Jour, "LUNDI",1) // Modifie llment 1
LISTE_Jour[1] = "LUNDI"
// Modifie llment 1

Remarque : Pour accder un lment dune liste, il faut prciser son indice. Le premier lment
dune liste a lindice "1".
198

Partie 3 : Fentres et champs

Rcupration de llment slectionn

Dans une liste mono-slection, pour rcuprer llment slectionn, il suft de connatre lindice
de llment slectionn. La fonction ListeSelect retourne lindice de llment slectionn. Si
aucun lment nest slectionn, la fonction ListeSelect retourne la valeur "1".
Indice est un entier
Jour est une chane
Indice = ListeSelect(LISTE_Jour)
Jour = LISTE_Jour[Indice]
//Rcupre llment slectionn

Remarque : Dans le cas dune liste chier, si la valeur rcupre correspond une valeur du
chier de donnes, il sufra dutiliser directement le nom de la liste pour connatre la valeur slectionne.
Dans une liste multi-slections, pour rcuprer toutes les options slectionnes, il faut utiliser la
fonction ListeSelect. Tant que la fonction ListeSelect ne renvoie pas la valeur "-1", cette fonction
retourne lindice de loption slectionne.
// Lignes slectionnes dans une liste multi-slections
i est un entier = 1
LigneSelectionnee est un entier = ListeSelect(Liste1,1)
TANTQUE LigneSelectionnee <> -1
Trace("La ligne n"+ LigneSelectionnee +" est slectionne")
i++
LigneSelectionnee = ListeSelect(Liste1,i)
FIN

Pour connatre le nombre dlments slectionns, il faut utiliser la fonction ListeSelectOccurrence.


Pour connatre le nombre dlments dans la liste, il faut utiliser la proprit ..Occurrence ou la
fonction ListeOccurrence :
SI LISTE_Jour..Occurrence = 0 ALORS

//liste vide

Suppression (dans les listes mmoire uniquement)

Pour supprimer une valeur, il faut utiliser la fonction ListeSupprime.


Pour supprimer toutes les valeurs de la liste, il faut utiliser la fonction ListeSupprimeTout.
//Supprime llment slectionn
ListeSupprime(LISTE_Jour)
Recherche

Pour chercher un lment dans une liste, il faut utiliser la fonction ListeCherche.
SI ListeCherche(LISTE_Jour, Valeur) = -1 ALORS
//nexiste pas
SINON
//existe dj
FIN

Partie 3 : Fentres et champs

199

Type de champ : Liste Image


Rsum
Une liste image est une liste permettant dafcher la fois du texte et des images. Un lment
dune liste image est compos de :
un libell
une miniature (ou image)

Une liste image peut tre afche selon deux modes :


mode liste image : chaque lment de la liste est compos dun libell et dune image.
mode classique : seul le libell est afch dans la liste image.
Lors de la cration dun champ "Liste image", un assistant dmarre et propose de crer :
une liste image dont le contenu est li un chier de donnes ou une requte (liste image
chier).
une liste image dont le contenu est li une variable (liste image sur source).
une liste image dont vous dnissez le contenu dans lditeur ou par programmation (liste
image mmoire).
On appliquera les mmes rgles que pour les listes pour choisir la mthode de remplissage.
Ce paragraphe prsente uniquement les spcicits des listes image. Pour tout ce qui concerne le
fonctionnement des listes image, consultez le paragraphe concernant les listes.
Exemple pratique

"Ouvrez la fentre "FEN_ChampListeImage.WDW" sous lditeur. Cette fentre prsente une


liste image mmoire et une liste image chier.

"Lancez le test de cette fentre.


"Cliquez sur les diffrents boutons et observez ce quil se passe.
"Revenez sous lditeur et tudiez les traitements des boutons.

200

Partie 3 : Fentres et champs

Mode de remplissage de la liste image


Comme une liste, une liste image peut tre une liste chier (lie un chier de donnes ou une
requte), une liste mmoire ou une liste sur source.
Remplissage dune liste image mmoire

Pour remplir une liste image mmoire, elle doit tre remplie par programmation grce la fonction ListeAjoute. Par exemple :
ListeAjoute(LSI_ListeImg1,"image abandon.ico","abandon.ico")
// Ajoute limage "abandon.ico" et le libell "Image abandon.ico"
// dans la liste image LSI_ListeImage1
Remplir une liste image partir dun fichier de donnes ou dune requte

Notes

Lors de la cration dun champ liste image remplie partir dun chier de donnes ou dune
requte, vous devez indiquer le chier de lanalyse ou la requte qui servira de source de donnes
pour le remplissage. Ce chier de donnes (ou cette requte) doit contenir :
une rubrique qui correspondra au libell de llment afch dans la liste image.
une rubrique qui correspondra limage de llment afch dans la liste image.
Si la requte nexiste pas lors de la cration du champ, il est possible de crer
la requte en mme temps que le champ. La requte sera alors intgre la
fentre qui contient le champ.
Attention : si vous utilisez une requte intgre, cette requte sera utilise uniquement pour ce champ. Elle ne pourra pas tre rutilise dans votre projet.

Les autres lments indiquer dans lassistant de cration de la liste image sont identiques
ceux dune liste simple.
Remplissage dune liste image sur source

Il est par exemple possible de remplir une liste image avec des informations contenues dans un
tableau, une classe, une structure WLangage. Cet lment est une variable globale de la fentre
ou du projet.
Dans le cas dune liste image sur source, le remplissage est effectu partir des lments fournis
lors de la cration de la liste image. Ces informations sont galement disponibles dans longlet
"Contenu". Ces informations sont les suivantes :
le nom de la variable source
la variable qui correspondra au libell de llment afch dans la liste image.
une rubrique qui correspondra limage de llment afch dans la liste image

Partie 3 : Fentres et champs

201

Caractristiques de la liste image


Lorsque la liste image est cre, ses caractristiques sont modiables directement dans la fentre de description du champ (option "Description" du menu contextuel).
Vous retrouverez toutes les caractristiques indiques dans lassistant, et dautres options trs
intressantes.
Lcran "Gnral" permet de paramtrer la taille dune cellule de la liste image.
Lcran "Dtail" permet par exemple de :
dnir si la liste image est multislection.
dnir si la liste image est trie.
donner lorientation du champ.
Programmation

Notes

La programmation des champs Liste image est trs simple avec WinDev : comme pour les listes,
il suft dutiliser les fonctions WLangage commenant par les lettres LISTE. Ces fonctions peuvent
tre utilises sur les listes image mmoire et/ou chier.
Vous ne savez pas si la fonction peut tre utilise sur une liste image ? Consultez
laide en ligne ! Utilisez la touche F1 sur le nom de la fonction.

De plus, certaines proprits spciques aux listes image peuvent galement tre utilises pour
manipuler les images ou le mode dafchage de la liste.
Modifier une liste image mmoire par programmation

Pour modier un lment dans une liste image, vous pouvez utiliser :
la fonction ListeModie.
//Modifie llment en cours
ListeModifie(LSI_ListeImg1,"image abandon.ico","abandon.ico")
//Modifie llment 1
ListeModifie(LSI_ListeImg1,"image abandon.ico", "abandon.ico", 1)

les proprits ..Valeur et ..Miniature sur llment modier.


// Modifie llment 2
LSI_ListeImg1[2]..Valeur = "Image Aide.ico"
LSI_ListeImg1[2]..Miniature = "Aide.ico"
Rcuprer la valeur dune liste image

Dans une liste image, il est possible de rcuprer :


le libell de llment grce la proprit ..Valeur.
limage associe llment, grce la proprit ..Miniature.

202

Partie 3 : Fentres et champs

Type de champ : Combo


Rsum
Une combo est galement appele "combo box" ou encore "liste droulante". Comme pour une
liste, lors de la cration dun champ "Combo", vous pouvez crer :
une combo "Fichier" dont le contenu est li un chier de donnes ou une requte.
une combo "Mmoire" dont vous dnissez le contenu dans
lditeur ou par programmation.
une combo sur source, lie une variable WLangage.
On appliquera les mmes rgles que pour les listes pour choisir la
mthode de remplissage.
La partie droule de la combo peut correspondre :
une liste
une liste image
une table
une fentre popup
Le choix du type droul est effectu dans longlet "Contenu" de la description de la combo.
Caractristiques dune combo

Attention !

La combo se droule lorsque le champ est slectionn. Il existe deux types de combos :
les combos dans lesquelles un lment peut tre slectionn dans la liste. Ces combos
sont appeles "combo sans saisie".
Lutilisateur droule la liste pour slectionner un lment.
les combos dans lesquelles un lment peut tre slectionn dans la liste ou directement
saisi dans le champ de la combo. Ces combos sont appeles "combo avec saisie".
Lutilisateur peut au choix saisir une valeur ou bien drouler la liste pour slectionner un
lment.
Le type de la combo se dnit dans la fentre de description de la combo (onglet "Gnral").
Au contraire des listes, les combos ne sont pas multi-slections : un seul lment peut tre slectionn dans la combo.

Les combos peuvent contenir du texte et du graphisme.


Ce paragraphe prsente uniquement les spcicits des combos. Pour tout ce qui concerne le
fonctionnement des combos, consultez le paragraphe concernant les listes.

Partie 3 : Fentres et champs

203

Exemple pratique

"Ouvrez la fentre "FEN_ChampCombo.WDW" sous lditeur. Cette fentre prsente les


diffrentes possibilits des combos.

"Lancez le test de cette fentre. Cette fentre contient :


Une combo sans saisie et trie,
Une combo avec saisie et trie,
Une combo chier.

"Cliquez sur les diffrents boutons et observez ce quil se passe.


"Revenez sous lditeur et tudiez les traitements des boutons.
Caractristiques de la combo
Lorsque la combo est cre, ses caractristiques sont modiables directement dans la fentre de
description du champ (option "Description" du menu contextuel).
Vous retrouverez toutes les caractristiques indiques dans lassistant, et dautres options trs
intressantes.
Lcran "Gnral" permet de paramtrer si la combo est avec saisie ou non.
Lcran "Dtail" permet par exemple de :
dnir les caractristiques de la combo avec saisie
dnir si la combo est trie.
proposer lhistorique des slections, dans les premires valeurs de la liste droulante.
permettre lutilisateur de modier la largeur et la hauteur de la combo une fois droule !
Programmation des combos

Attention !

La programmation des combos est identique celle des listes. Les fonctions WLangage utiliser commencent par les lettres LISTE. Des fonctions spciques aux combos (commenant par
COMBO) sont galement utilisables.
Le seul point particulier concerne le type de combo : "avec saisie" ou "sans saisie".
Contrairement au WEB, une combo na jamais dlment slectionn par dfaut,
donc elle est vide. Il est conseill de ne jamais laisser vide une combo, sauf si la
combo est en saisie.

Cas dune combo avec saisie

Pour affecter ou rcuprer le champ dune combo avec saisie, la syntaxe est la mme que pour
affecter ou rcuprer un champ de saisie :
// Affecte la slection de la combo
COMBO_Prnom = "Julie"
// Rcupre la slection de la combo
Ch est une Chane
Ch = COMBO_Prnom

204

Partie 3 : Fentres et champs

Cas dune combo sans saisie

Pour rcuprer llment slectionn dans la combo, la mthode est similaire une liste. Il faut
utiliser la fonction ListeSelect pour rcuprer lindice de llment slectionn. Ensuite, il faut
utiliser cet indice pour rcuprer la valeur.
// Rcupre llment slectionn
Indice est un entier
Ch est une chane
Indice = ListeSelect(COMBO_Combo1)
Ch = COMBO_Combo1[Indice]
// Rcupre le 3me lment de la liste
Ch est une Chane
Ch = COMBO_Combo1[3]

Pour slectionner un lment, il faut utiliser la fonction ListeSelectPlus.


Type de champ : Table
Rsum
Il ne faut pas confondre "Table" et "champ Table".
On parle de Table pour une base de donnes de type SQL.
On parle de champ Table pour visualiser en tableau des donnes (ou "browse" ou encore "feuille
de donnes"). Dans ce cas, ces donnes peuvent tre saisies ou provenir dun chier de donnes
(ou dune table). Ouf !
Le champ table WinDev permet de visualiser ou de modier des donnes :
en mmoire : on parle alors de table mmoire ou table remplie par programmation.
provenant de chiers de donnes ou de requtes : on parle alors de table chier.
provenant de variables WLangage : on parle alors de table sur source.
Lavantage des tables est de pouvoir visualiser plusieurs donnes dans une seule fentre.
La gestion des tables est diffrente selon sil sagit dune table mmoire ou dune table chier
ou dune table sur source. Le choix du type de table est ralis ds la cration de la table, dans
lassistant.
Nous allons dtailler les diffrents types de champs table.
Exemple pratique
Le projet "Fentres et champs" propose deux fentres prsentant les spcicits des tables.

"Ouvrez la fentre "FEN_ChampTable.WDW" sous lditeur. Cette fentre prsente diffrents


traitements sur les tables mmoire et les tables chier. Testez cette fentre.

"Ouvrez la fentre "FEN_ChampTableAvance.WDW" sous lditeur. Cette fentre prsente lutilisation des tables chier avec ruptures ainsi que les tables sur source.

Partie 3 : Fentres et champs

205

Mode de remplissage de la table


Comme une liste, une table peut tre une table chier (lie un chier de donnes ou une
requte), une table mmoire ou une table sur source.
Remplissage dune table mmoire

Une table mmoire peut tre remplie par programmation grce la fonction TableAjouteLigne.
Cette fonction admet en paramtre le nom de la table et le contenu de la ligne. Le contenu de
la ligne est donn colonne par colonne : chaque valeur de colonne est spare par "une virgule".

"Dans la fentre "FEN_ChampTable", le remplissage de la table est effectu par le bouton


"Remplir" :
// Ajout dune ligne dans sa totalit
TableAjouteLigne(TABLE_Menu,"Lundi", "uf meurette",...
"Blanquette", "Glace vanille")
Table relie un fichier de donnes ou une requte

Notes

Lors de la cration dun champ table remplie partir dun chier de donnes ou dune requte,
vous devez indiquer plusieurs informations :
le chier de donnes de lanalyse ou la requte qui servira de source de donnes pour le
remplissage.
Si la requte nexiste pas lors de la cration du champ, il est possible de
crer la requte en mme temps que le champ. La requte sera alors
intgre la fentre qui contient le champ.
Attention : si vous utilisez une requte intgre, cette requte sera utilise uniquement pour ce champ. Elle ne pourra pas tre r-utilise dans
votre projet.

Ce chier de donnes ou cette requte sera lu automatiquement sans avoir crire


aucune ligne de code.
les rubriques afches dans une ligne de la table.
la cl de parcours utilise : cette rubrique sert de tri pour le remplissage de la table et donc
indique lordre dans lequel seront visualises les valeurs de la table. Par exemple, vous
pourrez visualiser dans une table les produits avec leur libell.

206

Partie 3 : Fentres et champs

Notes

Les diffrents types de tables chier


Deux types de tables chier sont disponibles :
Table chier "Charg en mmoire" : Le contenu du chier est charg en
mmoire, puis afch dans la table. Laccs aux diffrents lments du
chier est plus rapide. Les donnes tant en mmoire, toutes les colonnes de la table sont triables. Ce mode est rserv pour des chiers
de donnes de moins de 100 000 enregistrements.
Table chier "Mode Accs direct (sans limite)" : La table afche directement le contenu du chier de donnes ou de la requte. Lenregistrement en cours correspond llment slectionn. Chaque dplacement dans la table entrane un accs au chier de donnes li. Ce type
de table est rserv aux chiers de plus de 100 000 enregistrements.

Ces informations sont galement disponibles dans longlet "Contenu" de la fentre de description
de la table chier.

"Dans la fentre "FEN_ChampTable", afchez longlet "Contenu" de la fentre de description


de la table chier.
Le chier parcouru est le chier "Collaborateur".
La cl de parcours utilise est lidentiant du chier (rubrique IDCollaborateur)

Notes

Cas particulier : Table relie une requte paramtre


Si une table est lie une requte paramtre, lassistant de cration de table propose par dfaut de "Gnrer le code dinitialisation des paramtres de la requte". Cette option gnre automatiquement le code dinitialisation de la table, avec des paramtres par dfaut. Si vous avez
spci des donnes de test, ces donnes sont automatiquement reprises (nous lavons vu dans
la partie 2).
Rafrachir une table base sur une requte
Pour rafrachir lafchage dune table base sur une requte (paramtre ou
non), utilisez la fonction TableAfche avec la constante taReExecuteRequte.

Remplissage dune table sur source

Lors de la cration dun champ table rempli partir dune variable, vous devez indiquer plusieurs
informations :
la variable tableau qui servira de source de donnes pour le remplissage.
Cette variable sera lue automatiquement sans avoir crire aucune ligne de code.
les variables utilises pour chaque colonne de la table.

Partie 3 : Fentres et champs

207

Caractristiques de la table

Notes

Lorsque la table est cre, ses caractristiques sont modiables directement dans la fentre de
description du champ (option "Description" du menu contextuel).
Vous retrouverez toutes les caractristiques indiques dans lassistant, et dautres options trs
intressantes.
La fentre de description dune table est compose de deux zones :
la zone suprieure prsentant le nom de la table, des colonnes et leur type
la zone infrieure compose des diffrents onglets de description.
Si le nom de la table est slectionn, la partie infrieure prsente les caractristiques de la table.
Si une colonne est slectionne, la partie infrieure prsente les caractristiques des colonnes.

Notes

Quelques informations intressantes :


Il est possible deffectuer des totaux automatiques dans les tables (onglet "Gnral" de la description de la table et onglet "Dtail" des colonnes). Nous verrons cette fonctionnalit en dtail
dans la partie "Totaux dans les tables", page 237.
Les tables peuvent tre mono ou multi-slection (onglet "IHM" de la description de la table). La
slection peut tre effectue par lignes, par colonnes ou par cellules.
Longlet "Style" permet de dnir les couleurs des lignes paires et impaires, la couleur de la
ligne slectionne (ou limage de fond utilise), ...
Que la table soit une table chier, mmoire ou sur source, les colonnes peuvent tre :
dplaables par lutilisateur (grce la souris)
avec recherche : une loupe sera afche, permettant de rechercher dans la colonne une
valeur.
triables. Des ches apparatront dans le titre des colonnes, signalant lutilisateur que la
colonne peut tre trie, ainsi que le sens de tri.
La loupe ou la che de tri sont visibles sur toutes les colonnes dune table mmoire, ou dune table sur source, ou dune table chier charge en mmoire. La
loupe et la che ne sont visibles que sur les colonnes lies une cl (index)
pour les tables chier de type "Accs direct (sans limite)".

Programmation dune table mmoire


Dans une table mmoire, chaque ligne de la table est identie par un indice.
Pour manipuler une ligne comme pour manipuler une colonne, il faut prciser lindice de la ligne
concerne. Si lindice nest pas prcis, cest la ligne slectionne qui est concerne.
Une table mmoire peut tre manipule ligne par ligne ou colonne par colonne.
Une table mmoire peut tre en saisie ou en afchage.
Une table mmoire peut tre en mono-slection ou en multi-slections.

208

Partie 3 : Fentres et champs

Fonctions permettant de manipuler une table mmoire

Notes

La programmation des champs Table est trs simple avec WinDev : il suft dutiliser les fonctions
WLangage commenant par les lettres TABLE. Ces fonctions peuvent tre utilises sur les tables
mmoire, sur source et/ou chier.
Vous ne savez pas si la fonction peut tre utilise sur une table mmoire, sur
source ou chier ? Consultez laide en ligne ! Utilisez la touche F1 sur le nom de
la fonction.

Voici quelques-unes des fonctions les plus utiles pour manipuler une table mmoire :
TableModieLigne modie une ligne de la table (soit la ligne en cours, soit la ligne dont le
numro dindice est prcis).
TableSelect retourne lindice de la ligne en cours (slectionne) ou lindice dune des lignes
slectionnes dans le cas dune table multi-slections.
TableSelectPlus permet de slectionner par programmation une ligne de table en fonction
de son indice et/ou de slectionner plusieurs lignes.
TableSupprime permet de supprimer une ligne de table.
TableSupprimeTout vide toute la table mmoire.

"La fentre "FEN_ChampTable" permet deffectuer plusieurs manipulations sur une table
mmoire. Consultez les traitements associs aux boutons "Slectionner" et "Modier".
tats dune table mmoire

Une table peut tre :


en afchage : aucune colonne nest en saisie.
en saisie : au moins une colonne est en saisie.
Ces options sont dnissables au niveau de chaque colonne (onglet "Dtail" de chaque
colonne dans la fentre de description de la table).
Ltat dune table ou de chaque colonne de la table est dni sous lditeur, il peut tre modi
par programmation avec la proprit ..Etat.
Astuces et FAA sur les tables

"Testez la fentre "FEN_ChampTable.wdw". Si vous effectuez un clic droit sur une des tables,
le menu contextuel par dfaut safche :

Partie 3 : Fentres et champs

209

Les options "Graphique" et "Calculs automatiques" sont disponibles uniquement si le clic droit a
t effectu sur une colonne de type numrique.
Voici quelques astuces pour optimiser le look de vos tables :
Pour utiliser un titre de colonne multi-lignes, il suft de cocher loption "Titre de colonne
multi-lignes" dans longlet "Dtail" de la fentre de description du champ Table.
Pour utiliser une couleur de fond dgrade, afchez longlet "Style " de la fentre de description du champ. Slectionnez llment "Cadre extrieur", puis slectionnez le cadre de
type "Dgrad".
Utilisation avance des tables : table avec ruptures
Pour amliorer le mode de visualisation des donnes dans une table, WinDev propose dutiliser
des tables avec ruptures. Il est ainsi possible dajouter un tri supplmentaire sur les donnes
afches.

"Ouvrez la fentre "FEN_ChampTableAvance.WDW" sous lditeur. Cette fentre prsente une


table chier avec rupture.
Lancez le test de cette fentre.
Diffrents boutons permettent de manipuler les ruptures.
Arrtez le test et revenez sous lditeur.

"Sous lditeur, ouvrez la fentre de description de la table : dans longlet "Contenu", les
caractristiques du chier de donnes parcouru ainsi que de la rupture sont dnies.
Pour plus de dtails sur le fonctionnement dune table chier, mmoire ou sur donnes, consultez
laide en ligne (mot-cl : "Champ table").
Type de champ : Zone rpte
Rsum
Les zones rptes permettent de rpter "N" fois un ensemble de champs. Lors de cette rptition, les champs de la zone rpte peuvent afcher des informations diffrentes. Il est ainsi possible dafcher, chaque rptition, des enregistrements dune base de donnes.

210

Partie 3 : Fentres et champs

Les zones rptes peuvent tre de plusieurs types :


Zone rpte mmoire : la zone rpte est remplie par programmation.
Zone rpte chier : la zone rpte est remplie partir dun chier de donnes ou dune
requte, automatiquement, sans une seule ligne de code.
Zone rpte sur source : la zone rpte est remplie partir dune variable WLangage
sans aucune ligne de code.
Pour chaque champ de la zone rpte, plusieurs caractristiques peuvent tre modies lors de
la rptition : valeur, libell, couleur du texte, tat, ...
La zone rpte peut tre dplace comme un champ. Lors de son dplacement, tous les champs
associs la zone rpte se dplacent en mme temps.
Lors de la cration dune zone rpte, il est possible de dnir le nombre de colonnes qui seront
afches. Cette option permet dobtenir une rptition horizontale dans la limite du nombre de
colonnes indiqu. Lorsque le nombre de colonnes est atteint, une nouvelle rptition verticale est
ajoute.
Exemple pratique

"Ouvrez la fentre "FEN_ChampZoneRpte.wdw". Cette fentre utilise une zone rpte


listant des collaborateurs. Les donnes de cette zone rpte proviennent dun chier de
donnes HyperFileSQL.
La gestion des zones rptes est diffrente sil sagit :
dune zone rpte mmoire,
dune zone rpte relie un chier de donnes ou une requte.
dune zone rpte relie des donnes WLangage.
Nous allons dtailler les types de zones rptes existants.
En dtail
Zone rpte mmoire

Une zone rpte peut contenir plusieurs champs (libell, champ de saisie, image, ...). Chacun
des champs de la zone rpte peut tre associ un attribut.
Cet attribut permet de modier une proprit du champ associ (sa valeur, son libell, sa couleur,
sa visibilit, ...). Il est galement possible de crer un attribut dans la zone rpte sans que celuici ne soit associ un champ : on parle alors dattribut libre (cet attribut peut contenir la valeur
dun compteur par exemple).
Le comportement dune zone rpte mmoire est trs proche dun champ Table.
Dans une zone rpte mmoire, chaque ligne de la zone rpte est identie par un indice.
Pour ajouter une ligne dans une zone rpte, il faut utiliser la fonction ZoneRpteAjouteLigne.
Cette fonction attend en paramtre :
le nom de la zone rpte,
les valeurs des attributs (dans lordre) spares par des virgules :
// Ajout dune ligne dans la zone rpte
// La zone rpte contient 4 attributs, associs respectivement
// aux champs : LIBMAQUETTE, IMGMAQUETTE, QUANTITE, PRIXUNI
ZoneRpteAjouteLigne(ZR_Maquette, ...
"Maquette n1", "IMAGE_MAQUETTE1.JPG", 10, 45.65)

Partie 3 : Fentres et champs

211

La fonction ZoneRpteModieLigne modie une ligne de la zone rpte.


Une ligne de zone rpte est supprime avec la fonction ZoneRpteSupprime.
Zone rpte relie un fichier de donnes ou une requte

Lors de la cration dun champ zone rpte chier vous devez indiquer le chier de donnes de
lanalyse ou la requte qui servira de source de donnes pour le remplissage.
Ce chier de donnes ou cette requte sera lu automatiquement sans avoir crire aucune ligne
de code.
La cl de parcours slectionne sert de tri pour le remplissage de la zone rpte et indique donc
lordre dans lequel seront visualises les valeurs.
Par exemple, vous pourrez visualiser dans une zone rpte :
la photographie dun produit
la description du produit
le prix du produit, ...

"Dans notre exemple, consultez longlet "Contenu" de la fentre de description de la zone


rpte. Les caractristiques de liaison avec le chier de donnes sont afches.
Pour plus de dtails sur le fonctionnement dune zone rpte chier, mmoire, ou sur source
consultez laide en ligne (mot-cl : "Zone rpte").
Type de champ : Arbre
Rsum
Aussi appel champ "Liste arborescente" ou champ "Treeview", un champ Arbre est comparable
une liste dont le contenu est class hirarchiquement. Plus simplement, les donnes sont classes comme lorsque vous utilisez lexplorateur de chiers de Windows.
Exemple pratique

"Ouvrez la fentre "FEN_ChampArbre.wdw".


"Lancez le test de cette fentre.
"Cliquez sur les diffrents boutons et observez ce quil se passe.
"Revenez sous lditeur et tudiez le code des boutons.
En dtail
Dans cet exemple, le champ Arbre est gr par programmation. Les fonctions du WLangage qui
permettent de programmer un arbre commencent par ArbreXXX.
Ces fonctions sont comparables aux fonctions de gestion des tables remplies par programmation.
Par exemple, ArbreAjoute, ArbreSupprimeTout, ArbreSupprime, ArbreSelect,

212

Partie 3 : Fentres et champs

Il est galement possible de manipuler le champ Arbre ligne par ligne pour modier les proprits
dune ligne. Il est par exemple possible dutiliser :
la proprit ..Couleur pour modier la couleur dune ligne,
la proprit ..CouleurFond pour modier la couleur de fond dune ligne,
la proprit ..Police pour modier les caractristiques de la police dune ligne, ...
De la mme manire que les champs Liste, Table, Combo ou Zone Rpte, les champs arbre
peuvent tre de plusieurs types :
Arbre mmoire : le champ arbre est rempli par programmation.
Arbre chier : le champ arbre est rempli partir dun chier de donnes ou dune requte,
automatiquement, sans une seule ligne de code.
Arbre sur source : le champ arbre est rempli partir dune variable WLangage sans aucune
ligne de code.
Nous ne dtaillerons pas les diffrentes caractristiques des champs Arbre ainsi que les fonctions
de manipulation des arbres. Pour plus de dtails, consultez laide en ligne (mot-cl : "Arbre, Manipuler un arbre par programmation").
Type de champ : Table Hirarchique
Rsum
Une table hirarchique est le rapprochement entre un champ Table et un champ Arbre.
Ce champ se base sur la structure dun champ table (colonne, ligne, cellule), et possde une
colonne de type Arbre, permettant dintroduire la notion darborescence, de hirarchie.
Cette notion est inexistante dans une table.
Une table hirarchique peut tre :
remplie par programmation
base sur un chier de donnes.

Partie 3 : Fentres et champs

213

Exemple pratique

"Ouvrez la fentre "FEN_ChampTableHirarchique.WDW" sous lditeur. Cette fentre prsente


diffrents traitements sur les tables hirarchiques chier et mmoire.

"Testez cette fentre.


Remarque : Les tables hirarchiques tant des tables spciques, elles peuvent tre manipules
par programmation grce aux fonctions TableXXX. Des fonctions spciques permettent de grer
la hirarchie (par exemple la fonction TableAjouteFils pour ajouter un lment ls) ainsi que la
possibilit denrouler ou non un niveau de la hirarchie (par exemple les fonctions TableEnroule
ou TableDroule).
Type de champ : Jauge
Rsum
Les jauges permettent de reprsenter la progression dun traitement. La valeur de la jauge peut
tre modie par programme. La jauge peut tre horizontale ou verticale. Les couleurs et le dcor
sont entirement paramtrables.
Exemple pratique

"Ouvrez et testez la fentre "FEN_ChampJauge.wdw".


Quelques astuces de programmation

"Pour affecter le champ jauge avec une valeur, il suft de faire une affectation, comme pour
un champ numrique.
JAUGE_Copie = 75

"Pour dnir les bornes minimales et maximales dune jauge, utilisez les proprits ..BorneMin et ..BorneMax :
JAUGE_Copie..BorneMin = 0
JAUGE_Copie..BorneMax = 100

"Voici le code du bouton "Excution" qui permet de faire voluer les jauges.
n est un entier
POUR n = 1 A 100
JAUGE_Horizontale = n
JAUGE_Verticale = n
JAUGE_Image = n
JAUGE_Blue = n
JAUGE_LCD = n
Multitache(1)
// pour rafrachir laffichage
FIN

214

Partie 3 : Fentres et champs

Type de champ : Champ Graphe


Rsum
Le champ Graphe permet dinclure simplement un graphique dans une fentre. La source de donnes de ce champ peut tre :
dnie par programmation
un chier de donnes ou une requte
une colonne de table
un champ Liste
un tableau WLangage
Il est possible de raliser plusieurs types de graphes en 2 ou 3 dimensions :
Secteur,
Histogramme,
Boursier
Courbe,
Nuage de points, ...
Pour chacun des types de graphes, des options dafchage permettent davoir des rendus diffrents. Pour plus de dtails, consultez laide en ligne (mot-cl : "Champ Graphe").
Exemple pratique

"Ouvrez la fentre "FEN_ChampGraphe" et testez-la. Cette fentre prsente diffrents modes


de remplissage dun champ graphe :
Table (chier ou mmoire)
Donnes fournies par programmation
Liste de valeurs
Un graphe de type Surface peut galement tre afch.

" Dans chaque cas, il est possible de modier directement les informations afches dans le
Astuce

graphe. Ces modications sont immdiatement prises en compte.


Le menu contextuel du champ graphe permet de modier de nombreuses options dafchage du graphe.

Partie 3 : Fentres et champs

215

"Revenez sous lditeur de WinDev. Nous allons crer une fentre contenant un champ graphe
bas sur une requte. Cette requte (REQ_CA_par_annee) permet dobtenir le Chiffre
daffaires par anne.
1. Ouvrez la requte "REQ_CA_par_annee" sous lditeur.
2. Testez la requte.

"Nous allons maintenant crer le champ Graphe permettant dafcher les donnes de la
requte.
1. Crez une nouvelle fentre.
2. Dans cette fentre, crez un champ Graphe : sous le volet "Cration", dans le groupe
"Champs graphiques", cliquez sur "Graphe" puis cliquez dans la fentre pour crer le champ.
Lassistant de cration de graphe se lance.
3. Slectionnez le type du graphe crer (par exemple courbe)

4. Donnez les caractristiques du graphe :


Titre du graphe : Chiffre daffaires par anne
Afcher la lgende droite
Quadrillage horizontal
5. Indiquez les sries du graphe. Dans notre cas, nous utiliserons une seule srie.
Indiquez ltiquette de catgorie utiliser : source correspond "Parcours dun chier ou
dune requte" et donnes correspond la rubrique Anne de la requte REQ_CA_Par_Annee.
216

Partie 3 : Fentres et champs

Cliquez sur la premire ligne du tableau.

Indiquez le libell : "Chiffre daffaires".


Indiquez la source : slectionnez loption "Parcours dun chier ou dune requte". Cette option permet de slectionner le chier ou la requte qui sera la base de la srie.
Indiquez les donnes : cliquez dans la colonne "Donnes". Slectionnez la requte "REQ_
CA_par_Annee", puis la rubrique : la_somme_TotaleVente. Dans la rubrique de parcours,
slectionnez "Anne".
6. Donnez le nom du graphe et validez.
7. Redimensionnez le champ graphe dans votre fentre et testez.
Les fonctions graphes
WinDev propose un ensemble de fonctions pour crer et congurer un graphe. Ces fonctions commencent toutes par les lettres "gr". Ces fonctions peuvent tre utilises :
dans un champ image. Le graphe est entirement dessin laide des fonctions grXXX.
dans un champ graphe. Les fonctions permettent alors de modier par programmation certaines caractristiques dnies dans le champ graphe.
Pour plus de dtails sur ces fonctions, nous vous conseillons de consulter laide en ligne (mot-cl :
"Graphe").

Partie 3 : Fentres et champs

217

Les champs spcialiss


Sous lappellation "Champs spcialiss" nous avons regroup tous les champs dune utilisation
rare ou spcique. Ces champs sont les suivants :
Calendrier
Agenda
Planning
Organigramme
TreeMap
Carrousel
Cube
Tiroir
Forme
Code-barres
Ascenseur
Range Slider
Potentiomtre
Spin
Notation
WebCam
Confrence
HTML
OLE
Bote outils
Barre doutils
Ruban
Table OLAP
Zone multiligne
TimeLine
ActiveX
Xaml
Nous allons tudier rapidement ces diffrents types de champs. Le projet "Fentres et champs"
contient un exemple pour chacun de ces types de champs. Nous vous conseillons de tester la
fentre associe au champ, dtudier le code prsent dans cette fentre et de consulter laide en
ligne pour obtenir plus de dtails sur lutilisation de ces champs.
Dans lexplorateur de projet du projet exemple, les fentres contenant ces champs sont regroupes dans le dossier "Champs spcialiss".

218

Partie 3 : Fentres et champs

Type de champ : Calendrier


Rsum

Notes

Le champ Calendrier permet de crer un calendrier. Ce calendrier permet lutilisateur de slectionner une date.
Par dfaut, si un champ de saisie de type date est prsent en excution, lutilisateur pourra ouvrir un calendrier pour slectionner la date grce loption "Calendrier" du menu contextuel.
Lors de la description dun champ de saisie de type date, il est galement possible dafcher un bouton Calendrier. Ce bouton permet lutilisateur de slectionner la date voulue.

Exemple pratique

"Ouvrez la fentre "FEN_ChampCalendrier". Cette fentre prsente les diffrents modes


dutilisation dun calendrier.
Type de champ : Agenda
Rsum
Le champ Agenda permet dafcher et de manipuler des agendas automatiquement. Lafchage
seffectue la journe, la semaine ou au mois.
Exemple pratique

"Ouvrez la fentre "FEN_ChampAgenda". Cette fentre utilise un champ Agenda. Les diffrents
boutons prsentent quelques manipulations pouvant tre effectues sur un champ Agenda.
Type de champ : Planning
Rsum
Le champ Planning permet dafcher et de grer un planning. La diffrence principale entre un
champ planning et un champ Agenda est la suivante : un agenda concerne une ressource alors
quun planning concerne plusieurs ressources.
Exemple pratique

"Ouvrez la fentre "FEN_ChampPlanning". Cette fentre utilise un champ Planning. Ce


planning permet de grer les rendez-vous de plusieurs personnes. Testez cette fentre pour
dcouvrir les possibilits du champ Planning.

Partie 3 : Fentres et champs

219

Type de champ : Organigramme


Rsum
Le champ Organigramme permet dafcher automatiquement un organigramme, une hirarchie
dlments. Les donnes afches peuvent provenir dune base de donnes.
Exemple pratique

"Ouvrez la fentre "FEN_ChampOrganigramme". Cette fentre utilise un champ Organigramme. Testez cette fentre pour dcouvrir les possibilits du champ Organigramme. Le
menu contextuel du champ permet de crer une image, qui pourra tre imprime.
Type de champ : TreeMap
Rsum
Le champ TreeMap permet de visualiser graphiquement des donnes hirarchises. Il peut tre
par exemple utilis pour visualiser lespace disque occup par les chiers dun rpertoire.
Exemple pratique

"Ouvrez la fentre "FEN_ChampTreeMap". Cette fentre prsente les donnes afches dans
une table chier avec rupture sous forme de TreeMap.

"Lancez le test de cette fentre.


"Cliquez sur les diffrents champs et les diffrents boutons et observez ce quil se passe.
"Revenez sous lditeur et tudiez le code des boutons.
En dtail
Le champ TreeMap est gr par programmation. Les fonctions du WLangage qui permettent de
programmer un TreeMap commencent par TreeMapxxx.
Ces fonctions sont comparables aux fonctions de gestion des arbres. Par exemple, TreeMapAjoute, TreeMapInfoXY, TreeMapOccurrence, ...
Nous ne dtaillerons pas les fonctions de manipulation des TreeMaps. Pour plus de dtails,
consultez laide en ligne (mot-cl : "TreeMap").
Type de champ : Carrousel
Rsum
Le champ Carrousel permet de crer des menus et des listes originales.

220

Partie 3 : Fentres et champs

Exemple pratique

"Ouvrez la fentre "FEN_ChampCarrousel". Cette fentre utilise un champ Carrousel. Les


diffrents boutons prsentent quelques manipulations pouvant tre effectues sur un champ
Carrousel.
Type de champ : Cube
Rsum
Le champ Cube est un champ de dcor, mobile, qui effectue automatiquement des rotations sur
tous les axes. Ce champ peut par exemple tre prsent en petite taille dans un coin dune fentre.
Exemple pratique

"Ouvrez la fentre "FEN_ChampCube".


Attention : le champ Cube utilise le Framework DotNet 3.0. Le lancement de ce framework
peut tre trs lent.
Remarque : Cette fentre ne peut pas tre utilise avec une version infrieure Windows XP.
Type de champ : Tiroir
Rsum
Le champ tiroir peut tre dpli an dafcher ou non les champs quil contient. Ce type de
champs est souvent utilis pour proposer des menus originaux.
Exemple pratique

"Ouvrez la fentre "FEN_ChampTiroir".


Type de champ : Forme
Rsum
Les formes permettent de dessiner des lments aux formes gomtriques (cercle, ellipse, rectangle, carr, ligne ou che). Un assistant de cration de champs forme permet de dnir toutes
les caractristiques dun champ forme :
couleurs.
formes, dimensions, ...
Exemple pratique

"Pour obtenir un aperu de ces champs, ouvrez et testez la fentre "FEN_ChampForme.wdw".

Partie 3 : Fentres et champs

221

Type de champ : Champ Code-Barres


Rsum

Notes

Le champ Code-Barres permet dafcher simplement des codes-barres dans vos fentres.
Il est possible par exemple de lire le code-barres dun produit laide dun appareil spcialis,
dafcher le code-barres lcran et denregistrer sa valeur dans un chier de donnes.
Les codes-barres peuvent tre imprims soit depuis lditeur dtats, soit par programmation (fonction iImprimeCodeBarre).

Pour plus de dtails, consultez laide en ligne.

Type de champ : Ascenseur


Rsum
Dans certains traitements particuliers, il peut tre intressant de crer des champs de type "Ascenseur".
Le principe de gestion des ascenseurs est le suivant :
la valeur de la cage de lascenseur (le petit carr qui bouge !) est rcupre dans une variable.
une valeur peut tre affecte cette cage.
Pour dplacer lascenseur, lutilisateur peut cliquer sur un des boutons chs ou dplacer directement la cage elle-mme. Lutilisateur peut mme cliquer entre la cage et les ches pour avoir
une avance rapide.
Exemple pratique

"Ouvrez et testez la fentre "FEN_ChampAscenseur.wdw".


Les ascenseurs permettent de dplacer limage dans la fentre.
Par dfaut, lascenseur varie entre les valeurs 1 et 100. Chaque clic sur un des boutons
chs dplace de 1 la cage et chaque clic entre la cage et le bouton dplace de 10.
Ces valeurs peuvent tre modies dans la fentre de description de lascenseur ou en
programmation grce aux proprits ..BorneMin, ..BorneMax et ..AvanceRapide.

222

Partie 3 : Fentres et champs

Type de champ : Range Slider


Rsum
Le champ Range Slider permet de slectionner simplement un intervalle de donnes ou un zoom.
Exemple pratique

"Ouvrez et testez la fentre "FEN_ChampRangeSlider.wdw".


Cette fentre permet de mieux comprendre lutilisation dun champ Range Slider :
le premier exemple permet de manipuler la cage du Range Slider et de voir les diffrentes
valeurs des proprits associes.
le second exemple permet dutiliser des champs Range Slider pour grer une zone de zoom
sur une image.
Nhsitez pas consulter le code des diffrents lments de cette fentre pour comprendre son
fonctionnement.
Pour plus de dtails, consultez laide en ligne.

Type de champ : Potentiomtre


Rsum
Un champ Potentiomtre correspond un objet graphique circulaire ou linaire permettant de
faire varier une valeur. La valeur en cours du potentiomtre peut tre rcupre par programmation dans une variable et tre ainsi exploite dans des calculs.
Exemple pratique

"Pour affecter le champ potentiomtre avec une valeur, il suft de faire une affectation,
comme pour un champ numrique.
POT_Son = 75

"Pour dnir les bornes minimales et maximales dun potentiomtre, utilisez les proprits
..BorneMin et ..BorneMax :
POT_Son..BorneMin = 0
POT_Son..BorneMax = 100

Partie 3 : Fentres et champs

223

Type de champ : Spin


Rsum
Un champ Spin permet de grer lincrmentation et la dcrmentation dune valeur. Un Spin est
constitu de 2 boutons colls.
Contrairement un bouton, si lon clique sur le champ Spin et que lon garde le bouton de la souris enfonc, lvnement de clic est rpt automatiquement.
Exemple pratique

"Ouvrez et testez la fentre "FEN_ChampSpin.wdw".


Les spins permettent de :
incrmenter/dcrmenter une valeur.
dplacer limage dans la fentre.

Type de champ : Notation


Rsum
Un champ Notation permet :
lutilisateur de donnes une note.
lapplication dafcher une note.
La notation peut tre visualise grce des toiles ou toute autre image.
Exemple pratique

"Ouvrez et testez la fentre "FEN_ChampNotation.wdw".


Type de champ : Web camra
Rsum

Exemple

Un champ Web camra permet de visualiser une source vido provenant dune camra extrieure
relie lordinateur.

224

Lexemple "Webcam" (exemple complet) livr avec WinDev montre lutilisation


dun champ Web camra dans une fentre. Cet exemple est accessible depuis le
volet "Assistants, Exemples et Composants" de WinDev.

Partie 3 : Fentres et champs

Exemple pratique
Les fonctions permettant de grer le champ Web camra commencent par VidoXXX :

Notes

// Sauvegarde de la vido retransmise dans le champ Web Camra


// "CAM_WebCamera" sous forme dun fichier AVI de 60 secondes
Res est un boolen = VidoCapture(CAM_WebCamera,...
"C:\Temp\MaVideo.AVI",...
viCaptureVido,60)
SI Res = Vrai ALORS
Info("Vido correctement sauvegarde")
SINON
Erreur("Impossible denregistrer la vido")
FIN

Seule la squence vido actuellement retransmise peut tre visualise dans un


champ Web camra.

Pour visualiser :
une image capture avec la fonction VidoCapture, utilisez un champ Image.
une squence vido capture avec la fonction VidoCapture, utilisez un champ ActiveX permettant de lire une vido.

"Pour afcher en direct la vido en provenance de la Web camra, utilisez la fonction VidoAfche.

"Pour comprendre le fonctionnement du champ Web camra, vous allez simplement charger
une fentre exemple et lexcuter.

"Ouvrez et testez la fentre "FEN_ChampWebCamra.WDW".


Attention : Une Web Camra doit tre accessible depuis le poste en cours.
Pour plus de dtails sur les fonctionnalits des champs Web camra et la syntaxe des fonctions
voques ici, consultez laide en ligne (mot-cl : "WEB, Champ Web Camra").
Type de champ : HTML
Rsum
Un champ HTML permet dintgrer une page HTML dans une fentre WinDev.
Remarque : Le champ HTML permet uniquement dafcher une page HTML alors que le champ de
saisie HTML permet dafcher et de modier du code HTML.
Exemple pratique

"Pour comprendre le fonctionnement du champ HTML, ouvrez et testez la fentre "FEN_


ChampHTML.wdw".

Partie 3 : Fentres et champs

225

Type de champ : OLE, ActiveX


Champ ActiveX
Rsum

Le champ ActiveX permet de grer simplement les contrles ActiveX. Les contrles ActiveX sont
des composants rutilisables utilisant la technologie ActiveX et pouvant tre intgrs dans une
fentre.
En dtail

Un ActiveX est associ des proprits et des mthodes. Ces proprits et mthodes peuvent
tre utilises en WLangage pour manipuler directement le champ ActiveX. Il suft dutiliser la syntaxe Automation du WLangage.
Par exemple :
// AX_LecteurAVI est un champ ActiveX
AX_LecteurAVI>>Zoom = 12
// Affectation dune proprit
AX_LecteurAVI>>Pause(10)
// Appel de mthode

Exemple

Pour connatre les proprits et mthodes associes un ActiveX, vous pouvez :


soit consulter directement la documentation du contrle ActiveX.
soit utiliser lutilitaire WDXVIEW livr avec WinDev.
Les exemples "Pilotage dExcel", "Pilotage de Word", "Recherche sur Internet"
(exemples didactiques et complets), livrs avec WinDev utilisent un champ ActiveX. Ces exemples sont accessibles depuis le volet "Assistants, Exemples et
Composants" de WinDev.

Champ OLE
Rsum

Le Champ OLE permet de manipuler un objet OLE.


Rappel : OLE est un protocole dchange de donnes et de commandes dont le principe consiste
imbriquer et lier des objets. Ds que lobjet incorpor est ouvert, la connexion client/serveur est
ouverte.
Un objet OLE est un chier qui contient :
la rfrence du Serveur OLE qui a cr lobjet.
lobjet lui-mme (image, document feuille ...).
En dtail

Plus techniquement, un objet OLE correspond des donnes encapsules contenant des donnes diverses telles que des textes, des images, des sons, ... Lencapsulation de donnes dans
des objets OLE permet dincorporer ces objets sans avoir besoin de connatre leur structure.
WinDev est un client OLE. Les applications dveloppes avec WinDev demandent des donnes,
afchent et stockent les objets OLE.
226

Partie 3 : Fentres et champs

Les serveurs OLE mettent disposition des objets aux clients qui en font la demande. Ce sont par
exemple Paint Brush, Excel, WinWord, ...
En tant que client, WinDev sait grer des objets OLE. Il permet de :
dessiner un objet dans un champ OLE. Un objet peut tre par exemple une feuille Excel, une
image de Paint Brush ...
diter un objet OLE dans un champ OLE. Lobjet OLE peut tre :
- choisi sous lditeur ou par programmation.
- dni en fonction dun serveur ou dun chier.
Remarques :
En programmation, un champ OLE est manipul par des fonctions spciques. Une application
WinDev ne peut pas tre serveur OLE.
OLE version 1 et OLE version 2 sont grs (les versions suprieures ne sont pas gres).
Un objet OLE ne peut pas tre imprim avec WinDev. La mise jour de lobjet seffectue la
demande.
Un champ OLE ne peut contenir quun seul objet OLE.
Nous nallons pas dtailler le fonctionnement de ces deux types de champ.
Pour plus de dtails, consultez laide en ligne (mots-cls : "OLE", "Champ OLE", "ActiveX (champ)").
Type de champ : Bote outils
Rsum
Un champ Bote outils est constitu de plusieurs volets. Chaque volet peut contenir tous les
types de champs (y compris une autre bote outils).
Exemple pratique

"Ouvrez et testez la fentre "FEN_ChampBAO.wdw".


Type de champ : Barre doutils
Rsum
Le champ Barre doutils est un type de champ avanc, li une fentre. Une barre doutils contient
plusieurs champs (bouton, champ de saisie, combo, ...) permettant lutilisateur de lancer rapidement certaines fonctionnalits de son application. Une barre doutils peut tre :
Ancre : la barre doutils est "colle" un des bords de la fentre.
Flottante : la barre doutils est une fentre indpendante.
Lutilisateur peut changer la position de la barre doutils en utilisant la souris.

Partie 3 : Fentres et champs

227

En dtail
Pour associer des champs existants la barre doutils :
Mthode 1 : Ralisez un "Drag and Drop" du champ vers la barre doutils.
Mthode 2 : Dans la description de la barre doutils (onglet "Gnral"), cliquez sur le bouton
"Ajouter" et slectionnez le champ ajouter la barre doutils. Appliquez les modications, le
champ slectionn est automatiquement positionn dans la barre doutils.
Pour associer des nouveaux champs la barre doutils :
Mthode 1 : Ralisez un "Drag and Drop" du champ vers le champ "Barre doutils".
Mthode 2 : Dans la description de la barre doutils (onglet "Gnral"), cliquez sur le bouton
"Crer" et slectionnez le type de champ ajouter la barre doutils. Le champ slectionn est
automatiquement cr dans la barre doutils. Pour le modier, utilisez le bouton "Editer" : la description du nouveau champ apparat.
Exemple pratique

"Ouvrez et testez la fentre "FEN_ChampBarreOutils". Cette fentre utilise deux barres


doutils : une barre doutils ancre et une barre doutils ottante.
Remarque : Lespace entre les champs de la barre doutils peut tre congur dans lcran "Dtail" de la description de la barre doutils.
Type de champ : Ruban
Rsum
Le champ Ruban permet dafcher des menus de manire originale. Il permet de prsenter dans
une petite surface de lcran un grand nombre de champs rangs avec logique an deffectuer
des choix.
Un champ ruban est constitu de plusieurs volets permettant de regrouper les champs.
Exemple pratique

"Ouvrez et testez la fentre "FEN_ChampRuban". Agrandissez et rduisez la fentre pour voir


les diffrentes options du ruban.
Type de champ : Cube Rolap
Rsum
Le champ Cube Rolap permet une reprsentation dinformations multidimensionnelles visualises dans un tableau.
Exemple pratique

"Ouvrez et testez la fentre "FEN_ChampRolap".

228

Partie 3 : Fentres et champs

Type de champ : Zone Multiligne


Rsum
Le champ Zone Multiligne permet de raliser des interfaces originales. Ce type de champ permet
de regrouper diffrents champs :
options sur une catgorie,
regroupement dinformations sur un contact, ...
Ce champ peut contenir la fois :
des lignes dnies en dition (lignes statiques).
des lignes dnies en excution, par programmation (lignes dynamiques).
Exemple pratique

"Ouvrez et testez la fentre "FEN_ChampZoneMultiligne".


Type de champ : TimeLine
Rsum
Le champ TimeLine permet de reprsenter des chronologies dvnements rapprochs qui
peuvent tre parallles.
Ce champ est utile par exemple pour :
raliser un montage vido.
reprsenter des vnements sur un automate.
raliser une animation, ...
Exemple pratique

"Ouvrez et testez la fentre "FEN_ChampTimeLine".


Type de champ : Xaml
Rsum
Le champ Xaml permet de grer simplement le langage Xaml.
Pour utiliser ce champ, nous vous conseillons fortement de vous reporter la documentation de
Microsoft.

Partie 3 : Fentres et champs

229

LEON 3.3. ERGONOMIE

DE LAPPLICATION

Ce que vous allez apprendre dans cette leon ...


Amliorer lergonomie des champs et des fentres
Amliorer lergonomie des applications

Dure estime : 20 mn

230

Partie 3 : Fentres et champs

Amliorer lergonomie des champs et des fentres


WinDev propose de nombreux outils pour amliorer lergonomie de vos fentres et de vos champs.
Nous vous prsentons ici quelques solutions simples pour amliorer efcacement lutilisabilit de
vos fentres.
Style/gabarit

Notes

Chaque projet WinDev est associ une feuille de styles. La feuille de styles permet de dnir les
caractristiques de chaque type de champ du projet.
Pour simplier lutilisation des styles, WinDev est livr avec de nombreux gabarits. Les gabarits
utilisent une feuille de styles spcique, contenant la description de linterface de tous les types
de champs pouvant tre utiliss.
Lors de la modication du style dun champ (onglet "Style"), WinDev propose de
surcharger les proprits du style en cours avec les options modies : cest le
mcanisme de surcharge des styles. Pour plus de dtails, consultez laide en
ligne.

Lors de la cration du projet, il est possible de dnir la charte graphique du projet. Cette charte
graphique correspond au gabarit qui sera utilis. A tout moment, il est possible de modier la
charte graphique utilise :
soit directement dans les options du projet. Pour modier la charte graphique :
1. Sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description".
2. Dans longlet "Style", modiez la charte graphique. Le changement est alors effectu pour
toutes les fentres du projet.

Partie 3 : Fentres et champs

231

Notes

soit directement depuis lditeur de fentres.


1. Sous le volet "Fentre", dans le groupe "Style et gabarits", cliquez sur "Appliquer un gabarit").
2. Dans la fentre qui safche, slectionnez le gabarit appliquer et ses options. Le changement est alors effectu pour la fentre en cours.
WinDev permet de crer vos propres gabarits. Vous pouvez ainsi dnir entirement la charte graphique de votre application. Pour plus de dtails, consultez
laide en ligne.

Redimensionnement des fentres


Les fentres des applications WinDev peuvent tre redimensionnes. Dans ce cas, lutilisateur
pourra utiliser la poigne de redimensionnement pour modier la taille de la fentre. La poigne
de redimensionnement est place en bas de la fentre.
Pour permettre le redimensionnement dune fentre, il suft de slectionner loption "Redimensionnable" dans longlet "IHM" de la description de la fentre.
Lors du redimensionnement de la fentre, les champs de la fentre doivent suivre le redimensionnement de la fentre. Cette fonctionnalit sappelle lancrage des champs. Cest ce que nous
allons tudier maintenant.
Il est conseill de rendre les fentres redimensionnables uniquement si les fentres contiennent
des champs qui peuvent sagrandir : table, liste, image, bote outils, zone rpte, sparateur,
onglet, arbre, liste image, HTML, ...
Ancrage
Lancrage permet de lier la taille et/ou la position des champs la taille de la fentre. Si lutilisateur de lapplication a la possibilit de modier la taille (largeur et hauteur) de la fentre, vous
pourrez lier certains champs de la fentre ce redimensionnement.
Le champ pourra se dplacer, sagrandir ou rester tel quel.
Lancrage peut tre mis en place en faisant un clic droit sur un champ et en slectionnant "Ancrage" dans le menu contextuel :

232

Partie 3 : Fentres et champs

Notes

Il ne faut pas mettre systmatiquement lancrage sur tous les champs dune
fentre. Il faut choisir judicieusement les champs et les fentres sur lesquels
lancrage est utile.
Par exemple, dans une fentre contenant un champ Table, il peut tre intressant
de lier le redimensionnement de la table lorsque la fentre sagrandit.
Autre cas, une image contenant une photo pourra aussi tre redimensionne si
la fentre est agrandie.
Par contre, on vitera de redimensionner des champs de saisie, les boutons, les
slecteurs ou les interrupteurs.
Lancrage est symbolis par des ches rouges sur les cts du champ :

Remarque : Si votre fentre est redimensionnable et si vos champs ne sont pas ancrs, une AAD
(Aide Au Dveloppement) apparat automatiquement aprs analyse de votre fentre (une dizaine
de secondes est ncessaire) pour vous signaler le problme et vous aider ancrer les champs.
Tabulation/ordre de saisie
Lordre de saisie des champs est lordre dans lequel lutilisateur pourra saisir les valeurs dans les
diffrents champs de la fentre. Le passage dun champ un autre sera effectu lors de lappui
sur la touche [TAB] pendant lexcution.
Lordre de saisie par dfaut correspond lordre de cration des champs. Il peut tre modi :
soit en donnant un ordre de saisie automatique : le premier champ en saisie sera le champ
situ le plus en haut gauche, le deuxime sera celui qui est immdiatement situ droite
ou immdiatement en dessous ...
soit en spciant un ordre de saisie par slection.

"Pour dnir un ordre de navigation automatique, sous le volet "Fentre", dans le groupe
"Ordre", droulez "Navigation" et slectionnez loption "Dnir en automatique".

"Pour diter lordre de saisie des champs, sous le volet "Fentre", dans le groupe "Ordre",
droulez "Navigation" et slectionnez loption "Editer".
La fentre qui safche prsente lordre de navigation utilis dans la fentre en cours. Il est
possible de voir galement lordre de navigation utilis pour les champs dun plan spcique
ou de rechercher le nom dun champ (pour les fentres comprenant beaucoup de champs).

Partie 3 : Fentres et champs

233

Par exemple :

"Pour dnir un ordre de saisie par slection :


1. Slectionnez les champs dans lordre de saisie que vous souhaitez tout en maintenant la
touche [CTRL] enfonce.
2. Sous le volet "Fentre", dans le groupe "Ordre", droulez "Navigation" et slectionnez loption "Dnir par la slection".
Pour connatre lordre de saisie des champs de votre fentre, pas besoin de tester votre fentre :
il suft dutiliser la touche [F5].
Rgles/Correcteur dinterface/Alignement

Notes

Un aspect important de linterface dune application rside dans laspect de linterface. Un point
important est lharmonie des diffrents champs, leur alignement dans la fentre.
Pour vous aider raliser des interfaces respectant les normes de programmation, WinDev met
votre disposition plusieurs outils : grille, rgles, options dalignement, positionnement automatique, ... Voici quelques pistes pour choisir loutil qui vous convient le mieux.
Vous avez sans doute remarqu, lors de la cration de nos fentres dans les leons prcdentes,
des traits en pointills apparaissant lors du dplacement de vos champs dans la fentre. Cest le
positionnement automatique. Ces "rgles" vous aident positionner en temps rel vos champs.
Vous pouvez tout de suite voir si le champ est align avec le champ prcdent.
Pour paramtrer le positionnement automatique :
1. Sous le volet "Afchage", cliquez sur le bouton de regroupement ( ) du groupe "Options".
2. Dans la fentre qui safche, slectionnez longlet "Magntisme". Il est alors possible de
rendre le positionnement automatique actif ou non.
Pour dplacer vos champs sans utiliser le magntisme ou les rgles, maintenez
la touche [SHIFT] enfonce pendant le dplacement.

Mais il se peut que vous vouliez aligner certains champs de votre fentre aprs les avoir crs
(aprs leur dplacement par exemple). Vous pouvez utiliser les options dalignement. Ces options
sont toutes regroupes dans le volet "Alignement".
Pour utiliser les fonctionnalits de ce volet, il suft de slectionner plusieurs champs ( laide du
lasso de la souris ou bien avec la touche CTRL) et de choisir un des alignements prdnis. Le
champ pris pour base pour effectuer lalignement est le premier champ slectionn.

234

Partie 3 : Fentres et champs

Notes

WinDev permet de visualiser directement leffet de loption dalignement sans


lappliquer. Il suft pour cela de slectionner les champs aligner puis de survoler licne dalignement voulu. Pour appliquer loption, il suft de cliquer sur
licne dalignement.

Si aucun des alignements prdnis ne vous convient, vous pouvez toujours effectuer un alignement entirement personnalis : sous le volet "Alignement", dans le groupe "Autres Alignements",
loption "Alignement personnalis" permet de paramtrer toutes les options.
Si vous souhaitez positionner vos champs au pixel prs, vous pouvez galement utiliser les rgles.
Les rgles sont afchables par les touches [CTRL] + [R].
Et enn, si vos interfaces doivent respecter toutes les options dnies pour les interfaces Windows (taille des champs, ...), vous pouvez utiliser le correcteur dinterface. Pour le lancer, sous le
volet "Alignement", dans le groupe "Autres Alignements", cliquez sur loption "Correcteur dinterface". Ce correcteur tudie votre interface et vous propose toutes les modications ncessaires.
Son utilisation est avance et est trs rare.
Plan/Onglet
Votre fentre contient un nombre de champs important ? Pourquoi ne pas utiliser les plans ou les
onglets pour regrouper les informations.
Les onglets
Les onglets permettent de regrouper les informations par thmes. Lutilisateur peut accder directement un thme en cliquant sur "le volet" voulu.
Les onglets ressemblent quelque chose de connu ? En effet, cest le systme utilis dans toutes
les fentres de description disponibles dans WinDev.
Le principe de fonctionnement des onglets est trs simple.
1. Crez le champ onglet. Sous le volet "Cration", dans le groupe "Conteneurs", droulez "Onglet et associs" et slectionnez loption "Onglet".
2. Crez autant de volets que ncessaire et donnez un libell chaque volet (onglet "Gnral"
de la description du champ).
3. Associez les champs sur les onglets voulus. Un champ peut tre commun tous les onglets
ou associ un onglet spcique.

"Pour associer le champ un onglet, deux solutions :


1. En dplaant le champ :
Cliquez sur longlet souhait pour rendre un des volets actifs.
Cliquez sur le champ associer et dplacez-le vers le volet actif.
Le champ est alors directement associ longlet et au volet donglet.
2. En utilisant le menu contextuel :
Dplacez si ncessaire le champ associer sur votre onglet.
Cliquez avec le bouton droit de la souris sur le champ associer et choisissez loption "Associer un onglet..." du menu contextuel.
Slectionnez longlet et le volet donglet souhait et validez.
Le champ est automatiquement associ longlet et au volet donglet spci.

Partie 3 : Fentres et champs

235

Un champ ne peut tre associ qu un seul volet donglet. Le champ sera actif et visible lorsque
le volet donglet sera activ.
Votre onglet est prt fonctionner, aucune programmation spcique nest ncessaire.

Exemple

Les plans
Les plans permettent galement de regrouper les champs, tout en vitant la multiplication des
fentres. Mais avec les plans, ce nest plus lutilisateur qui dcide dafcher les champs, cest le
dveloppeur.
Les plans sont souvent utiliss dans les fentres de type "Assistant". Des boutons "Suivant" et
"Prcdent" permettent de passer dun plan un autre.
Lexemple "Assistant" (exemple didactique) livr avec WinDev montre lutilisation
des plans dans une fentre. Cet exemple est accessible depuis le volet "Assistants, Exemples et Composants" de WinDev.

Notes

Les plans sont trs faciles manipuler sous lditeur de fentres de WinDev. En effet, lorsque
vous souhaitez dcrire un nouvel cran sans changer de fentre, utilisez la touche [Page Suivante]
pour passer au plan suivant et la touche [PagePrcdente] pour passer au plan prcdent. Par
dfaut, le premier plan dune fentre est nomm "Plan 0". Chaque plan suivant est numrot :
"Plan 1", "Plan 2", ...
Pour simplier la manipulation des plans sous lditeur de fentres, le numro
du plan en cours est afch sous lditeur de fentres (dans la fentre daccueil
et dans la barre de message de lditeur).

Pour changer de plan par programmation, il suft dutiliser la proprit ..Plan. Par exemple :
// Code de clic du bouton PRECEDENT
MaFentre..Plan = MaFentre..Plan - 1

Notes

// Code de clic du bouton SUIVANT


MaFentre..Plan = MaFentre..Plan + 1

MaFentre est un mot-cl qui retourne le nom de la fentre qui contient le traitement o est excut MaFentre. Il peut tre utilis dans les traitements des
champs de la fentre, les traitements de la fentre et galement dans les procdures locales de la fentre.

Sparateur
Le sparateur est un champ permettant de dcouper une fentre en plusieurs zones. Ces zones
sont redimensionnables par lutilisateur nal. Le dcoupage peut tre horizontal, vertical ou une
combinaison des deux.

236

Partie 3 : Fentres et champs

Notes

La mise en place de sparateurs dans une fentre ncessite la mise en place


de la gestion des ancrages : la dimension des champs doit sadapter dans les
diffrentes zones de la fentre.

Grce aux sparateurs, lutilisateur peut ainsi personnaliser son environnement de travail selon
ses besoins.
Animation de fentres
Pour doter vos applications dun ct ludique, ou tonner favorablement un utilisateur au lancement, les fentres peuvent tre animes leur ouverture et/ou leur fermeture : une fentre
peut souvrir en tournant, en venant du fond de lcran, (un peu comme des effets de montage
vido).
Leffet peut tre x ou alatoire.
Cette fonctionnalit peut tre dnie dans les options du projet, dans la description de la fentre
ou par programmation.
Si une fentre charge de nombreux lments, une "animation" (qui seffectue indpendamment
des traitements en cours) permet lutilisateur de patienter sans sen rendre compte !
Cette fonctionnalit est utiliser avec parcimonie, pour ne pas agacer lutilisateur. Vous pouvez
par exemple la rserver la premire fentre de lapplication ou demander de nafcher quune
fentre sur 20 avec un effet visuel.
Il est possible danimer :
soit toutes les fentres de lapplication. Dans ce cas, lanimation est dnie au niveau du projet :
1. Sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description".
2. Dans la fentre de description du projet, cliquez sur longlet "Avanc".
3. Cliquez sur le bouton "Animations des fentres". Cet cran permet de dnir lanimation
pour la premire fentre du projet et / ou pour toutes les fentres de lapplication.
soit une ou plusieurs fentres donnes (onglet "Dtail" de la description de chaque fentre).
Grisage automatique des fentres
Votre application ouvre plusieurs fentres simultanment et vos utilisateurs ne savent plus quelle
fentre est celle utiliser ? L o les fentres inactives peuvent se griser automatiquement. Ainsi,
vous devinez instinctivement la fentre utiliser. Cette fonctionnalit sappelle GFI pour Grisage
des Fentres Inaccessibles.
Pour activer cette fonctionnalit :
1. Sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description".
2. Dans la fentre de description du projet, cliquez sur longlet "Avanc".
3. Cochez loption "Activer le GFI".
Totaux dans les tables
Vous utilisez des tables mmoire ou chier dans vos applications ? Vous voulez afcher un total
mais vous vous demandez comment faire ? Faut-il parcourir le chier de donnes li la table ?
Faire une requte ?

Partie 3 : Fentres et champs

237

Il y a une solution beaucoup plus simple : utiliser les calculs automatiques des colonnes : somme,
comptage ou moyenne. Il suft de :
1. Slectionner la position dafchage du calcul (onglet "Gnral" de la description de la table) :

Notes

2. Slectionner la colonne sur laquelle le calcul portera.


3. Dans longlet "Dtail" de cette colonne, cocher le calcul souhait.

Lutilisateur a galement la possibilit dajouter un calcul automatique sur la


table grce au menu contextuel automatique de la table.

Images des champs paramtrables dans le style


WinDev offre la possibilit de personnaliser linterface de vos champs sans pour autant refaire
entirement la feuille de styles ou le gabarit de lapplication. Comment ? Cest trs simple, il suft
de prciser les images utiliser dans le style du champ.
Par exemple, dans longlet "Style" dune table, il est possible de paramtrer limage de fond de la
ligne slectionne :

Transparence des champs, transparence des fentres


Pour obtenir des effets sur vos champs et sur vos fentres, vous pouvez jouer sur la transparence.
Il est par exemple possible dutiliser la transparence pour afcher une fentre dalerte ou davertissement "par-dessus" une fentre sans perturber lutilisation en cours.
La dnition de la transparence se fait :
sous lditeur pour les fentres (option "Opacit" de longlet "Style" de la description de la fentre) et pour les champs (option "Opacit" de longlet "IHM" de la description du champ)
par programmation pour les fentres et les champs grce la proprit ..Opacit.
238

Partie 3 : Fentres et champs

Sauvegarde de la position dans les colonnes dans les tables


Une autre option qui sera vivement apprcie de vos utilisateurs, sans dveloppement particulier : la mmorisation automatique de la conguration des colonnes de table. En effet, quel
confort de retrouver chaque lancement de lapplication, la dernire conguration effectue pour
les colonnes : position, largeur des colonnes, ...
Aucune programmation nest ncessaire : il suft de cocher loption "Mmoriser la cong des colonnes" dans longlet "Dtail" de la fentre de description de la table.

Ergonomie de lapplication
Nous venons de voir comment amliorer lergonomie de vos champs et de vos fentres. Mais
il faut galement tenir compte de lergonomie gnrale de lapplication. En effet, des lments
comme le menu, le mode douverture des fentres de lapplication sont des lments importants
intervenants dans lapprciation de lutilisateur nal dans lapplication. Nous avons dj vu la
cration dun menu, nous allons voir en dtail, les modes de gestion du multi-fentrage.
WinDev propose plusieurs modes dutilisation du multi-fentrage :
utilisation dune interface MDI
multi-fentrage partir de fentres libres.
Nous allons voir immdiatement un exemple de chacun de ces modes de gestion.
Exemple de programme grant le multi fentrage de fentres libres (non MDI)
Pour illustrer les diffrents modes douverture, nous allons travailler avec le projet "WD Fentres
libres".

"Ouvrez le projet "WD Fentres libres".


1. Si ncessaire, fermez le projet en cours pour faire apparatre la fentre de bienvenue.
2. Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Gestion du multi-fentrage".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Gestion du multifentrage".

"Lancez le test de ce projet par le bouton GO (

prsent parmi les boutons daccs rapide).


Cet exemple est volontairement simple : il ne fait quouvrir et fermer des fentres. Il ne gre
pas de saisie ni de fentre MDI. Il a pour but dillustrer les diffrents modes douverture des
fentres libres.

Partie 3 : Fentres et champs

239

"La premire fentre contient un bouton "Catalogue". Ce bouton ouvre une fentre en
ouverture modale.

"Cliquez sur ce bouton.


Remarquez que vous ne pouvez pas cliquer en dehors de la fentre lle (le catalogue) et que
la fentre mre dintroduction ne peut pas tre en saisie tant que la fentre lle est ouverte.

240

Partie 3 : Fentres et champs

"Cliquez sur une des images de polo, la che du polo (fentre lle du catalogue) safche.
Remarquez que la fentre du catalogue (fentre mre) reste en saisie.

"Cliquez sur la fentre che pour quelle passe en saisie.


Vous pouvez ouvrir en parallle toutes les ches en cliquant dans le catalogue sur chaque
polo.

"Depuis une che de polo, vous pouvez galement ouvrir une autre che (fentre sur) en
slectionnant le polo dans la combo et en cliquant sur le bouton "Voir".

"Si vous cliquez sur le bouton "Fermer" dune che dun polo, seule la che se ferme.
Par contre si vous cliquez sur le bouton "Fermer" du catalogue, toutes les ches se ferment
en mme temps que la fentre du catalogue.
En effet, la fermeture de la fentre mre ferme toutes ses fentres lles.
Dtail des traitements

"Terminez le test de lapplication et revenez sous lditeur.


"Ouvrez la fentre "FEN_Principale.WDW". Les traitements associs chaque champ Image
sont les suivants :
-- Clic sur IMG_CLICAGE1
sNomImage est une chane = MoiMme
sNomAlias est une chane = "Polo Blanc"
SI FenEtat(sNomAlias) = Inexistant ALORS
OuvreFille(sNomAlias + "=FEN_Fille,0,0", sNomImage)
FIN

Partie 3 : Fentres et champs

241

La fentre che du polo est afche par la fonction OuvreFille. De cette faon, plusieurs ches
pourront tre ouvertes en parallle.
Pour que la fentre dun polo ne soit pas ouverte plusieurs fois, la fentre nest ouverte que si
elle est inexistante. La fonction FenEtat permet de vrier si une fentre est dj ouverte ou non.
La fentre che du polo qui a pour nom "FEN_Fille" peut tre ouverte plusieurs fois. Il faut alors
pouvoir distinguer chaque fentre ouverte. Pour cela il suft dutiliser un alias.
Quest ce quun alias ?

Un alias permet de diffrencier la mme fentre ouverte plusieurs fois.


Lalias est donn lors de louverture de la fentre avec la fonction OuvreFille ou OuvreSoeur.
Dans la fentre che dun polo (fentre "FEN_Fille"), le traitement du bouton permettant douvrir
une autre che est le suivant :
nIndice est un entier
sNomImage est une chane
// Vrifie sil y a un lment slectionn
SI COMBO_Polo[COMBO_Polo]=-1 ALORS
Info("Aucun polo nest slectionn")
FIN
nIndice = ListeSelect(COMBO_Polo)
sNomImage = COMBO_Polo[COMBO_Polo]+".png"

// Polo slectionn

// Ouvre la fentre fiche du polo slectionn aprs avoir contrl


// quelle ntait pas dj ouverte
SI FenEtat(COMBO_Polo[COMBO_Polo])= Inexistant ALORS
OuvreSoeur(COMBO_Polo[COMBO_Polo]+...
"=FEN_Fille,"+(50*nIndice)+","+(50*nIndice),sNomImage)
FIN

La fentre che du polo est afche par la fonction OuvreSoeur. De cette faon, plusieurs ches
pourront tre ouvertes en parallle.

242

Partie 3 : Fentres et champs

Exemple de programme grant des fentres MDI


Pour illustrer la gestion des fentres MDI, nous allons travailler avec le projet "WD Fentres MDI.
WDP".

"Ouvrez le projet "WD Fentres MDI".


1. Si ncessaire, fermez le projet en cours pour faire apparatre la fentre de bienvenue.
2. Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Gestion des fentres MDI".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Gestion des
fentres MDI".

"Lancez le test de ce projet par le bouton GO (

parmi les boutons daccs rapide).

La premire fentre est une mre MDI (elle a pour nom "FEN_MreMDI").
Elle contient une zone barre dicnes.

La zone barre dicnes contient :


1 champ de saisie
6 zones de clicage
Chaque zone de clicage permet douvrir une fentre lle.

Partie 3 : Fentres et champs

243

Par exemple, pour la premire zone de clicage, on trouvera dans le traitement associ :
// -- Code dinitialisation
MoiMme = "Polo Blanc.png"
// -- Code de clic
NomImage est une chane = MoiMme
NomAlias est une chane = "Polo Blanc"
SI FenEtat(NomAlias) = Inexistant ALORS ...
MDIOuvre(FEN_FilleMDI,NomAlias,"Polo Blanc",NomImage)

Les lles sont des lles MDI, elles safchent dans la fentre mre.

Les options du menu "Afchage" permettent :


Douvrir toutes les lles (les lles sont alors empiles)
De fermer toutes les lles ouvertes :
MDIMenuFentre(mdiFermeTout)

Dafcher les lles ouvertes en mosaque :


MDIMenuFentre(mdiMosaique)

Dafcher les lles ouvertes en cascade :


MDIMenuFentre(mdiCascade)

De rduire en icne toutes les lles ouvertes :


MDIMenuFentre(mdiIconiseTout)

244

Partie 3 : Fentres et champs

De restaurer toutes les lles iconises :


MDIMenuFentre(mdiRestaureTout)

Daligner les icnes dans la fentre mre :


MDIMenuFentre(mdiArrange)

Afchage en mosaque :

Afchage en cascade :

Partie 3 : Fentres et champs

245

Le champ "en cours" indique quelle est la lle active. La lle active est la lle qui se trouve en premier plan, celle dont laltitude est la plus leve par rapport aux autres fentres.
La fonction MDIActive retourne le nom de la fentre lle en avant-plan.
Dans notre exemple, une procdure appele par "timer" afche le nom de la fentre lle active.
Lutilisation des timers est explique dans la leon "Afcher la date et lheure en temps rel", page
46.
La fonction MDIMre permet de connatre le nom de la mre MDI.

246

Partie 3 : Fentres et champs

LEON 3.4. RUTILISABILIT


Ce que vous allez apprendre dans cette leon ...
Rutiliser les lments dun projet

Dure estime : 10 mn

Partie 3 : Fentres et champs

247

Quest-ce que la rutilisabilit ?


Vous avez cr un slecteur de rpertoire que vous aimeriez rutiliser dans tous vos projets ?
Vous souhaitez utiliser toujours les mmes boutons "Fermer" placs au mme endroit dans vos
applications ?
WinDev vous offre diffrents moyens de grer la rutilisabilit des fonctionnalits que vous crez.

Rutiliser un ensemble de champs


Vous voulez rutiliser un ensemble de champs ? WinDev met votre disposition les outils suivants :
Superchamps
Modle de champs
Fentres internes
Nous allons voir ces trois outils en dtail, avec un tableau rcapitulatif pour chaque outil pour
vous aider choisir loutil le mieux adapt vos souhaits.
Pour chaque outil, le projet "Fentres et champs" contient une fentre permettant de visualiser et
de tester la fonctionnalit dcrite.
Exemple pratique
Pour ouvrir ce projet sous WinDev :
1. Si ncessaire, fermez le projet en cours pour faire apparatre la fentre de bienvenue.
2. Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Fentres et champs".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Fentres et
champs".
Le superchamp
Le superchamp est un type de champ avanc. Un superchamp regroupe un ensemble de champs
dans un but spcique (par exemple slecteur de dates, slecteur de chiers, ...). Le superchamp
contient :
les champs ncessaires
le code ncessaire son fonctionnement.

248

Partie 3 : Fentres et champs

Tableau rcapitulatif
Cration

Cration dun superchamp :


1. Crez le superchamp (sous le volet "Cration", dans le groupe "Conteneurs", cliquez sur "Superchamp"
).
2. Mettez les champs dans le superchamp.
Refactoring :
1. Slectionnez les champs.
2. Sous longlet "Modication", dans le groupe "Transformations", droulez "Refactoring et permutations" et slectionnez "Crer un superchamp
avec la slection".

Rutilisabilit

Via le dictionnaire

Mise jour

Via le dictionnaire (grce au systme dabonnement)

Travail en
groupe

Partage du dictionnaire par rseau.


Gestionnaire de sources non disponible.

Exemple pratique
Le projet "Fentres et champs" contient une fentre utilisant un superchamp :
1. Sous lexplorateur de projet, ouvrez la fentre "FEN_ChampSuperChamp" (prsente dans le
perso-dossier "Autres champs"). Cette fentre utilise un superchamp permettant de slectionner un chier.
2. Testez la fentre.
Fentre interne
Le champ Fentre interne permet dinclure une fentre (et son code) dans une autre fentre.
A lexcution, la fentre interne sera dynamiquement fusionne la fentre de rception.
Une fentre interne est une fentre spcique (pas de barre de titre, pas de menu, ...). Dans cette
fentre, vous pouvez mettre tout type de champs. Une fentre interne est un chier dextension
"WDW".
Le champ "Fentre interne" permet de partager dynamiquement une mme partie dinterface au
sein dune ou de plusieurs applications.

Partie 3 : Fentres et champs

249

Tableau rcapitulatif
Cration

Cration dune fentre interne :


1. Crez la fentre interne. Pour crer une fentre interne, il suft de :
cliquer sur
prsent parmi les boutons daccs rapide du menu
de WinDev
survoler loption "Fentre" de la roue qui safche.
cliquer sur "Fentre interne".
2. Dnissez les champs et le code.
3. Enregistrez.
Refactoring :
1. Slectionnez les champs.
2. Sous longlet "Modication", dans le groupe "Transformations", droulez "Refactoring et permutations" et slectionnez "Crer une fentre
interne avec la slection".

Rutilisabilit

Via le champ "fentre interne".

Mise jour

Via le dictionnaire (grce au systme dabonnement) ou via le GDS.

Travail en
groupe

Partage par le rseau ou par le GDS

Avantages

Possibilit de modier dynamiquement (par programmation) la fentre interne utilise dans le champ Fentre interne.

Inconvnients

- Pas amliorable dans linterface daccueil : pas de surcharge, pas de dplacement de champs.
- Zone rectangulaire.

Exemple dutilisation : fentre dont linterface ne va pas changer quel que soit le projet : Fentre
doptions.
Exemple pratique
Pour tester lutilisation des fentres internes, nous allons utiliser le projet "Fentres et champs".
Pour cela :
1. Sous lexplorateur de projet, ouvrez la fentre "FEN_ChampFenetreInterne" (prsente dans le
perso-dossier "Autres champs"). Cette fentre utilise plusieurs fentres internes pour visualiser
les adresses.
2. Testez la fentre.

250

Partie 3 : Fentres et champs

Modle de champs
Un modle de champs est un ensemble de champs, rutilisables dans plusieurs fentres. Un
modle de champs est une fentre spcique contenant diffrents champs. Dans cette fentre,
vous pouvez mettre tout type de champs. Un modle de champs est un chier dextension "WDT".
Tableau rcapitulatif
Cration

Cration dun modle de champs :


1. Crez le modle de champs. Pour crer un modle de champs, il suft
de :
cliquer sur
prsent parmi les boutons daccs rapide du menu
de WinDev
survoler loption "Fentre" de la roue qui safche.
cliquer sur "Modle de champs".
2. Dnissez les champs et le code.
3. Enregistrez.
Refactoring :
1. Slectionnez les champs.
2. Sous longlet "Modication", dans le groupe "Transformations", droulez "Refactoring et permutations" et slectionnez "Crer un modle de
champs avec la slection".

Rutilisabilit

Via le champ "Modle de champs".

Mise jour

Via le dictionnaire (grce au systme dabonnement) ou via le GDS.

Travail
groupe
Avantages

en

Partage par le rseau ou par le GDS


Les modles de champs peuvent tre surchargs : du code peut tre ajout,
les champs peuvent tre dplacs dans la fentre utilisant le modle de
champs. Les champs peuvent tre modis.

Dans la majorit des cas, il est conseill dutiliser un modle de champs.

Partie 3 : Fentres et champs

251

Exemple pratique
Pour voir lintrt des modles de champs, nous allons utiliser le projet "Fentres et champs".
Pour cela :
1. Sous lexplorateur de projet, ouvrez la fentre "FEN_ModeleChamps" (prsente dans le persodossier "Autres champs"). Cette fentre utilise un modle de champs permettant de saisir une
priode. Deux modes dutilisation du modle de champs sont disponibles :
modle de champs sans surcharge. Le modle de champs est utilis tel quel.
modle de champs avec surcharge. Des carrs bleus permettent didentier les champs
surchargs.
2. Pour visualiser les diffrents champs surchargs et les proprits de ces champs qui ont
t surcharges, sous le volet "Fentre", dans le groupe "Modles", droulez "Modles" et slectionnez loption "Liste des champs surchargs".
3. Testez la fentre.

252

Partie 3 : Fentres et champs

LEON 3.5. QUESTIONS/RPONSES


Ce que vous allez apprendre dans cette leon ...

Astuces sur la manipulation de champs

Dure estime : 10 mn

Partie 3 : Fentres et champs

253

Question

Comment dupliquer un champ dans une fentre par programmation ?

Avec WinDev, il est dj possible de cloner les champs. La fonction ChampClone permet de dupliquer par programmation un champ dans une fentre ou un tat.
Le champ est dupliqu avec les mmes caractristiques mais avec un nom diffrent.

Question

Comment supprimer un champ dans une fentre par programmation ?

La fonction ChampSupprime permet de supprimer par programmation un champ dans une fentre ou un tat.

Question

Comment grer les plans dune fentre ?

Les plans dune fentre permettent de rpartir des champs dans diffrentes "couches" an dviter les crans trop chargs ou la multiplication des fentres dans un projet.
Pour associer un champ un plan :
1. Faites un clic droit sur le champ.
2. Slectionnez loption "Associer un plan".
3. Choisissez le numro du plan auquel le champ doit tre associ.

Astuce

Pour passer dun plan lautre dans lditeur, utilisez les touches [Page Suivante] et [Page Prcdente] du clavier. Le numro du plan en cours est afch :
dans la barre de message de lditeur (en bas gauche).
dans la fentre daccueil de la fentre en cours (en haut droite).
Pour viter de dupliquer un mme champ dans une fentre, vous pouvez associer le champ "aucun plan". Le champ est alors visible dans tous les plans.

Seuls les champs du plan en cours et les champs nappartenant aucun plan sont visibles en
dition et en excution.
Vous pouvez galement utiliser la proprit ..Plan pour :
connatre et changer le plan actif dune fentre.
connatre et changer le plan associ un champ.
Le volet "Mode Plan" permet dditer lensemble des libells des champs de tous les plans dune
fentre pour les visualiser et ventuellement les modier simultanment. Pour afcher ce volet,
sous le volet "Accueil", dans le groupe "Environnement", droulez "Volets" puis slectionnez loption "Autres volets .. Mode plan".

254

Partie 3 : Fentres et champs

Question

Comment grer le clic sur un volet dun onglet ?

Un onglet est une sorte de bouton constitu de plusieurs zones clicables nommes "Volets".
Pour grer et dterminer sur quel volet un clic est ralis, utilisez la syntaxe suivante dans le code
de clic de longlet :
SELON NomChampOnglet
CAS 1 // premier volet
//...Traitement effectuer...
CAS 2 // deuxime volet
//...Traitement effectuer...
AUTRES CAS
//...Autres traitements effectuer...
FIN

Question

Comment afficher la progression dun traitement ?

Pour afcher la progression dun traitement, on utilise le plus souvent une jauge.
Pour cela, utilisez un champ Jauge dans une fentre (volet "Cration, groupe "Champs graphiques").
Dans le code dinitialisation du champ Jauge :
1. Initialisez la valeur minimale de la jauge :
NomJauge..BorneMin = ValeurMini

2. Initialisez la valeur maximale de la jauge :


NomJauge..BorneMax = ValeurMaxi

Dans le code du traitement voulu, incrmentez la jauge chaque tape du traitement :


NomJauge ++
// ou NomJauge = NomJauge + 1

Question

Comment afficher un site Internet dans une fentre ?

Avec WinDev, vous pouvez facilement insrer une liaison Internet dans vos applications. Pour
cela :
1. Insrez un champ HTML dans une fentre (volet "Cration", groupe "Autres champs").
2. Initialisez le champ HTML avec ladresse du site auquel vous souhaitez vous connecter :
NomChampHTML = "http://www.pcsoft.fr"

Bien videmment, votre poste (ainsi que le poste de lutilisateur nal) doit avoir une connexion
Internet active.

Partie 3 : Fentres et champs

255

Question

Comment modifier la couleur dun champ ?

La couleur dun champ se dnit dans le style du champ (option "Choisir un style" du menu contextuel du champ). Cependant, il est possible de modier la couleur de ce champ par programmation. La syntaxe est la suivante :

Notes

// Colorier le texte en rouge


NomChamp..Couleur = RougePastel
// Colorier la couleur de fond du libell en vert
NomChamp..CouleurFond = VertClair
// Remettre la couleur dorigine (celle du style)
NomChamp..Couleur = iCouleurDefaut

Cette syntaxe sapplique tous les types de champs.

La fonction RVB permet de dnir une couleur partir des diffrentes valeurs des composantes
Rouge, Vert et Bleu.
<CodeCouleur> = RVB(<rouge>,<vert>,<bleu>)

Il est galement possible de modier les couleurs des lignes, des colonnes ou dune cellule dun
champ Table. La syntaxe est la suivante :
// Modification de la couleur dune colonne
NomColonne..Couleur = <CodeCouleur>
// Modification de la couleur dune ligne
NomTable[IndiceLigne]..Couleur = <CodeCouleur>
// Modification de la couleur dune cellule
NomColonne[IndiceLigne]..Couleur = <CodeCouleur>
// ou
// NomTable[IndiceLigne, IndiceColonne]..Couleur = <CodeCouleur>

Question

Comment rendre un bouton invisible ?

Un bouton peut tre rendu invisible par programmation avec la syntaxe suivante :
NomBouton..Visible = Faux

Donnez la valeur "Vrai" pour rendre le champ nouveau visible.


Cette syntaxe peut galement tre applique sur tous les types de champs et sur les groupes de
champs.

256

Partie 3 : Fentres et champs

Question

Comment crer le menu principal de mon application ?

Effectuez les oprations suivantes :


1. Crez une nouvelle fentre ou ouvrez une fentre existante.
2. Sous le volet "Fentre", dans le groupe "Barres et menus", droulez "Menu principal" et
slectionnez loption "Ajouter le menu principal". Une option est cre automatiquement.
3. Faites un clic droit sur cette option.
4. Cliquez sur "Description de loption" pour modier loption slectionne.
5. Cliquez sur "Ajouter aprs" pour ajouter une nouvelle option aprs.
6. Cliquez sur "Ajouter avant" pour insrer une nouvelle option avant.
7. Cliquez sur "Transformer pour drouler un sous-menu" pour ajouter un sous-menu dans
larborescence du menu.
Question

Comment crer un menu contextuel ?

Un menu contextuel peut tre ajout :


soit au niveau de la fentre.
soit au niveau dun champ.
Pour une fentre :
1. Faites un clic droit sur la fentre et slectionnez loption "Description".
2. Cliquez sur longlet "IHM" et cliquez sur licne
ct de la combo "Menu contextuel".
Pour un champ :
1. Faites un clic droit sur le champ et slectionnez loption "Description".
2. Cliquez sur longlet "IHM" et cliquez sur licne
ct de la combo "Menu contextuel".
Pour connatre ou modier le menu contextuel dun champ ou dune fentre par programmation,
utilisez la proprit ..MenuContextuel.
Question

Comment modifier le curseur de survol pour un champ ou une fentre ?

Un curseur de survol peut tre dni :


soit au niveau de la fentre.
soit au niveau dun champ.
Pour dnir le curseur de survol :
1. Faites un clic droit sur llment (fentre ou champ) et slectionnez loption "Description".
2. Cliquez sur longlet "IHM" et slectionnez le curseur de survol voulu dans la combo "Curseur".
Vous pouvez choisir parmi des curseurs prdnis ou slectionner un curseur que vous avez cr.
Pour modier le curseur de survol par programmation, utilisez la proprit ..CurseurSouris.
Partie 3 : Fentres et champs

257

Question

Comment passer des paramtres une fentre ?

La mthode pour passer des paramtres une fentre est similaire au passage des paramtres
une procdure.
Dans le code de dclaration des globales de la fentre, saisissez la syntaxe du code WLangage
suivante :
PROCEDURE NomFentre(NomParam1, NomParam2, ...)

Lors de louverture de la fentre avec la fonction Ouvre, passez les paramtres aprs le nom de la
fentre, par exemple :
Ouvre(Nomfentre, ValeurParam1, ValeurParam2, ...)

Si vous initialisez un paramtre lors de la dclaration dans la fentre, ce paramtre devient optionnel :

Notes

// NomParam2 est un paramtre optionnel


PROCEDURE NomFentre(NomParam1, NomParam2 = "Test")

Question

Il est prfrable de passer des paramtres une fentre plutt que de dclarer
des variables globales dans le projet.

Comment regrouper des champs pour modifier leurs proprits par


programmation ?

Effectuez la manipulation suivante :


1. Slectionnez plusieurs champs avec la souris.
2. Sous le volet "Fentre", dans le groupe "Edition", droulez "Groupes" et slectionnez loption
"Associer la slection".
3. Vous pouvez :
Associer la slection un groupe existant.
Associer la slection un nouveau groupe (bouton "Nouveau"). Il suft dindiquer le nom du
groupe et de valider.
Les groupes de champs sont utilisables aussi bien dans les fentres que dans les tats.
Les champs seront associs ce groupe. Vous pourrez ensuite modier les proprits des champs
de ce groupe par la syntaxe :
NomGroupe..<NomProprit> = Valeur

258

Partie 3 : Fentres et champs

Attention !
Question

Seules les proprits communes tous les champs sont modiables.

Comment transformer un champ interrupteur en un champ slecteur ?

Notes

Sous le volet "Modication", dans le groupe "Transformations", droulez "Refactoring et permutations" et slectionnez "Slecteur/Interrupteur" pour inverser les deux types de champs.

Question

Cette opration peut galement tre effectue entre une combo et une combo
avec table ou entre un champ Potentiomtre et un Potentiomtre rotatif.

Comment mettre des boutons la mme taille ?

"Slectionnez en premier le bouton servant de rfrence pour la taille (largeur et hauteur),


puis les autres boutons redimensionner.

"Slectionnez les options dalignement "Mme largeur, Mme hauteur" dans les outils
dalignement le volet "Alignement".

Question

Comment grer la persistance des champs ?

"Pour grer la persistance des champs, slectionnez loption "Mmoriser la valeur" dans
longlet "Dtail" de la fentre de description du champ.
Remarque : lutilisateur peut galement mmoriser la valeur dun champ grce au menu contextuel du champ.

Question

Comment ajouter une image en fond dans une fentre ?

Sur la fentre :
1. Faites un clic droit et slectionnez loption "Description".
2. Slectionnez longlet "Image". Vous pouvez choisir une image et son mode dafchage.

Partie 3 : Fentres et champs

259

Question

Comment grer la transparence dune fentre ?

Sur la fentre :
1. Faites un clic droit et slectionnez loption "Description".
2. Slectionnez longlet "Style".
3. Dnissez lopacit de la fentre grce au potentiomtre.
Il est galement possible de dnir lopacit dune fentre ou dun champ grce la proprit
WLangage ..Opacit.

260

Partie 3 : Fentres et champs

PARTIE 4
Bases de donnes
et analyses

262

Partie 4 : Bases de donnes et analyses

LEON 4.1. INTRODUCTION


Ce que vous allez apprendre dans cette leon ...
Vocabulaire utilis.
Les diffrents modes daccs aux bases de donnes.

Dure estime : 20mn

Partie 4 : Bases de donnes et analyses

263

Prsentation
Lors de la conception dune application, vous pouvez tre amen manipuler des donnes. Pour
les stocker, vous devez constituer ce que lon nomme "une base de donnes".
Dans WinDev, lors de la cration dun projet manipulant des donnes, vous devez tout dabord
crer une "analyse".
Une "analyse" contient la description des chiers (ou tables) contenant les donnes de lapplication.

Notes

Cest seulement lors de lexcution de lapplication, que ces descriptions sont utilises pour crer
la base de donnes et/ou les chiers de donnes. Cest dans cette base ou dans ces chiers que
seront stockes les donnes.
Plusieurs outils de maintenance des bases de donnes HyperFileSQL sont livrs
en standard avec WinDev. Ils sont accessibles depuis le Centre de Contrle HyperFileSQL.

WinDev sait grer diffrents formats de base de donnes (pour ne pas dire tous). Les plus courantes sont :
HyperFileSQL, systme de base de donnes intgre WinDev et livre en standard. La
base de donnes HyperFileSQL est disponible en mode Classic ou Client/Serveur.
AS/400, Access, Sybase, Informix, ...
Oracle, SQL Server, MySQL, xBase,
Toute base accessible en langage SQL sous Windows.
Texte (chiers ASCII).
Pour accder aux donnes, il existe diffrentes techniques (appeles "modes daccs") :
Accs Natif
Accs OLE DB
Accs ODBC direct
Accs ODBC via OLE DB

264

Partie 4 : Bases de donnes et analyses

Les diffrents modes daccs aux bases de donnes


Accs Natif
Un accs natif manipule directement et exclusivement un format de base de donnes. Ce type
daccs optimis est dvelopp spcialement pour chaque format de base de donnes.
Dans WinDev, il existe un accs natif pour les bases de type :
HyperFileSQL Classic ou Client/Serveur (en standard)
xBase (en standard)
Access (en standard)
XML (en standard)
SQLite (en standard)
Oracle (optionnel)
AS/400 (optionnel)
SQL Server (optionnel)
Sybase (optionnel)
Informix (optionnel)
DB2 (optionnel)
Progress (optionnel)
MySQL (optionnel et gratuit)
PostGreSQL (optionnel et gratuit)
Dautres accs natifs seront bientt disponibles, contactez notre service commercial !
Les fonctions WLangage SQL* et HLit* sont utilisables avec ce type daccs. Le code est ainsi
portable et indpendant de la base de donnes.
Accs ODBC direct
Un accs via ODBC direct utilise un standard daccs multi-bases. Vous devez installer la couche
ODBC 32 bits sur votre machine. Cette couche est en gnral dj installe sur les versions rcentes de Windows. Vous pouvez le vrier dans le panneau de conguration de Windows en
choisissant loption "Administrateur ODBC".
Attention : toutes les bases de donnes ne sont pas obligatoirement accessibles via cette mthode. Si vous souhaitez utiliser ce type daccs, vriez quil existe un pilote ODBC.
Seules les fonctions WLangage SQL* sont utilisables avec ce type daccs.

Partie 4 : Bases de donnes et analyses

265

Accs OLE DB

Attention !

Un accs via OLE DB est un accs qui utilise un standard daccs multi-bases. Ce type daccs est
bas sur le MDAC (Microsoft Data Access Component) de Microsoft.

Si vous utilisez un accs OLE DB, vous devez obligatoirement installer le MDAC
sur les postes utilisateurs (version 2.6 minimum).

Toutes les bases de donnes ne sont pas obligatoirement accessibles via cette mthode. Si vous
souhaitez utiliser ce type daccs, vriez quil existe un pilote OLE DB.
Les fonctions WLangage SQL* et HLit* sont utilisables avec ce type daccs.
Accs ODBC via OLE DB
En rsum, il sagit dun "mlange" de OLE DB et de ODBC. Cette technique est la plus "lourde" et
la moins efcace en terme de performances. Il est dconseill de lutiliser sur des bases de petite
taille.
Les fonctions WLangage SQL* et HLit* sont utilisables avec ce type daccs.

266

Partie 4 : Bases de donnes et analyses

LEON 4.2. PARCOURS

DE FICHIERS DE

DONNES ET DE REQUTES
Ce que vous allez apprendre dans cette leon ...
Parcours de type HLitPremier
Parcours de type HLitRecherche
Parcours de type POUR TOUT
Parcours de type POUR TOUT AVEC

Dure estime : 20mn

Partie 4 : Bases de donnes et analyses

267

Parcours de type HLitPremier


Le parcours de type HLitPremier permet de parcourir un chier de donnes selon une rubrique cl
(ou index) de parcours. Dans ce cas, la fonction HLitPremier est combine la fonction HLitSuivant qui permet, comme son nom lindique de lire lenregistrement suivant.
Par exemple, le code suivant permet de parcourir le chier Client selon la rubrique cl "Nom", du
premier enregistrement au dernier.
HLitPremier(Client, Nom)
TANTQUE PAS HEnDehors(Client)
// Traitement de lenregistrement
HLitSuivant(Client, Nom)
FIN

Dans ce code, la boucle de parcours teste la valeur de la fonction HEnDehors. La fonction HEnDehors permet de savoir si la n du chier de donnes est atteinte ou non.

Remarque

Lors du parcours dune requte, la fonction HLitPremier r-excute automatiquement la requte.


Il est possible de raliser de la mme faon un parcours du chier du dernier
enregistrement au premier. Il suft dutiliser les fonctions HLitDernier et HLitPrcdent.

Parcours de type HLitRecherche


Le parcours de type HLitRecherche permet de se positionner dans le chier de donnes pour raliser un parcours des enregistrements correspondant une condition. Cette condition porte sur la
cl de parcours (par exemple, toutes les commandes dun client). La fonction HLitSuivant permet
de lire lenregistrement suivant correspondant la condition.
Par exemple, le code suivant permet de rechercher les clients dont le nom commence par "Dupont" :
HLitRecherche(Client, Nom, "Dupont")
TANTQUE HTrouve(Client)
// Traitement de lenregistrement
HLitSuivant(Client, Nom)
FIN

Remarque

Dans ce code, la boucle de parcours teste la valeur de la fonction HTrouve.


La fonction HTrouve permet de savoir si un enregistrement correspondant la condition a t
trouv.

268

Par dfaut, la fonction HLitRecherche effectue une recherche gnrique : tous


les enregistrements commenant par la valeur indique sont recherchs (dans
notre exemple, Dupont et Dupontel seront trouvs).
Pour faire une recherche lidentique :
utilisez la fonction HLitRecherchePremier.
utilisez la constante hIdentique avec la fonction HLitRecherche.

Partie 4 : Bases de donnes et analyses

Parcours de type POUR TOUT


Le parcours de type POUR TOUT permet deffectuer un parcours complet dun chier de donnes,
dune requte ou dune vue HyperFileSQL.
Le parcours peut tre effectu :
sur la meilleure cl du chier de donnes, dtecte automatiquement par le moteur HyperFileSQL.
sur une cl spcique.
Par exemple, le code suivant permet de parcourir le chier Client selon la rubrique "Nom", du premier enregistrement au dernier.
POUR TOUT Client SUR Nom
// Traitement des enregistrements
FIN

Ce code est quivalent au code prsent pour le parcours de type HLitPremier :


HLitPremier(Client, Nom)
TANTQUE PAS HEnDehors(Client)
// Traitement des enregistrements
HLitSuivant(Client, Nom)
FIN

Il est possible deffectuer le parcours du dernier enregistrement au premier, en prcisant le sens


de parcours :
POUR TOUT Client SUR Nom DepuisFin
// Traitement des enregistrements
FIN

Parcours de type POUR TOUT AVEC


Le parcours de type POUR TOUT AVEC permet de parcourir un chier de donnes HyperFileSQL
selon une condition.
Le parcours peut tre effectu :
sur la meilleure cl du chier de donnes, dtecte automatiquement par le moteur HyperFileSQL.
sur une cl spcique.
Par exemple, le code suivant permet de parcourir le chier Client selon le numro de client et en
donnant une condition sur le nom du client.
// Parcours avec filtre
POUR TOUT Client SUR NumClient AVEC "Nom = Dupont"
// Ajout des clients dans la liste
ListeAjoute(ListeClient, Client.NumClient)
FIN

Partie 4 : Bases de donnes et analyses

269

Ce code est quivalent au code prsent pour le parcours de type HLitRecherche :


HLitRecherche(Client, Nom, "Dupont")
TANTQUE HTrouve(Client)
// Traitement de lenregistrement
HLitSuivant(Client, Nom)
FIN

Quel type de parcours choisir ?


Tous les types de parcours prsents se valent. Le choix de lun ou lautre va dpendre des cls
prsentes dans le chier de donnes, de la taille du chier, du type de recherche effectue (recherche de type "Contient" ou non).

270

Partie 4 : Bases de donnes et analyses

LEON 4.3. GESTION

DES ERREURS

Ce que vous allez apprendre dans cette leon ...


La gestion automatique des erreurs
La gestion programme des erreurs

Dure estime : 20mn

Partie 4 : Bases de donnes et analyses

271

Prsentation
Lors de la gestion dune base de donnes, plusieurs types derreurs peuvent apparatre lors de
lajout ou de la modication dun enregistrement :
Erreur de mot de passe sur un chier de donnes
Erreur de saisie obligatoire
Erreur de doublons
Erreur dintgrit, ...
WinDev propose plusieurs modes de gestion de ces erreurs :
le mode automatique : pour chaque erreur rencontre lors de la gestion des enregistrements de la base de donnes, une fentre spcique est afche lutilisateur. Cette fentre permet lutilisateur de modier directement ses donnes.
le mode programm avanc : pour chaque erreur rencontre lors de la gestion des enregistrements de la base de donnes, une procdure ou une fentre personnalise de gestion
des erreurs est appele.
Nous allons dtailler ces modes de gestion des erreurs laide dun exemple simple. Cet exemple
est constitu de deux chiers de donnes (Produit et TVA) nous permettant de tester simplement
les erreurs de doublons et les erreurs dintgrit.

"Ouvrez le projet "WD Gestion Erreurs HFSQL.WDP". Pour cela :


1. Si ncessaire, fermez le projet en cours pour faire apparatre la fentre de bienvenue.
2. Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Gestion des erreurs HyperFileSQL".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Gestion des
erreurs HyperFileSQL".

Gestion des erreurs en mode automatique


Par dfaut, le mode automatique est activ. Dans ce mode, WinDev propose des fentres standard pour chaque type derreur. Ces fentres indiquent lutilisateur le problme.
Aucun code spcique nest ncessaire dans lapplication.
Testons immdiatement le type derreur pouvant tre afch dans notre exemple simple.

"Excutez le projet "WD Gestion Erreurs HFSQL" grce au bouton "GO" (prsent parmi les
boutons daccs rapide).

"Cliquez sur le bouton "Gestion des erreurs de doublons et dintgrit en mode automatique".
"Nous allons tout dabord tester les erreurs de doublons. Pour cela, cliquez sur le bouton
"Doublons : Remplir les champs". Un nouveau propduit est automatiquement saisi dans la
che en bas de la fentre.

272

Partie 4 : Bases de donnes et analyses

"Cliquez sur le bouton "OK" pour valider lajout des donnes dans la base de donnes. Lcran
suivant safche :

Cette fentre explique clairement le problme : vous avez saisi une donne pour la rubrique
"Rfrence" qui existe dj. Une erreur de doublon apparat. Cette fentre permet lutilisateur de corriger directement la valeur.
Le bouton "OK" permet de valider la saisie dans la fentre derreur.
Le bouton "Annuler" permet de revenir lcran ayant provoqu lerreur.
Cliquez sur le bouton "Annuler".

"Testons maintenant les erreurs dintgrit. Pour cela, cliquez sur le bouton "Intgrit : Remplir
les champs".

"Cliquez sur le bouton "OK" pour valider lajout des donnes dans la base de donnes. Lcran
suivant safche :

Cette fentre indique quune erreur dintgrit est rencontre (dans notre cas, la saisie du
taux de TVA na pas t ralise).
Le bouton "Modier" permet de revenir lcran en cours de saisie.
Dans le mode automatique, ds quune erreur de gestion de base de donnes est rencontre, les
fentres dassistance safchent. Il peut tre intressant dans certains cas de grer plus ou moins
manuellement ces erreurs. Dans ce cas, le programmeur peut intervenir de manire plus prcise
sur les erreurs rencontres.

"Cliquez deux fois sur le bouton "Annuler". Le menu de lexemple est afch.

Partie 4 : Bases de donnes et analyses

273

Gestion des erreurs en mode programm avanc


La gestion des erreurs en mode programm avanc consiste personnaliser compltement le
traitement de lerreur par programmation. WinDev offre la possibilit dutiliser :
soit une fentre de gestion des erreurs compltement personnalise.
soit une procdure spcique.
Dans notre exemple, nous avons choisi dutiliser une fentre spcique.

"Excutez le projet "WD Gestion Erreurs HFSQL" grce au bouton "GO" (prsent parmi les
boutons daccs rapide).

"Cliquez sur le bouton "Gestion des erreurs de doublons et dintgrit en mode programm
avanc".

"Nous allons tout dabord tester les erreurs de doublons. Pour cela, cliquez sur le bouton
"Doublons : Remplir les champs". Un nouveau produit est automatiquement saisi dans la
che en bas de la fentre.

"Cliquez sur le bouton "OK" pour valider lajout des donnes dans la base de donnes. Lcran
suivant safche :

Cette fentre afche la raison du problme avec une interface personnalise.


Slectionnez loption "Je souhaite continuer le traitement en cours" et validez.

"Testons maintenant les erreurs dintgrit. Pour cela, cliquez sur le bouton "Intgrit : Remplir
les champs". Un nouveau produit est automatiquement saisi dans la che en bas de la
fentre.

274

Partie 4 : Bases de donnes et analyses

"Cliquez sur le bouton "OK" pour valider lajout des donnes dans la base de donnes. Lcran
suivant safche :

Slectionnez loption "Je souhaite continuer le traitement en cours" et validez.

"Regardons maintenant le code qui a permis dafcher ces messages :


1. Sous lditeur, ouvrez la fentre "FEN_Erreurs_Programme" (double-cliquez sur le nom de la
fentre dans le volet "Explorateur de projet").
2. Afchez les traitements de la fentre (clic droit sur la fentre, option "Code"). Le code dinitialisation de la fentre contient les lignes de code suivantes :
HSurErreur("*",hErrDoublon,FEN_Doublon)
HSurErreur("*",hErrIntgrit,FEN_Integrite)

Cest encore la fonction HSurErreur qui permet de paramtrer le mode de gestion des erreurs
de la base de donnes. Les paramtres de la fonction permettent de spcier ltendue de la
modication :
"*" pour indiquer que tous les chiers de donnes de lanalyse sont concerns.
la constante hErrDoublon pour indiquer que seules les erreurs de doublons sont concernes. Il est ncessaire de spcier ensuite le nom de la fentre utiliser dans ce cas (FEN_
Doublon).
la constante hErrIntgrit pour indiquer que seules les erreurs dintgrit sont concernes.
Il est ncessaire de spcier ensuite le nom de la fentre utiliser dans ce cas (FEN_Integrite).
3. Fermez cette fentre de code.
Nous ne dtaillerons pas ici le code des fentres utilises. Nous vous conseillons de consulter
laide en ligne pour plus de dtails ainsi que lexemple "WD Detection Erreurs" fourni en standard
avec WinDev.

Partie 4 : Bases de donnes et analyses

275

LEON 4.4. CRYPTAGE

DE DONNES

Ce que vous allez apprendre dans cette leon ...


A quoi sert le cryptage des donnes ?
Utiliser le cryptage de donnes.

Dure estime : 15 mn

276

Partie 4 : Bases de donnes et analyses

A quoi sert le cryptage des donnes ?


Une des nombreuses fonctionnalits de WinDev sur les chiers de donnes HyperFileSQL est de
garantir la condentialit des donnes contenues dans les chiers de donnes HyperFileSQL.
Le cryptage des chiers de donnes permet dassurer cette condentialit.
Le cryptage des chiers de donnes permet den rendre le contenu illisible pour toute personne
ne possdant pas la cl de dcryptage (" Ssame, ouvre toi !"). En effet, un chier de donnes
est crypt selon une cl (appele galement "mot de passe").
Ce mot de passe est (et doit tre) connu de vous seul.
Cest lors de la description du chier de donnes sous lditeur danalyses que vous avez la possibilit de dnir si un cryptage doit tre ralis :
sur le chier de donnes lui-mme
sur lindex
sur les chiers mmos dpendants du chier de donnes.
Il existe plusieurs types de cryptage :
cryptage 128 bits (performant)
cryptage RC5 (128 bits, 12 boucles, moins performant mais plus scuris)
cryptage RC5 (128 bits, 16 boucles, idem)
La cl (ou "mot de passe") que vous allez dnir sera valable uniquement sur le chier de donnes
lui-mme, et non pas pour lanalyse en totalit. Vous avez alors la libert de dnir un cryptage sur
tout ou partie des chiers de donnes de votre analyse.
Les donnes contenues dans le chier de donnes (et/ou dans lindex et/ou dans les chiers
mmos) seront "codes" en fonction de la cl (ou "mot de passe") que vous aurez dnie lors de
la gnration des chiers.
Lors du dcodage du chier de donnes, le mot de passe pourra tre :
demand lutilisateur par lintermdiaire dune bote de dialogue automatiquement gre par
WinDev. Dans ce cas, lutilisateur devra connatre le mot de passe pour utiliser le chier de
donnes.
prsent directement dans le code du programme. Toute personne possdant le programme
pourra utiliser le chier de donnes, mais seulement pour les traitements que vous aurez prvus. Dans ce cas lutilisateur naura pas connaissance du mot de passe.
activ par un mode opratoire avanc : mot de passe lu dans un chier, activ par un traitement
spcial...
La gestion de ce mot de passe incombe totalement au dveloppeur, cest--dire vous ! WinDev se
charge de coder ou dcoder en fonction du mot de passe que vous indiquez.

Partie 4 : Bases de donnes et analyses

277

Comment crypter les fichiers de donnes ?


Mettre en place le cryptage des fichiers de donnes
Nous allons mettre en place le cryptage des donnes sur un des exemples livrs avec ce cours
"WD Gestion Erreurs HFSQL".

"Ouvrez si ncessaire le projet "WD Gestion Erreurs HFSQL.WDP" :


1. Si ncessaire, fermez le projet en cours pour faire apparatre la fentre de bienvenue.
2. Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Gestion des erreurs HyperFileSQL".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Gestion des
erreurs HyperFileSQL".

"Pour utiliser le cryptage sur chier de donnes :


1. Chargez lanalyse de votre projet sous lditeur danalyses : cliquez sur
parmi les boutons
daccs rapide du menu de WinDev.
2. Slectionnez le chier de donnes que vous souhaitez crypter. Dans notre exemple, nous
allons crypter le chier "Produit".
3. Dans la description du chier (option "Description du chier de donnes" du menu contextuel, onglet "Dtail"), choisissez le type de cryptage pour votre chier de donnes, votre mmo
ou votre index.

Vous avez galement la possibilit dactiver la scurit renforce. Grce ce mode, le mot de
passe de cryptage devra tre saisi chaque modication automatique des donnes (nouvelle
installation, mise jour, gnration...).

278

Partie 4 : Bases de donnes et analyses

Lors de la gnration de votre analyse, lassistant vous propose de saisir ou de modier (si vous
aviez dj crypt votre chier de donnes) le mot de passe de cryptage.

Vous obtiendrez alors la liste des chiers de donnes pour lesquels vous avez demand un cryptage. Vous avez la possibilit de slectionner les chiers de donnes crypter, et de saisir les
mots de passe pour chacun des chiers de donnes.

Partie 4 : Bases de donnes et analyses

279

Gestion du cryptage en WLangage


Pour grer un mot de passe de cryptage en WLangage, vous pouvez :
soit indiquer le mot passe avec les fonctions douverture et de cration des chiers de donnes
(fonctions HCration, HCrationSiInexistant, HOuvre).
Exemple dutilisation de la fonction HCrationSiInexistant :
HCrationSiInexistant(Produit, "Motdepasse")
SI HErreurMotDePasse() ALORS
Erreur("Mot de passe invalide")
FIN

soit utiliser la fonction HPasse avant la premire opration de lecture ou dcriture dans le
chier de donnes crypt.
Exemple dutilisation de la fonction HPasse :
// Ouverture dun fichier avec mot de passe et contrle derreur
HPasse(CLIENT, "MotDePasse")
HCrationSiInexistant(Produit)
SI ErreurDtecte ALORS
Erreur("Erreur HyperFileSQL : " + HErreurInfo())
RETOUR
FIN

Pour plus de dtails sur le cryptage des donnes, consultez laide en ligne (mots-cls : "HPasse",
"CryptageFIC", "CryptageMMO", "CryptageNDX").

280

Partie 4 : Bases de donnes et analyses

LEON 4.5. CONCEPTS

AVANCS

Ce que vous allez apprendre dans cette leon ...


La journalisation
Les transactions
La rplication
Les triggers

Dure estime : 15mn

Partie 4 : Bases de donnes et analyses

281

Prsentation
Cette leon va vous prsenter des concepts importants de la gestion dune base de donnes. Le
but de cette leon est de vous prsenter ces concepts, et leur fonctionnement avec une base de
donnes HyperFileSQL.
Pour plus de dtails sur la mise en place de ces fonctionnalits, consultez laide en ligne.

La journalisation
Le journal est un chier particulier qui vous permettra de rpondre aux besoins suivants :
remettre la base de donnes dans ltat o elle tait tel jour telle heure suite un problme physique, des erreurs de traitements ou de saisie, ...
avoir un suivi sur les oprations effectues sur un chier de donnes "sensible" (qui a modi ou consult le chier , par exemple).
grer la rplication (voir "La rplication", page 284)
Le journal est une scurit pour votre base de donnes. Il vous permettra de remettre rapidement
votre base de donnes dans le dernier tat connu avant le problme rencontr, depuis la dernire
sauvegarde, sans avoir tout ressaisir.
Pour plus de dtails sur la journalisation, consultez laide en ligne (mot-cl : "Journalisation").

Les transactions
Une transaction est un ensemble doprations indissociables sur un ou plusieurs chiers de donnes :
soit toutes les oprations de la transaction sont ralises.
soit aucune opration nest ralise.
La gestion des transactions est le meilleur moyen dassurer la cohrence dun ensemble dcritures indissociables sur des chiers de donnesHyperFileSQL.
Les transactions sont galement un moyen sr et able de scuriser vos traitements sur des
chiers HyperFileSQL.

282

Partie 4 : Bases de donnes et analyses

Un exemple simple de la ncessit des transactions pour certains types de


traitements
Lors dune opration bancaire de virement, un compte est dbit pour en crditer un autre. Pendant les oprations qui sont effectues, il peut survenir tout moment une panne sur le rseau
(panne lectrique, dfaillance des systmes informatiques). Cest pourquoi il est alors indispensable de grer ce traitement par une transaction. Si une panne survient, toutes les oprations
effectuer sont alors annules. On ne se retrouve donc pas avec un compte dbit et un compte
non crdit !

Les transactions sur HyperFileSQL


Chaque opration dcriture effectue lors dune transaction est mmorise dans un chier spcial. A tout moment, il est possible dannuler la transaction : toutes les oprations effectues
depuis le dbut de la transaction seront annules.
Les transactions seront annules dans les cas suivants :
erreur du programme.
n de programme.
panne de courant ou arrt brusque de lapplication.

Partie 4 : Bases de donnes et analyses

283

Lorsque lapplication sera relance, la cohrence de la base de donnes pourra tre rtablie :
grce loutil WinDev "WDTRANS".
au premier appel de la fonction HTransactionDbut.
au premier appel de la fonction HTransactionAnnule.
Lorsque les oprations dcriture incluses dans la transaction sont termines, le programme peut
valider les oprations de la transaction.
Pour plus de dtails sur les fonctions de gestion des transactions, consultez laide en ligne (motcl : "Transactions HyperFileSQL").

La rplication
La rplication de donnes est une fonctionnalit trs puissante. La rplication est lopration permettant de maintenir jour des bases de donnes distantes de structures identiques. Chacune
de ces bases de donnes volue indpendamment.
Grce la rplication, les oprations effectues sur chacune des bases de donnes sont reportes sur toutes les autres bases de donnes.
WinDev permet de raliser ces oprations trs simplement.
WinDev propose deux types de rplication :
La rplication journale (base sur la journalisation). Ce type de rplication permet de rpliquer
uniquement des bases de donnes HyperFileSQL entre elles. Ce type de rplication peut tre
mis en place grce aux fonctions WLangage ou grce loutil WDReplic.
La rplication universelle qui permet de rpliquer nimporte quel type de base de donnes (par
exemple une base de donnes HyperFileSQL avec une base de donnes Oracle).
Pour obtenir plus de dtails, consultez laide en ligne (mot-cl : "Rplication")

Les triggers
Un trigger permet de dclencher une action automatiquement lors dune opration dajout, de
modication et de suppression sur un chier de donnes HyperFileSQL.
Lors dune opration (ajout, modication ou suppression) sur un chier de donnes HyperFileSQL,
il est possible dexcuter une action avant ou aprs lexcution de cette opration. Par exemple,
lors dune suppression dans un chier de donnes, il est possible de demander la conrmation de
suppression de lenregistrement.
Pour obtenir plus de dtails, consultez laide en ligne (mot-cl : "Trigger")

284

Partie 4 : Bases de donnes et analyses

LEON 4.6. BASES

EXTERNES

Ce que vous allez apprendre dans cette leon ...


Paramtrer la connexion une base de donnes dans lanalyse
Paramtrer la connexion une base de donnes par programmation

Dure estime : 15 mn

Partie 4 : Bases de donnes et analyses

285

Prsentation
On nommera "Base de donnes externe" tout systme de gestion de base de donnes autre que
HyperFileSQL. Tout programme ralis avec WinDev peut accder trs facilement une base de
donnes autre que HyperFileSQL.
Il faut pour cela dcrire la base de donnes dans une analyse (comme pour HyperFileSQL).
Les modes daccs aux bases de donnes sont :
accs natif
accs via ODBC
accs via OLE DB
accs ODBC via OLE DB
La programmation sera effectue avec les fonctions du WLangage (HLit*) et/ou en utilisant le
langage SQL.

Connexion une base de donnes dans lditeur danalyses


Lors de la cration dun nouveau chier sous lditeur danalyses (bouton "Nouveau Fichier" dans
le volet "Analyse"), choisissez loption "Utiliser des chiers de donnes dune base existante" :

286

Partie 4 : Bases de donnes et analyses

Slectionnez ensuite le type de base de donnes :

Puis, dnissez si les donnes seront converties en HyperFileSQL Classic ou bien si elles restent
dans leur format actuel :

Les paramtres de connexion cette base de donnes externe doivent tre dcrits (nom du serveur ou service, base de donnes, login et mot de passe et le type daccs par exemple Natif, OLE
DB, ODBC).

Partie 4 : Bases de donnes et analyses

287

Toutes ces informations permettent de dnir une connexion dans lanalyse. Cette connexion sera
automatiquement utilise lors de la gnration dun RAD (RAD application complte ou RAD fentre). Tous les chiers de donnes seront lis cette connexion.
Lutilisation dune connexion spcie dans lanalyse est trs confortable pour le dveloppement
de lapplication.
Mais bien souvent, les paramtres utiliss en dveloppement correspondent aux paramtres
dun administrateur, et lapplication cliente doit utiliser un mode de connexion plus scuris (avec
moins de droits).
Il faut donc rednir la connexion. Deux solutions sont envisageables :
Solution 1 : Rednir la connexion spcie dans lanalyse. Cette solution oblige conserver
des donnes "en dur" dans lapplication, et non paramtrables.
Solution 2 : Rednir la connexion spcie par programmation. Cette solution implique lutilisation de deux fonctions du WLangage HOuvreConnexion et HChangeConnexion.

288

Partie 4 : Bases de donnes et analyses

Connexion une base de donnes par programmation


La connexion une base de donnes par programmation se fait laide de deux fonctions du
WLangage :
HOuvreConnexion, qui permet de dcrire les diffrents paramtres de la connexion et de louvrir.
HChangeConnexion, qui permet dassocier une connexion aux diffrents chiers de lanalyse.
Etudions en dtail les manipulations ncessaires la mise en place de la connexion par programmation.
Cration de la connexion : HOuvreConnexion
Le plus simple pour utiliser la fonction HOuvreConnexion est dutiliser lassistant de cette fonction : vous rpondez aux diffrentes questions et le code correspondant est automatiquement
gnr dans votre traitement.
Pour utiliser lassistant de la fonction HOuvreConnexion :
1. Dans lditeur de code, saisissez le nom de la fonction suivi de la parenthse ouvrante :
HOuvreConnexion(

Attention !

2. Cliquez sur loption "Assistant de la fonction HOuvreConnexion" qui apparat. Lassistant se


lance automatiquement. Lassistant demande les diffrents paramtres de la connexion :
Nom de la connexion
Provider
Cryptage
Utilisateur et mot de passe
Serveur et base de donnes
Lutilisateur et le mot de passe donns dans lassistant apparatront directement
dans le code gnr et seront "en dur".
Il peut tre ncessaire de faire une fentre de login an didentier lutilisateur
et dutiliser des variables pour le nom de lutilisateur et son mot de passe. Ces
oprations peuvent tre faites aprs avoir utilis lassistant.

Attention !

3. Lassistant est termin. Validez. Le code correspondant est automatiquement intgr dans
le traitement en cours.
La fonction HOuvreConnexion a permis de dnir une connexion, mais cette connexion nest pas
encore associe aux chiers de donnes.

Pensez tester le rsultat de la fonction HOuvreConnexion. Cette fonction renvoie Faux si la connexion ne peut pas tre ouverte.

Partie 4 : Bases de donnes et analyses

289

Association de la connexion aux fichiers de donnes : HChangeConnexion


Pour associer une connexion un chier, il suft dutiliser la fonction HChangeConnexion. La syntaxe de cette fonction est trs simple :
le premier paramtre correspond au nom du chier ("*" pour tous les chiers de donnes de
lanalyse).
le second paramtre correspond au nom de la connexion utiliser
Exemple :

Notes

HChangeConnexion("*","MaNouvelleConnexion")

290

Il est possible de dcrire autant de connexions que ncessaires.


Un chier peut utiliser une connexion diffrente de la connexion utilise par les
autres chiers prsents dans lanalyse.

Partie 4 : Bases de donnes et analyses

PARTIE 5
Administrer une
base HyperFileSQL
Client/Serveur

LEON 5.1. INTRODUCTION


Ce que vous allez apprendre dans cette leon ...
Principe du Client/Serveur
Pourquoi passer une application en HyperFileSQL Client/Serveur ?

Dure estime : 5 mn

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

293

Prsentation
WinDev permet de crer des applications accdant des bases de donnes HyperFileSQL Client/
Serveur.
Une application HyperFileSQL Client/Serveur consiste excuter lapplication sur diffrents
postes utilisateur (appels machines clientes) et dporter la ou les bases de donnes et les
traitements sur un poste serveur. Ce mode de fonctionnement permet des temps de rponses
plus rapides et plus ables, ainsi quune maintenance de la base de donnes facilite.

WinDev permet de :
crer entirement une application HyperFileSQL Client/Serveur.
modier une application WinDev existante en une application HyperFileSQL Client/Serveur.

294

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

Pourquoi passer une application en mode HyperFileSQL


Client/Serveur ?
Les principaux avantages dune application en mode HyperFileSQL Client/Serveur par rapport
une application en mode HyperFileSQL Classic :
Lutilisation de HyperFileSQL Client/Serveur est plus scurise (utilisation dun login, dun mot
de passe, et dnitions de droits associs aux utilisateurs).
Pas de gestion de rpertoires : tous les chiers de la base de donnes sont regroups au mme
endroit.
Les clients naux ne voient pas les chiers de donnes dans leur explorateur et ne peuvent pas
y accder directement.
Les bases de donnes en mode Client/Serveur peuvent tre utilises par une connexion Internet.

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

295

LEON 5.2. MISE EN PLACE DUNE


APPLICATION CLIENT/SERVEUR
Ce que vous allez apprendre dans cette leon ...
Installation dun serveur HyperFileSQL Local
Cration dune application en mode Client/Serveur
Adaptation dune application pour grer le mode Client/Serveur
Fonctionnalits disponibles en mode Client/Serveur

Dure estime : 10 mn

296

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

Prsentation
Dans cette leon, nous allons effectuer toutes les oprations ncessaires au dveloppement et au
dploiement dune application HyperFileSQL Client/Serveur.

Installation dun serveur HyperFileSQL local

Attention !

La premire opration faire avant de commencer dvelopper une application HyperFileSQL


Client/Serveur consiste installer un serveur HyperFileSQL.
Sur le poste de dveloppement, ce serveur peut tre install en local (cest ce que nous allons
faire). En dploiement, ce serveur peut tre install sur un poste spcique.
Le programme dinstallation du serveur HyperFileSQL est disponible sur le CD de WinDev. Si vous
ne possdez pas ce CD, linstallation du serveur HyperFileSQL est galement disponible sur le site
de PC SOFT (www.pcsoft.fr).
Pour installer le serveur HyperFileSQL en local :
1. Lancez le programme dinstallation de WinDev.
2. Choisissez loption "Installation du Serveur HyperFileSQL C/S".
3. Slectionnez ensuite loption "Installer un serveur HyperFileSQL Client/Serveur".
4. Acceptez la licence.
5. Choisissez la plate-forme (option "Pour Windows sur cette machine").
6. Choisissez loption "Installer un nouveau serveur".
7. Slectionnez le rpertoire dinstallation et indiquez le nom du serveur et le port. Par dfaut,
le port utilis est 4900. Vous pouvez installer le Centre de Contrle HyperFileSQL si celui-ci
nest pas prsent ou accessible depuis votre poste.

Le Centre de Contrle HyperFileSQL est ncessaire la gestion de la base HyperFileSQL Client/Serveur.

8. Linstallation est effectue. Par dfaut, pour se connecter au serveur en mode administrateur, il faut utiliser lutilisateur "admin" sans mot de passe.

Cration dune application en mode HyperFileSQL Client/


Serveur
La cration dune application WinDev HyperFileSQL Client/Serveur se fait de la mme manire
que pour toute application WinDev.
Il est ncessaire de :
1. Crer le projet en demandant crer une nouvelle base de donnes.
2. Crer lanalyse en spciant que les bases de donnes utilises par le projet seront de type
"HyperFileSQL Client/Serveur".
3. Indiquer les caractristiques de la connexion au serveur HyperFileSQL Client/Serveur utiliser.
4. Lors de la cration dun chier sous lanalyse, indiquer que ce chier est en mode Client/
Serveur et prciser la connexion utilise.
Partie 5 : Administrer une base HyperFileSQL Client/Serveur

297

Adaptation dune application HyperFileSQL Classic pour


grer le mode Client/Serveur
Prsentation
La migration dune application HyperFileSQL Classic en mode Client/Serveur est lopration la
plus courante.
WinDev propose plusieurs solutions pour raliser cette migration sur le poste de dveloppement :
raliser la migration depuis lditeur danalyses.
raliser la migration depuis le centre de contrle HyperFileSQL.
Pour mieux se rendre compte des diffrentes tapes, nous allons migrer lapplication de gestion
de comptes que nous avons ralise dans la partie 2 de ce livre, en utilisant la premire mthode.
Migration de lexemple
Une version corrige du projet tudi dans la partie II est disponible avec ce cours dauto-formation. Nous allons migrer ce projet pour le tester en mode Client/Serveur.
Pour migrer le projet :
1. Si ncessaire, fermez le projet en cours.
2. Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation", puis slectionnez "WD
Application avec donnes (Corrig)".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "WD Application
avec donnes (Corrig)").
3. Chargez lanalyse de votre projet sous lditeur danalyses : cliquez sur
parmi les boutons daccs rapide du menu de WinDev. Lditeur danalyses safche.
4. Sous le volet "Analyse", dans le groupe "Connexion", cliquez sur "Nouvelle connexion". Un
assistant souvre, permettant de crer une connexion.
5. Slectionnez le type de connexion crer : "HyperFileSQL Client/Serveur". Passez lcran
suivant :

298

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

6. Indiquez dans les plans suivants :


le nom du serveur (nom de votre machine par exemple) et le numro de port,
le nom de lutilisateur et son mot de passe (laissez ces informations vides pour utiliser ladministrateur),
le nom de la base de donnes ("WD Application avec donnes" dans notre exemple)
le nom de la connexion (conservez le nom propos)
7. Passez lcran suivant. La connexion la base est automatiquement cre. Lassistant
propose dassocier les diffrents chiers de donnes prsents dans lanalyse la connexion
qui vient dtre cre. Validez et slectionnez tous les chiers proposs :

Attention !

Vriez le code de votre projet : en mode HyperFileSQL Client/Serveur, les instructions HSubstRep, HChangeRep, ... sont inutiles.

Notes

Passez lcran suivant.


8. Lassistant propose ensuite de copier les chiers de donnes sur le serveur. Validez (option
"Copier maintenant").
9. Slectionnez les chiers de donnes de lanalyse copier sur le serveur : dans notre cas,
ce sont tous les chiers de donnes du rpertoire EXE. Passez lcran suivant et validez.
10. Les chiers de donnes de lanalyse sont automatiquement transforms en chiers de
donnes HyperFileSQL Client/Serveur et associs la connexion choisie.
11. Gnrez lanalyse.

Selon les paramtres indiqus lors de la cration de la connexion, il est possible


de modier la connexion dnie dans lanalyse grce aux fonctions HOuvreConnexion et HChangeConnexion. Cette manipulation a t vue dans le chapitre
"Bases externes", page 285.
Partie 5 : Administrer une base HyperFileSQL Client/Serveur

299

Notes

La fonction HOuvreConnexion permet toujours de repasser en mode HyperFileSQL Classic : il suft de lui prciser le chemin du rpertoire contenant les
chiers de donnes HyperFileSQL Classic.

12. Vous avez migr le projet de dveloppement. Il peut tre galement ncessaire de migrer
lapplication dploye (par exemple si lapplication dploye utilise des chiers HyperFileSQL
Classic). Cette opration se paramtre lors de la cration du programme dinstallation de lapplication.

Fonctionnalits disponibles en mode HyperFileSQL Client/


Serveur
HyperFileSQL Client/Serveur propose de nombreuses fonctionnalits :
Transactions
Journaux
Procdures stockes
Triggers,
Modication automatique des donnes chaud,
Rindexation chaud,
Sauvegardes planies,
Sauvegardes incrmentielles,
Rplication multi-sites.
Nous ne dtaillerons pas ici ces fonctionnalits (certaines ont t abordes dans ce cours en
mode HyperFileSQL Classic). Nous vous conseillons de consulter laide en ligne pour plus de dtails sur ces sujets.

300

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

LEON 5.3. ADMINISTRER


DONNES CLIENT/SERVEUR

UNE BASE DE

Ce que vous allez apprendre dans cette leon ...


Le Centre de Contrle HyperFileSQL
Crer un utilisateur dans le Centre de Contrle HyperFileSQL
Sauvegarder la base de donnes

Dure estime : 20 mn

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

301

Prsentation
Maintenant que nous savons crer/migrer une application en mode HyperFileSQL Client/Serveur,
nous allons voir comment administrer la base de donnes associe.
En effet, une base de donnes Client/Serveur ncessite :
une conguration spcique des postes (installation dun serveur HyperFileSQL, ...)
une administration ralise grce au Centre de Contrle HyperFileSQL.

Configuration des postes


Pour utiliser une base HyperFileSQL Client/Serveur, il est ncessaire dinstaller un serveur HyperFileSQL sur le poste serveur. Il est possible dutiliser plusieurs serveurs HyperFileSQL sur le mme
poste, utilisant des ports diffrents. Sur chaque serveur, une ou plusieurs bases de donnes
peuvent tre installes.
Par exemple, il est possible dinstaller sur le mme poste un serveur HyperFileSQL de tests, avec
une base de donnes de tests, et un serveur HyperFileSQL de production, utilisant un port diffrent.

Le Centre de Contrle HyperFileSQL


Le Centre de Contrle HyperFileSQL permet de raliser toutes les oprations dadministration des
serveurs et des bases de donnes HyperFileSQL Client/Serveur.
Nous allons voir les fonctionnalits les plus importantes.
Pour lancer le Centre de Contrle HyperFileSQL et accder aux donnes :
1. Dans le menu de WinDev, sous le volet "Outils", dans le groupe "Base de donnes", cliquez
sur "HyperFileSQL". La fentre de bienvenue du Centre de Contrle HyperFileSQL safche.
Lanalyse du projet en cours est automatiquement slectionne.

Validez lcran. Le Centre de Contrle HyperFileSQL apparat.

302

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

2. Cliquez sur loption "Fichier HyperFileSQL Client/Serveur". La liste des chiers de donnes
au format HyperFileSQL Client/Serveur safche.

Le Centre de Contrle liste ici les chiers de donnes trouvs dans lanalyse lie au projet en
cours. Aucune connexion nest ralise.
3. Pour visualiser les donnes des chiers, double-cliquez sur un des chiers de donnes
dans la liste gauche. Le Centre de Contrle HyperFileSQL afche alors une fentre de
connexion permettant de raliser la connexion effective au serveur HyperFileSQL Client/Serveur utilis.

Indiquez si ncessaire le mot de passe et validez.


4. Les diffrentes informations sur les diffrents chiers de donnes utilisant cette connexion
sont afches.
Longlet "Contenu" afche les enregistrements contenus dans les chiers de donnes.
Longlet "Description" prsente les informations sur les chiers de donnes (nombre denregistrements, ...).
Depuis le Centre de Contrle HyperFileSQL, il est possible dadministrer toute la base de donnes HyperFileSQL Client/Serveur.

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

303

Crer un compte utilisateur dans le Centre de Contrle


HyperFileSQL

Attention !

Nous avons vu que lors de linstallation dun serveur HyperFileSQL et lors de la cration dune
base de donnes, un seul compte utilisateur est cr : le compte de ladministrateur (login "Admin" sans mot de passe).
Lutilisation de compte utilisateur permet de scuriser laccs aux donnes. En effet, tous les
utilisateurs de lapplication ne sont pas des administrateurs. A chaque utilisateur (ou groupe dutilisateurs), il est possible dassocier des droits.
Les droits des utilisateurs spcis dans le Centre de Contrle HyperFileSQL sont
des droits de base de donnes et pas des droits dapplication.
Il ne faut pas confondre la gestion des droits des bases de donnes Client/Serveur avec le groupware utilisateur.

Certains utilisateurs peuvent par exemple ne pas avoir le droit dcrire dans certains chiers.
Pour faire un test simple, nous allons crer un utilisateur et lui permettre de consulter les enregistrements du chier COMPTE.
1. Dans le Centre de Contrle HyperFileSQL, cliquez sur licne
et validez si ncessaire
la fermeture des connexions.
2. La fentre de bienvenue dans le Centre de Contrle HyperFileSQL safche.

3. Loption "Se connecter un serveur HyperFileSQL" est slectionne par dfaut. Indiquez les
caractristiques du serveur install dans la leon prcdente.
4. Les caractristiques du serveur HyperFileSQL sont afches :
dans le panneau de gauche, le poste, le nom du serveur HyperFileSQL et la liste des bases
prsentes sur ce serveur sont afches.
dans la partie droite de lcran, les diffrents onglets permettant de grer le serveur HyperFileSQL sont afchs.
5. Dans la partie droite de lcran, slectionnez longlet "Utilisateurs et Groupes". Cet onglet
permet de grer les utilisateurs du serveur.

304

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

Seul pour le moment lutilisateur "Admin" est prsent.

6. Pour crer un nouvel utilisateur, cliquez sur le bouton "Nouveau" (le plus gauche). Lcran
permettant de dnir les caractristiques de lutilisateur apparat.
Saisissez par exemple les informations suivantes :

(utilisez par exemple "Test" galement comme mot de passe).

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

305

Notes

Plusieurs caractristiques peuvent tre notes :


Super Utilisateur : Les utilisateurs dsigns comme "Super utilisateur" sont
autoriss effectuer toutes les actions sur le serveur, les bases de donnes et
sur tous les chiers.
Compte actif : Si cette option nest pas coche, lutilisateur existe mais nest
pas actif (cas des utilisateurs en congs par exemple).
Expiration du mot de passe : Il est possible davoir un mot de passe valide pour
quelques jours.

7. Validez la cration de lutilisateur. Par dfaut, cet utilisateur na aucun droit.


Nous allons maintenant attribuer des droits lutilisateur : lutilisateur "Test" peut se connecter
la base de donnes et consulter le chier COMPTE.
Pour donner le droit de connexion la base de donnes :
1. Dans le Centre de Contrle HyperFileSQL, slectionnez la base de donnes "WD Application
avec donnes".
2. Cliquez sur longlet "Droits".
3. Slectionnez lutilisateur "Test" dans la liste des utilisateurs.
4. Dans la liste des droits, slectionnez "Droit de se connecter au serveur" (connexion crypte
et non crypte). Slectionnez la coche verte dans la colonne "Droit dni".
5. Cliquez sur le bouton "Appliquer" prsent droite de la liste des droits. Le droit devient
effectif.
Pour donner le droit de lire le chier COMPTE :
1. Dans le Centre de Contrle HyperFileSQL, slectionnez la base de donnes "WD Application
avec donnes", puis le chier COMPTE.
2. Cliquez sur longlet "Droits".
3. Slectionnez lutilisateur "Test" dans la liste des utilisateurs.
4. Dans la liste des droits, slectionnez "Droit de lire les enregistrements dun chier" et slectionnez la coche verte dans la colonne "Droit dni".
5. Cliquez sur le bouton "Appliquer" prsent droite de la liste des droits. Le droit devient
effectif.
De cette faon, il est possible de dnir des droits :
sur le serveur HyperFileSQL
sur la base de donnes
sur les chiers de la base de donnes.

306

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

Notes

Dans notre exemple, lutilisateur "Test" pourra uniquement parcourir les enregistrements du chier COMPTE. Si cet utilisateur tente une autre action, un message safchera : "Lutilisateur Test
na pas les droits sufsants pour XXXX" (o XXXX correspond laction effectue).
Une fois le compte cr, il peut tre utilis lors de la connexion de lapplication au serveur (quand
la fonction HOuvreConnexion est utilise).
La gestion des utilisateurs et de leurs droits peut galement tre effectue par
programmation grce aux fonctions WLangage. Pour plus de dtails, consultez
laide en ligne.

Sauvegarder la base de donnes


La sauvegarde de la base de donnes peut tre ralise directement grce longlet "Sauvegardes". Cet onglet est disponible lors de la slection de la base de donnes dans le volet gauche
du Centre de Contrle HyperFileSQL.

Conclusion
Le Centre de Contrle HyperFileSQL est un outil complet dadministration de base de donnes,
permettant entre autres :
darrter ou de redmarrer un serveur en cas de problme.
de grer les utilisateurs et leurs droits
de rindexer les chiers de donnes si ncessaire
de faire des sauvegardes de la base.
Le Centre de Contrle HyperFileSQL est un outil redistribuable qui peut tre install chez les
clients possdant des bases de donnes HyperFileSQL Client/Serveur. Le Centre de Contrle
HyperFileSQL doit tre utilis par la personne administrant la base de donnes.
Partie 5 : Administrer une base HyperFileSQL Client/Serveur

307

LEON 5.4. INSTALLATION

EN CLIENTLE

Ce que vous allez apprendre dans cette leon ...


Comment installer une application Client/Serveur en clientle ?

Dure estime : 5 mn

308

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

Prsentation
Linstallation dune application Client/Serveur ncessite plusieurs options spciques. Ces options sont prises en charge par lassistant de cration dinstallation de WinDev.
Nous allons crer la procdure dinstallation de notre application "WD Application avec donnes".

Lancement de lassistant de cration dinstallation


Pour lancer la procdure dinstallation dune application HyperFileSQL Client/Serveur :
1. Afchez le tableau de bord du projet (effectuez un clic droit sur licone "P" dans la barre des
documents ouverts, et slectionnez "Afcher le tableau de bord".

2. Sous le volet "Projet", dans le groupe "Gnration", cliquez sur "Procdure dinstallation".
3. Crez lexcutable et validez la cration de laide.

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

309

4. Allez jusqu lcran "Paramtres des bases de donnes". Dans ce plan, il est possible de :
Intgrer linstallation dun serveur HyperFileSQL Client/Serveur
Paramtrer les connexions HyperFileSQL Client/Serveur
Dployer les chiers HyperFileSQL Client/Serveur

Si ces options sont coches, les crans suivants permettent de paramtrer les diffrents
lments prendre en compte pour linstallation en clientle.
Pour plus de dtails, consultez laide en ligne.

310

Partie 5 : Administrer une base HyperFileSQL Client/Serveur

PARTIE 6
Requtes

LEON 6.1. CREZ

UNE REQUTE DE SLEC-

TION
Ce que vous allez apprendre dans cette leon ...
Manipulations de lditeur de requtes.
Etape par tape, la ralisation dune requte.

Dure estime : 30mn

Partie 6 : Requtes

313

Introduction
Une requte permet de dnir une interrogation sur des chiers de donnes. Lditeur de requtes
vous permettra par exemple de dcrire sans aucune programmation des interrogations du type :
la liste des fournisseurs habitant une ville dont le nom commence par la lettre "P".
le nombre dannonces par ville.
la liste des clients qui ont le plus command.
Et ce, sur tous les types de bases (HyperFileSQL, Oracle, ...) !
Nous allons voir avec un exemple simple comment manipuler lditeur de requtes. Plus loin dans
ce cours, nous verrons une utilisation avance de lditeur de requtes.
Dans cette leon, vous verrez comment :
Faire une requte simple correspondant une liste avec une slection et un tri.
Faire une requte de comptage.
Faire une requte multi-chiers.

"Pour ouvrir le projet exemple :


1. Si ncessaire, fermez le projet en cours pour faire apparatre la fentre de bienvenue.
2. Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Faire des requtes (Exercice)".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire des
requtes (Exercice)".

"Faites un "Go" du projet "WD Faire des requtes.WDP". Le programme se lance. La fentre
ci-dessous apparat.

Corrig

Vous pouvez parcourir les diffrentes options du menu et choisir des exemples de requtes.

314

Un projet corrig est disponible. Ce projet contient les diffrentes requtes


cres dans cette leon. Pour ouvrir le projet corrig, sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dauto-formation" puis slectionnez
"Faire des requtes (Corrig)".

Partie 6 : Requtes

Exemple

Lexemple "Requtes" (exemple didactique) livr avec WinDev illustre lutilisation


des requtes avec WinDev. Cet exemple est accessible depuis le volet "Assistants, Exemples et Composants" de WinDev.

Votre premire requte


Nous allons lister les fournisseurs habitant une ville dont le nom commence par la lettre "P".

"Crez une nouvelle requte :


1. Cliquez sur
parmi les boutons daccs rapide.
2. Dans la roue qui safche, cliquez sur "Requte". Lassistant de cration de requtes se
lance :

Attention !

Vous avez la possibilit dutiliser lassistant de cration de requtes ou de saisir directement le


code SQL de la requte (option "Code SQL").
Avec lassistant, vous pouvez raliser des requtes de type :
"Slection (SELECT)" : interrogation
"Ajout (INSERT)" : ajout dans un chier de donnes
"Modication (UPDATE)" : modication dans un chier de donnes
"Suppression (DELETE)" : suppression dans un chier de donnes
"Union (UNION)" : combinaison de requtes de slection
La saisie directe de code SQL est destine aux utilisateurs matrisant le langage
SQL ! Consultez laide en ligne pour obtenir la liste des fonctions SQL reconnues
par WinDev (mot-cl : "SQL, Langage SQL").

Partie 6 : Requtes

315

Vous allez apprendre utiliser lditeur de requtes en effectuant des requtes simples : slections de clients, comptages ... vous pourrez ensuite approfondir vos connaissances en manipulant
et en testant tous les types de requtes.

"Pour lister les fournisseurs habitant une ville dont le nom commence par la lettre "P", nous
allons raliser une requte de slection. Passez lcran suivant.

"Slectionnez les rubriques qui constitueront le rsultat de la requte.


Dans la liste de gauche :
1. Double-cliquez sur le chier "FOURNISSEUR".
2. Double-cliquez sur les rubriques "Societe", "NomFournisseur", "CodePostal" et "Ville". Ces
rubriques apparaissent au milieu de la fentre.

"Pour obtenir les fournisseurs prsents dans une ville dont le nom commence par "P", nous
allons appliquer une condition de slection sur la ville.
La condition de slection est la suivante : "Nous dsirons les fournisseurs situs dans une
ville commenant par P".

"Slectionnez la rubrique "Ville" au centre. Dans les "Actions" sur la droite, cliquez sur le
bouton "Condition de slection" puis sur "Nouvelle condition".
La rubrique "FOURNISSEUR.Ville" est automatiquement slectionne.
Slectionnez la condition : "commence par".
Slectionnez loption "la valeur".
316

Partie 6 : Requtes

"Saisissez la valeur "P" et validez.


"Nous allons maintenant indiquer le critre de tri.
Nous allons trier le rsultat par "NomFournisseur".

"Slectionnez la rubrique "NomFournisseur" au centre puis cliquez dans les "Actions" sur le
bouton "Trier" et slectionnez loption "Trier sur la rubrique slectionne".
Le tri sera croissant :

"Validez. Une che rouge avec le numro 01 apparat la droite de la rubrique "NOMFOURNISSEUR". Cette che indique quun tri croissant est fait sur cette rubrique. Le chiffre "01"
indique que ce sera le premier tri ralis.

"La requte est cre. Nous allons lui donner un nom et la sauvegarder.
1. En haut de lcran, saisissez le nom "REQ_FournisseurVilleP".
2. Saisissez le libell "Fournisseurs dans une ville commenant par P".
3. Validez.

Partie 6 : Requtes

317

"La reprsentation graphique de la requte est la suivante :

"Cliquez sur

(parmi les boutons daccs rapide) pour sauvegarder la requte. Validez la


fentre de sauvegarde. Il ne reste plus qu tester la requte.

318

Partie 6 : Requtes

"Cliquez sur le bouton "GO" parmi les boutons daccs rapide. Le rsultat safche dans une
table :

Si vous faites un clic droit sur la table afchant le rsultat de la requte, un menu contextuel apparat. Vous avez alors la possibilit dexporter le rsultat vers :
Microsoft Excel.
un chier XML (eXtensible Markup Language)
Microsoft Word.

Partie 6 : Requtes

319

LEON 6.2. REQUTES

AVEC COMPTAGE

Ce que vous allez apprendre dans cette leon ...


Manipulations de lditeur de requtes.
Etape par tape, la ralisation dune requte avec comptage.

Dure estime : 20mn

320

Partie 6 : Requtes

Ralisation dune requte avec comptage


Nous allons maintenant crer une requte qui effectue un comptage. Cette requte permet de
comptabiliser le nombre doccurrences dune valeur dans un chier de donnes.
Nous allons compter le nombre de clients par ville.

"Si ncessaire, ouvrez le projet exemple, "WD Faire des requtes" : sous le volet "Accueil",
dans le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption
"Faire des requtes (Exercice)".

"Crez une nouvelle requte :


1. Cliquez sur
parmi les boutons daccs rapide.
2. Dans la roue qui safche, cliquez sur "Requte". Lassistant de cration de requtes se
lance. Nous allons raliser une requte de "slection" (Option "Slection").

3. Passez lcran suivant. Nous allons slectionner les rubriques rcuprer dans le rsultat de la requte.

"Nous devons afcher la ville. Dans la liste de gauche (liste des chiers de donnes et des
requtes disponibles), slectionnez la rubrique "Ville" du chier "CLIENT" (par un double-clic).

"Pour crer une rubrique de comptage :


1. Slectionnez au centre la rubrique "Ville"
2. Cliquez dans les "Actions" sur le bouton "Compter".
3. Slectionnez dans le menu : "Compter sur la rubrique slectionne".
4. Validez.

Partie 6 : Requtes

321

Laction "Compter les enregistrements" est ajoute dans le rsultat de la requte.


Comme nous voulons afcher toutes les villes, slectionnez nouveau la rubrique "VILLE" du chier "CLIENT" (par un double-clic). La rubrique est afche au centre de lcran.

"La requte est cre. Nous allons lui donner un nom et la sauvegarder.
1. En haut de lcran, saisissez le nom "REQ_NbClientparVille".
2. Saisissez le libell "Nombre de clients par ville".
3. Validez.
La reprsentation graphique de la requte est la suivante :

La rubrique "Comptage_1" contient le comptage des enregistrements dcrit plus haut.

"Cliquez sur
"Cliquez sur
322

pour sauvegarder la requte. Il ne reste plus qu tester la requte.


.

Partie 6 : Requtes

LEON 6.3. REQUTES SOMME


Ce que vous allez apprendre dans cette leon ...
Manipulations de lditeur de requtes.
Etape par tape, la ralisation dune requte "Somme".

Dure estime : 20mn

Partie 6 : Requtes

323

Ralisation dune requte "Somme"


Nous allons maintenant crer une requte qui effectue une somme. Nous allons faire un cumul
dune valeur dun chier de donnes.
Nous allons calculer le total de toutes les commandes par client (le Chiffre dAffaires par client).

"Si ncessaire, ouvrez le projet exemple, "WD Faire des requtes" : sous le volet "Accueil",
dans le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption
"Faire des requtes (Exercice)".

"Crez une nouvelle requte :


1. Cliquez sur
parmi les boutons daccs rapide.
2. Dans la roue qui safche, cliquez sur "Requte".
3. Nous allons raliser une requte de slection. Slectionnez loption "Slectionner (SELECT)". Passez lcran suivant.
Nous allons slectionner les rubriques rcuprer dans le rsultat de la requte.
Nous afcherons tout dabord le nom du client et la ville du client.

"Sur la gauche, slectionnez les rubriques "NomClient" et "Ville" du chier "CLIENT" (par un
double-clic).
Ensuite, nous devons slectionner la rubrique sur laquelle nous allons faire la somme (MontantTotal dans cet exemple).

"Sur la gauche, slectionnez la rubrique "MontantTotal" du chier "COMMANDE" (par un


double-clic).

"Pour effectuer la somme des valeurs de "MontantTotal" :


1. Slectionnez la rubrique "MontantTotal" au centre.
2. Dans les "Actions", sur la droite, slectionnez "Somme".

324

Partie 6 : Requtes

3. Validez.
La somme des "MontantTotal" a t ajoute dans la liste du rsultat de la requte.
Au fur et mesure de la cration de la requte, lditeur de requtes de WinDev cre les requtes
en langage naturel (et galement en SQL).

Vous pouvez ainsi vrier que vous ne vous tes pas tromp par rapport lobjectif de votre requte.

"La requte est cre. Nous allons lui donner un nom et la sauvegarder.
1. En haut de lcran, saisissez le nom "REQ_CAparClient".
2. Saisissez le libell "Somme des commandes par client".
3. Validez.
La reprsentation graphique de la requte est la suivante :

La reprsentation graphique correspond une "jointure". La requte utilise deux sources de donnes (les chiers "CLIENT" et "COMMANDE").

"Cliquez sur
"Cliquez sur

pour sauvegarder la requte. Il ne reste plus qu tester la requte.


pour tester la requte.

Partie 6 : Requtes

325

LEON 6.4. LE

LANGAGE

SQL

Ce que vous allez apprendre dans cette leon ...


Les principaux ordres du langage SQL.

Dure estime : 15mn

326

Partie 6 : Requtes

Code source dune requte


Dans WinDev, la requte est reprsente dans lditeur sous une forme graphique. Nous allons
dcouvrir maintenant le code source correspondant une requte. Le langage utilis pour prsenter une requte est le langage SQL. Il sagit ici dune prsentation de SQL et non pas dun cours
complet (il existe des livres entiers sur le sujet !).
Nous allons visualiser le code source SQL de la requte cre dans la leon prcdente.

"Ouvrez la requte "REQ_CAparClient".


Si vous navez pas prcdemment cr cette requte, ouvrez la requte "REQ_SommeCommandeParClient".

"Afchez le menu contextuel du graphe de la requte et slectionnez loption "Code SQL".

Attention !

La requte en langage SQL est compose de diffrents mots-cls :


linstruction SELECT
linstruction FROM
la clause WHERE
la clause GROUP BY

Veillez bien respecter lenchanement de ces ordres. Vous ne pouvez pas inverser cet enchanement.

WinDev permet de passer trs simplement de la description graphique dune requte au code
SQL de cette requte et inversement.
Pour afcher le code SQL dune requte cre sous lditeur de requtes, slectionnez loption
"Code SQL" du menu contextuel du graphe de la requte.
Pour afcher la reprsentation graphique dune requte cre en code SQL, sous le volet "Requte", dans le groupe "Analyser", cliquez sur "Rtro-Analyse de la requte".
Partie 6 : Requtes

327

Les ordres SQL


Linstruction SELECT
Linstruction SELECT permet de dnir la liste des rubriques et des calculs visualiser dans le
rsultat. La syntaxe est la suivante :
SELECT NOMRUBRIQUE1, NOMRUBRIQUE2 ...

Chaque rubrique peut tre renomme (on parle dalias) en utilisant le mot-cl AS. Par exemple :
CLIENT.NOMCLIENT AS NOM

Dans cet exemple, la rubrique NomClient du chier CLIENT est renomme en Nom.
NomRubriqueXX peut tre soit une rubrique associe un chier de donnes, soit une formule
de calcul.

Linstruction FROM
Linstruction FROM permet de dnir la liste des chiers de donnes partir desquels seront
extraits les rubriques et les calculs. La syntaxe est la suivante :
FROM FICHIER1, FICHIER2 ...

FichierXX correspond un des chiers de donnes prsent dans lanalyse. Lutilisation de AS est
possible.

La clause WHERE
La clause WHERE contient les conditions de slection ainsi que les conditions de jointure. Ces
conditions permettent de ltrer les enregistrements issus des chiers de la base de donnes.
Seuls les enregistrements vriant la ou les conditions seront rcuprs dans le rsultat.
Une jointure permet de faire correspondre un enregistrement dun chier lenregistrement dun
chier reli. Par exemple, une jointure entre les chiers CLIENT et COMMANDE permettra de
connatre toutes les commandes de chaque client.
La syntaxe est la suivante :
WHERE CONDITION1 ET/OU CONDITION2

Les oprateurs ET et OU permettent de raliser une opration logique entre deux conditions.
Loprateur ET indique que les deux conditions doivent tre vries en mme temps.
Loprateur OU indique quune des deux conditions ou les deux conditions doivent tre vries.
La clause WHERE nest pas obligatoire. Si ce mot-cl nest pas indiqu, tous les enregistrements
de tous les chiers de donnes seront slectionns.

328

Partie 6 : Requtes

La clause GROUP BY
La clause GROUP BY permet dindiquer les rubriques ou formules de regroupement lorsquil y a
un calcul. Par exemple, dans la requte que nous avons ralise prcdemment, le calcul portait
sur la somme des commandes par client; cest--dire que les commandes taient cumules pour
chaque client. Le regroupement des commandes tait donc ralis par client.
La syntaxe est la suivante :
GROUP BY RUBRIQUE1, RUBRIQUE2 ...

RubriqueXX correspond une rubrique dun des chiers de donnes ou une formule.

La clause ORDER BY
La clause ORDER BY permet dindiquer les critres de tri de la requte. Les critres de tri permettront de classer le rsultat de la requte.
La syntaxe est la suivante :
ORDER BY RUBRIQUE1, RUBRIQUE2 ...

Notes

RubriqueXX correspond une rubrique dun des chiers de donnes ou une formule.

Lditeur de requtes gnre automatiquement le code SQL. Cest galement un


moyen didactique de se former ce langage !

Partie 6 : Requtes

329

LEON 6.5. UTILISATION

DES

REQUTES

Ce que vous allez apprendre dans cette leon ...


Utilisation des requtes dans les tats.
Utilisation des requtes dans les champs (listes, combos, tables, zones rptes).
Utilisation des requtes en WLangage.

Dure estime : 15mn

330

Partie 6 : Requtes

Utilisation dune requte depuis un tat


Lors de la cration dun tat, vous pouvez choisir la source de donnes. La source de donnes
peut tre une requte, un chier de donnes, ... Il est possible de faire un tat qui travaille directement sur le rsultat dune requte (pour plus de dtails, consultez la leon sur les tats, page
335).

Utilisation dune requte depuis un champ


Comme pour les tats, lors de la cration dun champ table, dune liste, dune combo ou dune
zone rpte, il est possible de dnir la source de donnes pour le remplissage. Cette source
peut tre un chier de donnes ou une requte.

Utilisation dune requte depuis le WLangage


Vous pouvez galement utiliser une requte comme si vous utilisiez un chier de donnes. Vous
devez uniquement initialiser lexcution de votre requte avec la fonction HExcuteRequte.
Lorsque votre parcours est termin, utilisez la fonction HAnnuleDclaration. Cette fonction optionnelle permet dannuler la dnition de la requte. Votre parcours peut seffectuer normalement
avec les fonctions HLitPremier et HLitSuivant :

Notes

// Initialise la requte
HExcuteRequte(MaRequte)
SI ErreurDtecte ALORS
Erreur("Erreur dinitialisation de la requte"+RC+...
HErreurInfo())
RETOUR
FIN
// Parcours des enregistrements de la requte
POUT TOUT MaRequte
// Traitement sur lenregistrement de la requte
FIN
HAnnuleDclaration(MaRequte) //optionnel

Offrez la possibilit aux utilisateurs de vos applications de crer eux-mmes leurs


tats et requtes (ou de modier des tats ou des requtes que vous mettez
leur disposition) !
Il suft de livrer le logiciel "Etats et requtes" avec votre application. Pour plus de
dtails, consultez le chapitre "Diffusez "Etats & Requtes" avec vos applications",
page 369.

Partie 6 : Requtes

331

332

Partie 6 : Requtes

PARTIE 7
Etats

LEON 7.1. VOTRE

PREMIER ETAT

Ce que vous allez apprendre dans cette leon ...


Vocabulaire de base.
Etape par tape, la construction dun tat.

Dure estime : 30mn

Partie 7 : Etats

335

Vocabulaire de base
Avant daborder les mthodes dimpression, il est important de rappeler le vocabulaire de base
pour faire bonne impression !
Fonte : La fonte dnit la forme du caractre (paisseur de trait, espacement entre caractres, ...). Par exemple, ce document est imprim en fonte "Franklin Gothic" (les exemples de
programme en fonte "Courier").
Les fontes sont frquemment appeles polices par "abus" de langage : nous parlerons donc
plutt de police que de fonte.
Style : Le style peut tre italique, gras, soulign, ... Il ne modie pas la hauteur des caractres.
Hauteur du caractre : La hauteur du caractre sexprime en "point Didot". Un point vaut
0,3759 mm. Cest une unit utilise en imprimerie. La hauteur des caractres de ce manuel
est par exemple de 10 points. Les hauteurs de 10 et 12 points sont des hauteurs courantes
pour des documents habituels. La hauteur des caractres est indpendante de la dnition de
limprimante.
Une hauteur de 16 ou 24 points permet de mettre en valeur un titre.
Une hauteur de 6 points sera difcilement lisible, surtout si la dnition de limprimante est
mauvaise.
Police : La police est la forme avec laquelle le texte sera imprim. Elle correspond la combinaison de la fonte, du style, de la hauteur et de la couleur du caractre.
Dnition de limprimante : Chaque imprimante a une dnition propre. Plus la dnition est
importante, plus convenable sera limpression. Par exemple, une imprimante 600 DPI (dots
per inch) fournira des impressions plus nettes quune imprimante 300 DPI. Le type dimpression (laser, jet dencre, matricielle 8 ou 24 aiguilles,...) inue galement sur la qualit dimpression. La qualit du papier galement, il ne faut pas loublier !
Proportionnelle / Fixe : Une police "xe" prsentera toujours la mme largeur de caractre, quel
que soit le caractre. Un "i" aura la mme taille quun "m". Une police xe bien connue est "Courier".
Une police "proportionnelle" utilisera une taille diffrente en fonction des lettres. Cette documentation est crite dans une police proportionnelle.
Un Etat est le nom donn la reprsentation dune dition. WinDev vous permet de construire
des tats. Lors de lexcution (ou de ldition) de ltat, un document est cr.

336

Partie 7 : Etats

Il existe diffrentes formes dtats :


Vierge
Fiche
Etiquette
Tableau
Tableau crois
Etat multicolonne
Mailing
Formulaire
Composite
Agenda ou planning

Un Bloc est le nom donn une partie de ltat. Un tat est constitu dun ensemble de blocs. Les
diffrents blocs dun tat sont les suivants :
dbut de document
haut de page
haut de rupture
corps
bas de rupture
bas de page
n de document

Il existe galement dautres blocs que nous ne dtaillerons pas ici :


bloc ditration
complment de corps
Ces diffrents blocs ne sont pas tous obligatoires. Ils peuvent tre supprims lors de la conception de ltat. Seul le bloc "Corps" est obligatoire.
Vous avez galement la possibilit dimprimer des tats avec codes-barres (automatiquement
gnrs par WinDev), des tats avec tiquettes, des tats multi-colonnes, ...

Partie 7 : Etats

337

Prsentation
Imprimer avec lditeur dtats ou imprimer en WLangage
WinDev propose deux mthodes dimpression :
lditeur dtats qui permet de crer des tats imprims dune faon "conviviale".
par programmation en WLangage.
Par exemple, il est courant dimprimer une liste dont les donnes proviennent dun chier.
Pour imprimer le contenu dun chier de donnes, lutilisation de lditeur dtats est conseille.
Vous dcouvrirez plus loin dans ce guide comment effectuer une impression par programmation.
Nous allons tout dabord tudier quelques exemples dtats raliss avec lditeur dtats, ensuite
nous verrons en dtail comment les raliser.
Quelques exemples dtats

"Fermez si ncessaire le projet en cours. La fentre de bienvenue apparat.


"Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Faire des ditions (Exercice)". Le projet se charge.
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire des
ditions (Exercice)".

"Lancez le test du projet (


fentre ci dessous

parmi les boutons daccs rapide). Le programme se lance. La


apparat.

Parcourez les diffrentes options du menu et testez les diffrentes ditions.

Corrig

"Terminez le test et revenez sous lditeur.

338

Un projet corrig est disponible. Ce projet contient les diffrentes requtes


cres dans cette leon. Pour ouvrir le projet corrig, sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dauto-formation" puis slectionnez
"Faire des ditions (Corrig)".

Partie 7 : Etats

Maintenant, passons la ralisation !

Pour apprendre utiliser lditeur dtats, nous allons crer quelques ditions dans le projet que
vous venez douvrir.
Ce projet utilise des chiers de donnes. An de vous familiariser rapidement avec les donnes,
nous avons pris pour exemple des chiers de donnes simples :
un chier CLIENT
un chier COMMANDE
un chier LIGNECDE
un chier PRODUIT
un chier FOURNISSEUR
Ci-dessous la modlisation logique (MERISE) des donnes utilises (appele MLD) :

Les tats crer


Pour apprendre utiliser lditeur dtats, nous allons crer les exemples suivants :
Liste des clients trie par ville
Impression des commandes par client

Cration de votre premier tat


Cration de ltat : Liste des clients trie par ville
Nous allons imprimer la liste des clients trie par ville. Pour cela, nous allons utiliser un tat de
type tableau, qui permet de reprsenter clairement une liste de donnes.

Partie 7 : Etats

339

"Pour crer un tat :


1. Cliquez sur le bouton
parmi les boutons daccs rapide.
2. Dans la roue qui safche, cliquez sur "Etat". Lassistant de cration dtats se lance. Lassistant de cration dtats propose plusieurs types dtats :

"Slectionnez "Tableau". Passez lcran suivant.


"Slectionnez la source des donnes de ltat.

Ltat va tre bas sur une requte qui nexiste pas encore. Slectionnez "Dune nouvelle
requte". Passez lcran suivant.

"Lassistant de description dune requte safche. Cet cran permet de slectionner les
chiers contenant les donnes imprimer. Nous allons imprimer des donnes provenant du
chier CLIENT.
340

Partie 7 : Etats

"Cliquez sur le signe "+" gauche du chier CLIENT. Slectionnez les rubriques imprimer
(par un double-clic) :
NomClient
CodePostal
Ville
IdClient

"Pour trier les clients par ville, il faut choisir un critre de tri :
1. Slectionnez la rubrique trier : cliquez sur "Ville" au milieu de lcran.
2. Cliquez en haut droite sur le bouton "Trier". Choisissez loption "Trier sur la rubrique slectionne".

3. Choisissez "Croissant" et validez. Une che rouge apparat droite de la rubrique "Ville"
ainsi que le numro "01". Cette che indique quun tri croissant est fait sur cette rubrique. Le
numro "01" indique que ce tri sera le premier tri effectu.
Partie 7 : Etats

341

"Nous allons valider cet cran. Passez lcran suivant.


Lassistant demande dindiquer sil y a une rupture.

Notes

Quest-ce quune rupture ?


Une Rupture est une opration qui consiste regrouper des enregistrements (ou
lignes) suivant un ou plusieurs critres. Attention, les enregistrements (ou lignes)
sont bien entendu imprims.
Une rupture est OBLIGATOIREMENT lie un tri.
Notez la prsence dun en-tte de rupture et dune n de rupture.
Les informations communes aux diffrentes lignes sont prsentes dans len-tte
de rupture.
Les totaux, compteurs, ... sont prsents dans la n de rupture.
Cette rupture permet de regrouper une srie denregistrements par rapport un
mme critre. Dans notre exemple, la rupture concerne le code postal et permet
de regrouper tous les clients dune mme commune.

"Rpondez "Oui". Passez lcran suivant.

342

Partie 7 : Etats

"La rupture seffectue sur la ville. Passez lcran suivant.


"Vous allez ensuite indiquer dans quel ordre sont imprimes les rubriques et leur rpartition
dans les diffrents blocs.
Dans notre exemple, le code postal et la ville seront dans le bloc "haut de rupture 1" et le
nom dans le corps.
Dans la colonne de droite, slectionnez "haut de rupture 1" pour "CodePostal".
Dcochez la rubrique "IdClient".

Les ches situes droite du tableau permettent de modier lordre des rubriques. Vous
pouvez par exemple afcher la ville avant le nom.

"Passez lcran suivant. Cet cran permet de dnir la mise en page de ltat.
Partie 7 : Etats

343

Notes

Nous garderons les valeurs par dfaut avec lorientation "Portrait".


Marges dimpression
Lors du choix des marges dimpression, noubliez pas de tenir compte des
marges physiques des imprimantes. Les marges physiques sont les marges
rserves par limprimante dans lesquelles il nest pas possible dimprimer. De
plus, les marges physiques diffrent en fonction des modles dimprimante.

"Passez lcran suivant.


"Slectionnez par exemple le gabarit "Elegant". Passez lcran suivant.

344

Partie 7 : Etats

"Il ne nous reste plus qu donner un nom et un libell ltat et le sauvegarder.


1. Saisissez le nom "ETAT_ClientParVille".
2. Saisissez le titre "Liste des clients par ville".
3. Validez.

4. Enregistrez ltat dans le dossier par dfaut. Validez la fentre denregistrement. Ltat est
termin. Nous allons immdiatement le tester pour voir le rsultat.

"Excutez cet tat en cliquant sur

parmi les boutons daccs rapide.

La destination de limpression peut tre au choix :

Partie 7 : Etats

345

"Choisissez "Aperu avant impression" et validez.


Lexcution de ltat safche lcran.

Vous pouvez :
Directement imprimer la page en cours ou la totalit du document en cliquant sur limpri.
mante
Crer un duplicata.
Slectionner un niveau de zoom plus ou moins important avec les icnes
.
Enregistrer ltat sous forme dun document Word (au format RTF).
Enregistrer ltat au format HTML.
Enregistrer ltat au format PDF.
Enregistrer ltat au format XML.
Crer un e-mail avec ltat au format HTML en corps du message.
Crer un e-mail avec ltat au format PDF en document li.
Annoter le document.
Effectuer une recherche dans le document.
Ajouter des ligranes.

346

Partie 7 : Etats

LEON 7.2. ETATS

STATISTIQUES

Ce que vous allez apprendre dans cette leon ...


Lier plusieurs chiers de donnes dans un tat.
Faire des regroupements dans un tat.

Dure estime : 30mn

Partie 7 : Etats

347

Prsentation
Nous allons maintenant diter la liste des commandes par client. Cette liste sera trie sur le nom
du client. Pour chaque client, nous imprimons la commande et le dtail de la commande (lignes)
avec un sous-total pour chaque commande. Nous cherchons obtenir un rsultat semblable la
reprsentation ci-dessous :

Ltat que nous allons raliser utilise plusieurs chiers de donnes comme source.

Etape par tape

"Si ncessaire, ouvrez le projet exemple, "WD Faire des ditions" : sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire
des ditions (Exercice)". Le projet se charge.

348

Partie 7 : Etats

"Pour crer un nouvel tat :


1. Cliquez sur
parmi les boutons daccs rapide.
2. Dans la roue qui safche, cliquez sur "Etat". Lassistant de cration dtats se lance.

"Slectionnez "Tableau" et passez lcran suivant.


"Slectionnez "Dune nouvelle requte" et passez lcran suivant. La requte nexistant pas,
nous allons la crer.

Nous allons imprimer des donnes provenant des chiers CLIENT, COMMANDE, PRODUIT et
LIGNECDE.

Partie 7 : Etats

349

"Slectionnez les rubriques suivantes imprimer (par un double-clic) :


Le chier CLIENT :
NomClient
RaisonSociale
CodePostal
Ville
Le chier COMMANDE :
IdCommande
DateCommande
Le chier PRODUIT :
Descriptif
Le chier LIGNECDE :
Reference
QteCommandee
Montant

Nous allons trier les rsultats par nom de client et par numro de commande.

350

Partie 7 : Etats

"Dans la liste au centre, slectionnez la premire rubrique sur laquelle vous dsirez effectuer
un tri :
1. Cliquez sur la rubrique "NomClient". Dans le menu contextuel (clic droit de la souris), slectionnez "Trier la rubrique .. Trier par ordre croissant".
2. Cliquez ensuite sur la rubrique "IdCommande". Dans le menu contextuel (clic droit de la
souris), slectionnez "Trier la rubrique .. Trier par ordre croissant".
Une che rouge apparat droite des rubriques "NomClient" et "IdCommande". Le chiffre situ
ct de chaque che indique lordre de priorit des tris.

"Nous allons valider cet cran. Passez lcran suivant.


"Nous allons maintenant indiquer les ruptures. Choisissez "Oui". Passez lcran suivant.

Par dfaut, une rupture est propose sur les rubriques "NomClient" et "IdCommande", car ce sont
les critres de tri dj dnis.

Partie 7 : Etats

351

"Dslectionnez la rubrique NomClient (cliquez sur la coche).

Passez lcran suivant.


Vous allez ensuite dnir la rpartition des rubriques.
Les informations concernant le client seront dans le haut de rupture 1. Le corps de ldition
concerne le dtail de chaque commande.

"Rpartissez les rubriques comme indiqu dans limage ci-dessous :

"Passez lcran suivant.

352

Partie 7 : Etats

Il faut maintenant indiquer sil y a des sommes ou des comptages dans ltat. Nous allons additionner le montant des lignes de commandes.
Cette somme sera place dans une rupture. Nous allons conserver uniquement la somme sur le
montant. Vous allez indiquer quil ny a aucun calcul sur la quantit en choisissant "Aucun calcul"
dans la colonne "Calcul".

"Passez lcran suivant.


"Nous conserverons les paramtres par dfaut pour le format de la page.
"Passez lcran suivant.
"Choisissez un gabarit et passez lcran suivant
"Donnez pour terminer :
un nom ltat : "ETAT_CommandesParClient".
un libell : "Liste des commandes par client"

Partie 7 : Etats

353

"Validez. Ltat tant trop grand, lditeur dtats propose de changer le format de ltat ou de
le rduire.

"Slectionnez le mode paysage et validez.


"Ltat apparat sous lditeur :

"Modiez si ncessaire la mise en forme des champs.


"Nous allons maintenant ajouter un interrupteur dans cet tat.
Les interrupteurs dans les tats permettent notamment de reproduire des formulaires (par
exemple, les cases cocher "Monsieur", "Madame", ...).
Une rubrique du chier "CLIENT" indique si le client possde un compte chez le fournisseur
(en loccurrence chez nous). Cette rubrique peut prendre la valeur "Oui" ou "Non", "vrai" ou
"faux".

"Sous longlet "Cration", dans le groupe "Champs usuels", cliquez sur "Interrupteur". Linterrupteur apparat sous la souris. Placez linterrupteur sur ltat dans le bloc "Haut de rupture
1".

"Afchez la description du champ Interrupteur (clic droit, option "Description") :


1. Dans longlet "Gnral", saisissez le nom du champ, "INT_ENCOMPTE".
2. Dans longlet "Liaison" :
Cliquez sur "Autre rubrique".

354

Partie 7 : Etats

Slectionnez la rubrique "EnCompte" du chier "CLIENT".

Validez. La rubrique est automatiquement ajoute la requte de base de ltat.


3. Validez la fentre de description du champ Interrupteur.

"Ajoutez un champ Libell : sous longlet "Cration", dans le groupe "Champs usuels", cliquez
sur "Libell". Positionnez ce libell ct de linterrupteur et saisissez le texte "Client
Enregistr".

"Voici ltat tel quil apparat sous lditeur :

Partie 7 : Etats

355

"Enregistrez ltat, et testez-le avec le bouton

356

Partie 7 : Etats

LEON 7.3. ETATS TABLEAU CROIS


Ce que vous allez apprendre dans cette leon ...
Etape par tape, la cration dun tat tableau crois.

Dure estime : 20mn

Partie 7 : Etats

357

Prsentation
Lditeur dtats offre galement la possibilit de crer des tats de type "Tableau Crois". Ltat
est alors constitu uniquement dun tableau deux entres.
Exemple :

Contrairement aux autres types dtats, ltat "Tableau crois" est toujours bas sur une requte
intgre. Cette requte est cre grce lassistant de cration de ltat "Tableau crois". Vous
pourrez par ailleurs modier cette requte une fois votre tat cr.

Etape par tape


Nous allons raliser un tat de synthse sur le chiffre daffaires par client et par anne. Ce tableau peut tre reprsent de plusieurs faons :
en indiquant, pour chaque client, les diffrentes annes considres et le chiffre daffaires
correspondant.
en ralisant un tableau crois, de faon trier les rsultats la fois par client (vertical) et
par anne (horizontal). Cest cette mthode que nous allons utiliser.

"Si ncessaire, ouvrez le projet exemple, "WD Faire des ditions" : sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire
des ditions (Exercice)". Le projet se charge.

"Crez un nouvel tat :


1. Cliquez sur
parmi les boutons daccs rapide.
2. Dans la roue qui safche, cliquez sur "Etat". Lassistant de cration dtats se lance.

"Slectionnez "Tableau crois". Passez lcran suivant.


358

Partie 7 : Etats

Lassistant vous propose alors de choisir la rubrique qui servira de source de donnes pour
les en-ttes de colonnes. Vous pouvez ainsi dnir la premire entre (ligne) de votre tableau
crois.

"Slectionnez la rubrique "DateCommande" dans le chier "COMMANDE".


Lassistant vous propose alors trois choix (jour, mois et anne).
Choisissez "Anne". Passez lcran suivant.

"Lassistant vous demande si vous souhaitez "borner" les dates. Ne cochez rien, nous allons
prendre toutes les commandes. Passez lcran suivant.

"Lassistant vous demande maintenant de choisir la rubrique qui servira de source de


donnes pour les lignes. En fait, vous allez choisir la seconde entre (colonne) de votre
tableau crois.
Slectionnez la rubrique "NomClient" dans le chier "CLIENT".

Partie 7 : Etats

359

"Passez lcran suivant.


Lassistant vous demande maintenant de slectionner le type dinformation afcher dans
les cellules du tableau crois. Comme nous voulons afcher le Chiffre dAffaires par client et
par date, nous allons demander une somme des montants totaux de chaque commande
passe pour chaque client chaque anne.

"Slectionnez "La somme de la rubrique :". Dans la liste qui apparat sur le ct, choisissez la
rubrique "MontantTotal" du chier "COMMANDE" :

"Passez lcran suivant.


Lassistant vous propose de calculer une somme par ligne et une somme par colonne. Nous
allons accepter ce calcul :

"Passez lcran suivant. Ne changez rien la mise en page. Passez lcran suivant.
"Slectionnez un gabarit (par exemple "Elegant"). Passez lcran suivant.
360

Partie 7 : Etats

"Vous allez donner un nom cet tat :


1. Saisissez le nom : "ETAT_TableauCrois".
2. Saisissez la description : "Synthse des commandes par client et par date".
3. Validez. Ltat tant trop grand, lditeur dtats propose de changer le format de ltat ou
de le rduire : slectionnez "Rduire le tableau". Ltat apparat sous lditeur dtats.

"Modiez si ncessaire le titre et la taille du titre des colonnes pour obtenir la mme mise en
page que ci-dessous.

" Enregistrez ltat. Il ne reste plus qu tester en cliquant sur licne

Vous venez de raliser facilement un tat tableau crois. Ce type dtat peut bien entendu tre
utilis pour dautres applications, notamment pour effectuer des comparatifs, des statistiques, ...
Partie 7 : Etats

361

LEON 7.4. CHAMPS

SPCIFIQUES

Ce que vous allez apprendre dans cette leon ...


La cration dun lien dans un tat.
La cration dun champ clicable (dans laperu)

Dure estime : 20mn

362

Partie 7 : Etats

Prsentation
Lditeur dtats de WinDev propose deux fonctionnalits originales au niveau des champs :
Les champs Lien, utilisables aussi bien dans les tats gnrs en HTML que dans les tats
afchs dans laperu avant impression.
Les champs lien permettent douvrir directement un site partir dun tat. Il est ainsi
possible dimaginer un rcapitulatif de commande envoy par e-mail. Cet tat peut contenir
un lien vers le site de la socit, un lien pour envoyer un e-mail la socit, ...
Les champs clicables, utilisables uniquement dans laperu avant impression.
Dans ce cas, le clic sur un des champs de ltat dclenche un traitement spcique, par
exemple lafchage de la che complte du client slectionn.
Dans laperu avant impression, ces deux types de champs sont facilement reprables grce
des petites toiles.

Manipulations pour crer un champ Lien

"Si ncessaire, ouvrez le projet exemple, "WD Faire des ditions" : sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire
des ditions (Exercice)". Le projet se charge.

"Ouvrez ltat "ETAT_CommandeAvecLien.WDE" (par exemple en utilisant lexplorateur de


projet). Cet tat est prsent dans le perso-dossier "Corrigs".

"Afchez la description du champ "Lien". Ce lien permet linternaute de visiter le site de la


socit qui le facture.
Dans longlet "Gnral", cliquez sur le bouton [...] prsent ct du champ URL.

Partie 7 : Etats

363

Remarque : Un champ Lien dans un tat peut afcher le contenu dune rubrique ou une URL.
Dans ce cas, il est possible de :
afcher une page dun site
se connecter un serveur FTP
tlcharger, ouvrir, afcher un chier
envoyer un email

"Testez ltat (GO parmi les bouton daccs rapide). Ce lien fonctionne en aperu avant
impression (une toile prs du lien indique que ce lien est clicable) ou en mode HTML.

Manipulations pour crer un champ clicable

"Si ncessaire, ouvrez le projet exemple, "WD Faire des ditions" : sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire
des ditions (Exercice)". Le projet se charge.

"Ouvrez ltat cr prcdemment "ETAT_ClientParVille" (ou ltat "ETAT_ClientVille" prsent


dans le dossier "Corrigs" si vous ne lavez pas cr). Cet tat liste les clients par ville. Nous
allons permettre lutilisateur de cliquer sur le nom du client pour voir le dtail des informations le concernant dans une fentre che.

"Le projet contient dj la fentre ouvrir : "FEN_Fiche_Client". Cette fentre est prsente
dans le dossier "Corrigs".

364

Partie 7 : Etats

"Ouvrez cette fentre sous lditeur de fentres (option CTRL E pour rechercher la fentre et
louvrir). Cette fentre a t cre par le RAD. Son code de dclaration des globales a t
modi pour permettre dafcher le client dont lidentiant est pass en paramtre.

"Afchez le code de dclaration des globales de la fentre :


Clic droit dans la fentre daccueil.
Option "Code" du menu contextuel.

"Le code est le suivant. Les lignes en gras reprsentent les lignes modies pour permettre
dafcher le client dont lidentiant est pass en paramtre.
CAS ~="Modif"
SI IdClient<>0 ALORS
HLitRecherchePremier(CLIENT,IdClient,IdClient)
FIN
SI HNbEnr(CLIENT)=0 OU HEnDehors(CLIENT) ALORS
// ouvre une bote de dialogue pour informer lutilisateur
Info("Le fichier ne contient aucun enregistrement.")
// ferme la fentre
Ferme
FIN

FIN

// On remplit les champs


FichierVersEcran()

"Fermez la fentre de code et la fentre "FEN_Fiche_Client".


"Pour ouvrir directement la fentre "FEN_Fiche_Client" depuis laperu avant impression :
1. Sous lditeur dtats, dans ltat "ETAT_ClientParVille" (ou ltat "ETAT_ClientVille"), cliquez
sur le champ "RUB_NomClient".
2. Afchez le code de ce champ (option "Code" du menu contextuel).
3. Saisissez le code suivant dans le traitement "Clic sur RUB_NomClient" :
Ouvre(FEN_Fiche_Client, "Modif", MaSource.IdClient)

Ce code permet de :
ouvrir la fentre "FEN_Fiche_Client" en mode Modication.
passer en paramtre la fentre lidentiant du client cliqu (cet identiant est prsent
dans la requte intgre ltat).
4. Enregistrez et testez votre tat.

Partie 7 : Etats

365

LEON 7.5. EXCUTION

DES ETATS

Ce que vous allez apprendre dans cette leon ...


Excution des tats en WLangage.

Dure estime : 10mn

366

Partie 7 : Etats

Excuter les tats en WLangage

Notes

Vous avez cr des tats qui ont t tests depuis lditeur. Nous allons voir comment lancer lexcution dun tat depuis un programme.
WinDev permet dexcuter directement les tats depuis une application grce
aux fonctions du WLangage. Sachez que vous avez galement la possibilit de rajouter du code pour effectuer des traitements spciques lintrieur de chaque
bloc de ltat (par exemple : faire un calcul, afcher une bote de dialogue ...).

La syntaxe gnrale dexcution dun tat est la suivante :


// Prvisualisation de ltat "Etiquetteclient"
iAperu(100)
// Impression de ltat
iImprimeEtat(Etiquetteclient)

En excutant ce code, un cran daperu vous sera propos. Pour imprimer directement ltat
sans passer par une fentre de prvisualisation, supprimez la ligne :
iAperu(100)

Fonctions iAperu et iDestination


Les fonctions iAperu et iDestination permettent de slectionner la destination de limpression.
La syntaxe de la fonction iAperu est la suivante :
iAperu(<format de sortie>)

La fonction iAperu permet notamment dafcher ltat imprim directement lcran. Dans ce
cas, le paramtre <format de sortie> peut prendre les valeurs suivantes :
iImprimante : pour une sortie directe sur limprimante courante
iPage : pour afcher lcran la page complte
i2Pages : pour afcher 2 pages lcran
i100 : pour afcher la page en zoom 100%
Dautres constantes (utilisables avec la fonction iDestination ou iAperu) permettent dobtenir des
formats de sortie plus spciques :
iFichier : pour imprimer ltat dans un chier texte
iHTML : pour imprimer ltat au format HTML
iHTMLSansCSS : pour imprimer ltat au format HTML sans feuille de styles
iPCL : pour imprimer ltat au format PCL
iPDF : pour imprimer ltat au format PDF
iRTF : pour imprimer ltat au format RTF
iXLS : pour imprimer ltat au format XLS
iXML : pour imprimer ltat dans un chier XML
iFax : pour une sortie directe sur un fax.

Partie 7 : Etats

367

Pour plus de dtails sur la fonction iAperu ou la fonction iDestination, consultez laide en ligne
(mot-cl : "iAperu" ou "iDestination").
Fonction iImprimeEtat
La fonction iImprimeEtat permet dexcuter un tat. La syntaxe de cette fonction est la suivante :
iImprimeEtat(<Nom de ltat>)

Notes

Remarque
Dautres syntaxes sont possibles pour ces deux fonctions, consultez laide en ligne pour plus de
dtails (mots-cls : "Impression dun tat", "iAperu", "iImprimeEtat").

368

Offrez la possibilit aux utilisateurs de vos applications de crer eux-mmes


leurs tats et requtes (ou de modier des tats ou des requtes que vous mettez leur disposition) !
Il suft de diffuser avec votre application le logiciel "Etats & Requtes". Pour plus
de dtails, consultez la leon suivante.

Partie 7 : Etats

LEON 7.6. DIFFUSEZ "ETATS & REQUTES" AVEC VOS APPLICATIONS


Ce que vous allez apprendre dans cette leon ...
A quoi sert le logiciel "Etats & Requtes".
Comment diffuser le logiciel "Etats & Requtes".
Comment utiliser le logiciel "Etats & Requtes".

Dure estime : 10mn

Partie 7 : Etats

369

Prsentation du logiciel "Etats & Requtes"

Notes

Le logiciel "Etats & Requtes" permet aux utilisateurs de modier et de crer leur convenance
les tats et les requtes de vos applications.
Un utilisateur trouve quil manque une information sur ltat fourni en standard ? Avec le logiciel "Etat & Requtes", il peut ajouter linformation directement depuis laperu avant impression.
Cette modication peut tre intressante pour dautres utilisateurs ? Ltat peut tre mis disposition de tous les utilisateurs utilisant lapplication en rseau. De mme pour les requtes.
Le logiciel "Etats & Requtes" est gratuit et librement redistribuable avec vos applications cres avec WinDev. Consultez la licence pour plus de dtails sur les
conditions de redistribution.

Lancement du logiciel "Etats & Requtes"


Pour que les utilisateurs nals personnalisent les tats de votre application ou crent leurs
propres tats et leurs propres requtes, il suft de lancer le logiciel "Etats & Requtes".
Pour permettre vos utilisateurs nals de lancer le logiciel "Etats & Requtes" :
soit afchez vos tats sous la fentre daperu avant impression. Les utilisateurs nals
pourront lancer le logiciel "Etats & Requtes" en cliquant licne
.
soit ajoutez le menu "?" dans la fentre principale de votre application : sous le volet
"Fentre", dans le groupe "Barres et menus", droulez "Menu principal" et slectionnez
loption "Ajouter le menu "?"".
Dans lassistant de cration de ce menu, cochez les options "Crer, modier un tat" et
"Crer, modier une requte".
soit utilisez la fonction LanceEtatsEtRequtes dans votre application.

Diffuser le logiciel "Etats & Requtes" avec votre application


Pour diffuser le logiciel "Etats & Requtes" avec votre propre application WinDev, il est ncessaire
de :
indiquer au niveau du projet que lapplication autorise le lancement du logiciel "Etats & Requtes".
dnir si ncessaire au niveau de lanalyse les chiers et rubriques qui seront utilisables
avec le logiciel "Etats & Requtes".
dnir les tats et les requtes modiables sous le logiciel "Etats & Requtes".
crer lexcutable et le programme dinstallation intgrant le logiciel "Etats & Requtes".
Nous allons dtailler ces diffrentes tapes. Vous pouvez raliser les manipulations suivantes sur
le projet "WD Faire des ditions.WDP" que nous avons manipul jusqu prsent.

370

Partie 7 : Etats

Paramtrage du projet
Pour utiliser le logiciel "Etats & Requtes" partir de votre application, il est ncessaire de congurer le projet associ votre application.

"Si ncessaire, ouvrez le projet exemple, "WD Faire des ditions" : sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire
des ditions (Exercice)". Le projet se charge.

"Afchez la description du projet


Rappel : pour afcher la description du projet, sous le volet "Projet", dans le groupe "Projet",
cliquez sur "Description".

"Dans longlet "Avanc", cochez loption "Autoriser le lancement de "Etats et Requtes"".


Validez.
Paramtrage de lanalyse
Nous allons maintenant ouvrir lanalyse pour paramtrer les chiers et rubriques utilisables sous
le logiciel "Etats & Requtes".

"Ouvrez lanalyse de votre projet : cliquez sur

Notes

parmi les boutons daccs rapide du menu


de WinDev.
Par dfaut, tous les chiers de donnes et toutes leurs rubriques sont visibles et manipulables avec le logiciel "Etats & Requtes". Si votre application contient des informations
sensibles (mots de passe, ...) vous pouvez rendre ces chiers de donnes ou ces rubriques
invisibles sous le logiciel "Etats & Requtes".
A partir du logiciel "Etats & Requtes", lutilisateur ne peut pas ajouter, modier ou supprimer des enregistrements (les fonctions HAjoute, HModie et HSupprime sont interdites). Il nest galement pas possible de crer ou de re-crer
des chiers de donnes (les fonctions HCration et HCrationSiInexistant sont
interdites).

"Pour dnir un chier invisible sous le logiciel "Etats & Requtes" :


1. Sous lditeur danalyses, slectionnez le chier de donnes voulu.
2. Afchez la fentre de description du chier (option "Description du chier de donnes" du
menu contextuel).
3. Dans longlet "Etats et Requtes", dcochez loption "Visible par lutilisateur nal, dans le
logiciel "Etats et Requtes"".
4. Validez.

"Pour dnir une rubrique invisible sous le logiciel "Etats & Requtes" :
1. Sous lditeur danalyses, slectionnez le chier de donnes voulu.
2. Afchez la fentre de description du chier (option "Description des rubriques" du menu
contextuel).
3. Slectionnez dans la table, la rubrique voulue.
4. Dans longlet "Etats et Requtes", dcochez loption "Visible par lutilisateur nal, dans le
logiciel "Etats et Requtes"".
5. Validez.
Partie 7 : Etats

371

"Pour prendre en compte les modications effectues dans lanalyse, il est ncessaire de
rgnrer lanalyse (option "Gnration" dans le volet "Analyse"). Une modication automatique des chiers de donnes est propose pour prendre en compte les modications
effectues.
Paramtrage des tats
Lors de la cration dun tat, il est possible de spcier si cet tat est modiable sous le logiciel
"Etats & Requtes".

"Pour rendre un tat de votre application modiable sous le logiciel "Etats & Requtes" :
1. Ouvrez ltat sous lditeur dtats.
2. Afchez la description de ltat (option "Description de ltat" du menu contextuel).
3. Dans longlet "Dtail", cochez "Etat modiable sous Etats et Requtes".
4. Cochez :
loption "Interface modiable uniquement" pour que linterface de ltat uniquement soit
modiable sous Etats & Requtes.
loption "Tout modiable (interface et code)" pour que ltat soit entirement modiable
sous Etats & Requtes.
5. Validez et enregistrez ltat.
Paramtrage des requtes
Par dfaut, une requte nest pas modiable sous le logiciel "Etats & Requtes". Lors de la cration dune requte, il est possible de spcier si cette requte est modiable sous le logiciel "Etats
& Requtes".

"Pour rendre une requte de votre application modiable sous le logiciel "Etats & Requtes" :
1. Ouvrez la requte sous lditeur de requtes.
2. Afchez la description de la requte (option "Description de la requte" du menu contextuel
du graphe de la requte).
3. Cliquez sur le bouton "Avanc".
4. Dans longlet "Etats et Requtes", cochez "Visible sous Etats et Requtes".
5. Validez et enregistrez la requte.
Cration de lexcutable et diffusion de lapplication
La cration et la diffusion dune application utilisant le logiciel "Etats & Requtes" se fait de la
mme faon que pour une application classique. Cest lors de la cration de la procdure dinstallation, que vous pourrez indiquer les paramtres spciques au logiciel "Etats & Requtes".

"Pour crer le programme dinstallation de votre application, sous le volet "Projet", dans le
groupe "Gnration", cliquez sur "Procdure dinstallation". Lassistant de cration dinstallation se lance. Cliquez sur le lien "Installation" gauche de lassistant.
1. Slectionnez "Crer lexcutable maintenant". La cration de lexcutable est ralise.
2. Lassistant de cration dinstallation se lance.
3. Choisissez une "Installation individuelle". Passez lcran suivant.
4. Choisissez une "Installation standard". Passez lcran suivant.
5. Dans lcran "Fichiers installs", slectionnez les chiers de donnes (.c, .mmo et .ndx)
prsents dans le rpertoire de lexcutable. Pour cela, cliquez sur "Ajouter" et slectionnez
ces chiers. Passez lcran suivant.
372

Partie 7 : Etats

6. Dans lcran "Modules complmentaires" (accessible en cliquant gauche sur le lien


"Complments"), vriez que loption "Intgrer linstallation de Etats et Requtes" est coche.
7. Dans lcran intitul "Etats et Requtes", spciez si vous voulez incorporer linstallation de
"Etats & Requtes" dans votre programme dinstallation.
Dans ce cas, le package dinstallation du logiciel "Etats & Requtes" est recherch. Par dfaut, ce pack dinstallation est prsent dans le sous-rpertoire "Etats et Requtes" du rpertoire dinstallation de WinDev.
Attention : Incorporer le logiciel "Etats & Requtes" augmente la taille de votre installation de
faon non ngligeable (environ 190 Mo).

8. Spciez si ncessaire les rpertoires correspondant aux tats et requtes modis ou


crs par lutilisateur nal.
Le rpertoire des tats et requtes personnels correspond au rpertoire des tats et requtes
visibles uniquement par lutilisateur qui les a crs.
Le rpertoire des tats et requtes partags correspond au rpertoire des tats et requtes
visibles par tous les utilisateurs de lapplication.
Ces rpertoires peuvent ou non tre modis lors de linstallation de lapplication. Cochez
cette option ("Autoriser la modication de ces rpertoires lors de linstallation").
9. Continuez lassistant jusqu la gnration du programme dinstallation de votre application (dans notre exemple, lapplication "WD Faire des ditions"). Ne fermez pas la fentre indiquant la n de la cration de linstallation.

Partie 7 : Etats

373

Installer et utiliser le logiciel "Etats & Requtes"


Installation de lapplication
Pour tester linstallation et lutilisation du logiciel "Etats & Requtes", nous allons installer lapplication "WD Faire des ditions".
En suivant les tapes du paragraphe prcdent, vous avez gnr le programme dinstallation de
cette application. Le programme dinstallation a t cr dans le sous-rpertoire "Install" du projet
en cours.

"Dans la fentre de n de cration de linstallation, cliquez sur le bouton "Tester". Si vous avez
ferm cette fentre, lancez directement le programme "Install.exe" prsent dans le rpertoire
du programme dinstallation. Linstallation de lapplication se lance.

"Nous allons suivre les diffrentes tapes du programme dinstallation de lapplication "WD
Faire des ditions".

"Lcran "Etats et Requtes" permet dinstaller le logiciel "Etats & Requtes" (uniquement si ce
programme nest pas dj install sur le poste en cours).

Passez lcran suivant.

374

Partie 7 : Etats

"Lcran suivant permet de dnir les rpertoires utiliss pour lenregistrement des tats et
des requtes.

Passez lcran suivant et terminez linstallation de lapplication.

"Linstallation de lapplication, puis linstallation du logiciel "Etats & Requtes" se lance.


Test de lapplication
Nous allons maintenant nous placer dans la peau de lutilisateur nal de votre application (ce
nest pas vident, mais pourquoi pas).

"Lancez lapplication "WD Faire des ditions".


"Slectionnez loption "Etats .. Liste trie". Ltat apparat en mode "Aperu avant impression".

Partie 7 : Etats

375

" Dans cet cran, deux nouvelles icnes font leur apparition :
Permet de modier ltat en cours dans laperu avant impression.
Permet de crer un nouvel tat.

"Nous allons modier cet tat :


1. Cliquez sur licne
.
2. Ltat apparat en dition sous le logiciel "Etats & Requtes".

3. Lutilisateur peut alors faire les modications quil souhaite :


sur le style des informations afches (par exemple changer la couleur dun champ).
sur le contenu de ltat (par exemple ajouter un champ, ...). Si ltat est li une requte,
lutilisateur peut modier cette requte.
Si ltat est li une requte intgre, la modication est effectue directement dans ltat.
Si ltat est li une requte indpendante, la requte est galement modie. La
modication sera prise en compte uniquement dans le cadre de lexcution de ltat (si une
fentre utilise galement cette requte, la modication ne sera pas prise en compte par la
fentre).

"Dans cet exemple, nous allons mettre la date en rouge. Pour cela :
1. Slectionnez le champ date dans le dbut de document.
2. Sous le volet "Modication", dans le groupe "Edition rapide", cliquez sur licne "Couleur"
( ) et slectionnez la couleur rouge.
3. Enregistrez votre tat. Par dfaut, le rpertoire propos est le rpertoire dinstallation de
votre application.
4. Fermez le logiciel "Etats & Requtes".
5. Slectionnez loption "Etats .. Liste trie" dans lapplication. Ltat apparat en mode
"Aperu avant impression" et la modication ralise est effective.
Dans cet exemple, ltat que vous avez modi est disponible pour vous seul. Dans le cas dune
application rseau, lutilisateur a la possibilit de mettre disposition de tous les utilisateurs un
tat modi.
Nous avons ni notre dcouverte du logiciel "Etats & Requtes". Pour plus de dtails, consultez
laide en ligne (mot-cl : Etats et Requtes).
376

Partie 7 : Etats

PARTIE 8
Programmation
avance

LEON 8.1. GESTION

AUTOMATIQUE DES ER-

REURS

Ce que vous allez apprendre dans cette leon ...


Quest-ce que la gestion automatique des erreurs ?
Utilisation de la gestion automatique des erreurs.

Dure estime : 10mn

Partie 8 : Programmation avance

379

Prsentation
WinDev peut grer automatiquement les erreurs. Cette fonctionnalit permet la fois de rduire
sensiblement le code dun projet tout en uniformisant et en centralisant la gestion des erreurs.
Lutilisation de cette fonctionnalit rend galement le code plus lisible.
Fonctionnement
Lorsquune fonction du WLangage rencontre une erreur, deux oprations sont ralises :
une valeur de retour derreur est renvoye par la fonction (par exemple, la fonction fOuvre
renvoie la valeur "-1" si le chier spci na pu tre ouvert).
lerreur est dtecte par le WLangage (la variable ErreurDtecte correspond Vrai) et il est
possible de rcuprer des informations sur cette erreur grce la fonction ErreurInfo.
Cest cette seconde opration qui peut tre gre en automatique grce la gestion des erreurs
de WinDev.
Mise en place
Le paramtrage de la gestion automatique des erreurs peut seffectuer :
soit directement dans lditeur de code : il suft de cliquer sur le lien "Si erreur : Par programme" dans lditeur de code :

soit par programmation, avec la fonction ErreurChangeParamtre.

380

Partie 8 : Programmation avance

Types derreurs concernes


Le WLangage peut rencontrer deux types derreurs :
les erreurs "non fatales" (appeles galement erreurs dexcution) : ces erreurs sont gnralement gres dans le code et ne provoquent pas larrt de lapplication. Par exemple,
ouverture dun chier inaccessible ou dune archive inexistante.
les erreurs "fatales" (appeles galement erreurs de programmation) : ces erreurs sont gnralement lies un problme matriel (plus despace disque, perte de connexion rseau...) ou des problmes graves de conception (accs un chier non dclar, utilisation
de champs inexistants...). Une erreur "fatale" peut galement survenir suite une erreur
"non fatale" mal gre. Dans ce cas, lapplication va sarrter.
Le mcanisme de gestion des erreurs permet de grer de faon bien distincte ces deux types
derreurs an de pouvoir spcier des comportements adapts aux erreurs rencontres.

Utilisation de la gestion automatique des erreurs

"Fermez si ncessaire le projet en cours. La fentre de bienvenue apparat.


"Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Gestion des erreurs". Le projet se charge.
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Gestion des
erreurs".
Ce projet prsente la gestion :
dune erreur non fatale (ouverture dune archive inexistante).
Lors de lexcution de la ligne de code gnrant lerreur, un message derreur safche et
propose lutilisateur de ressayer lopration, dannuler lopration ou darrter lapplication.
dune erreur fatale (division dun entier par 0).
Lors de lexcution de la ligne de code gnrant lerreur, une procdure est automatiquement appele. Cette procdure permet dafcher le message derreur et darrter le
traitement en cours.
dune erreur sur plusieurs niveaux (traitement appelant une procdure qui ouvre une
archive inexistante).
Lors de lexcution de la ligne de code gnrant lerreur :
- la procdure retourne "Faux" au traitement appelant.
- le traitement appelant afche un message derreur et arrte le traitement.

Exemple

"Testez le projet en cliquant sur licne

(parmi les boutons daccs rapide).

Pour plus de dtails sur la gestion automatique des erreurs, consultez lexemple
"Detection erreurs" (exemple unitaire), livr en standard avec WinDev. Cet
exemple est accessible depuis le volet "Assistants, Exemples et Composants" de
WinDev.

Partie 8 : Programmation avance

381

LEON 8.2. IMPORT/EXPORT


Ce que vous allez apprendre dans cette leon ...
Fichier CSV et chiers texte
Fichier XML
Fichier XLS

Dure estime : 20mn

382

Partie 8 : Programmation avance

Prsentation
WinDev permet de manipuler simplement les formats les plus courants de donnes : chiers texte
(chiers INI, CSV, ...), chiers XML, chiers XLS, ... De nombreuses familles de fonctions WLangage
permettent aussi bien de lire ces chiers que de crer ces chiers. Vous pouvez ainsi lire facilement dans vos applications WinDev des donnes gnres par dautres logiciels ou encore crer
des chiers ncessitant un formatage particulier.
Dans ce chapitre, nous nous consacrerons plus particulirement trois formats de chiers :
les chiers Texte (chiers texte, chiers INI et chiers CSV)
les chiers XML
les chiers XLS
Exemple pratique
Pour simplier la prsentation des diffrents formats de chiers, nous avons prpar un exemple
contenant les principales manipulations possibles.

"Fermez si ncessaire le projet en cours. La fentre de bienvenue apparat.


"Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Manipuler des chiers textes, XLS, XML, ...". Le projet se charge.
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Manipuler des
chiers textes, XLS, XML, ...".

Manipulation des fichiers texte, CSV, ...


Les chiers externes sont souvent appels chiers texte ou encore chiers accs direct. Notons
que ce type de chier contient gnralement du texte, mais peut galement contenir des informations binaires telles que des images, des sons, ...
Dans cette leon comme dans toute la documentation de WinDev, nous parlerons de chiers externes.
WinDev permet de manipuler en programmation les chiers externes. Les fonctions du WLangage
permettent de crer, lire ... des chiers externes. Toutes les fonctions peuvent tre trs facilement
identies : elles commencent toutes par la lettre "f".
Dans un chier externe, il ny a pas ncessairement de notion "denregistrement". Pour pouvoir
manipuler un chier externe, il faut en connatre la structure, cest--dire connatre lagencement
des donnes qui se trouvent lintrieur du chier.
Les chiers CSV sont simplement des chiers texte utilisant une structure spcique. Ils sont donc
manipulables comme les chiers textes.
Les chiers .INI sont galement des chiers texte utilisant une structure spcique. Pour les manipuler, WinDev dispose de deux fonctions spciques : INILit et INIEcrit.
Exemple pratique

"Ouvrez la fentre "FEN_FichierTexte.WDW" et testez-la. Cette fentre regroupe de nombreuses


manipulations possibles avec WinDev.

Partie 8 : Programmation avance

383

Nous vous conseillons galement dtudier lexemple "Fichiers Texte" (exemple didactique) livr en
standard avec WinDev : vous aurez ainsi un aperu des diffrentes manipulations possibles sur
les chiers externes :
crer un chier externe
lire (par bloc, par ligne ou en une seule fois) un chier externe
crire dans un chier externe
obtenir des informations sur un chier
bloquer un chier
tester lexistence dun chier
slectionner un chier
copier un chier
supprimer un chier
lister les chiers dun rpertoire

Exemple

Cet exemple prsente galement les manipulations possibles sur les disques et les rpertoires :
crer un rpertoire
connatre le rpertoire en cours
tester lexistence dun rpertoire
lister des rpertoires
copier un rpertoire
supprimer un rpertoire
Lexemple "WD Fichiers Texte" livr en standard avec WinDev (exemple didactique), illustre les manipulations possibles sur les chiers, disques et rpertoires avec le WLangage. Cet exemple est accessible depuis le volet "Assistants,
Exemples et Composants" de WinDev.

Pour plus de dtails sur les fonctions de gestion des chiers externes, consultez laide en ligne
(mot-cl : "Fichier externe").

Manipulation des fichiers XML


XML (Extensible Markup Language, ou Langage Extensible de Balisage) est le langage destin
succder HTML sur le World Wide Web. Comme HTML (Hypertext Markup Language), le XML est
un langage de balisage, cest--dire un langage qui prsente de linformation encadre par des
balises. Mais contrairement HTML, qui prsente un jeu limit de balises, XML est un mtalangage, qui permet dinventer de nouvelles balises pour isoler toutes les informations lmentaires
que peut contenir une page Web.

Exemple

XML permet de structurer un document contenant des donnes. Un chier de donnes HyperFileSQL contenant plusieurs rubriques et enregistrements peut par exemple tre export dans un
chier XML (fonctions XML*) .

384

Pour plus de dtails sur lutilisation du XML, consultez lexemple "WD XML"
(exemple didactique), livr en standard avec WinDev. Cet exemple est accessible
depuis le volet "Assistants, Exemples et Composants" de WinDev.

Partie 8 : Programmation avance

WinDev gre en standard :


les chiers au format XML grce un accs natif fourni avec WinDev. Pour plus de dtails,
consultez laide en ligne.
les exportations vers le XML (fonctions TableVersXML, TexteVersXML, HExporteXML)
limport de donnes XML (fonction HImporteXML)
la manipulation dun document XML grce au type avanc XMLDocument et aux fonctions
WLangage commenant par XML.
Il est galement possible de manipuler directement le chier XML dans lditeur de code. Il suft
de :
1. "Dropper" le chier XML dans lexplorateur de projet, dossier "Descriptions XML".
2. "Dropper" le chier XML de lexplorateur de projet vers lditeur de code. La variable de type
xmlDocument est alors automatiquement cre de la manire suivante :
<Nom de la variable> est un xmlDocument , description = <Nom du
document>

3. Vous pouvez maintenant accder directement aux noeuds de la variable par leurs noms.
Ces noms sont proposs automatiquement par le mcanisme de compltion automatique de
lditeur de code.
Exemple pratique

"Ouvrez la fentre "FEN_Exemple_XML.WDW" et testez-la. Cette fentre permet de :


crer un chier XML. Ce chier est cr grce aux fonctions XML.
lire un chier XML en utilisant la description du chier charge sous lditeur de code.

"Testez cette fentre et consultez le code associ chaque bouton.


Manipulation des fichiers XLS
Pour manipuler les chiers Excel, WinDev met votre disposition :
les fonctions xlsXXX. Ces fonctions permettent de lire les donnes prsentes sur les diffrentes
feuilles dun chier Excel.
les variables avances de type xlsDocument, xlsLigne, xlsColonne, xlsCellule.
Exemple pratique
Un test rapide des possibilits de ces fonctions ?

"Ouvrez la fentre "FEN_Exemple_XLS". Cette fentre contient deux onglets permettant de


tester dune part les variables avances, dautre part les fonctions xls.

"Testez cette fentre.


"Dans longlet "Manipulation dynamique des feuilles XLS", ouvrez le chier "FichierTest.xls"
prsent dans le rpertoire EXE de lexemple. Vous pouvez slectionner une cellule de la
feuille XLS et voir son contenu.

"Dans longlet "Lecture dune feuille XLS (compatible)", ouvrez le chier "FichierTest.xls"
prsent dans le rpertoire EXE de lexemple. Le chier propos contient 3 feuilles. Il est
possible dafcher le contenu des trois feuilles.
Partie 8 : Programmation avance

385

"Ouvrez le chier (bouton "Ouvrir le chier sous Excel") pour vrier les informations afches
par WinDev.

Notes

"Retournez sous lditeur pour consulter le code des diffrents boutons.

386

Nous ne dtaillerons pas ici toutes les fonctionnalits proposes par les fonctions XLS et les types avancs. Pour plus de dtails, consultez laide en ligne.

Partie 8 : Programmation avance

LEON 8.3. COMPILATION

DYNAMIQUE

Ce que vous allez apprendre dans cette leon ...


Prsentation
Tracer une courbe en compilation dynamique

Dure estime : 20mn

Partie 8 : Programmation avance

387

Prsentation
La compilation dynamique permet de compiler un code nimporte quel moment de lapplication. Un exemple dutilisation courant ? Votre application contient une formule paramtrable. Pour
changer les paramtres, il nest pas ncessaire de re-livrer lexcutable : la modication dun chier texte suft.

Exemple
Dans le projet "WD Programmation Avance", la compilation dynamique est utilise pour raliser
un dessin de courbes mathmatiques.

"Fermez si ncessaire le projet en cours. La fentre de bienvenue apparat.


"Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Programmation avance". Le projet se charge.
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Programmation
avance".

"Nous allons tout dabord tester cet exemple :


1. Ouvrez la fentre "FEN_Dessine" (par exemple en utilisant le raccourci CTRL + E).
2. Testez cette fentre :
Choisissez la fonction dessiner
Choisissez les couleurs du dessin (bouton "Couleurs").
Validez grce au bouton "Tracer"

"Retournons sous lditeur de code pour tudier le code permettant de dessiner cette courbe.
Fermez la fentre.
1. Afchez le code du bouton "Tracer" (clic droit sur le bouton, option "Code"). Ce code appelle la
procdure AfcheCourbe.
2. Positionnez le curseur de la souris sur le nom de la procdure et utilisez la touche [F2]. Le
code de la procdure apparat automatiquement sous lditeur de code.
388

Partie 8 : Programmation avance

Le code de cette procdure peut tre dcompos en plusieurs parties :


1. initialisation des variables.
2. dessin du fond du graphe et des axes.
3. gestion des erreurs (nous verrons ce point plus loin dans ce chapitre).
4. dclaration du code compil dynamiquement.
// Code de la fonction compile dynamiquement
CodeFonction est une chane = [
Fonction ValeurY(Fonct,X)
Y est un entier
%1
Renvoyer PartieEntiere(Y)
]

Ce code contient plusieurs points remarquer :


Une fonction compile dynamiquement est contenue dans une chane.
Le code utilis manipule une chane multiligne. Cette chane nutilise pas de guillemets
comme les chanes classiques. Les caractres = [ et ] permettent de dnir le dbut et la n
de cette chane. Sous lditeur de code, cette chane apparat surligne en rose.
Le code qui sera compil est une fonction ValeurY, qui attend deux paramtres : Fonct (la
fonction choisie par lutilisateur), et X (labscisse du point dessiner). La fonction renverra
lordonne correspondante.
5. compilation de la fonction et son utilisation.
// On compile la fonction de calcul de la valeur de Y
ErrCompile = Compile("ValeurY", ...
ChaneConstruit(CodeFonction, Fonct))
SI ErrCompile= "" ALORS
Xold = -201
// On calcule les prcdentes valeurs
Yold = ValeurY(Fonct,-201)
POUR X=-200 A 200 // Parcours de laxe des abcisses et traage
Y = ValeurY(Fonct,X)
dLigne((EchelleX*Xold)+X0,...
-(EchelleY*Yold)+Y0,(EchelleX*X)+X0,-(EchelleY*Y)+Y0)
Xold = X
// Mmorisation des valeurs prcdentes
Yold = Y
FIN
SINON
Erreur("La fonction na pu tre compile "+ ...
"dynamiquement." + ErrCompile)
FIN

La compilation de la fonction est effectue avec la fonction WLangage Compile. Ds que cette
fonction est utilise (et si aucune erreur nest renvoye), la fonction compile dynamiquement
devient utilisable.

Partie 8 : Programmation avance

389

LEON 8.4. EVNEMENT WINDOWS


Ce que vous allez apprendre dans cette leon ...
Programmation des vnements Windows.

Dure estime : 10mn

390

Partie 8 : Programmation avance

Introduction
Toute action effectue par Windows correspond un vnement Windows. Diffrents types dvnements peuvent tre rencontrs, par exemple :
Le survol dune fentre par la souris
Larrt du systme
Lafchage dune bote de dialogue
Une erreur logicielle
Etc.
Lorsque ces vnements se produisent, il est possible de les intercepter an de prparer ou dexcuter un traitement spcique.
WinDev propose par dfaut la gestion automatique des vnements les plus utiliss. Par exemple,
les vnements suivants sont proposs pour un champ de saisie :
Initialisation du champ
Entre dans le champ
Modication du champ
Sortie du champ
De nombreux autres vnements peuvent tre grs facilement. Une barre doutils est disponible
dans lditeur de code :

Il suft dajouter lvnement souhait. Exemple : "Touche Enfonce".

Notes

Pour la gestion dvnements plus "spciques", il existe la fonction WLangage Evnement. La


fonction Evnement permet de dclencher une procdure en raction un vnement Windows.
Vous pouvez ainsi associer tout type dvnement Windows une procdure en WLangage.
Pour utiliser la fonction Evnement, il faut matriser la programmation Windows
et notamment les vnements Windows.

Pour connatre la liste (non exhaustive) des vnements Windows, consultez laide en ligne de
WinDev (mot-cl : "Valeur des constantes de lAPI Windows").
Partie 8 : Programmation avance

391

Exemple : Dtecter le clic sur une liste

"Si ncessaire, ouvrez le projet exemple, "WD Programmation Avance" : sous le volet
"Accueil", dans le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez
loption "Programmation avance". Le projet se charge.

"Ouvrez la fentre "FEN_Evenement" et testez-la. Cette fentre dtecte si la liste est manipule avec la souris ou avec le clavier.

"Arrtez le test et revenez sous lditeur.


"Regardons le code utilis, principalement dans le code de dclaration des globales de la
fentre FEN_Evnement.
EXTERN "WINCONST.WL"

Tout dabord, le chier WINCONST.WL est intgr dans le code de lapplication grce au
mot-cl EXTERNE. Ce chier contient la dclaration et les valeurs des constantes Windows. A
la compilation, tout le code contenu dans le chier Winconst.WL sera automatiquement
intgr au code de lapplication.
Ensuite, les diffrents vnements grs sont dclars :
// Evnements sur le champ LISTE_Jour
// Pression dune touche du clavier
Evnement("SourisOuClavier",LISTE_Jour..NomComplet,WM_KEYDOWN)
// Clic gauche de souris
Evnement("SourisOuClavier",LISTE_Jour..NomComplet,...
WM_LBUTTONDOWN)

392

Partie 8 : Programmation avance

La procdure SourisOuClavier est appele ds quune utilisation du clavier sur la liste est
effectue (vnement Windows correspondant : WM_KEYDOWN) ou ds que le clic gauche
de la souris est utilis (vnement Windows correspondant : WM_LBUTTONDOWN).
Le code de la procdure est trs simple : la variable globale Clavier est mise Vrai ou Faux
selon loutil utilis (clavier ou souris).
PROCEDURE SOURISOUCLAVIER()
// Dtermine si la validation de llment a t effectue
// avec le clavier ou avec la souris
SELON _EVE.wMessage
CAS WM_KEYDOWN
// Cest le clavier
Clavier=Vrai
CAS WM_LBUTTONDOWN
// Cest la souris (click down)
Clavier=Faux
FIN

Le message est ensuite afch grce au traitement associ au champ LISTE_Jour.

Partie 8 : Programmation avance

393

LEON 8.5. LES

THREADS

Ce que vous allez apprendre dans cette leon ...


Quest-ce que les threads ?

Dure estime : 10mn

394

Partie 8 : Programmation avance

Dfinition
Les threads permettent dexcuter du code (ou des traitements) en parallle de lapplication principale. Il est ainsi possible dexcuter plusieurs traitements diffrents qui peuvent tre trs longs
en tche de fond, sans bloquer lapplication principale.
Les threads remplacent certains types de timer.
Un thread efcace est un thread qui attend un vnement, par exemple, une action de lutilisateur,
la rception dun email, la rception dun appel tlphonique, ...
Quelques exemples dutilisation des threads :
Rcupration demails en tche de fond, pendant la saisie dun nouvel email par exemple.
Application de communication : gestion des appels tlphoniques, communication par socket, ...
Avec WinDev, vous avez la possibilit de :
grer simplement des threads (fonctions Thread*, ThreadExcute, ThreadArrte ...)
utiliser les threads avec des "smaphores", an de limiter leur action en simultan un instant donn (fonctions Smaphore*)
grer des "signaux" an de synchroniser plusieurs threads (fonctions Signal*, SignalCre,
SignalDtruit ...)

Exemple

Exemple
WinDev est livr en standard avec un exemple permettant de comprendre lintrt et lutilisation des threads, "Pool de Threads" (exemple didactique, accessible
depuis le volet "Assistants, Exemples et Composants" de WinDev).

Pour plus de dtails sur la gestion du multithread avec WinDev, consultez laide en ligne (mot-cl :
"Thread").

Partie 8 : Programmation avance

395

LEON 8.6. LES

SOCKETS

Ce que vous allez apprendre dans cette leon ...


Prsentation
Application Serveur
Application Cliente

Dure estime : 20mn

396

Partie 8 : Programmation avance

Prsentation
WinDev met votre disposition des fonctions qui permettent de raliser une gestion avance des
sockets.
Une socket est une ressource de communication utilise par les applications pour communiquer
dune machine une autre sans se soucier du type de rseau.
Ce mode de communication peut par exemple tre utilis pour tablir une communication entre
des postes relis par Internet.

Exemple

Une application WinDev peut grer les sockets selon diffrents modes :
Application WinDev/WebDev Cliente : lapplication se connecte un serveur quelconque et
change des donnes par une socket.
Application WinDev "Serveur simpli" : lapplication WinDev est un serveur, changeant
des informations par une socket avec un seul poste client (socket WinDev conseille sur le
poste client mais non obligatoire)
Application WinDev "Serveur standard" : lapplication WinDev est un serveur, changeant
des informations par sockets avec plusieurs postes client quelconques.
WinDev est livr en standard avec un exemple permettant de comprendre lutilisation des sockets : "WD Utilisation des sockets" (exemple didactique, accessible
depuis le volet "Assistants, Exemples et Composants" de WinDev).

Exemple pratique
Le projet "WD Programmation Avance.WDP" contient une fentre correspondant la fois une
application de type "serveur de socket" et une application cliente.

"Si ncessaire, ouvrez le projet exemple, "WD Programmation Avance" : sous le volet
"Accueil", dans le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez
loption "Programmation avance". Le projet se charge.

"Ouvrez la fentre "FEN_Sockets".


"Lancez le test de cette fentre.
1. Saisissez un message.
2. Cliquez sur le bouton "Envoyer". Le message est envoy au serveur de sockets.
3. Le message est lu par le serveur de sockets et afch dans la liste.

Application Serveur (simplifi)


WinDev offre la possibilit de crer un serveur de socket simpli. Ce serveur permet de communiquer avec un seul poste client simultanment. Ce type dapplication est trs utile lorsque deux
applications distantes ont besoin de communiquer.
Les tapes pour crer un serveur simpli sont les suivantes :
1. Cration de la socket.
2. Echange de donnes.
3. Fermeture de la socket.

Partie 8 : Programmation avance

397

Cration de la socket
Pour crer la socket, le poste serveur utilise la fonction SocketCre. Une socket est associe
un port spcique. Pour simplier la manipulation de la socket par programmation sur le poste
serveur, prcisez le nom de la socket.
Le poste client va venir se connecter sur cette socket pour changer des donnes. La connexion
entre les deux postes sera effectivement ralise au premier change de donnes entre les deux
postes (cest--dire la premire lecture dinformations par le poste serveur).
La connexion est tablie au premier succs de la fonction SocketLit sur le serveur.
Echange de donnes
Lorsque deux postes utilisent la mme socket, un ux de communication stablit entre ces deux
postes. Il est alors possible pour ces deux postes de lire et dcrire des chanes de caractres sur
la socket.
Remarque : Pour ne pas bloquer les applications, la gestion de la rception des messages est
souvent gre par un thread spcique.
Pour lire et crire sur la socket, lapplication serveur WinDev doit utiliser les fonctions SocketLit et
SocketEcrit.
Attention : Pour raliser une lecture, une criture doit avoir t ralise. Par exemple :
1. Le poste client crit sur la socket : il envoie une requte au poste serveur.
2. Le poste serveur effectue une lecture sur la socket dans un thread. Ds quun message est
reu, le message est trait par le poste serveur.
3. Si une rponse au message est ncessaire, le poste serveur identie le poste client (fonction SocketClientInfo), et lui envoie une rponse.
Fermeture de la socket
Pour terminer la communication, le serveur peut fermer la socket avec la fonction SocketFerme.
Remarque : la socket peut aussi tre ferme par le poste client.
Exemple pratique

"Dans la fentre "FEN_Sockets", le serveur de sockets correspond une procdure pEcoute.


Cette procdure effectue les oprations suivantes :
Cration de la socket.
Lecture des messages envoys sur la socket.
Traitement des messages.
Le code correspondant est le suivant :
PROCEDURE pEcoute()
sMessageRecu est une chane
SocketCre("S1",9000)
BOUCLE
sMessageRecu = SocketLit("S1",Faux, 100)
SI sMessageRecu<>"" ALORS
ListeAjoute(LISTE_message,sMessageRecu)
FIN
FIN

398

Partie 8 : Programmation avance

"Cette procdure est excute dans un thread, dans le traitement "Dclarations globales" de
la fentre. Le code est le suivant :
ThreadExcute("TH_Ecoute",threadNormal,pEcoute)

Application Cliente
Une application cliente dun serveur de sockets se connecte un serveur quelconque pour changer des informations par lintermdiaire dune socket.
Exemple : Une application WinDev cliente peut se connecter un serveur de news standard sur
Internet.
Les tapes pour crer une application cliente sont les suivantes :
1. Connexion au serveur
2. change de donnes
3. Fin de communication
Connexion au serveur
Pour se connecter une socket du serveur, il suft dutiliser la fonction SocketConnecte. Cette
fonction permet deffectuer une demande de connexion au serveur.
La socket est identie par son port et par son adresse.
Echange de donnes
Lorsque deux postes utilisent la mme socket, un ux de communication stablit entre ces deux
postes. Il est alors possible pour ces deux postes de lire et dcrire des chanes de caractres sur
la socket.
Remarque : Pour ne pas bloquer les applications, la gestion de la rception des messages est
souvent gre par un thread spcique.
Pour lire et crire sur la socket, lapplication cliente WinDev doit utiliser les fonctions SocketLit et
SocketEcrit.
Fin de communication
Pour terminer la communication, il suft de fermer la socket depuis le poste client avec la fonction
SocketFerme.
Remarque : il est galement possible de terminer la communication depuis le poste serveur.
Exemple pratique

"Dans la fentre "FEN_Sockets", les oprations clientes sont effectues lors de lappui sur le
bouton "Envoyer".

"Les oprations effectues sont :


La connexion la socket
Lenvoi des messages la socket

Partie 8 : Programmation avance

399

"Le code correspondant est le suivant :


SI PAS SocketConnecte("S2", 9000) ALORS
Erreur("Impossible de se connecter au serveur de socket")
RETOUR
FIN
SocketEcrit("S2",SAI_message)
SocketFerme("S2")

Remarque : Dans cette leon, nous avons vu une communication "simple" entre un serveur et un
poste client : le client envoie des messages et le serveur traite les messages. Il est bien entendu
possible de raliser des applications plus labores.
Il est par exemple possible de raliser une communication entre deux applications, la fois
cliente et serveur. Dans ce cas, la gestion des threads devient primordiale pour grer les envois et
les rponses des applications.

400

Partie 8 : Programmation avance

LEON 8.7. LE FTP


Ce que vous allez apprendre dans cette leon ...
Prsentation des fonctions FTP de WinDev.

Dure estime : 20mn

Partie 8 : Programmation avance

401

Prsentation
Le FTP (File Transfert Protocol) est un protocole standard permettant deffectuer le transfert de
chiers dune machine vers une autre machine. Une des deux machines doit tre un serveur FTP.
Le WLangage possde les commandes de programmation ncessaires pour effectuer des transferts de chiers en utilisant ce protocole avec un serveur. Ces fonctions de programmation commencent toutes par "FTP".
WinDev ne propose que des fonctions "clientes" pour le FTP. Il est ncessaire dutiliser un serveur
FTP standard.

Se connecter un serveur FTP


La fonction WLangage FTPConnecte permet de se connecter un serveur FTP. Vous devez au
pralable possder un compte FTP (nom dutilisateur et mot de passe) pour accder un serveur
FTP.
Exemple de code :
NomUser est une chane = "Utilisateur"
Password est une chane = "MotDePasse"
AdresseFTP est une chane = "ftp.monsite.com"
Res est un entier
Res = FTPConnecte(AdresseFTP, NomUser, Password)
SI Res = -1 ALORS
Erreur("Impossible de se connecter." + RC + ...
ErreurInfo(errMessage))
SINON
Info("Connexion russie.")
FIN

Il est galement possible de prciser le numro de port de connexion du serveur FTP (par dfaut
"21") ainsi que le mode de connexion ("Vrai" pour une connexion dite "passive", "Faux" pour une
connexion dite "active"). Pour plus de dtails, consultez laide en ligne (mot-cl : "FTP, Fonctions").

Envoyer un fichier
Pour envoyer un chier vers un serveur FTP, il suft tout simplement dutiliser la fonction FTPEnvoie :
// Lors de la connexion au serveur avec FTPConnecte, nous avons
// rcupr le numro de connexion dans la variable Res
// Transfert du fichier "C:\MesDocuments\Fichier.DOC" vers
// le rpertoire "Temp" qui se trouve sur le serveur.
Result est un boolen = FTPEnvoie(Res, ...
"C:\MesDocuments\Fichier.DOC", "/Temp")

402

Partie 8 : Programmation avance

Attention !

Faites trs attention la casse (minuscules, majuscules) du nom des rpertoires


sur le serveur. En effet, certains serveurs FTP sont des machines fonctionnant
sous UNIX et sont "case-sensitive", cest--dire quils sont sensibles la casse du
nom des chiers et des rpertoires.
Par exemple, si sur le serveur FTP se trouve un rpertoire nomm "MonRepertoire" et que vous tentez daccder au rpertoire "monrepertoire", le serveur FTP
pourra vous renvoyer une erreur du type "Chemin inexistant".

Rcuprer un fichier
Pour rcuprer un chier depuis un serveur FTP sur votre machine, il suft tout simplement dutiliser la fonction FTPRcupre :
// Lors de la connexion au serveur avec FTPConnecte, nous avons
// rcupr le numro de connexion dans la variable Res
// Rcupration du fichier "/Document/Fichier.DOC" prsent
// sur le serveur FTP vers le rpertoire "D:\Temp" sur
// le poste en cours
Res est un boolen = FTPRcupre(Res, ...
"/Document/Fichier.DOC","D:\Temp")

Se dconnecter dun serveur FTP


Comme pour la fermeture dune session de messagerie, il existe en WLangage une fonction pour
se dconnecter dun serveur FTP. Cette fonction se nomme FTPDconnecte :
// Lors de la connexion au serveur avec FTPConnecte, nous avons
// rcupr le numro de connexion dans la variable Res
// Dconnexion
FTPDconnecte(Res)

Il existe galement dautres fonctions FTP que nous ne dtaillerons pas dans ce cours. Elles permettent notamment de :
crer, supprimer, modier des rpertoires sur le serveur FTP,
crer, supprimer, modier des chiers sur le serveur FTP,
rcuprer les informations dun rpertoire et/ou dun chier,
...
Pour plus de dtails, consultez laide en ligne (mot-cl : "FTP, Fonctions").

Partie 8 : Programmation avance

403

LEON 8.8. LES

EMAILS

Ce que vous allez apprendre dans cette leon ...


Prise de connaissance avec les fonctions Email de WinDev.

Dure estime : 20mn

404

Partie 8 : Programmation avance

Prsentation
Le WLangage possde toutes les fonctions de programmation ncessaires pour grer la rception ou lenvoi de messages Internet (appels "emails"). De plus, grce WinDev, vous pourrez
connatre toutes les caractristiques dun email :
expditeur, destinataires
date denvoi, sujet, message
pices jointes ...
WinDev permet de grer les emails grce plusieurs mthodes :
Les protocoles POP3/SMTP (mthode la plus courante). Ces protocoles sont des protocoles
de gestion des emails reconnus par tous les fournisseurs de service. Ces protocoles vous
permettent de dialoguer directement avec le serveur, disponible chez votre fournisseur daccs.
LAPI "Simple Mail API" (appel aussi SMAPI ou Simple MAPI) : ce mode de gestion des emails est utilis par la plupart des applications Microsoft et principalement Microsoft Exchange.
Le logiciel de messagerie Lotus Notes ou Outlook : grce ces logiciels, il est possible
denvoyer et de recevoir des emails.
Le protocole IMAP : ce protocole de rception demails permet de laisser les emails sur le
serveur dans le but de pouvoir les consulter de diffrents clients de messagerie ou webmail.

Exemple

Nous voquerons dans ce cours uniquement la mthode de gestion par les protocoles POP3/
SMTP. En effet, cest le mode qui est actuellement le plus utilis dans le monde.
Pour plus de dtails sur Simple MAPI, consultez laide en ligne (mot-cl : "Simple MAPI").
Les fonctions de gestion des emails commencent toutes par "Email".
Pour plus de dtails sur la gestion des emails, consultez lexemple "WD Mail"
(exemple complet), livr en standard avec WinDev. Cet exemple est accessible
depuis le volet "Assistants, Exemples et Composants" de WinDev.

Protocoles POP3/SMTP : Principe


Le protocole POP3 permet de recevoir des emails.
Le protocole SMTP permet denvoyer des emails
Nous ne dtaillerons pas ici le principe de fonctionnement de ces protocoles.
Pour envoyer ou lire des messages grce aux protocoles POP3/SMTP, il faut :
1. Se connecter au fournisseur daccs (si ncessaire).
2. Ouvrir une session de messagerie avec la fonction EmailOuvreSession.
3. Envoyer et lire les messages.
4. Fermer la session de messagerie avec la fonction EmailFermeSession.
5. Se dconnecter (si ncessaire).

Partie 8 : Programmation avance

405

Pour envoyer et lire les messages, WinDev propose deux faons de grer les messages :
soit par la structure Email. Cette structure est une structure pr-dnie du WLangage.
soit par une variable de type Email. Ce type permet notamment de manipuler plusieurs messages en mme temps.
Exemple pratique
Le projet "WD Programmation Avance.WDP" contient une fentre permettant denvoyer des emails (cas le plus courant).

"Si ncessaire, ouvrez le projet exemple, "WD Programmation Avance" : sous le volet
"Accueil", dans le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez
loption "Programmation avance". Le projet se charge.

"Ouvrez la fentre "FEN_Gestion_Email".


"Lancez le test de cette fentre.
1. Saisissez les caractristiques de lemail : serveur SMTP, adresse de lexpditeur, texte de
lemail, adresse du destinataire, ...
2. Cliquez sur le bouton "Envoyer" selon la mthode choisie :
"Envoyer mthode 1" utilise la structure Email
"Envoyer mthode 2" utilise la variable Email.
3. Consultez votre messagerie prfre pour vrier si le message a bien t envoy.

Envoyer un email : les diffrentes tapes


Ouvrir une session de messagerie SMTP
Lenvoi dun message utilise le protocole SMTP. Pour ouvrir une session de messagerie, il est
possible :
soit dutiliser la fonction EmailOuvreSessionSMTP, en lui prcisant ladresse du serveur SMTP
utiliser. Dans notre exemple, cette fonction est utilise dans le code du bouton "Envoyer mthode 1". Le code utilis est le suivant :
SI PAS EmailOuvreSessionSMTP(sNomUser, sMotDePasse, ...
SAI_ServeurSMTP) ALORS
Erreur("Impossible de se connecter au serveur SMTP")
RETOUR
FIN

soit dutiliser la fonction EmailOuvreSession avec une variable de type EmailSessionSMTP. Dans
notre exemple, cette fonction est utilise dans le code du bouton "Envoyer mthode 2". Le code
utilis est le suivant :
MaSession est un EmailSessionSMTP
MaSession.Nom = SAI_user
MaSession.MotDePasse = SAI_MotDePasse
MaSession..AdresseServeur = SAI_ServeurSMTP
SI PAS EmailOuvreSession(MaSession) ALORS
Erreur("Impossible de se connecter au serveur SMTP")
RETOUR
FIN

406

Partie 8 : Programmation avance

Prparer lemail
Pour envoyer un message avec WinDev, il suft de renseigner les principales informations dun
email. Ces informations sont contenues :
soit dans la structure prdnie du WLangage Email. Dans notre exemple, le bouton "Envoyer
mthode 1" utilise cette structure. Le code de remplissage de la structure est le suivant :
EmailRAZ()
Email.Expditeur = SAI_Expediteur
Email.Sujet = SAI_SUJET
Email.Message = RTFVersTexte(SAI_CORPS)
Email.HTML = RTFVersHTML(SAI_CORPS)
Email.NbDestinataire = 1
Email.Destinataire[1] = SAI_Adr_Destinataire
SI SC_SelecteurFichier.SAI_FIC<>"" ALORS
Email.NbAttache = 1
Email.Attache[1] = SC_SelecteurFichier.SAI_FIC
FIN

soit dans la variable de type avanc Email. Dans notre exemple, le bouton "Envoyer mthode 2"
utilise cette variable. Le code de remplissage de la variable est le suivant :
MonMessage est un Email
EmailRAZ(MonMessage)
MonMessage..Expediteur = SAI_Expediteur
MonMessage..Sujet = SAI_SUJET
MonMessage..Message = RTFVersTexte(SAI_CORPS)
MonMessage..HTML = RTFVersHTML(SAI_CORPS)
Ajoute(MonMessage..Destinataire, SAI_Adr_Destinataire)
SI SC_SelecteurFichier.SAI_FIC<>"" ALORS
EmailChargeFichierAttach(MonMessage, ...
SC_SelecteurFichier.SAI_FIC)
FIN

Remarque : cet exemple gre lenvoi dun chier attach. Il est bien sr possible dutiliser plusieurs chiers attachs. Pour plus de dtails, consultez laide en ligne (mot-cl : "Envoyer un email").
Envoyer lemail
Pour envoyer lemail, il suft dutiliser la fonction EmailEnvoieMessage.
Se dconnecter
Pour vous dconnecter, il suft tout simplement dutiliser la fonction EmailFermeSession.

Partie 8 : Programmation avance

407

Autres possibilits
Il est galement possible de :
effectuer des mailings par emails. Pour plus de dtails, consultez lexemple "WD Mail"
(exemple complet prsent dans le volet "Assistants, Exemples et Composants").
manipuler les donnes Outlook (grce aux fonctions email du WLangage). Pour plus de dtails, consultez lexemple "WD Outlook" (exemple complet prsent dans le volet "Assistants,
Exemples et Composants").
manipuler les donnes Lotus Notes (grce aux fonctions Notesxxx du WLangage). Pour plus
de dtails, consultez lexemple "Accs aux bases Notes et Outlook" (exemple didactique prsent dans le volet "Assistants, Exemples et Composants").
Pour plus de dtails sur la gestion des emails avec WinDev, consultez laide en ligne (mot-cl :
"Email, Gestion des emails").

408

Partie 8 : Programmation avance

LEON 8.9. LA POO


Ce que vous allez apprendre dans cette leon ...
Concepts de la programmation oriente objet.
Exemples de dclaration dobjet.

Dure estime : 30mn

Partie 8 : Programmation avance

409

Concepts
La Programmation Oriente Objet (P.O.O.) a pour but de permettre une meilleure rutilisabilit
du code. Les programmes dvelopps en POO sont structurs : ils sont dcomposs en modules
grant chacun une fonctionnalit du logiciel. Les modules dvelopps peuvent tre facilement
rutiliss dans dautres logiciels. Ils vont regrouper un ensemble de procdures et encapsuler la
structure de donnes sur laquelle les procdures vont agir.
Pour programmer "en objet", il faut dclarer des classes, les membres et les mthodes associs.
Les classes
Une classe rassemble la description dune structure de donnes (les membres) et les procdures
(mthodes) qui manipulent les membres.
Une classe dnit donc un type de donnes et son comportement.
Les objets
Une classe permet de crer des objets. Chaque objet cr possde des membres dcrits dans sa
classe et peut tre manipul par lintermdiaire des mthodes de sa classe. On dit quun objet est
une instance de la classe.
Lorsque la classe est dclare, il suft dassocier un objet une classe pour que lobjet puisse
tre manipul par toutes les mthodes de cette classe.
Les membres
Un membre est une donne (ou paramtre) de lobjet.
Les mthodes
Une mthode permet dagir sur lobjet, pour modier ses membres par exemple.
Une mthode est une procdure. Son fonctionnement est identique celui des procdures classiques du WLangage.
Notion dhritage
Lhritage permet dinclure les caractristiques dune classe existante (classe de base) dans une
nouvelle classe (classe drive). Lhritage permet de crer un nouveau type de donnes partir
dun type connu, dans le but de lui ajouter des fonctionnalits, ou den modier le comportement.
La classe de base ne sera donc pas modie. Une classe peut hriter dune classe dont elle
devient une sous-classe.
Une classe drive hrite des membres et des mthodes de sa classe mre (qui peut, elle-mme,
tre une sous-classe dune autre classe mre), en plus de ses propres membres et mthodes
(et galement des membres et mthodes de la premire classe mre, sil sagit dun hritage
multiple). Il nest pas ncessaire de dupliquer les membres et mthodes de la ou des classe(s)
mre(s).
Constructeur et Destructeur
La notion de Constructeur et Destructeur est importante puisquelle permet un appel automatique de mthodes dinitialisation lors de la cration dun objet et lors de sa destruction.
La mthode Constructeur associe une classe est automatiquement appele lors de la dclaration dun objet de la classe.
410

Partie 8 : Programmation avance

La mthode Destructeur associe une classe est automatiquement appele lors de la suppression de lobjet (sortie de procdure dans laquelle lobjet a t dclar).
Encapsulation de donnes
Lencapsulation des donnes permet de garantir que les donnes membres de lobjet ne seront
pas modies tort par des fonctions (mthodes) extrieures lobjet.
Il est ainsi possible dinterdire lutilisateur dun objet laccs certain ou tous ses membres.
Les membres dont laccs est interdit sont appels membres privs.
Il nest possible daccder ces membres privs qu partir des mthodes prvues cet effet
dans la classe.
Exemple
Prenons un exemple simple pour appliquer les concepts que nous venons de voir :
La classe est la classe PERSONNE.
Florence est une instance de la classe PERSONNE.
Le nom, prnom et date de naissance peuvent tre des membres de la classe PERSONNE.
La mthode Age() peut tre une mthode de la classe PERSONNE. Elle calculerait lge en se
basant sur le membre "date de naissance".
Hritage : Un contact peut tre soit une personne, soit une entreprise.
PERSONNE pourrait tre une classe drive de CONTACT.
ENTREPRISE pourrait tre une classe drive de CONTACT.
Crer un programme orient objet
Pour crer un programme en objet en WLangage, il faut :
1. Dcrire la classe et les membres de la classe
2. Donner toutes les mthodes de la classe
3. Dclarer les objets en leur associant une classe ("instancier une classe")

"Si ncessaire, ouvrez le projet exemple, "WD Programmation Avance" : sous le volet
"Accueil", dans le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez
loption "Programmation avance". Le projet se charge.

"Ouvrez la fentre "FEN_POO_Exemple1.WDW" et testez cette fentre.


Nous ne dtaillons pas ici la syntaxe de la P.O.O., nous prsenterons uniquement un exemple
simple de programme orient objet. Pour avoir plus de dtail sur la syntaxe de la P.O.O., consultez
laide en ligne et le manuel de programmation de WinDev (mot-cl : "POO, Classe").
Dclarer une classe
Pour crer une classe :
1. Dans lexplorateur de projet, slectionnez le dossier "Classes".
2. Afchez le menu contextuel de ce dossier (clic droit de la souris) et slectionnez loption
"Nouvelle classe".
3. Dans la fentre qui safche, indiquez le nom de la classe et validez.
4. Le code de la classe safche sous lditeur de code.

Partie 8 : Programmation avance

411

"Consultez le code de la classe CFichier utilise dans lexemple.


1. Dans lexplorateur de projet, slectionnez le dossier "Classes".
2. Ouvrez le dossier "Classes" (en cliquant sur la che prsente devant le nom du dossier).
3. Double-cliquez sur la classe CFichier.
4. Le code de la classe safche sous lditeur de code. Le code de dclaration de la classe
est de la forme :
CFichier est une classe
m_sNomLong est une chane
m_sNomCourt est une chane
m_sExtension est une chane
m_sCheminCourt est une chane
m_sCheminLong est une chane
FIN

"CFichier" est le nom de la classe.


"m_sNomLong", "m_sNomCourt", "m_sExtension"... sont des membres de la classe.
Dcrire les mthodes
Pour crer une mthode :
1. Cliquez avec le bouton droit de la souris sur votre classe prsente dans lexplorateur de projet.
2. Choisissez "Nouvelle mthode" dans le menu contextuel.
3. Dans la fentre qui safche, indiquez le nom de la mthode et validez.
4. Saisissez le code de la mthode sous lditeur de code.

"Pour afcher la mthode SelectionFichier de la classe CFichier :


1. Cliquez avec le bouton droit de la souris sur votre classe prsente dans lexplorateur de projet.
2. Double-cliquez sur le nom de la mthode :
PROCEDURE SelectionFichier()
sFichierSlectionn est une chane
//Ouverture du slecteur de fichier
sFichierSlectionn = fSlecteur(fRepEnCours(), "", ...
"Slection dimages", fFiltreImage(), "png", ...
fselOuvre + fselExiste)
//Affectation des membres de lobjet en cours
:m_sNomLong = fNomLong(sFichierSlectionn)
:m_sNomCourt = fNomCourt(sFichierSlectionn)
:m_sExtension = fExtraitChemin(sFichierSlectionn, fExtension)
:m_sCheminLong = fCheminLong(sFichierSlectionn)
:m_sCheminCourt = fCheminCourt(sFichierSlectionn)
RENVOYER sFichierSlectionn

412

Partie 8 : Programmation avance

Dclarer et manipuler les objets


Dans les traitements de la fentre, un objet est dclar en mme temps que les autres variables :
GLOBAL
Fic1 est un objet CFichier

Pour faire rfrence un membre de lobjet "Fichier", il faut utiliser la syntaxe


<NomObjet>.<nom du membre>

"Dans notre exemple, lobjet est manipul lors de la slection du chier. Le code utilisant les
diffrentes mthodes de la classe est plac dans le bouton permettant de slectionner le
chier.

"Afchez le code de ce bouton (clic droit sur le bouton, option "Code" du menu contextuel).
Lobjet est manipul de la faon suivante :
//Appel de la mthode
sFichier = gclMonFichier.SelectionFichier()
SI sFichier ~= "" ALORS
RETOUR
SINON
SAI_Fichier = sFichier
FIN
INFOFIC..Visible = Vrai
INFOFIC..Etat = AffichageSeulement
SAI_NomLong = gclMonFichier:m_sNomLong
SAI_NomCourt
= gclMonFichier:m_sNomCourt
SAI_Extension
= gclMonFichier:m_sExtension
SAI_CheminLong
= gclMonFichier:m_sCheminLong
SAI_CheminCourt = gclMonFichier:m_sCheminCourt
SAI_Taille
= gclMonFichier:TailleFichier()
SAI_Date
= gclMonFichier:DateFichier()
SAI_Heure
= gclMonFichier:HeureFichier()

"Ouvrez la fentre "FEN_POO_Exemple2.WDW" et testez cette fentre.


Cette fentre prsente un exemple de programme objet manipulant les hritages et les
mthodes Constructeur.
Nous ne nous attarderons pas plus sur la prsentation de la POO dans ce cours.

Partie 8 : Programmation avance

413

414

Partie 8 : Programmation avance

PARTIE 9
Gestion de projet
avance

LEON 9.1. TABLEAU

DE BORD

Ce que vous allez apprendre dans cette leon ...


Prsentation
Mode de visualisation
Options du tableau de bord

Dure estime : 20mn

Partie 9 : Gestion de projet avance

417

Prsentation
Le tableau de bord du projet est un lment indispensable la gestion de projets WinDev. Le tableau de bord permet davoir une vision globale et synthtique de ltat davancement dun projet.
Nous avons dj vu dans la partie 2, quelques fonctionnalits du Tableau de bord.
Nous allons maintenant ltudier plus en dtail, et voir ses interactions avec les Centres de
Contrle.
Exemple
Pour manipuler le tableau de bord, nous allons reprendre le projet "WD Application avec donnes". Si vous navez pas cr cette application, une version corrige est disponible. Pour ouvrir
ce projet corrig, sous le volet "Accueil", dans le groupe "Aide en ligne", droulez "Guide dAutoformation" puis slectionnez loption "WD Application avec donnes (Corrig)". Le projet se charge.

Les diffrents lments du tableau de bord

Le tableau de bord du projet est compos :


de listes dlments
de voyants
de compteurs

418

Partie 9 : Gestion de projet avance

Les listes
Le tableau de bord est compos de diffrentes listes. Ces listes permettent doptimiser laccs
aux lments du projet.
Par exemple, la liste "Slection rapide" permet de rechercher facilement un lment du projet. Il
suft de saisir quelques lettres composant le nom de llment recherch. La slection est automatiquement ralise et un aperu permet de choisir llment voulu.

Astuce

Pour rechercher la fentre FEN_PersonneX, rien de plus simple : saisissez les lettres "Per" et faites
votre choix. Un double-clic sur le nom de llment permet de louvrir immdiatement sous lditeur associ.
Vous voulez rechercher un lment sans tre dans le tableau de bord ? Utilisez
la combinaison de touches [CTRL] + [E] ... et vous retrouverez les mmes possibilits.

Note

Autre liste intressante : les favoris. Qui dans son application na pas une fentre ou un code qui
est utilis frquemment ? Une fentre gnrale regroupant par exemple les principales fonctionnalits ? Pour ne pas perdre de temps rechercher cet objet, il suft de le mettre dans les favoris.
Par exemple, nous allons mettre la fentre "FEN_PersonneX" de notre application en favoris :
1. Dans le tableau de bord, cliquez sur le bouton "Favoris", et cliquez sur le lien pour afcher le
volet des favoris.
Pour afcher le volet des favoris, il est galement possible sous le volet "Accueil",
dans le groupe "Environnement", de drouler "Volets" et de slectionner loption
"Favoris".

2. Afchez la fentre "FEN_PersonneX" sous lditeur (par exemple en double-cliquant sur son
nom dans le volet "Explorateur de projet" WinDev).

Partie 9 : Gestion de projet avance

419

3. Dans le volet "Favoris", cliquez sur le bouton "+". Vous pouvez saisir le nom du favori (par
exemple MaFentre).

Note

Validez. Le favori apparat.


Si plusieurs dveloppeurs travaillent sur le mme projet, il est possible de visualiser "Tous les favoris".

4. Dans le tableau de bord, vous retrouvez galement votre favori en utilisant la touche F5.
Les voyants
Dans la partie 2, nous avons vu le voyant concernant les tests. Regardons les autres voyants.
Les informations concernant la qualit globale du projet sont regroupes dans un compteur spcique.

Dans le compteur, vous trouvez :


Une jauge centrale indiquant la qualit globale du projet,
Une jauge de sauvegarde. Il suft de cliquer sur la jauge pour lancer une sauvegarde du projet.
Une jauge de nettoyage. Il suft de cliquer sur la jauge pour lancer le nettoyage du projet.
Des voyants davertissement : composant pas jour, erreurs de compilations dtectes, informations dtectes, warnings dtects.

420

Partie 9 : Gestion de projet avance

Le tableau de bord prsente galement des voyants doptimisation :


Audit statique : Si ce voyant est rouge, cela signie que laudit statique na pas t lanc depuis
longtemps sur votre projet. Laudit statique permet davoir un tat de votre projet. Il permet
entre autre de :
dtecter le code mort, cest--dire lister les procdures inutilises dans votre application.
lments orphelins, cest--dire lister les lments de votre projet qui ne sont pas utiliss
(par exemple, fentre utilise uniquement pour test lors du dveloppement de lapplication).
dtecter le passage du proler de projet : laudit statique vous informe si lanalyseur de
performances na pas t lanc rcemment sur votre application. Nous dtaillerons lanalyseur de performances dans le chapitre "Lanalyseur de performances", page 464.
dtecter si une optimisation de requtes est ncessaire : laudit statique vous informe si
votre projet utilise des requtes qui peuvent tre optimises par une simple modication de
lanalyse (ajout dune cl compose par exemple).
Nhsitez pas utiliser laudit statique : il ne peut quamliorer les performances de votre application.
laudit dinfrastructure : Si ce voyant est rouge, cela signie que laudit dinfrastructure na pas
t lanc depuis longtemps sur votre projet.
laudit dynamique : Si ce voyant est rouge, cela signie que laudit dynamique na pas t lanc
depuis longtemps sur votre projet. Laudit dynamique permet de raliser un audit lors du test ou
de lexcution de lapplication. Il est possible de connatre :
loccupation mmoire des diffrents lments utiliss par lapplication.
les images non trouves
les patchs non pris en compte
...
Par le biais du tableau de bord, il est galement possible de connatre et de modier certaines
caractristiques importantes du projet. Ces lments sont galement prsents sous forme de
voyants : le voyant est vert ? Cela signie que la fonctionnalit est active dans votre projet. Dans
le cas contraire, un simple clic sur le voyant permet dactiver ou de congurer la fonctionnalit.
Passons rapidement en revue les lments disponibles :

GDS : Permet de savoir si le projet est partag via le Gestionnaire de Sources. Nous verrons plus
en dtail cette fonctionnalit dans la leon suivante ("GDS", page 425).
Live data : Permet dutiliser le contenu des chiers de donnes du poste de dveloppement
dans les fentres, les tats, ... manipuls sous lditeur. Cette fonctionnalit est trs intressante par exemple pour dnir la taille des champs prsents dans une fentre.
Charte de programmation : Nous lavons vu dans la partie 1, la charte de programmation permet dunier les noms des lments utiliss dans un projet. Comme notre projet utilise une
charte de programmation, ce voyant est vert.
Partie 9 : Gestion de projet avance

421

GFI (Grisage automatique des Fentres Inaccessibles) : Cette option indique si les fentres
inaccessibles de votre application seront automatiquement grises ou non. Cette fonctionnalit
est souvent trs apprcie des utilisateurs. Lorsque plusieurs fentres sont superposes, les
fentres inaccessibles sont automatiquement grises.
Langues : vous trouvez ici le nombre de langues gres par votre projet. Dans notre cas, une
seule langue est gre. Un clic sur ce voyant vous permet dajouter simplement de nouvelles
langues votre projet. Nous tudierons la gestion des projets multilingues un peu plus loin dans
ce cours ("Multilingue", page 488).
Gabarit : Vous le savez, les gabarits permettent de dnir simplement la charte graphique de
votre application. Un clic sur ce voyant vous permet daccder lcran de conguration de
gabarit de votre application.
Etats et Requtes : Nous lavons dj vu, le logiciel "Etats et Requtes" permet lutilisateur
nal de composer ses propres tats et ses propres requtes. Pour lintgrer dans votre application : un voyant suft. Pour plus de dtails, consultez "Diffusez "Etats & Requtes" avec vos
applications", page 369.
Les compteurs en relation avec les Centres de Contrle
WinDev est livr avec plusieurs Centres de Contrle. Les Centres de Contrle, comme leur nom
lindique, permettent de contrler un ensemble de fonctionnalits. Nous avons dj vu le Centre
de Contrle HyperFileSQL, qui permet notamment de contrler les applications et les chiers de
donnes des applications HyperFileSQL Client/Serveur.
WinDev propose galement le Centre de Suivi de Projets. Ce centre permet de grer des projets
(informatiques ou non), de leur conception leur livraison et mme leur maintenance.
Nous ne dtaillerons ici que les lments en relation avec le tableau de bord. Pour plus de dtails
sur les Centres de Contrle et leur conguration, consultez le chapitre "Centres de contrle", page
436.
Le compteur de bugs

Le compteur de bugs reprsente le nombre de bugs actuellement prsents sur le projet. Ces bugs
sont rfrencs dans le Centre de Contrle Qualit.
Ces bugs ont t fournis directement par les utilisateurs de lapplication, au moyen de loption "?
.. Envoyer une suggestion, ..." de leur application. Cette option est propose en standard si vous
intgrez le menu automatique "?" dans votre application.
Le compteur de tches

Le compteur de tches reprsente le nombre de tches actuellement en cours sur le projet. Ces
tches sont rfrences dans le Centre de Suivi de Projets.
Ces tches correspondent par exemple :
des fonctionnalits ajouter au projet
des dveloppements futurs, ...

422

Partie 9 : Gestion de projet avance

Le compteur de demandes

Le compteur de demandes reprsente le nombre de demandes actuellement prsentes sur le


projet. Ces demandes sont rfrences dans le Centre de Contrle Qualit.
Ces demandes ont t fournies directement par les utilisateurs de lapplication, au moyen de loption "? .. Envoyer une suggestion, ..." de leur application. Cette option est propose en standard si
vous intgrez le menu automatique "?" dans votre application.
Le compteur de messages

Le compteur de messages reprsente le nombre de messages associs au projet. Ces messages


sont visibles dans la messagerie de WinDev. Ces messages sont par exemple automatiquement
envoys lors du travail avec le gestionnaire de sources. Vous tes ainsi automatiquement averti
dune mise jour dun lment dans le GDS.
Le compteur de rgles

Le compteur de rgles permet de connatre le nombre de rgles mtier concernant le projet. Nous
verrons les rgles mtier un peu plus loin dans ce cours. Les rgles mtier peuvent tre saisies :
par vous, dveloppeur de lapplication
par les utilisateurs, au moyen de loption "? .. Envoyer une suggestion, ..." de leur application.
Cette option est propose en standard si vous intgrez le menu automatique "?" dans votre
application.

Configuration du tableau de bord


Nous avons vu les grandes catgories dinformations afches dans le tableau de bord. WinDev
propose deux modes de visualisation de ces informations : mode dveloppeur et mode chef de
projet. Pour changer de mode, il suft de cliquer sur "Mode" prsent dans la jauge circulaire du tableau de bord. Pour chaque mode, vous pouvez congurer de manire prcise les niveaux dalerte
du tableau de bord.

Partie 9 : Gestion de projet avance

423

Pour congurer le tableau de bord, slectionnez loption "Options du Tableau de Bord" du menu
contextuel du tableau de bord. Il est possible de congurer prcisment pour les deux modes :

les compteurs de tches et de demandes,


le nettoyage,
la sauvegarde,
la qualit du projet,
la position du tableau de bord, ...

424

Partie 9 : Gestion de projet avance

LEON 9.2. GDS


Ce que vous allez apprendre dans cette leon ...
Prsentation
Le gestionnaire de sources
Utilisation du gestionnaire de sources

Dure estime : 30mn

Partie 9 : Gestion de projet avance

425

Introduction
Un dveloppement informatique important ncessite la participation de plusieurs dveloppeurs.
Ces dveloppeurs doivent travailler sur un projet WinDev unique, en partageant les diffrentes
ressources (fentres, classes, ...) manipules.
WinDev gre en standard un gestionnaire de sources nomm "GDS" permettant de partager les
sources de diffrents projets entre dveloppeurs et de connatre lhistorique complet des modications ralises (dans le code, linterface, ...).

GDS (Gestionnaire de Sources)


Principe du GDS
Le gestionnaire de sources permet de stocker et de partager des projets et tous leurs lments.
Le principe est le suivant :
Une version de rfrence de chacun de vos projets est prsente sur un serveur. Lensemble
de ces versions est appel "Base de sources".
Chaque dveloppeur a sur son poste une copie locale des diffrents projets sur laquelle il
travaille.

Lorsquun dveloppeur veut modier un lment dun projet (une fentre, un tat, une requte, ...), il indique au GDS quil sapproprie temporairement cet lment. Pour cela, le dveloppeur va extraire cet lment de la base de sources.
Ce dveloppeur obtient alors les droits exclusifs sur cet lment : il peut faire toutes les
modications voulues sur cet lment.
Les autres dveloppeurs continuent de travailler avec la copie de la version de rfrence de
cet lment (prsente sur la base de sources).
Ds que le dveloppeur a termin ses modications, il rintgre llment extrait dans la
base de sources.

426

Partie 9 : Gestion de projet avance

Les autres dveloppeurs sont automatiquement avertis de cette rintgration. Ils peuvent
alors mettre jour leur copie locale.

Le GDS gre donc le travail collaboratif et permet de connatre lhistorique de toutes les modications ralises.
Le GDS permet galement dadministrer et de rglementer les lments partags entre plusieurs
projets.
Cration de la base de sources
Pour partager un projet grce au gestionnaire de sources, il est ncessaire de crer une base de
sources. Cette base de sources doit tre cre une seule fois sur un poste serveur.
Cette base de sources peut tre cre diffrents moments :
lors de linstallation de WinDev.
lors de la cration dun projet utilisant le GDS.
lors de limportation dun projet dans le GDS.
directement dans ladministrateur du GDS.

"Nous allons crer notre base de sources lors de limportation dun projet dans le GDS, la
Notes

prochaine tape.
Il est conseill de faire rgulirement des sauvegardes de la base de sources
du GDS. Pour cela, il suft de se connecter en tant quadministrateur loutil
dadministration du GDS, et de slectionner loption "Outils .. Administration ..
Sauvegarde complte de la base".

Partie 9 : Gestion de projet avance

427

Intgration dun projet dans le GDS


Pour utiliser un projet existant avec le gestionnaire de sources, il suft dintgrer ce projet dans la
base de sources du GDS.

"Nous allons intgrer le projet "Fentres et Champs.WDP" dans la base de sources du GDS :
1. Ouvrez le projet exemple "WD Fentres et Champs.WDP" : sous le volet "Accueil", dans le
groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Fentres et
champs". Le projet se charge.
2. Sous le volet "GDS", dans le groupe "Projet", cliquez sur "Ajouter le projet". Lassistant
dajout de projet dans le GDS se lance :

Nous navons pas prcdemment cr de base de sources. Nous allons donc en crer une.
Remarque : Nous allons crer une base de sources "locale" (sur le poste de dveloppement).
Le fonctionnement serait similaire pour une base de sources rseau.
3. Cliquez sur le bouton "Crer une base".

La base de sources peut tre au format HyperFileSQL Classic (local ou rseau) ou au format
HyperFileSQL Client/Serveur. Nous allons crer une base de sources au format HyperFileSQL
428

Partie 9 : Gestion de projet avance

Notes

Classic.
Lutilisation dune base de sources au format HyperFileSQL Client/Serveur permet dutiliser cette base de sources distance.

4. Conservez loption "Cration dune base en mode partage rseau" slectionne et indiquez
le rpertoire de cette base de sources ("C:\Mes Projets\Ma base de sources" par exemple).
Validez la cration de la base de sources (bouton "Crer la base").
La base de sources est prsent cre. Nous allons pouvoir intgrer notre projet dans cette
base de sources.
5. Passez lcran suivant.
6. Lassistant nous propose de placer le projet dans le sous-rpertoire "Projets WinDev" de la
base de sources.

Nous allons accepter cet emplacement. Passez lcran suivant.


7. Lassistant nous demande de slectionner les diffrents lments du projet ajouter dans
la base de sources.

Partie 9 : Gestion de projet avance

429

Notes

Nous voulons que tous les lments du projet soient ajouts. Passez lcran suivant.
8. Lassistant nous demande de slectionner les diffrentes dpendances du projet ajouter dans la base de sources. Ces dpendances correspondent tous les lments externes
ncessaires au projet (images, feuilles de styles, ...).
Nous voulons que toutes les dpendances du projet soient ajoutes. Passez lcran suivant.
9. Validez lintgration du projet dans le GDS. Notre projet et tous ses lments sont dsormais ajouts dans notre base de sources.
Une fentre daide sur la barre doutils dutilisation du GDS safche. Lisez et validez cette
fentre.
Partage dlments du projet
Lors de lintgration dans le GDS de projets partageant les mmes ressources
(la mme analyse, les mmes fentres, ...), les lments concerns peuvent tre
partags entre les diffrents projets. Ainsi, le mme lment nest intgr quune
seule fois dans le GDS.

Ouverture du projet depuis le GDS


Pour travailler sur un projet prsent dans le gestionnaire de sources, il faut rcuprer, en local,
une copie de ce projet. Pour cela, il suft douvrir le projet depuis le gestionnaire de sources : sous
le volet "Accueil", dans le groupe "Gnral", droulez "Ouvrir" et slectionnez loption "Ouvrir un
projet depuis le GDS").

Notes

Cette opration doit tre effectue une seule fois par chaque dveloppeur utilisant le projet.
Le dveloppeur qui a ajout le projet dans le gestionnaire de sources (dans ce cas, cest vous !)
na aucune manipulation effectuer.

430

Les prochaines ouvertures dun projet gr par le GDS sont identiques aux ouvertures dun projet non gr par le GDS : il suft douvrir le projet (chier ".WDP")
correspondant la copie locale.

Partie 9 : Gestion de projet avance

Configuration du GDS
Avant de commencer travailler sur les lments du projet prsent dans le GDS, il est important
de congurer le GDS.
Les points importants de cette conguration concernent :
le mode dextraction des lments du projet.
le mode dextraction du projet (chier WDP).
Mode dextraction des lments du projet

Lors du travail sur des lments dun projet prsent dans le GDS, il est ncessaire dextraire llment de la base de source avant de commencer le modier, puis de le rintgrer une fois les
modications effectues. Llment modi est ainsi disponible pour tous les utilisateurs du GDS.
WinDev propose deux modes dextraction des lments du projet :
le mode classique : si vous afchez un lment du GDS non extrait, un panneau indique que
cet lment doit tre extrait pour tre modi. Vous pouvez extraire immdiatement llment
(bouton dextraction prsent dans le panneau).
le mode automatique : si vous tentez de modier un lment du GDS non extrait, le GDS propose automatiquement dextraire cet lment. Aprs la validation de lextraction, llment peut
tre modi.
Remarque : ce mode est dconseill lors dune utilisation du GDS avec une connexion Internet
lente.
Dans ce cours, nous allons utiliser lextraction automatique.

"Pour vrier que lextraction automatique est bien active, sous le volet "Accueil", dans le
groupe "Environnement", droulez "Options" et slectionnez loption "Options gnrales de
WinDev". Dans longlet "Gnral", vriez que loption "Extraction des lments la premire
modication" est slectionne. Si ce nest pas le cas, activez cette option.
Mode dextraction du projet

Notes

Le chier Projet (chier WDP) contient les diffrentes options pour le paramtrage du projet (code
dinitialisation du projet, liste des lments relis, nom de la premire fentre du projet, ...).
WinDev propose deux modes de gestion du projet :
Mode Matre/Invit : Seul le matre peut modier le projet et reporter ces modications dans
la base de sources du GDS. Le matre peut galement rintgrer tous les lments pour crer
lexcutable et le programme dinstallation. Les modications ralises par les invits sur le projet ne seront pas prises en compte dans la base de source du GDS.
Le mode Matre/Invit est conseill pour une utilisation du GDS par un seul dveloppeur.

Mode automatique : Le chier projet est extrait uniquement si laction ralise le ncessite
(quel que soit lutilisateur). Lorsque laction sur le projet a t effectue, le chier projet est
automatiquement rintgr.

Partie 9 : Gestion de projet avance

431

Notes

Le mode "Automatique" devient vite ncessaire pour des projets importants partags par plusieurs dveloppeurs.

Dans ce cours, nous allons utiliser lextraction automatique.

"Pour vrier que lextraction automatique du projet est bien active, sous le volet "GDS", dans
le groupe "Projet", droulez "Matre / Invit" et vriez que loption "Grer automatiquement
lextraction du projet" est bien coche.
Extraction dun lment
Nous allons maintenant commencer travailler avec le GDS.
Pour modier un lment du projet, il est ncessaire de lextraire.

"Nous allons extraire la fentre "FEN_ChampBouton" :


1. Slectionnez la fentre "FEN_ChampBouton" dans lexplorateur du projet. Cette fentre est
prsente dans le sous-dossier nomm "Champs classiques".
2. Double-cliquez sur llment pour louvrir sous lditeur de fentres.
3. Afchez le code du bouton F2 (option "Code" du menu contextuel).
4. Nous allons saisir un commentaire devant la ligne "Info ...". Positionnez le curseur et utilisez
la touche ENTREE.
5. La fentre dextraction automatique apparat :

6. Le GDS propose trois modes dextraction :


Exclusif (mode conseill) : personne ne pourra extraire cet lment jusqu sa rintgration.
Llment pourra uniquement tre extrait pour test.
Pour test : llment pourra tre modi mais les modications ne pourront pas tre rintgres.
Multiple : llment pourra galement tre extrait par dautres utilisateurs. Dans ce cas, lors
de la rintgration, il sera possible de visualiser les diffrences entre les diffrentes ver432

Partie 9 : Gestion de projet avance

sions de llment. Ce mode est rserv des cas dutilisation spciques et des dveloppeurs avancs.
7. Nous allons extraire la fentre en mode exclusif. Conservez loption "Exclusif" coche.
8. Saisissez un commentaire ("Ajout dun commentaire pour F2" par exemple). Ce commentaire sera utile pour les autres dveloppeurs.
9. Validez lextraction.
La fentre est extraite. Le code peut tre modi.
Modification de llment extrait
La modication dun lment extrait (IHM, code, ...) seffectue comme sur un projet non gr par
le GDS.
Cependant, toutes les modications effectues sur un lment extrait ne sont pas visibles par les
autres dveloppeurs.
Si un autre dveloppeur excute llment extrait, llment qui est actuellement dans la base de
sources sera utilis.
Il est ainsi possible de faire voluer une application tout en gardant une version stable dans la
base de sources.

"Modiez la fentre extraite.


1. Saisissez le commentaire suivant : "// Afchage de la touche utilise". Fermez la fentre de
code.
2. Changez lemplacement des champs, modiez les libells, ajoutez des champs ou du
code, ...
3. Enregistrez votre fentre (CTRL + S).

"Testez vos modications.


Rintgration de llment extrait
Maintenant que les modications sont termines et testes, nous allons rintgrer la fentre dans
la base de sources. Vos modications seront alors accessibles aux autres dveloppeurs.

"Sous le volet "GDS", dans le groupe "Elment en cours", cliquez sur le bouton "Rintgrer".
Lcran suivant safche :

Partie 9 : Gestion de projet avance

433

Notes

Cet cran permet de :


connatre les modications effectues en comparant llment de la base de sources avec
llment extrait (bouton "Mes Modifs").
accder lhistorique de llment dans la base de sources (bouton "Proprits").
saisir un commentaire sur les modications ralises. Par dfaut, WinDev propose le commentaire saisi lors de lextraction.
envoyer un message aux autres dveloppeurs.
rintgrer les modications effectues dans llment, tout en conservant llment extrait
(option "Garder llment extrait").
Si vous utilisez les Centres de Contrle, il est galement possible de terminer
la tche en cours lors de la rintgration de llment dans le Gestionnaire
de sources. Cette fonctionnalit est utile notamment pour assurer le suivi des
tches, des corrections de bugs, ...

"Validez la rintgration.
Synchronisation du projet
Plusieurs options permettent de congurer un projet manipul avec le GDS. Ces options sont regroupes dans longlet "GDS" de la description du projet (afche par un clic sur "Description"
sous le volet "Projet").
Ces options sont les suivantes :
Proposer la rcupration de la dernire version des lments louverture du projet.
Cette option permet lors de louverture dun projet prsent dans le GDS, de proposer la
rcupration de la dernire version des diffrents lments du projet.
Par dfaut, la dernire version des lments est automatiquement rcupre.
Proposer la rintgration des lments la fermeture du projet.
Cette option permet dafcher lors de la fermeture du projet la liste de tous les lments
actuellement extraits, an de rintgrer certains ou tous ces lments.
Par dfaut, la fermeture du projet, les lments extraits ne sont pas rintgrs.

Notes

Proposer la rintgration et la rcupration de la dernire version des lments lors de la


gnration dexcutables, de bibliothques, de composants,
Cette option permet dafcher lors de la cration dun excutable, dune bibliothque, la
liste des lments extraits, an de rintgrer et de rcuprer la dernire version des
lments.
Lexcutable, le composant ou la bibliothque peut ainsi contenir les derniers lments les
plus jour.
Par dfaut, la gnration de lexcutable, de la bibliothque, se fait avec les lments du
projet actuellement prsents sur le poste local.

434

Fusion de code
Vous pouvez comparer un lment avec une de ces versions prcdentes. Il est
alors possible de comparer le code pour rcuprer un code "perdu" ou supprim
par erreur par un autre dveloppeur par exemple.

Partie 9 : Gestion de projet avance

Extraire/Rintgrer automatiquement le projet.


Cette option permet dextraire ou de rintgrer automatiquement le projet lors de la
manipulation dun lment.
Par dfaut, cette option nest pas slectionne.
Inclure les nouveaux lments uniquement dans la conguration courante.
Cette option permet de grer les ajouts dlments uniquement dans la conguration en
cours.
Par dfaut, cette option nest pas slectionne.
Mode dconnect (ou nomade)
Le GDS permet trs simplement de travailler en mode dconnect ou nomade.
Ce mode permet par exemple un dveloppeur utilisant un portable de continuer travailler sur
un projet prsent dans la base de sources tout en tant dconnect.
Le principe est simple :
avant la dconnexion, sous le volet "GDS", dans le groupe "Autres actions", droulez "Travail
distance" et slectionnez loption "Se dconnecter pour une utilisation nomade".
la reconnexion, sous le volet "GDS", dans le groupe "Autres actions", droulez "Travail
distance" et slectionnez loption "Se reconnecter et synchroniser". Il suft alors de rintgrer les lments modis.
En mode nomade, deux solutions soffrent vous concernant lextraction dlments :
Vous ne faites aucune extraction dlment du GDS. Ainsi, pendant toute votre priode nomade, dautres dveloppeurs pourront travailler sur le ou les mmes lments que vous.
votre retour et votre reconnexion au GDS, il sera ncessaire de faire des fusions entre vos
propres modications sur llment et celles effectues par dautres dveloppeurs.
Vous faites une extraction exclusive sur le ou les lments que vous allez modier. Vous
vous rservez ainsi llment pendant toute votre priode nomade.
Administrateur du GDS
Ladministrateur de GDS permet de manipuler directement les diffrents projets inclus dans le
gestionnaire de sources.
Il permet par exemple de :
grer les bases de sources (cration, connexion une base de sources).
grer les chiers et les rpertoires prsents dans un projet de la base de sources (ajouter,
supprimer, renommer, des chiers et des rpertoires).
grer les diffrents chiers de la base de sources (extraction, rintgration, partage, ).
lancer certains outils (options, maintenances, ).
visualiser lhistorique dun lment.
visualiser ltat des lments.
raliser des sauvegardes.
donner des droits aux diffrents utilisateurs du GDS.
lister les projets auxquels on participe an de pouvoir sen dissocier (si besoin).

"Lancez ladministrateur du GDS : sous le volet "GDS", dans le groupe "Base GDS", cliquez sur
le bouton "Grer". Tous les lments du projet sont lists dans ladministrateur.
Pour plus de renseignements sur le GDS, consultez laide en ligne de WinDev (mot-cl : "GDS").
Partie 9 : Gestion de projet avance

435

LEON 9.3. CENTRES

DE CONTRLE

Ce que vous allez apprendre dans cette leon ...


Prsentation
Le Centre de Suivi de Projets
Suivre les retours client avec Centres de Contrle
Les autres Centres de Contrle

Dure estime : 20mn

436

Partie 9 : Gestion de projet avance

Prsentation

Note

WinDev propose un ensemble doutils pour suivre le dveloppement dun projet, de sa conception
sa maintenance. Ces outils sappellent les Centres de Contrle.
Dans un chapitre prcdent, nous avons dj voqu le Centre de Contrle HyperFileSQL. Ce
Centre de Contrle (redistribuable) permet notamment de grer les applications HyperFileSQL
Client/Serveur dployes.
Dans cette partie, nous allons nous intresser aux Centres de Contrle lis au dveloppement
dune application :
le centre de Suivi de Projets.
le centre de Contrle Qualit.
Ces deux centres utilisent une base de donnes spcique. Cette base de donnes peut tre :
soit une base de donnes HyperFileSQL Classic : au premier lancement de WinDev, vous avez
donn le chemin de cette base de donnes. Par dfaut cette base est installe dans un sousrpertoire de WinDev 18.
soit une base de donnes HyperFileSQL Client/Serveur.
Ces informations sont modiables tout moment depuis les options de WinDev :
1. Dans le volet "Accueil", droulez "Options" et slectionnez "Options gnrales de WinDev".
2. Dans longlet "Utilisateur" des options de WinDev, cliquez sur le bouton "Paramtres des
Centres de Contrle").
Conguration ncessaire
Pour suivre cette leon, vous devez utiliser lenvironnement en mode complet.
Pour plus de dtails, consultez "Tableau de bord", page 417.

Le Centre de Suivi de Projets


Le Centre de Suivi de Projets est le cur de lorganisation. Le Centre de Suivi de Projets permet
de grer le planning de ralisation dun projet, de sa cration sa livraison nale. Il est ainsi possible de connatre lensemble des tches raliser sur un projet, les dveloppeurs concerns, les
dures ncessaires, ltat davancement du projet, ...
Pour tester les Centres de Contrle, nous allons utiliser notre application "WD Application avec
donnes".

"Lancez le Centre de Suivi de Projets. Pour cela, sous le volet "Outils", dans le groupe "Centres
Notes

de Contrle", cliquez sur "Suivi de Projets").


Si vous navez jamais lanc le Centre de Suivi de Projets, un cran vous permet
de dnir les options de la gestion du temps.

La premire chose faire est de dnir le "Projet" de travail. Dans notre cas, ce projet correspond
un projet WinDev, mais il pourrait sagir de nimporte quel autre projet.

Partie 9 : Gestion de projet avance

437

Notes

Le Centre de Suivi de Projets peut vous aider grer, planier nimporte quel
projet ou tche (de dveloppement, commercial, ou autre).

Note

1. Dans le Centre de Suivi de Projets, crez un nouveau projet (option "Gestion .. Gestion des
Projets", bouton "+").
2. Saisissez :
le nom du projet (par exemple "Autoformation")
sa description (par exemple "WD Application avec donnes")
le type dapplication : Windows
le chemin du projet. Dans notre cas, indiquez un chemin de projet hors GDS (par exemple le
chemin du projet "WD Application Avec Donnes.wdp", dans le sous-rpertoire "Autoformation\Corrigs\WD Application Avec Donnes" de WinDev).
Si le projet est disponible dans le GDS (Gestionnaire de sources), il est possible
de saisir la base de sources et le rpertoire distant correspondant au projet.

un groupe
le spool associ (vous pouvez en crer un nouveau). Le spool permettra de rcuprer les
demandes ralises par les utilisateurs.
la couleur associe au projet (permet didentier rapidement les diffrents projets).
3. Validez.
4. Lcran permettant de slectionner les intervenants de votre projet est automatiquement
afch. Laissez vous-mme, et validez.
5. Fermez la fentre de gestion des projets.

"Maintenant, il est possible de dnir des tches sur le projet. Nous allons crer une tche
pour passer notre projet en multilingue :
1. Slectionnez loption "Tches .. Crer une nouvelle tche". Cette tche va tre associe au
projet "Autoformation" que nous venons de crer.

438

Partie 9 : Gestion de projet avance

2. Donnez les caractristiques suivantes :

3. Validez. La tche apparat dans la liste des tches.


Vous pouvez crer autant de tches que vous voulez. Ces tches reprsentent votre planning. Ces
tches peuvent galement tre des tches xes (par exemple une runion un jour et une heure
donns) ou priodiques (par exemple, une runion tous les vendredis).
Pour activer une tche, il suft dutiliser le menu contextuel de la liste des tches, et slectionner
loption "Dmarrer cette tche".
Lutilisation du Centre de Suivi de Projets est trs simple : ds que vous effectuez une tche, vous
slectionnez cette tche dans le Centre de Suivi de Projets, et vous indiquez que vous "dmarrez
cette tche" (option du menu contextuel de la liste des tches). Si votre projet est li un projet
WinDev, ds que le projet est ouvert sous WinDev, la tche correspondante est active.

Partie 9 : Gestion de projet avance

439

Grer son temps


La gestion du temps est primordiale. O passe le temps de chaque journe ? Comment le savoir sans contrainte supplmentaire, sans astreindre les membres de lquipe une saisie fastidieuse, et sans non plus donner limpression dsagrable dtre espionn ?
La saisie du temps pass sur les tches est une fonctionnalit intressante de WinDev. Cette
fonctionnalit est lie lutilisation du Centre de Suivi de Projets.
Le principe est simple : la liste des tches est saisie dans le Centre de Suivi de Projets.

"Pour activer laide la gestion du temps :


1. Dans le Centre de Suivi de Projets, slectionnez "Paramtres .. Options du Centre de Suivi de
Projets".
2. Dans longlet "Aide la gestion du temps", slectionnez "Activer laide la gestion du
temps".
3. Validez.
La tche en cours est rappele intervalle de temps rgulier.

Lutilisateur peut valider la tche en cours, ou si ncessaire, changer sa tche en cours. De plus,
si le poste de travail est inutilis pendant une priode dtermine, une "roue des tches" safche.
Cette roue des tches permet de slectionner la tche dinterruption correspondant au temps
coul pendant lafchage de la roue.

440

Partie 9 : Gestion de projet avance

Conguration
Il est possible dactiver/dsactiver la gestion du temps dans la fentre de paramtrage de la gestion du temps. Cette fentre peut tre afche :
dans le Centre de Suivi de Projets (option "Paramtres .. Options du Centre de Suivi de Projets")
dans WinDev : pour cela, sous le volet "Projet", dans le groupe "Autres actions", droulez "Gestion du temps" et slectionnez loption "Options de la gestion du temps".

Suivre les retours client avec les Centres de Contrle


Nous avons vu dans la partie 2 de ce cours, lintrt du menu automatique. Une des options de
ce menu automatique est lenvoi de suggestions, dysfonctionnements ou rgles mtier au dveloppeur de lapplication.

Notes

La gestion des retours clients dpend de lutilisation en mode connect ou non de lapplication.
Si lapplication est en mode connect (la base de donnes des Centres de Contrle est accessible aux utilisateurs), les demandes sont directement enregistres dans la base de donnes des
Centres de Contrle :
les suggestions et les dysfonctionnements sont enregistrs dans le spool de lapplication.
les rgles mtier sont automatiquement ajoutes aux rgles mtier du projet.
Si lapplication est en mode dconnect (la base de donnes des Centres de Contrle nest pas
accessible aux utilisateurs), les demandes se font par emails. Le Centre de Suivi de Projets doit
tre congur pour recevoir les emails (paramtrage ralis dans les options administrateur du
Centre de Suivi de Projets) :
les suggestions et les dysfonctionnements sont enregistrs dans le spool de lapplication, puis
sont grs par le Centre de Contrle Qualit.
les rgles mtier sont automatiquement ajoutes aux rgles mtier du projet.
Pour plus de dtails sur la gestion des retours Client, il est conseill de consulter
laide en ligne (mot-cl : "Retour Client").

Les autres Centres de Contrle


WinDev dispose galement dautres Centres de Contrle, rservs aux dveloppeurs WinDev :
Centre de Rutilisabilit : Ce centre permet de centraliser les ressources (composants, bibliothques, classes, ...) de vos diffrents projets an de les mettre disposition de votre
quipe de dveloppement.
Centre de Gestion des documents : Ce centre permet de centraliser les aides et documents
gnrs pour vos projets.
WinDev propose galement dutiliser le Superviseur dInfrastructure LOgicielle (SILO). Cet outil
permet de gnrer un rapport de synthse sur ltat de linfrastructure informatique. Vous avez
accs toutes les informations concernant vos serveurs et vos applications : applications prsentes, utilisateurs connects, charge, ...

Partie 9 : Gestion de projet avance

441

LEON 9.4. RGLES

MTIER

Ce que vous allez apprendre dans cette leon ...


Prsentation
Crer une rgle mtier
Valider une rgle mtier

Dure estime : 20mn

442

Partie 9 : Gestion de projet avance

Prsentation
WinDev permet de grer des rgles mtier.
Une rgle mtier permet de dnir un mode opratoire prcis ou de prciser un traitement particulier. Par exemple : le calcul dun taux de TVA avec ses particularits, les rgles de changement
de statut dun client, la formule de calcul dun montant de frais de port, ...
Une rgle mtier peut tre simple ou labore, et concerner un ou plusieurs lments dun ou de
plusieurs projets.
Exemple
Pour voir les avantages des rgles mtier, nous allons crer une rgle mtier sur le projet "WD
Application Avec Donnes" cr la partie 2 de ce cours dauto-formation.
Si vous navez pas cr cette application, une version corrige est disponible. Pour ouvrir ce projet
corrig, sous le volet "Accueil", dans le groupe "Aide en ligne", droulez "Guide dAuto-formation"
puis slectionnez loption "WD Application avec donnes (Corrig)". Le projet se charge.

Application sur un exemple concret


Cration dune rgle mtier

"Afchez la fentre "FEN_PersonneX".


"Nous allons modier cette fentre pour grer le cas des personnes ges de moins de 18
ans. En effet, si une personne de moins de 18 ans est associe un compte, des conditions
spciques doivent tre prises en compte.
1. Crez un champ libell et positionnez-le ct du champ "Date de naissance". Ce libell a
pour nom "LIB_SansNom1".
2. Dans le code de sortie du champ "Date naissance", saisissez le code suivant :
Age_Individu est une Date = Age(SAI_DateNaissance)
SI Age_Individu..Anne < 18 ALORS
// On indique que la personne nest pas majeure
LIB_SansNom1 = "Personne non majeure" + RC + ...
"Conditions spcifiques"
LIB_SansNom1..Couleur = RougeFonc
SINON
// On rinitialise le libell
LIB_SansNom1 = ""
FIN

Ce code permet de calculer lge de la personne, et si celui-ci est infrieur 18, le libell
afche en rouge la chane "Personne non majeure".

Partie 9 : Gestion de projet avance

443

Ce code doit tre excut :


chaque modication de la date de naissance dune personne
chaque afchage de la che dune personne.

"Nous allons donc crer une procdure avec ce code pour pouvoir lexcuter volont.
1. Sous lditeur de code, slectionnez le code que vous venez de saisir.
2. Dans le menu contextuel, slectionnez loption "Crer une procdure .. Crer une procdure
locale contenant le code slectionn".
3. Donnez un nom la procdure : CalculAge.
4. Copiez lappel la procdure CalculAge dans les lments suivants :
Bouton de recherche lidentique.
Bouton de recherche gnrique.
Boutons de parcours.

"Testez la fentre. Faites une recherche gnrique sur VINI, et afchez VINI Emma.
"Nous allons maintenant crer une rgle mtier sur cette fentre.
Dans notre cas, la rgle mtier va sappliquer toutes les personnes ayant moins de 18 ans.
Dans ce cas, un traitement spcique doit tre fait : il faut afcher un libell indiquant que la
personne est non majeure.
1. Afchez le volet des rgles mtier. Sous le volet "Accueil", dans le groupe "Environnement",
droulez "Volets" et slectionnez "Rgles mtier".
2. Par dfaut, la nouvelle rgle mtier sera cre sur llment slectionn : slectionnez le
libell "LIB_SansNom1".
3. Cliquez sur le bouton "+" : lcran de saisie de la rgle mtier safche.
4. La description de la rgle est la suivante : "Si la personne a moins de 18 ans, afcher un libell rouge indiquant que la personne est mineure".

5. Nous allons maintenant dnir sur quels lments la rgle mtier doit sappliquer. Cliquez
sur longlet "Liens".
6. Nous allons dnir un lien automatique : la rgle sappliquera ds quun lment respectant les conditions de la rgle sera cr. Cliquez sur le bouton "Conditions des liens automatiques" (
).
7. Cette rgle mtier sappliquera sur le projet courant. Slectionnez loption "Le projet courant uniquement".

444

Partie 9 : Gestion de projet avance

8. Nous allons dnir les conditions de slection de la rgle mtier. Cliquez sur "+" et indiquez
les informations suivantes :

La rgle va concerner tous les champs des fentres lis la rubrique "Personne.DateNaissance". Validez. La condition de slection est afche.
Automatiquement, les fentres existantes du projet correspondant la rgle sont listes.
9. Validez. Puis validez la fentre de dnition des conditions des liens automatiques.
10. La liste des liens pour llment "FEN_PersonneX" est afche. Vous pouvez passer ltat
du lien en "Ralis" pour llment concern dans la fentre "FEN_Personne_X".

11. Validez la cration de la rgle mtier.


12. Enregistrez votre fentre.

Partie 9 : Gestion de projet avance

445

LEON 9.5. MULTI-CONFIGURATIONS


Ce que vous allez apprendre dans cette leon ...
Prsentation
Utiliser un mme projet pour diffrentes congurations

Dure estime : 20mn

446

Partie 9 : Gestion de projet avance

Prsentation
Vous avez cr une application, et vous voulez crer un composant partir de certaines fentres
du projet ? Votre projet contient des procdures qui pourraient tre utilises dans un service
Web ? Une partie de votre application peut tre utilise en Java ?
Comment ne pas multiplier les projets ? Un seul projet et plusieurs destinations possibles, voil le
d rsolu grce aux congurations de projet WinDev.
Les congurations de projet permettent de crer partir dun mme projet plusieurs "cibles" diffrentes. tout moment, vous pouvez choisir la conguration sur laquelle vous travaillez, et gnrer
en une seule opration tous les lments pour toutes les congurations dun projet.
Un exemple pratique ? Nous allons tester les congurations de projet sur notre application complte.

Cration dune configuration de projet


Nous allons crer une conguration de projet an de crer un composant partir du projet "WD
Application Avec Donnes" cr la partie 2 de ce cours dauto-formation. Si vous navez pas cr
cette application, une version corrige est disponible.

"Pour ouvrir ce projet sous WinDev :


1. Fermez si ncessaire le projet en cours. La fentre de bienvenue apparat.
2. Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"WD Application avec donnes (Corrig)". Le projet se charge.
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "WD Application
avec donnes (Corrig)".

"Pour crer la conguration de projet :


1. Dans le volet "Explorateur de projet", slectionnez loption "Congurations (WD Application
avec donnes)".
2. Dans le menu contextuel, slectionnez "Nouvelle Conguration". Lassistant de cration
dune conguration de projet se lance.

Partie 9 : Gestion de projet avance

447

3. Dans les informations gnrales de la conguration de projet, indiquez le nom (Test), la


description (Test), et le type de gnration ("Applications Windows (bureau)" pour notre
exemple).

Passez lcran suivant.


4. Indiquez la plate-forme de la conguration (Windows dans notre cas). Passez lcran suivant.
5. Indiquez le mode dexcution (64 bits dans notre cas). Passez lcran suivant.
6. Indiquez les lments intgrer dans la conguration. Pour notre exemple, intgrez tous les
lments. Passez lcran suivant.
7. Intgrez galement les composants externes. Passez lcran suivant.
8. Validez la cration de la conguration.
9. A la n de lassistant, la conguration "Test" est automatiquement slectionne dans le volet "Explorateur de projet". Slectionnez la conguration "WD Application avec donnes" puis
loption "Activer cette conguration" du menu contextuel.

Gestion des configurations de projet


Pour dnir toutes les options des congurations de projet, sous le volet "Projet", dans le groupe
"Conguration de projet", cliquez sur "Grer les congurations". Il est possible de :
Crer une nouvelle conguration ou supprimer une conguration existante.
Gnrer une conguration
Paramtrer le mode test
Obtenir la description de llment principal de la conguration
Paramtrer des actions avant et aprs gnration (comme par exemple la copie de llment
dans un rpertoire spcique).

448

Partie 9 : Gestion de projet avance

Gnration multiple
Nous avons vu comment gnrer une conguration, mais bien souvent, aprs une modication, il
est ncessaire de gnrer les lments correspondants toutes les congurations dnies sur le
projet. Pour cela, sous le volet "Projet", dans le groupe "Gnration", cliquez sur "Gnration multiple". Slectionnez ensuite les lments gnrer. Cette gnration sera effectue en une seule
opration.

Partie 9 : Gestion de projet avance

449

LEON 9.6. LES

COMPOSANTS EXTERNES

Ce que vous allez apprendre dans cette leon ...


Quest-ce quun composant externe ?
Etape par tape, la cration dun composant externe.
Diffusion dun composant externe.

Dure estime : 30mn

450

Partie 9 : Gestion de projet avance

Prsentation
Un composant externe WinDev est
une brique applicative qui peut
tre rutilise dans un nombre
illimit de projets (et donc dexcutables).
Un composant externe permet
davoir un traitement identique
avec un code source unique pour
raliser une opration donne
mme si ce traitement doit tre
ralis par plusieurs projets.
Les projets qui utilisent un composant externe ont accs sous lditeur WinDev au nom des objets, procdures ou mthodes rendues visibles par le concepteur du
composant. Les projets ne peuvent pas voir ou modier le code source. La condentialit et la
stabilit du code sont garanties.
La ralisation dun composant externe est trs simple.
Comment faut-il faire ? Faites comme dhabitude, crez vos fentres, procdures, classes. Puis
lorsque vous aurez termin, au lieu de choisir loption de cration de lexcutable, prenez loption
de cration dun composant, cest tout !

Notes

Un composant peut contenir du code, des fentres, une analyse, des chiers de donnes, etc ... !
Pour partager du "code", il y a cinq mthodes principales avec WinDev :
1. Les collections de procdures
2. Les classes
3. Les superchamps ( travers lutilisation dun dictionnaire)
4. Les composants externes
5. Les composants internes

Voici plusieurs cas dans lesquels les composants externes peuvent tre intressants.
Travail en quipe
Un dveloppeur cre et maintient un composant externe quil met la disposition des autres
dveloppeurs. Il ne risque pas dy avoir des modications faites "par erreur" !
Les projets volumineux
Les composants externes permettent davoir plusieurs projets distincts de tailles rduites, et
davoir un projet central dans lequel les lments des autres projets sont visibles. Lutilisabilit
des composants externes est bien meilleure que les bibliothques (chiers WDL).

Partie 9 : Gestion de projet avance

451

Les bases de donnes accdes par plusieurs projets


Lorsquune mme base de donnes est accde par plusieurs projets, il est frquent davoir des
incohrences dans la base de donnes dues des codes sources modis ou trop vieux. En
regroupant les oprations daccs (en criture au moins) la base de donnes dans un composant externe, cela permet davoir un seul code source vrier/maintenir, et cela permet donc de
limiter le risque dincohrences dans la base de donnes.
De plus, lutilisation dun composant vite de recompiler lapplication lors dune modication de
lanalyse.
Les traitements utiliss dans plusieurs projets
Il est frquent davoir des traitements plus ou moins complexes utiliss dans plusieurs projets. Il est possible de rutiliser ces traitements par lintermdiaire de "collections de procdures" ou de "classes". Dans ce cas il existe un risque de modications non reportes
entre les diffrents projets, qui rendent ensuite ces lments incompatibles entre eux.
Lutilisation des composants externes permet dviter des modications intempestives et permet
de conserver des projets compatibles auxquels il est simple dapporter une modication commune.
De plus avec lutilisation possible du mot-cl PRIVE, vous pourrez assurer la condentialit de
votre code tous les niveaux du composant externe. Lors de la rutilisation de votre composant
externe dans un autre projet WinDev, ldition du code ne sera pas permise mais la documentation concernant lutilisation des fonctions (par exemple des procdures) sera afche !
La possibilit de diffuser une fonctionnalit ou un ensemble de fonctionnalits
Les composants externes permettent de raliser une fonctionnalit ou un ensemble de fonctionnalits. Dautres dveloppeurs WinDev pourront intgrer ces fonctionnalits dans leurs propres
projets. Les dveloppeurs qui utilisent un composant externe peuvent voir les lments du composant rendus visibles. Cependant il ne sera pas possible de voir ou de modier le code source.
Vous pouvez diffuser gratuitement ou mme commercialiser des composants externes !
Composant externe multiproduits
Un composant externe peut tre prvu pour fonctionner dans :
une application WinDev
une application WebDev
une application WinDev Mobile
ou dans les trois types dapplications.
Dans ce dernier cas, WinDev permet :
dintgrer les lments provenant des diffrents produits (WebDev et/ou WinDev Mobile)
dans un mme composant externe.
dindiquer pour chaque plateforme dexcution le code WLangage correspondant (par
exemple, lafchage dune fentre se fait par la fonction Ouvre en WinDev, et lafchage
dune page se fait par la fonction PageAfche en WebDev).

452

Partie 9 : Gestion de projet avance

Etape par tape


Etape 1 : Cration dun composant externe
Nous allons crer un composant externe partir du projet "WD Faire des ditions". Ce projet
permet de grer des commandes, des produits et des fournisseurs. Le composant externe que
nous allons crer va nous permettre de connatre dans une autre application instantanment les
clients correspondant une ville donne.
Lors de lappel au composant externe, vous pourrez :
Passer une ville en paramtre.
Rcuprer une chane contenant le nom du client et le montant total de ses commandes.
Pour ne pas avoir dvelopper le code ncessaire au fonctionnement du composant, le projet
"WD Faire des ditions" contient tous les lments ncessaires.

"Fermez si ncessaire le projet en cours. La fentre de bienvenue apparat.


"Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Faire des ditions (Exercice)". Le projet se charge.
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire des
ditions (Exercice)".

"Pour les besoins du composant, le projet contient :


une requte "REQ_Commande_Ville". Cette requte est une requte paramtre permettant
dobtenir pour une ville donne les clients correspondants ainsi que le montant total de
leurs commandes.
une collection de procdures "COL_CommandesParVille". Cette collection de procdures
contient la procdure "DonneCommandesVille" qui renvoie pour la ville passe en paramtre une chane contenant le nom du client et le montant total de ses commandes.
une analyse permettant de dcrire les chiers de donnes stockant les informations.

"Nous allons maintenant crer notre composant.


1. Sous le volet "Projet", dans le groupe "Conguration de projet", droulez "Nouvelle conguration" et slectionnez "Composant Externe (WDK)".
2. WinDev propose de crer une conguration de projet de type "Composant". Passez au plan
suivant.
3. Donnez un nom votre conguration de projet : par exemple "CompoCommandesParVille".
Passez au plan suivant.
4. Conservez les options proposes par dfaut. Passez lcran suivant.
5. Slectionnez les lments qui constituent la conguration de projet. Dans cet exemple, ce
sont galement les lments qui seront dans le composant.
Cliquez sur le bouton "Aucun".
Slectionnez les lments "REQ_Commande_Ville" et "COL_CommandesParVille".
Slectionnez les chiers de donnes (chiers .c, .mmo, .ndx).

Partie 9 : Gestion de projet avance

453

Notes

WinDev propose dintgrer automatiquement dans la conguration du composant les lments prsents dans la liste des lments du projet. Pour afcher
la liste des lments du projet, sous le volet "Projet", dans le groupe "Projet",
cliquez sur licne
.
Pour que les chiers de donnes soient automatiquement proposs, il est ncessaire que les chiers de donnes soient prsents dans cette liste.

6. Passez au plan suivant et validez la cration de la conguration. Lassistant de gnration


du composant est automatiquement lanc.

"Nous allons maintenant gnrer notre composant.


1. Passez lcran suivant de lassistant et indiquez les lments intgrer dans le composant.
Par dfaut, WinDev propose les lments spcis dans la conguration ainsi que lanalyse.
Slectionnez tous les lments (bouton "Tous") et passez lcran suivant.

2. Lassistant vous demande de slectionner les lments du composant qui seront accessibles depuis lapplication cliente. Dans notre exemple, seule la collection de procdures
"COL_CommandesParVille" sera utilise :

454

Partie 9 : Gestion de projet avance

3. WinDev propose dautoriser la traduction du composant. Cette fonctionnalit est intressante si votre composant doit tre utilis par des applications multilingues.
Si loption "Autoriser la traduction du composant" est coche, il sera possible de traduire
partir de lapplication utilisant le composant les lments spcis du composant.
Cette traduction sera ralise laide de WDMSG, module indpendant permettant dextraire
et de rintgrer les messages traduire dun projet.
Dans cet exemple, ne cochez pas cette option. Passez lcran suivant.
4. Choisissez les langues du composant. Notre exemple contient uniquement le Franais.
Passez lcran suivant.
5. Lassistant propose ensuite de grer les diffrentes versions du composant. Dans notre
exemple, le composant vient dtre cr.
Conservez les options par dfaut. Passez lcran suivant.
6. Saisissez les diffrentes informations concernant le composant :
Propritaire,
Libell, Copyright, ...
7. Passez lcran suivant.
8. Vous pouvez associer une image votre composant. Les utilisateurs du composant pourront lidentier rapidement dans le volet "Catalogue dexemples". Passez lcran suivant.
9. Spciez la prsentation gnrale du composant. Cette prsentation permettra lutilisateur du composant de connatre sa nalit. Saisissez par exemple :

10. Passez lcran suivant. Lassistant va maintenant effectuer la gnration automatique


de la documentation sur le composant. Cette documentation peut tre base sur les commentaires que vous aurez insrs dans votre code source.
11. Passez lcran suivant. Vous avez la possibilit de modier la documentation gnre.
Nous nallons pas y toucher. Passez lcran suivant.
12. Vous avez la possibilit de crer un chier daide associ votre composant (format
CHM). Ce chier daide sera livr avec le composant. Les clients pourront y accder en faisant
F1 partir du code du composant.
Nous nallons pas gnrer de chier daide. Passez lcran suivant.
13. Vous avez la possibilit dautoriser les utilisateurs naux du composant saisir leur
propre code WLangage pour personnaliser vos traitements. Les suggestions peuvent directement vous tre envoyes. Dans cet exemple, nous nallons pas autoriser la saisie de "Macro
Partie 9 : Gestion de projet avance

455

Code Utilisateur". Passez lcran suivant.


14. Nous nallons pas enregistrer le composant dans le centre de rutilisabilit. Passez
lcran suivant.
15. Il ne reste plus alors qu donner un nom physique notre composant.

"Validez. Voil, votre premier composant est maintenant cr, il est prt lemploi !
Le composant apparat alors dans le volet "Assistants, Exemples et Composants" (bouton
"Composants", rubrique "Composants personnels").
Etape 2 : Utilisation du composant externe
Une fois cr, votre composant est alors utilisable dans nimporte quel autre projet WinDev. Nous
allons maintenant voir comment rutiliser ce composant.

"Pour cela, nous allons crer un nouveau projet et importer notre composant dans ce projet.
1. Crez un nouveau projet : cliquez sur
parmi les boutons daccs rapide. Dans la roue qui
safche, cliquez sur "Projet". Ce projet sappelle "CompoUtilisation" et na pas danalyse.
2. Sous le volet "Projet", dans le groupe "Projet", droulez "Importer" et slectionnez loption
"Importer un composant Externe .. partir dun chier".
Remarque : Si vous avez enregistr le composant dans le centre de r-utilisabilit, vous pouvez limporter directement depuis le centre de r-utilisabilit.
3. Dans le rpertoire du projet "WD Faire des ditions", slectionnez le sous-rpertoire "EXE\
CompoCommandesParVille", puis le chier "CompoCommandesParVille.wdi". Le projet "WD
Faire des ditions" est disponible dans le sous-rpertoire "Autoformation\Exercices\WD Faire
des ditions".
4. Aprs avoir cliqu sur "Ouvrir", la description de notre composant sest afche. Cette description contient :
Sur longlet "Gnral", les lments saisis lors de la cration du composant externe, ainsi
que son emplacement. Il est galement possible de dnir le mode de chargement du composant.
Sur longlet "Dtail", la description du composant, ainsi que laide gnre automatiquement. Il est ainsi possible de connatre les lments utilisables du composant.

456

Partie 9 : Gestion de projet avance

Notes

Il est possible daccder tout moment la description du composant. Il suft de slectionner le composant dans lexplorateur de projet et de slectionner
loption "Description" du menu contextuel.

5. Validez (bouton vert). Le composant est intgr dans votre projet.

"Nous allons maintenant crer une nouvelle fentre vierge pour utiliser le composant.
1. Crez une fentre vierge.
Nommez la fentre "FEN_ClientParVille".
Saisissez le titre "Clients par ville".
Enregistrez la fentre.
2. Ajoutez les champs suivants :
Un champ de saisie avec pour libell "Ville" et pour nom "SAI_Ville".
Un champ Table "TABLE_Ville" compos de 2 colonnes :
- une colonne &qu