Vous êtes sur la page 1sur 216

WLangage.book Page 1 Mardi, 23.

avril 2013 1:59 13


WinDev 18, WebDev 18, WinDev Mobile 18
Documentation version 18(1) - 1012
Visitez rgulirement le site www.pcsoft.fr, espace tlchargement, pour vrifier si des mises jour sont pro-
poses.
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. Des modifications ont pu intervenir dans le logiciel depuis la
parution de ce manuel. Veuillez consulter laide en ligne.
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.
WLangage.book Page 2 Mardi, 23. avril 2013 1:59 13
Sommaire 3
SOMMAIRE GNRAL
PARTIE 1 : EDITEUR DE CODE
1. PRSENTATION 29
1.1 Lditeur de code ............................................................................................................... 29
1.2 Fonctionnalits lies la saisie du code ............................................................................31
1.2.1 Mise en couleur du code ........................................................................................................ 31
1.2.2 Compltion automatique ....................................................................................................... 31
1.2.3 Assistant de code .................................................................................................................. 31
1.2.4 Aide la saisie des fonctions ................................................................................................. 31
1.2.5 Aide ...................................................................................................................................... 32
1.2.6 Historique du code................................................................................................................. 32
1.2.7 Vrification du code ............................................................................................................... 32
1.2.8 Indentation automatique ....................................................................................................... 32
1.2.9 Traduction des messages....................................................................................................... 33
1.2.10 Gestion des points darrt .................................................................................................... 33
1.2.11 Insertion de traitements spcifiques..................................................................................... 33
1.2.12 Autres fonctionnalits.......................................................................................................... 33
PARTIE 2 : SYNTAXE DE BASE DU WLANGAGE
1. INTRODUCTION 37
1.1 Quelques caractristiques du WLangage ......................................................................... 37
1.2 La programmation en code serveur et navigateur ........................................................... 38
2. LES VARIABLES 39
2.1 Les types simples .............................................................................................................. 39
2.1.1 Principe................................................................................................................................. 39
2.1.2 Types de variables ................................................................................................................. 39
2.1.3 Dclarer un type simple.......................................................................................................... 40
2.1.4 Les diffrents types dentier.................................................................................................... 40
2.1.5 Le type montaire .................................................................................................................. 41
2.1.6 Le type numrique ................................................................................................................. 41
2.1.7 Le type rel ............................................................................................................................ 41
2.1.8 Le type Chane....................................................................................................................... 41
2.1.9 Le type Buffer ........................................................................................................................ 42
2.1.10 Le type date......................................................................................................................... 42
2.1.11 Le type heure....................................................................................................................... 43
2.1.12 Le type DateHeure ............................................................................................................... 43
2.1.13 Le type dure....................................................................................................................... 43
2.1.14 Le type variant ..................................................................................................................... 44
2.2 Oprations disponibles sur les dates, heures, dures, ... ................................................ 44
WLangage.book Page 3 Mardi, 23. avril 2013 1:59 13
4 Sommaire
2.3 La gestion du NULL ...........................................................................................................45
2.3.1 Null et les requtes.................................................................................................................45
2.3.2 Null et les variants..................................................................................................................46
2.3.3 Null et les valeurs numriques ................................................................................................46
2.3.4 Null et les fonctions du WLangage ..........................................................................................46
2.3.5 Null et les objets dynamiques .................................................................................................46
2.4 Les constantes .................................................................................................................. 46
2.5 Les types avancs ............................................................................................................ 47
2.5.1 Tableau simple.......................................................................................................................47
2.5.2 Tableau dynamique................................................................................................................48
2.5.3 Tableau fixe............................................................................................................................50
2.5.4 Tableau associatif ..................................................................................................................51
2.5.5 Variable compose ................................................................................................................51
2.5.6 Structure................................................................................................................................52
2.5.7 Structure dynamique..............................................................................................................54
2.5.8 Objet automation ...................................................................................................................54
2.5.9 Objet Automation Dynamique.................................................................................................55
2.5.10 Source de donnes ..............................................................................................................56
2.5.11 Description de fichier ...........................................................................................................57
2.5.12 Description de liaison...........................................................................................................58
2.5.13 Description de rubrique........................................................................................................59
2.5.14 Police..................................................................................................................................60
2.5.15 Connexion ...........................................................................................................................61
2.5.16 File......................................................................................................................................61
2.5.17 Liste ....................................................................................................................................62
2.5.18 Pile......................................................................................................................................63
2.6 Variables locales / variables globales .............................................................................64
2.6.1 Variables globales..................................................................................................................64
2.6.2 Variables locales....................................................................................................................65
2.7 Rgle de porte des variables ..........................................................................................66
3. OPRATEURS 67
3.1 Prsentation ...................................................................................................................... 67
3.2 Oprateurs logiques ......................................................................................................... 67
3.2.1 Prsentation ..........................................................................................................................67
3.2.2 Rgles ...................................................................................................................................67
3.2.3 Notes.....................................................................................................................................67
3.3 Oprateurs arithmtiques ................................................................................................ 68
3.3.1 Prsentation ..........................................................................................................................68
3.3.2 Rgles de calcul .....................................................................................................................68
3.3.3 Notes.....................................................................................................................................68
3.4 Oprateurs binaires ..........................................................................................................68
3.4.1 Oprateurs binaires................................................................................................................68
3.4.2 Oprateurs de dcalage .........................................................................................................69
3.4.3 Oprateur daccs direct.........................................................................................................69
3.5 Oprateurs de comparaison ............................................................................................ 70
3.5.1 Prsentation ..........................................................................................................................70
3.5.2 Dtail.....................................................................................................................................70
WLangage.book Page 4 Mardi, 23. avril 2013 1:59 13
Sommaire 5
3.6 Oprateurs sur chanes de caractres ..............................................................................71
3.6.1 galit souple et galit trs souple........................................................................................ 71
3.6.2 L'oprateur [[ et ]] ................................................................................................................. 72
3.6.3 Oprateurs sur les chanes de caractres et UNICODE............................................................. 72
3.6.4 Position dans une chane de caractres.................................................................................. 72
3.6.5 Fonctions du WLangage......................................................................................................... 72
3.7 Oprateur sur adresse ..................................................................................................... 73
3.8 Oprateurs d'indirection .................................................................................................. 73
3.9 Oprateurs divers ............................................................................................................. 74
3.9.1 Les parenthses .................................................................................................................... 74
3.9.2 Les crochets .......................................................................................................................... 75
3.9.3 La virgule............................................................................................................................... 75
3.9.4 Le point virgule ...................................................................................................................... 75
3.9.5 Deux points ........................................................................................................................... 75
3.9.6 Le point ................................................................................................................................. 75
3.9.7 Le double point...................................................................................................................... 75
3.9.8 Triple point ............................................................................................................................ 75
3.9.9 La double barre ..................................................................................................................... 75
4. LES INSTRUCTIONS DU WLANGAGE 76
4.1 Instructions composes ..................................................................................................... 76
4.1.1 Instruction BOUCLE................................................................................................................ 76
4.1.2 Instruction GOTO.................................................................................................................... 77
4.1.3 Instruction POUR ................................................................................................................... 77
4.1.4 Instruction POUR TOUT / POUR TOUS, parcours de fichiers de donnes.................................... 78
4.1.5 Instruction POUR TOUT / POUR TOUS, parcours de chanes ..................................................... 80
4.1.6 Instruction POUR TOUT / POUR TOUS, parcours de champs..................................................... 81
4.1.7 Instruction POUR TOUT / POUR TOUS, parcours de tableaux .................................................... 82
4.1.8 Instruction POUR TOUT / POUR TOUS, parcours de tableaux associatifs ................................... 83
4.1.9 Instruction SELON.................................................................................................................. 84
4.1.10 Instruction SI ....................................................................................................................... 85
4.1.11 Instruction TANTQUE ............................................................................................................ 85
4.2 Instructions simples .......................................................................................................... 86
4.2.1 Instruction CONTINUER .......................................................................................................... 87
4.2.2 Instruction RETOUR................................................................................................................ 87
4.2.3 Instruction RENVOYER............................................................................................................ 88
4.2.4 Instruction SORTIR................................................................................................................. 88
5. MOTS RSERVS 90
5.1 Externe .............................................................................................................................. 90
5.2 MaFentre .........................................................................................................................91
5.3 MaPage .............................................................................................................................91
5.4 MaSource ......................................................................................................................... 92
5.5 Modulo ............................................................................................................................. 92
5.6 MoiMme ......................................................................................................................... 92
5.7 MonChampPopup ............................................................................................................ 93
5.8 MonEtat ............................................................................................................................ 94
WLangage.book Page 5 Mardi, 23. avril 2013 1:59 13
6 Sommaire
5.9 MonFichier ........................................................................................................................94
5.10 MonParent ......................................................................................................................94
5.11 STOP (appel du dbogueur) ............................................................................................95
6. PROCDURE ET FONCTION 96
6.1 Prsentation ......................................................................................................................96
6.2 Procdure / fonction globale et locale .............................................................................96
6.2.1 Dfinition...............................................................................................................................96
6.2.2 Procdure globale..................................................................................................................96
6.2.3 Procdure locale ....................................................................................................................98
6.3 Collection de procdures ................................................................................................. 99
6.3.1 Dfinition...............................................................................................................................99
6.3.2 Cration d'une collection de procdures.................................................................................99
6.3.3 Importation d'une collection de procdures............................................................................99
6.4 Dclarer une procdure / une fonction ........................................................................... 99
6.4.1 Syntaxe..................................................................................................................................99
6.4.2 Sortie d'une procdure ..........................................................................................................99
6.4.3 Renvoi d'un rsultat .............................................................................................................100
6.5 Appeler une procdure / une fonction .......................................................................... 100
6.6 Paramtre d'une procdure / une fonction ................................................................... 100
6.6.1 Typage des paramtres ........................................................................................................100
6.6.2 Passage de paramtres........................................................................................................101
6.6.3 Paramtre optionnel.............................................................................................................102
6.6.4 Procdure nombre de paramtres variables .......................................................................102
6.7 Surcharger une fonction WLangage .............................................................................. 102
6.7.1 Dfinition.............................................................................................................................102
6.7.2 Comment le faire ?...............................................................................................................102
6.7.3 Diffrencier la fonction WLangage et la fonction personnalise..............................................102
6.8 Surcharge de prototype ................................................................................................. 103
6.8.1 Prsentation ........................................................................................................................103
6.8.2 Comment le faire ?...............................................................................................................103
6.8.3 Gestion du multisyntaxe en excution ...................................................................................103
7. GESTION DES EXCEPTIONS 105
7.1 Prsentation .................................................................................................................... 105
7.1.1 Affichage d'un message personnalis ..................................................................................105
7.1.2 Mcanisme des exceptions...................................................................................................105
7.2 Mcanisme des exceptions gnrales ........................................................................... 105
7.2.1 Prsentation ........................................................................................................................105
7.2.2 Syntaxes de dclaration .......................................................................................................106
7.2.3 Dclaration de plusieurs traitements d'exceptions gnrales ................................................106
7.2.4 Remarques gnrales...........................................................................................................106
7.2.5 Cas particulier......................................................................................................................107
7.3 Mcanisme des exceptions spcifiques ..........................................................................107
7.3.1 Prsentation ........................................................................................................................107
7.3.2 Syntaxes de dclaration .......................................................................................................107
WLangage.book Page 6 Mardi, 23. avril 2013 1:59 13
Sommaire 7
7.4 Mcanisme des exceptions automatises ......................................................................107
7.4.1 Mise en place ...................................................................................................................... 108
7.4.2 Excuter le traitement d'erreur ("CAS EXCEPTION:" dans le code) ........................................ 108
7.4.3 Excuter une procdure de traitement d'exception ............................................................... 108
7.5 Fonctions de gestion des exceptions ..............................................................................108
8. PROGRAMMATION ORIENTE OBJET (POO) 109
8.1 Prsentation de la POO (Programmation Oriente Objet) ..............................................109
8.2 Concepts de la POO ........................................................................................................109
8.2.1 Classe................................................................................................................................. 109
8.2.2 Objet ................................................................................................................................... 109
8.2.3 Constructeur et destructeur .................................................................................................. 110
8.2.4 Hritage .............................................................................................................................. 110
8.2.5 Encapsulation de donnes................................................................................................... 110
8.3 Classe, membres et mthodes ........................................................................................ 110
8.3.1 Dclaration de la classe....................................................................................................... 110
8.3.2 Dclaration des membres .................................................................................................... 111
8.3.3 Dclaration des constantes.................................................................................................. 111
8.3.4 Dclaration des mthodes ................................................................................................... 111
8.3.5 Cration et dclaration des proprits .................................................................................. 112
8.4 Constructeur et destructeur ............................................................................................. 113
8.4.1 Constructeur de la classe ..................................................................................................... 113
8.4.2 Constructeur des classes de base et des membres ............................................................... 113
8.4.3 Mthode Destructeur .......................................................................................................... 113
8.5 Objet ................................................................................................................................ 114
8.5.1 Dclaration d'un objet ......................................................................................................... 114
8.5.2 Les membres d'un objet ...................................................................................................... 114
8.5.3 Les mthodes d'un objet ..................................................................................................... 114
8.5.4 Dure de vie d'un objet........................................................................................................ 114
8.6 Instanciation dynamique d'un objet ............................................................................... 115
8.6.1 Dclaration d'un objet dynamique ....................................................................................... 115
8.6.2 Instancier un objet dynamique ............................................................................................. 115
8.6.3 Librer un objet dynamique.................................................................................................. 115
8.7 Hritage de classe ........................................................................................................... 115
8.7.1 Syntaxe ............................................................................................................................... 116
8.7.2 Redfinition de mthodes .................................................................................................... 116
PARTIE 3 : GESTION DES FENTRES, DES PAGES ET DES CHAMPS
1. GESTION DES FENTRES 119
1.1 Prsentation ...................................................................................................................... 119
1.2 Fonctions de gestion des fentres ................................................................................... 119
1.3 Fonctions MDI .................................................................................................................. 121
1.4 Fonctions de gestion des menus ..................................................................................... 121
WLangage.book Page 7 Mardi, 23. avril 2013 1:59 13
8 Sommaire
2. GESTION DES PAGES 123
2.1 Prsentation .................................................................................................................... 123
2.2 Fonctions de gestion des pages ..................................................................................... 123
2.3 Fonctions de gestion des menus .................................................................................... 124
3. GRER LE BOUTON "PRCDENT" DANS UNE PAGE 125
3.1 Prsentation .................................................................................................................... 125
3.1.1 Deux mthodes de gestion du bouton "Prcdent" du navigateur .........................................125
3.1.2 Exemple de dsynchronisation .............................................................................................125
3.2 Empcher lutilisation du bouton "Prcdent" ............................................................... 126
3.2.1 Fonctionnement ...................................................................................................................126
3.2.2 Mise en place.......................................................................................................................126
3.3 Gestion de la synchronisation ........................................................................................ 126
3.3.1 Prsentation ........................................................................................................................126
3.3.2 Synchronisation par dfaut...................................................................................................126
3.4 Synchronisation par programmation ..............................................................................127
4. DIALOGUER AVEC L'UTILISATEUR OU LINTERNAUTE 128
4.1 Prsentation .................................................................................................................... 128
4.2 Les botes de dialogue standard .................................................................................... 128
4.3 Les botes de dialogue avances ................................................................................... 129
4.3.1 Prsentation ........................................................................................................................129
4.3.2 Interrogation directive ..........................................................................................................129
4.3.3 Saisie immdiate .................................................................................................................129
4.3.4 Base de messages ...............................................................................................................129
4.4 Personnaliser les botes de dialogue ............................................................................. 129
4.4.1 Personnaliser les fentres dinformation systme ..................................................................130
4.4.2 Ne plus personnaliser les fentres dinformation systme......................................................130
4.4.3 Botes de dialogues multilingues ..........................................................................................130
4.5 Fermeture automatique des botes de dialogue ........................................................... 130
4.6 Dialogue avanc avec linternaute ................................................................................. 131
4.6.1 Prsentation ........................................................................................................................131
4.6.2 Les fonctions WLangage disponibles.....................................................................................131
4.6.3 Grer un dialogue avec des cellules ......................................................................................131
4.6.4 Grer un dialogue avec des pages ........................................................................................131
4.6.5 Grer un dialogue avec OuiNon et OKAnnuler ........................................................................132
4.7 Fonctions de gestion des botes de dialogue ................................................................. 132
5. GESTION DU DRAG AND DROP 133
5.1 Qu'est-ce que le "Drag and Drop" ? .............................................................................. 133
5.2 "Drag and Drop" automatique ...................................................................................... 133
5.2.1 WinDev : Champs concerns par le Drag and Drop automatique............................................133
5.2.2 WebDev : Champs concerns par le Drag and Drop automatique...........................................133
5.2.3 Configurer le "Drag and Drop" par dfaut .............................................................................134
WLangage.book Page 8 Mardi, 23. avril 2013 1:59 13
Sommaire 9
5.3 "Drag and Drop" programm .........................................................................................134
5.3.1 Principe............................................................................................................................... 134
5.3.2 Programmation.................................................................................................................... 134
5.4 "Drag and Drop" depuis l'explorateur ............................................................................135
5.4.1 Principe............................................................................................................................... 135
5.4.2 Fonctions spcifiques au "Drag and Drop" depuis l'explorateur ........................................... 135
5.4.3 Programmation.................................................................................................................... 135
5.5 Fonctions de gestion du "Drag and Drop" ......................................................................136
6. GESTION DES CHAMPS 137
6.1 Prsentation .....................................................................................................................137
6.2 Fonctions gnrales de manipulation des champs ........................................................137
7. PROPRITS DES FENTRES, DES PAGES ET DES CHAMPS 140
PARTIE 4 : FONCTIONS STANDARD
1. MANIPULER LES NUMRIQUES 151
1.1 Prsentation ...................................................................................................................... 151
1.2 Les matrices ..................................................................................................................... 151
1.2.1 Dfinition ............................................................................................................................ 151
1.2.2 Manipulations des matrices ................................................................................................. 151
1.3 Les statistiques .................................................................................................................152
1.4 Calculs financiers .............................................................................................................152
1.5 Fonction de gestion des numriques ...............................................................................152
1.5.1 Fonctions diverses ............................................................................................................... 152
1.5.2 Fonctions Binaire................................................................................................................. 153
1.5.3 Fonctions Matrice ................................................................................................................ 153
1.5.4 Fonctions Financires .......................................................................................................... 154
1.5.5 Fonctions Statistiques.......................................................................................................... 154
2. MANIPULER LES CHANES DE CARACTRES 155
2.1 Manipuler le contenu d'une chane .................................................................................155
2.2 WinDev et lUnicode ........................................................................................................155
2.2.1 Qu'est-ce que l'UNICODE.................................................................................................... 155
2.2.2 WinDev et l'unicode............................................................................................................. 155
2.3 Manipulation des chanes de caractres sous Pocket PC ..............................................156
2.4 Fonctions de gestion des chanes de caractres ............................................................156
WLangage.book Page 9 Mardi, 23. avril 2013 1:59 13
10 Sommaire
3. MANIPULER DES DATES ET DES HEURES 159
3.1 Prsentation .................................................................................................................... 159
3.2 Diffrentes faons de manipuler les dates et les heures ............................................... 159
3.3 Manipuler les dates / heures prsentes dans des champs de saisie ............................ 159
3.4 Fonctions de gestion des dates et des heures ............................................................... 159
4. MANIPULER LES GRAPHES 161
4.1 Prsentation ..................................................................................................................... 161
4.2 Les diffrents types de graphes ...................................................................................... 161
4.2.1 Les graphes de type "Secteur".............................................................................................161
4.2.2 Les graphes de type "Histogramme"....................................................................................161
4.2.3 Les graphes de type "Courbe" .............................................................................................162
4.2.4 Les graphes de type "Nuage de points"................................................................................162
4.2.5 Les graphes de type "Boursier"............................................................................................162
4.2.6 Les graphes en 3 dimensions ...............................................................................................162
4.3 Comment crer des graphes ? ....................................................................................... 163
4.3.1 Crer des graphes dans les diteurs......................................................................................163
4.3.2 Crer des graphes par programmation ..................................................................................163
4.3.3 Graphes et threads...............................................................................................................163
4.3.4 Valeurs par dfaut d'un graphe ............................................................................................163
4.4 Exemples livrs avec WinDev ......................................................................................... 164
4.5 Fonctions de gestion des graphes ................................................................................. 164
5. MANIPULER LES ZONES MMOIRE 166
6. MANIPULER DES FICHIERS EXTERNES 167
6.1 Prsentation .....................................................................................................................167
6.2 Manipulation du contenu des fichiers externes ..............................................................167
6.3 Manipulation de fichiers ..................................................................................................167
6.4 Manipulation de disques et de leurs rpertoires ........................................................... 168
6.5 Fonctions de gestion des fichiers externes .................................................................... 168
7. ZONES DE MEMOIRES PARTAGEES 171
7.1 Prsentation ..................................................................................................................... 171
7.2 Comment le faire ? .......................................................................................................... 171
7.2.1 Crer une zone de mmoire partage....................................................................................171
7.2.2 Savoir si une zone de mmoire partage existe dj ..............................................................171
7.2.3 Manipuler le contenu d'une zone de mmoire partage par programmation...........................171
7.2.4 Fonctions WLangage ............................................................................................................172
7.3 Dialogue entre plusieurs applications .............................................................................172
7.3.1 Notification automatique des modifications..........................................................................172
7.3.2 Synchronisation manuelle ....................................................................................................172
WLangage.book Page 10 Mardi, 23. avril 2013 1:59 13
Sommaire 11
7.4 Nommage des zones de mmoire partages ................................................................173
7.4.1 Gestion du mode de partage ................................................................................................ 173
7.4.2 Correspondance entre le nom fourni fMemOuvre et l'ouverture en C ................................... 173
7.5 Fonctions de gestion des zones mmoires partages ....................................................173
8. IMPRIMER EN WLANGAGE 174
8.1 Prsentation .....................................................................................................................174
8.2 Principe de l'impression en WLangage ...........................................................................174
8.2.1 Etape 1 : Configuration des paramtres d'impression........................................................... 174
8.2.2 Etape 2 : Cration des polices d'impression ......................................................................... 175
8.2.3 Etape 3 : Impression............................................................................................................ 176
8.3 Fonctions dimpression .................................................................................................... 177
8.4 Fonctions PDF ..................................................................................................................179
9. GRER WINDOWS 180
9.1 Prsentation .....................................................................................................................180
9.2 Fonctions de gestion de la base de registres ..................................................................180
9.3 Fonctions de gestion du presse-papiers .........................................................................180
9.4 Fonctions de gestion de la corbeille ........................................................................ 181
9.5 Fonctions de gestion de la souris .................................................................................... 181
9.6 Fonctions de vrification de l'orthographe .................................................................... 181
9.7 Fonctions Reconnaissance vocale ...................................................................................182
9.8 Fonctions de gestion des ports srie et parallle ............................................................182
9.9 Fonctions de gestion des priphriques Twain ...............................................................182
9.10 Fonctions USB ................................................................................................................183
9.11 Fonctions MCI .................................................................................................................183
9.12 Fonctions Service ...........................................................................................................184
9.13 Fonctions systme ..........................................................................................................185
9.14 Fonctions diverses Windows ..........................................................................................186
9.15 Evnement Windows .....................................................................................................187
9.16 Fonctions Java ...............................................................................................................188
9.17 Fonctions diverses WinDev / WebDev ...........................................................................188
9.18 Fonctions de gestion des excutables ...........................................................................192
9.19 Fonctions Hasp ..............................................................................................................192
9.20 Fonctions de gestion du DDE ........................................................................................193
9.21 Fonctions de gestion des applications avec "live update" ............................................193
9.22 Fonctions de gestion des rseaux .................................................................................194
9.23 Fonctions de gestion du protocole SNMP .....................................................................194
9.24 Fonctions de gestion des projets ...................................................................................195
9.25 Fonctions de gestion du planificateur ...........................................................................195
WLangage.book Page 11 Mardi, 23. avril 2013 1:59 13
12 Sommaire
10. ACTIVATION DUNE APPLICATION 196
10.1 Prsentation ................................................................................................................... 196
10.2 Comment le faire ? ....................................................................................................... 196
10.2.1 Principe.............................................................................................................................196
10.2.2 Mise en place dans l'application cliente.............................................................................196
10.2.3 Mise en place dans l'application du fournisseur..................................................................196
10.3 Fonctions de gestion des cls d'activation ................................................................... 196
11. MANIPULEZ VOS FICHIERS XLS 197
11.1 Prsentation .....................................................................................................................197
11.2 Mthode 1 : Manipulation dynamique des fichiers XLS et XLSX ....................................197
11.3 Mthode 2 : Lecture des fichiers Excel (mthode conserve par compatibilit) ........... 198
11.4 Fonctions WLangage ..................................................................................................... 198
11.5 Fonctions XLS ................................................................................................................. 199
12. LES ARCHIVES 200
12.1 Prsentation ...................................................................................................................200
12.2 Manipulations des archives ..........................................................................................200
12.3 Les archives mono-partie/multi-parties ....................................................................... 201
12.3.1 Prsentation ......................................................................................................................201
12.3.2 Principe d'utilisation..........................................................................................................201
12.3.3 Exemples...........................................................................................................................202
12.4 Fonctions d'archivage ...................................................................................................202
13. GRAVER UN CD OU UN DVD 204
13.1 Prsentation ...................................................................................................................204
13.2 Gravure dun CD / DVD .................................................................................................204
13.3 Fonctions de gravure ....................................................................................................205
14. FONCTIONS DACCS AU POCKET PC 206
15. FONCTIONS SPCIFIQUES WINDEV MOBILE 208
15.1 WinDev Mobile et les cartes SIM ...................................................................................208
15.1.1 Prsentation ......................................................................................................................208
15.1.2 Configuration ncessaire....................................................................................................208
15.1.3 Fonctionnement diffrent en mode GO et en utilisation relle ..............................................208
15.1.4 Fonctions WLangage..........................................................................................................208
15.2 Clavier du Pocket ..........................................................................................................208
15.2.1 Prsentation ......................................................................................................................208
15.2.2 Fonctions WLangage..........................................................................................................209
WLangage.book Page 12 Mardi, 23. avril 2013 1:59 13
Sommaire 13
PARTIE 5 : FONCTIONNALITS SPCIFIQUES AU WEB
1. UPLOAD DE FICHIERS 213
1.1 Prsentation ......................................................................................................................213
1.2 Mettre en place lupload dans un site WebDev ..............................................................213
1.2.1 Elments mis disposition................................................................................................... 213
1.2.2 Uploader un fichier dans une page ....................................................................................... 214
1.2.3 Afficher limage uploader................................................................................................... 214
2. DOWNLOAD DE FICHIERS 215
2.1 Prsentation .....................................................................................................................215
2.2 Mettre en place le tlchargement dun fichier dans un site WebDev ..........................215
2.2.1 Utilisation de la fentre de description des champs (bouton, lien, ...) .................................... 215
2.2.2 Programmation.................................................................................................................... 215
2.2.3 Forcer le tlchargement du fichier ....................................................................................... 215
3. COOKIES 216
3.1 Prsentation .....................................................................................................................216
3.2 Que contient un cookie ? ................................................................................................216
3.3 WebDev et la gestion des cookies ..................................................................................216
3.3.1 Elments mis disposition................................................................................................... 216
3.3.2 Ecrire un cookie sur le poste de linternaute .......................................................................... 217
3.3.3 Lire un cookie sur le poste de linternaute (code serveur et code navigateur) .......................... 217
3.4 Tester la gestion des cookies dans un site WebDev .......................................................217
4. VALIDIT DES PAGES DUN SITE 218
4.1 Prsentation .....................................................................................................................218
4.2 Comment le faire ? ..........................................................................................................218
4.2.1 Dfinir la date limite de validit des pages............................................................................ 218
4.2.2 Supprimer la date limite de validit ...................................................................................... 218
4.2.3 Configurer le serveur d'application Windows pour grer la date limite de validit ................... 218
4.2.4 Configurer le serveur d'application Linux pour grer la date limite de validit ......................... 219
5. INCLURE DES FICHIERS JAVASCRIPT OU UNE RESSOURCE WEB 220
5.1 Prsentation ....................................................................................................................220
5.2 Comment le faire ? ......................................................................................................... 220
5.2.1 Intgration de fichiers Javascript (.js).................................................................................... 220
5.2.2 Intgration de ressources externes au site............................................................................. 220
5.2.3 Dtection automatique de l'encodage ................................................................................. 221
5.3 Manipulation d'objets Javascript externes depuis le WLangage ...................................221
WLangage.book Page 13 Mardi, 23. avril 2013 1:59 13
14 Sommaire
6. AJAX 222
6.1 Prsentation ....................................................................................................................222
6.2 AJAX automatique et immdiat .....................................................................................222
6.2.1 Prsentation ........................................................................................................................222
6.2.2 Traitements permettant dutiliser automatiquement AJAX ......................................................223
6.2.3 lments et caractristiques pouvant tre manipuls automatiquement par AJAX ..................223
6.2.4 Spcificits..........................................................................................................................224
6.3 AJAX Programm ...........................................................................................................225
6.3.1 Prsentation ........................................................................................................................225
6.3.2 Fonctions de gestion AJAX ....................................................................................................225
6.3.3 Procdures pouvant tre appeles par AJAX..........................................................................226
6.3.4 Fonctions WLangage non utiles en AJAX................................................................................226
7. GADGETS VISTA 227
7.1 Prsentation ....................................................................................................................227
7.2 Cration du Gadget ........................................................................................................ 227
7.2.1 Les tapes ...........................................................................................................................227
7.2.2 Gnration du gadget...........................................................................................................228
7.3 Programmation des Gadgets Vista ................................................................................228
7.3.1 Prsentation ........................................................................................................................228
7.3.2 Les diffrents types de pages................................................................................................228
7.3.3 Les fonctions WLangage.......................................................................................................229
8. UTILISATION DE SITES DCONNECTS 230
8.1 Prsentation ....................................................................................................................230
8.2 Mise en place .................................................................................................................230
8.2.1 Dfinition des ressources mettre en cache .........................................................................230
8.2.2 Configuration du serveur.......................................................................................................230
8.2.3 Technique de programmation ...............................................................................................230
8.2.4 Test du site ..........................................................................................................................231
8.3 Accs en mode local une base de donnes (SQLite) .................................................. 231
8.3.1 Comment grer une base de donnes locale ?......................................................................231
8.3.2 Les fonctions SQL.................................................................................................................232
8.3.3 Enregistrer en local les donnes d'un site dconnect...........................................................232
9. STOCKAGE LOCAL 234
9.1 Prsentation ....................................................................................................................234
9.2 Les fonctions WLangage ................................................................................................234
10. SSL : TRANSACTIONS SCURISES 235
10.1 Prsentation ...................................................................................................................235
10.2 Mettre en place des transactions scurises avec le protocole SSL ............................235
10.3 Obtention dun certificat SSL pour IIS2 (2.0 ou +) .........................................................235
10.3.1 Etape 1 : Cration dun certificat .........................................................................................235
10.3.2 Etape 2 : Demande de certification.....................................................................................236
WLangage.book Page 14 Mardi, 23. avril 2013 1:59 13
Sommaire 15
10.3.3 Etape 3 : Certification du certificat sur le serveur ................................................................. 236
10.4 Insrer des transactions scurises par SSL dans un site WebDev .............................. 237
10.4.1 Principe............................................................................................................................. 237
10.4.2 Mise en place.................................................................................................................... 237
10.4.3 Revenir en mode normal (transaction non scurise) dans le navigateur en cours................ 237
11. JSON 238
11.1 Prsentation ...................................................................................................................238
11.2 Obtenir des informations au format JSON ....................................................................238
11.2.1 Fonctionnement ................................................................................................................ 238
11.2.2 Exemple dutilisation de la fonction JSONExcute ............................................................... 238
11.2.3 Exemple dutilisation de la fonction JSONEXcuteExterne.................................................... 238
11.3 Crer des pages renvoyant des donnes JSON ............................................................239
11.3.1 Cas d'une page appele par la fonction JSONExcute ........................................................ 239
11.3.2 Cas d'une page appele par la fonction JSONExcuteExterne ............................................. 239
PARTIE 6 : COMMUNICATION
1. LA COMMUNICATION 243
1.1 Communication avec WinDev / WebDev ........................................................................243
1.2 Communication avec WinDev Mobile ............................................................................244
2. COMMUNIQUEZ PAR EMAILS 245
2.1 Prsentation ....................................................................................................................245
2.2 La gestion des emails ..................................................................................................... 245
2.3 Mode synchrone / asynchrone (WebDev uniquement) .................................................245
2.4 Grez les emails avec les protocoles POP 3/SMTP .......................................................246
2.4.1 Prsentation des protocoles POP3 / SMTP............................................................................ 246
2.4.2 Principe d'utilisation............................................................................................................ 246
2.5 Grez les emails avec le protocole IMAP .......................................................................248
2.5.1 Prsentation du protocole IMAP ........................................................................................... 248
2.5.2 Utilisation du protocole IMAP ............................................................................................... 248
2.6 Grez les emails avec "Simple MAPI" (WinDev et WebDev) .........................................248
2.6.1 Principe d'utilisation............................................................................................................ 248
2.6.2 tape 1 : Crer un profil utilisateur ........................................................................................ 249
2.6.3 tape 2 : Ouverture d'une session de messages ................................................................... 249
2.6.4 tape 3 : Envoi d'emails ...................................................................................................... 249
2.6.5 tape 3bis : Lecture des emails............................................................................................ 250
2.6.6 tape 4 : Fermeture de la session de messages .................................................................... 251
2.7 Grer les emails avec CEMapi (WinDev Mobile uniquement) .........................................251
2.8 Lire et crire un email ......................................................................................................251
2.9 Fonctions de gestion des emails .....................................................................................251
WLangage.book Page 15 Mardi, 23. avril 2013 1:59 13
16 Sommaire
3. ACCDER LOTUS NOTES ET OUTLOOK 253
3.1 Accder Lotus Notes ....................................................................................................253
3.1.1 Prsentation ........................................................................................................................253
3.1.2 Mthode daccs Lotus Notes ............................................................................................253
3.1.3 Mthode d'accs concise si vous ne voulez pas accder aux documents ...............................253
3.1.4 Manipulation des donnes ...................................................................................................253
3.2 Accder Outlook ..........................................................................................................253
3.2.1 Prsentation ........................................................................................................................253
3.2.2 Mthode daccs Outlook ..................................................................................................253
3.2.3 Envoi et rception des emails ...............................................................................................254
3.2.4 Version de Outlook ...............................................................................................................254
3.2.5 Manipulation des donnes ...................................................................................................254
3.3 Fonctions Lotus Notes et Outlook ...................................................................................254
3.3.1 Fonctions emails pour Lotus Notes .......................................................................................254
3.3.2 Fonctions emails pour Outlook..............................................................................................255
3.3.3 Fonctions Tche...................................................................................................................256
3.3.4 Fonctions Rendezvous..........................................................................................................256
3.3.5 Fonctions Contact ................................................................................................................257
3.3.6 Fonctions Groupe.................................................................................................................257
3.3.7 Fonctions Notes ...................................................................................................................258
4. GOOGLE 259
4.1 Gestion des contacts Google ..........................................................................................259
4.1.1 Prsentation ........................................................................................................................259
4.1.2 Comment grer les contacts Google ?...................................................................................259
4.1.3 Comment rcuprer un contact Google ? ..............................................................................259
4.1.4 Comment modifier ou supprimer des contacts Google ?........................................................259
4.1.5 Fonctions de gestion des contacts Google.............................................................................260
4.2 Gestion des agendas Google .........................................................................................260
4.2.1 Prsentation ........................................................................................................................260
4.2.2 Comment grer un agenda Google ?.....................................................................................261
4.2.3 Comment rcuprer un agenda Google et ses lments ?......................................................261
4.2.4 Comment ajouter, modifier ou supprimer des vnements dans un agenda Google ?.............261
4.2.5 Fonctions de gestion des agendas Google.............................................................................262
4.3 Utiliser le service de gestion d'album photo Google Picasa ..........................................263
4.3.1 Prsentation ........................................................................................................................263
4.3.2 Comment le faire ?...............................................................................................................263
4.3.3 Fonctions de gestion des albums Picasa...............................................................................264
4.4 Gestion des documents Google .....................................................................................265
4.4.1 Prsentation ........................................................................................................................265
4.4.2 Comment grer les documents Google ?...............................................................................265
4.5 Utiliser le service de cartographie Google Maps ...........................................................265
4.5.1 Prsentation ........................................................................................................................265
4.5.2 Comment le faire ?...............................................................................................................266
4.5.3 Autres Services ....................................................................................................................266
4.5.4 Fonctions de gestion des cartes Google ................................................................................266
WLangage.book Page 16 Mardi, 23. avril 2013 1:59 13
Sommaire 17
5. SALESFORCE 267
5.1 Utiliser le service Salesforce ............................................................................................ 267
5.1.1 Prsentation........................................................................................................................ 267
5.1.2 Comment le faire ? .............................................................................................................. 267
5.2 Fonctions Salesforce ....................................................................................................... 267
6. FLUX RSS 269
6.1 Prsentation ....................................................................................................................269
6.2 Comment le faire ? ......................................................................................................... 269
6.3 Fonctions de gestion des flux RSS ..................................................................................269
7. SERVEUR LDAP 270
7.1 Prsentation .................................................................................................................... 270
8. WINDEV ET LA TLPHONIE 271
8.1 Prsentation ....................................................................................................................271
8.2 Grer les appels entrants ................................................................................................271
8.2.1 Les diffrentes tapes.......................................................................................................... 271
8.2.2 Exemple .............................................................................................................................. 272
8.3 Grer les appels sortants ............................................................................................... 273
8.3.1 Les diffrentes tapes.......................................................................................................... 273
8.3.2 Manipuler un appel sortant .................................................................................................. 274
8.4 Fonctions de tlphonie ................................................................................................. 274
9. GESTION DES SMS 276
9.1 Prsentation .................................................................................................................... 276
9.2 La structure SMS ............................................................................................................ 276
9.2.1 Prsentation........................................................................................................................ 276
9.2.2 Les diffrentes variables de la structure SMS ........................................................................ 276
9.2.3 Lecture et suppression de SMS sur un Smartphone............................................................... 277
9.2.4 Diffrents types de numros................................................................................................. 277
9.2.5 Fonctionnement diffrent en mode GO et en utilisation relle ................................................ 277
9.3 Fonctions WLangage ...................................................................................................... 277
10. ENVOYER DES FAX 278
10.1 Prsentation ................................................................................................................... 278
10.2 Configurer le poste "serveur de fax" ............................................................................ 278
10.2.1 Configuration du poste en cours......................................................................................... 278
10.2.2 Configuration du serveur de fax sous Windows 2000 .......................................................... 278
10.2.3 Configuration du serveur de fax sous Windows XP ............................................................... 278
10.3 Application ou site d'envoi de fax ................................................................................ 279
10.3.1 Envoyer un fax depuis une application ou un site ................................................................ 279
10.3.2 Envoyer un fax cr avec lditeur dtats............................................................................ 279
WLangage.book Page 17 Mardi, 23. avril 2013 1:59 13
18 Sommaire
10.4 Configurer le serveur de fax par programmation ........................................................279
10.4.1 Options du serveur de fax ...................................................................................................279
10.4.2 Astuces .............................................................................................................................280
10.5 Fonctions de gestion des fax ........................................................................................280
11. RCUPRER DES PAGES HTML 281
11.1 Prsentation .................................................................................................................... 281
11.2 Fonctions HTTP ............................................................................................................... 281
12. GESTION DE FICHIERS SUR INTERNET 282
12.1 Prsentation ...................................................................................................................282
12.1.1 Envoyer et recevoir des fichiers par FTP ou RPC WinDev : les rgles suivre..........................282
12.1.2 Autres fonctionnalits ........................................................................................................282
12.2 Utilisation dtaille du FTP / RPC WinDev ....................................................................282
12.2.1 tape 1 : Etablissement d'une connexion avec un serveur RPC / FTP WinDev.......................282
12.2.2 tape 2 : Transmission d'un fichier un serveur FTP WinDev ...............................................282
12.2.3 tape 3 : Rcupration d'un fichier depuis un serveur FTP WinDev.......................................283
12.2.4 Etape 4 : Fermeture d'une connexion avec un serveur RPC / FTP WinDev.............................283
12.3 Fonctions Net ................................................................................................................284
13. COMMUNIQUER AVEC UN SERVEUR FTP 285
13.1 Manipuler des fichiers sur un serveur RPC ....................................................................285
13.1.1 Prsentation ......................................................................................................................285
13.1.2 Le FTP................................................................................................................................285
13.1.3 Principe d'utilisation..........................................................................................................285
13.1.4 Chemin relatif / chemin absolu...........................................................................................285
13.1.5 Exemple ............................................................................................................................286
13.2 Fonctions FTP .................................................................................................................286
14. GESTION DES SOCKETS 287
14.1 Prsentation ...................................................................................................................287
14.1.1 Diffrentes possibilits.......................................................................................................287
14.1.2 Exemple ............................................................................................................................287
14.2 Application WinDev Cliente / Site WebDev Client ........................................................287
14.2.1 Principe dune application cliente ou dun site client............................................................287
14.2.2 Mode de transmission des informations..............................................................................288
14.3 Application WinDev "Serveur simplifi" ........................................................................288
14.3.1 Le serveur simplifi ............................................................................................................288
14.3.2 Mode de transmission des informations..............................................................................289
14.4 Serveur de socket standard ..........................................................................................289
14.4.1 Le serveur de socket standard ............................................................................................289
14.4.2 Mode de transmission des informations..............................................................................290
14.5 Fonctions Socket ........................................................................................................... 291
WLangage.book Page 18 Mardi, 23. avril 2013 1:59 13
Sommaire 19
15. GESTION DES CLS BLUETOOTH 292
15.1 Prsentation ...................................................................................................................292
15.2 Comment le faire ? .......................................................................................................292
15.3 Quelles cls utiliser ? .....................................................................................................292
15.4 Les fonctions Bluetooth et OBEX ...................................................................................293
15.4.1 Fonctions Bluetooth........................................................................................................... 293
15.4.2 Fonctions OBEX ................................................................................................................. 293
16. GESTION DES THREADS 294
16.1 Prsentation ...................................................................................................................294
16.1.1 D'une gestion simple des threads vers une gestion avance ............................................... 294
16.1.2 Exemple ............................................................................................................................ 294
16.2 Principe dutilisation des threads ..................................................................................294
16.2.1 Gestion simple des threads................................................................................................ 294
16.2.2 Caractristiques des threads.............................................................................................. 295
16.2.3 Accs aux lments existants et contexte HyperFileSQL ...................................................... 295
16.2.4 Limites des traitements raliss par le thread ..................................................................... 295
16.3 Grer les smaphores dans les threads .......................................................................296
16.3.1 Principe............................................................................................................................. 296
16.3.2 Mettre en place un smaphore........................................................................................... 296
16.3.3 Un smaphore limit : la section critique ............................................................................ 297
16.4 Grer les mutex dans les threads ................................................................................. 297
16.4.1 Principe............................................................................................................................. 297
16.4.2 Comment mettre en place un mutex ? ................................................................................ 298
16.4.3 Les fonctions de gestion des mutex .................................................................................... 298
16.5 Synchroniser des threads laide de signaux ..............................................................298
16.5.1 Gestion simple des signaux................................................................................................ 298
16.5.2 Gestion avance des signaux .............................................................................................299
16.6 Grer louverture dune fentre WinDev dans un thread secondaire ..........................299
16.6.1 Ouverture d'une fentre partir d'un thread secondaire..................................................... 300
16.6.2 Exemple ............................................................................................................................ 300
16.7 Fonctions de gestions des threads .................................................................................301
17. SOAP 302
17.1 Prsentation ...................................................................................................................302
17.1.1 WinDev / WebDev et le protocole SOAP.............................................................................. 302
17.1.2 Exemple ............................................................................................................................ 302
17.2 Excuter des procdures sur un serveur SOAP .............................................................302
17.2.1 Principe d'utilisation.......................................................................................................... 302
17.2.2 La structure SOAP.............................................................................................................. 303
17.3 Crer et installer une application serveur SOAP WinDev .............................................303
17.3.1 Principe............................................................................................................................. 303
17.3.2 Comment crer une application Serveur SOAP.................................................................... 304
17.4 Fonctions SOAP .............................................................................................................305
WLangage.book Page 19 Mardi, 23. avril 2013 1:59 13
20 Sommaire
18. WEBSERVICES XML 306
18.1 Importer des Webservices XML .....................................................................................306
18.1.1 Prsentation ......................................................................................................................306
18.1.2 Importer un Webservice dans un projet ...............................................................................306
18.1.3 Mettre jour la description d'un Webservice.......................................................................306
18.1.4 Proprits d'un Webservice................................................................................................306
18.1.5 Utiliser un Webservice import dans le projet ......................................................................307
18.1.6 Distribuer une application WinDev qui utilise un Webservice................................................308
18.2 Gnrer un service Web XML .......................................................................................308
18.2.1 Prsentation ......................................................................................................................308
18.2.2 Comment mettre disposition un Webservice ?..................................................................309
18.2.3 Gnrer un Webservice.......................................................................................................309
18.2.4 Dployer un Webservice.....................................................................................................310
19. XML 312
19.1 Gestion des documents XML ......................................................................................... 312
19.1.1 Prsentation ......................................................................................................................312
19.1.2 Dfinition...........................................................................................................................312
19.1.3 Principe dutilisation...........................................................................................................312
19.1.4 Utilisation d'une variable de type chane ............................................................................312
19.1.5 Utilisation d'une variable de type xmlDocument..................................................................313
19.2 Gestion du XSD ............................................................................................................. 313
19.2.1 Prsentation ......................................................................................................................313
19.2.2 Importer un fichier XSD dans un projet ................................................................................314
19.2.3 Utiliser une description importe dans le projet...................................................................314
19.3 Fonctions de gestion des documents XML ................................................................... 314
20. ASSEMBLAGES .NET 316
20.1 Prsentation .................................................................................................................. 316
20.1.1 Dfinition...........................................................................................................................316
20.1.2 WinDev et .NET...................................................................................................................316
20.2 Conditions ncessaires la manipulation dun assemblage .NET .............................. 316
20.2.1 Installer le Framework .NET.................................................................................................316
20.2.2 Rgler le niveau de scurit .NET ........................................................................................316
20.2.3 Rendre accessibles les DLLs ncessaires lexcution de lassemblage .NET .......................317
20.3 Crer un assemblage .NET depuis WinDev ..................................................................317
20.4 Crer un assemblage .NET accessible par COM ......................................................... 318
20.4.1 Prsentation ......................................................................................................................318
20.4.2 Crer un assemblage .NET accessible par COM partir d'un projet WinDev..........................318
20.5 Crer le programme dinstallation dun assemblage .NET .......................................... 318
20.6 Utiliser des assemblages .NET dans une application WinDev ..................................... 319
WLangage.book Page 20 Mardi, 23. avril 2013 1:59 13
Sommaire 21
PARTIE 7 : GESTION DES FICHIERS DE DONNES
1. LA GESTION DES FICHIERS DE DONNES 323
1.1 La gestion des fichiers de donnes HyperFileSQL ...........................................................323
1.1.1 Cration d'un fichier de donnes.......................................................................................... 323
1.1.2 Ouverture et fermeture des fichiers de donnes..................................................................... 323
1.1.3 Gestion des fichiers de donnes HyperFileSQL de plus de 2 Go ............................................. 324
1.1.4 Gestion des cls .................................................................................................................. 324
1.1.5 Gestion des cls composes................................................................................................ 326
1.1.6 Accs aux enregistrements des fichiers de donnes .............................................................. 328
1.1.7 Schmas : le mode fiche et le mode table............................................................................. 333
1.1.8 Dplacement et positionnement dans un fichier de donnes................................................. 333
1.2 Les fichiers de donnes au format xBase FoxPro ...........................................................334
1.2.1 Prsentation........................................................................................................................ 334
1.2.2 Utilisation de lAccs Natif xBase / FoxPro ............................................................................ 334
1.2.3 Importation de la structure des fichiers .................................................................................334
1.2.4 Points importants de programmation.................................................................................... 335
1.3 Les fichiers de donnes prsents sur un mobile (Pocket PC, iOS, Android) ...................336
1.3.1 Manipulation dune base de donnes HyperFileSQL.............................................................. 336
1.4 Fichiers de donnes spcifiques Windows Mobile ......................................................336
1.4.1 Manipulation d'une base de donnes CEDB (Pocket PC uniquement) ................................... 336
1.4.2 Fonctions de manipulation d'une base de donnes CEDB..................................................... 338
2. FONCTIONNALITS AVANCES 339
2.1 Gestion d'alias ................................................................................................................339
2.1.1 Plusieurs fichiers physiques avec une description logique identique...................................... 339
2.1.2 Plusieurs fichiers logiques relis un seul fichier physique.................................................... 340
2.1.3 Fonctions de gestion des alias.............................................................................................. 340
2.1.4 Crer un alias sur quoi ?....................................................................................................... 340
2.1.5 Caractristiques d'un alias .................................................................................................. 340
2.1.6 Manipuler le fichier alias et ses rubriques ............................................................................. 340
2.2 Gestion du NULL dans HyperFileSQL ..............................................................................341
2.2.1 Comment grer la valeur nulle dans une de vos rubriques ?................................................... 341
2.2.2 Comment utiliser la valeur NULL dans vos applications ? ...................................................... 341
2.3 Protection et cryptage des fichiers de donnes .............................................................342
2.3.1 Les possibilits de protection ............................................................................................... 342
2.3.2 Gestion des fichiers crypts.................................................................................................. 342
2.4 Gestion d'un identifiant .................................................................................................. 343
2.4.1 Gestion automatique ........................................................................................................... 343
2.4.2 Gestion manuelle................................................................................................................. 343
2.4.3 Test de l'unicit d'une cl.................................................................................................... 343
2.5 Contrle automatique de l'intgrit rfrentielle ...........................................................343
2.5.1 Intrt du test de l'intgrit rfrentielle ............................................................................... 343
2.5.2 Dfinitions........................................................................................................................... 344
2.5.3 Les diffrents types de liaisons............................................................................................. 344
2.5.4 Programmation du contrle automatique de l'intgrit rfrentielle....................................... 344
WLangage.book Page 21 Mardi, 23. avril 2013 1:59 13
22 Sommaire
2.6 Gestion des fichiers "mmo" .........................................................................................346
2.6.1 Mmo texte et mmo binaire ................................................................................................346
2.6.2 Mmos binaires image, son, OLE et autres ............................................................................346
2.7 Rassignation des fichiers de donnes ..........................................................................347
2.7.1 Intrt..................................................................................................................................347
2.7.2 Modification du rpertoire de stockage .................................................................................347
2.7.3 Modification du nom d'un fichier de donnes .......................................................................348
2.7.4 Garder la trace des rassignations ........................................................................................348
2.8 Recherche et index full-text ...........................................................................................350
2.8.1 Prsentation ........................................................................................................................350
2.8.2 Comment faire une recherche "full-text" ?............................................................................350
2.8.3 Comment crer un index full-text ?........................................................................................350
2.8.4 Comment effectuer une recherche full-text ? .........................................................................351
2.8.5 Analyser le rsultat d'une requte "full-text"........................................................................352
2.8.6 Grer les index full-text par programmation ...........................................................................352
2.9 Les transactions ..............................................................................................................353
2.9.1 Quest ce quune transaction ?..............................................................................................353
2.9.2 Savoir utiliser les transactions selon ses besoins...................................................................353
2.9.3 Principes..............................................................................................................................354
2.9.4 Manipuler les transactions par programmation......................................................................354
2.9.5 Gestion des cas particuliers..................................................................................................355
2.9.6 Gestion avance ..................................................................................................................356
2.10 Les journaux ..................................................................................................................356
2.10.1 Gnralits........................................................................................................................356
2.10.2 Mettre en place la journalisation.........................................................................................358
2.10.3 Fichiers crs lors de la mise en place de la journalisation...................................................358
2.10.4 WDJournal : Utilitaire de gestion des journaux .....................................................................359
2.10.5 Manipuler les journaux par programmation .........................................................................359
2.11 Modification automatique des fichiers de donnes ......................................................360
2.11.1 Principe.............................................................................................................................360
2.11.2 Dans quels cas la modification automatique des donnes est-elle ncessaire ? ..................360
2.11.3 Raliser la modification automatique des donnes .............................................................361
2.11.4 Notes ................................................................................................................................361
2.12 Cration de fichiers dynamiques (ou temporaires) .......................................................362
2.13 Rcupration de la structure des fichiers HyperFileSQL d'une analyse .......................362
2.14 Acclrer les traitements et optimiser une application / un site ..................................363
2.14.1 Gestion des transactions....................................................................................................363
2.14.2 Gestion du journal..............................................................................................................363
2.14.3 Gestion des mmos ...........................................................................................................363
2.14.4 Gestion du ".REP".............................................................................................................363
2.14.5 Gestion de la rplication.....................................................................................................363
2.14.6 La gestion des triggers........................................................................................................363
2.14.7 La gestion du RPC..............................................................................................................363
2.15 Driver ODBC sur HyperFileSQL ......................................................................................364
2.15.1 Prsentation ......................................................................................................................364
2.15.2 Configuration.....................................................................................................................364
WLangage.book Page 22 Mardi, 23. avril 2013 1:59 13
Sommaire 23
2.16 ODBC sur HyperFileSQL via J++ et JDBC ......................................................................364
2.16.1 Prsentation...................................................................................................................... 364
2.16.2 Installation........................................................................................................................ 364
2.16.3 Configuration..................................................................................................................... 364
2.16.4 Utilisation.......................................................................................................................... 365
2.17 Provider OLE DB pour HyperFileSQL .............................................................................365
2.17.1 Prsentation...................................................................................................................... 365
2.17.2 Installation........................................................................................................................ 365
2.17.3 Configuration..................................................................................................................... 366
3. LANGAGE SQL 367
3.1 Prsentation .................................................................................................................... 367
3.2 Langage SQL et HyperFileSQL ........................................................................................ 367
3.2.1 Prsentation........................................................................................................................ 367
3.2.2 Commandes SQL utilisables avec HyperFileSQL.................................................................... 367
3.2.3 Fonctions d'excution de requtes....................................................................................... 368
3.3 Langage SQL et autres bases de donnes ....................................................................369
3.3.1 Prsentation........................................................................................................................ 369
3.3.2 Requte cre dans lditeur de requtes ............................................................................. 369
3.3.3 Requte cre par programmation ....................................................................................... 369
4. GESTION DES BLOCAGES DE FICHIERS 371
4.1 Prsentation des blocages ...............................................................................................371
4.1.1 Blocages de fichiers............................................................................................................. 371
4.1.2 Qu'est ce qu'un blocage ?................................................................................................... 371
4.1.3 Quand faut-il bloquer et que faut-il bloquer ?........................................................................ 371
4.1.4 Le WLangage et les blocages................................................................................................ 371
4.2 La gestion des blocages ................................................................................................. 372
4.2.1 Exemples illustrant la ncessit de bloquer........................................................................... 372
4.2.2 Structure des blocages ........................................................................................................ 372
4.2.3 Dead lock (inter-blocage) .................................................................................................... 372
4.3 Les modes de blocage proposs ................................................................................... 373
4.3.1 Mode Mono......................................................................................................................... 373
4.3.2 Mode Multi .......................................................................................................................... 375
4.3.3 Les blocages possibles en mode multi.................................................................................. 376
4.4 Gestion assiste des erreurs HyperFileSQL .................................................................... 376
4.4.1 Principe............................................................................................................................... 376
4.4.2 Fonctionnement standard.................................................................................................... 377
4.4.3 Personnalisation.................................................................................................................. 379
4.4.4 Dbrancher la gestion assiste (WinDev et WebDev)............................................................. 380
5. LES VUES HYPERFILESQL 381
5.1 Prsentation des vues HyperFileSQL ...............................................................................381
5.2 Intrts des vues .............................................................................................................381
5.3 Manipulation des vues ....................................................................................................381
WLangage.book Page 23 Mardi, 23. avril 2013 1:59 13
24 Sommaire
5.4 Cration de vues HyperFileSQL ......................................................................................382
5.4.1 Choix des rubriques d'une vue..............................................................................................382
5.4.2 Choix de la rubrique de tri initial de la vue .............................................................................383
5.4.3 Slection des enregistrements de la vue ...............................................................................383
5.4.4 Oprations ensemblistes entre plusieurs vues.......................................................................383
6. LES TRIGGERS HYPERFILESQL 385
6.1 Prsentation ....................................................................................................................385
6.1.1 Dfinition.............................................................................................................................385
6.1.2 Intrt des triggers ...............................................................................................................385
6.2 Comment crer et manipuler des triggers ? ..................................................................385
6.2.1 Fonctions de manipulation des triggers.................................................................................385
6.2.2 Manipuler des triggers..........................................................................................................386
7. LA RPLICATION DE DONNES 387
7.1 Prsentation de la rplication .........................................................................................387
7.1.1 Prsentation ........................................................................................................................387
7.1.2 Vocabulaire spcifique la rplication..................................................................................387
7.1.3 Remarque............................................................................................................................387
7.2 Mettre en place la rplication universelle ......................................................................388
7.2.1 Activation ............................................................................................................................388
7.2.2 Dclaration de la base matre...............................................................................................388
7.2.3 Dclaration des bases abonnes..........................................................................................388
7.3 Rplication entre des bases htrognes ......................................................................388
7.4 Limitations ......................................................................................................................389
8. GESTION DE FICHIERS EN "BACK OFFICE" 390
8.1 Prsentation ....................................................................................................................390
8.2 La mise jour par email ................................................................................................390
8.3 Laccs distant sur Hyper File .........................................................................................390
8.3.1 Dfinition.............................................................................................................................390
8.3.2 Dtail des trois modes dutilisation .......................................................................................390
8.4 La rplication de donnes .............................................................................................. 391
8.4.1 Prsentation ........................................................................................................................391
8.4.2 Mise en place de la rplication .............................................................................................391
9. ACCS AUX BASES TIERCES 392
9.1 Prsentation ....................................................................................................................392
9.2 Particularits ...................................................................................................................392
9.3 Fonctions de gestion des bases de donnes tierces ......................................................392
10. FONCTIONS HYPERFILESQL 393
11. PROPRITS HYPERFILESQL 400
WLangage.book Page 24 Mardi, 23. avril 2013 1:59 13
Sommaire 25
12. FONCTIONS SQL 405
12.1 Dtail des fonctions .......................................................................................................406
12.1.1 ELT.................................................................................................................................... 406
12.1.2 EXTRACTVALUE.................................................................................................................. 406
12.1.3 LEFT .................................................................................................................................. 406
12.1.4 RIGHT ............................................................................................................................... 406
12.1.5 SPLIT_PART ....................................................................................................................... 406
12.1.6 MID, SUBSTR et SUBSTRING.............................................................................................. 407
12.1.7 LRIM ................................................................................................................................. 407
12.1.8 RTRIM ............................................................................................................................... 408
12.1.9 TRIM.................................................................................................................................. 408
12.1.10 REPLACE......................................................................................................................... 408
12.1.11 REVERSE......................................................................................................................... 409
12.1.12 TRANSLATE ..................................................................................................................... 409
12.1.13 CONCAT .......................................................................................................................... 409
12.1.14 STRING_AGG .................................................................................................................. 409
12.1.15 LPAD............................................................................................................................... 409
12.1.16 REPEAT ........................................................................................................................... 409
12.1.17 RPAD .............................................................................................................................. 409
12.1.18 SPACE............................................................................................................................. 410
12.1.19 LOWER............................................................................................................................ 410
12.1.20 LCASE............................................................................................................................. 410
12.1.21 UCASE ............................................................................................................................ 410
12.1.22 UPPER ............................................................................................................................ 410
12.1.23 LEN et LENGTH ................................................................................................................ 410
12.1.24 INSTR.............................................................................................................................. 410
12.1.25 FIELD .............................................................................................................................. 411
12.1.26 PATINDEX........................................................................................................................ 411
12.1.27 POSITION........................................................................................................................ 411
12.1.28 COUNT ............................................................................................................................ 411
12.1.29 AVG ................................................................................................................................ 411
12.1.30 MAX ................................................................................................................................ 412
12.1.31 MIN................................................................................................................................. 412
12.1.32 SUM................................................................................................................................ 412
12.1.33 BOTTOM.......................................................................................................................... 412
12.1.34 TOP................................................................................................................................. 412
12.1.35 ASCII............................................................................................................................... 413
12.1.36 SOUNDEX, SOUNDEX LIKE ............................................................................................... 413
12.1.37 SOUNDEX2, SOUNDEX2 LIKE........................................................................................... 413
12.1.38 ADD_MONTHS ................................................................................................................ 413
12.1.39 LAST_DAY ....................................................................................................................... 413
12.1.40 MONTHS_BETWEEN ........................................................................................................ 413
12.1.41 NEW_TIME ...................................................................................................................... 413
12.1.42 NEXT_DAY ....................................................................................................................... 414
12.1.43 ROUND ........................................................................................................................... 414
12.1.44 SYSDATE......................................................................................................................... 414
12.1.45 TRUNC ............................................................................................................................ 414
12.1.46 COALESCE ...................................................................................................................... 414
12.1.47 GREATEST ....................................................................................................................... 414
WLangage.book Page 25 Mardi, 23. avril 2013 1:59 13
26 Sommaire
12.1.48 LEAST..............................................................................................................................414
12.1.49 NVL, IF_NULL, IS_NULL....................................................................................................414
12.1.50 DECODE ..........................................................................................................................414
12.1.51 CASE...............................................................................................................................414
12.1.52 MATCH AGAINST ..............................................................................................................415
12.1.53 MD5................................................................................................................................416
12.1.54 SHA et SHA1....................................................................................................................416
13. HYPERFILESQL CLIENT/SERVEUR 417
13.1 Prsentation ....................................................................................................................417
13.2 Mettre en place une application Client/Serveur ............................................................417
14. FONCTIONS HYPERFILESQL CLIENT/SERVEUR 418
WLangage.book Page 26 Mardi, 23. avril 2013 1:59 13
PARTIE 1
Editeur de
code
WLangage.book Page 27 Mardi, 23. avril 2013 1:59 13
WLangage.book Page 28 Mardi, 23. avril 2013 1:59 13
Partie 1 : Editeur de code 29
1. PRSENTATION
WinDev, WebDev et WinDev Mobile sont des outils
complets qui permettent, d'une part de crer des
projets, et d'autre part de grer les lments crs
avec le langage de WinDev, WebDev et WinDev
Mobile : le WLangage.
Le WLangage est un langage de type L5G intgr.
Avec les fonctions du WLangage, vous pouvez crer
des traitements pour chaque projet, fentre, page
et champ.
Ces traitements sont saisis sous un diteur de
sources spcialis (appel galement diteur de
code). Cet diteur est accessible directement
depuis WinDev, WebDev ou WinDev Mobile. Il per-
met d'accder tout moment tous les traite-
ments d'un objet.
1.1 Lditeur de code
Lditeur de code permet de saisir tous les traite-
ments en WLangage (le langage de programmation
intgr WinDev, WebDev et WinDev Mobile). Il per-
met par exemple de saisir le code source :
des champs,
des fentres,
des pages,
des tats
des procdures locales et globales,
des classes et des mthodes, ...
WLangage.book Page 29 Mardi, 23. avril 2013 1:59 13
30 Partie 1 : Editeur de code
Les diffrents traitements affichs sous lditeur
de code sont spars par un bandeau horizontal
contenant lintitul du code. Le code WLangage
correspondant doit tre saisi sous le bandeau.
Un menu de type Ruban
Les diffrentes options de lditeur de code sont
regroupes dans un menu sous forme de ruban.
1. Bouton WinDev/WebDev/WinDev Mobile (en haut gauche). Ce bouton permet dafficher le "A
propos" du produit en cours.
2. Affichage des barres doutils des versions prcdentes (mode compatible).
3. Affichage des menus droulants des versions prcdentes (mode compatible).
4. Boutons daccs rapide. Ces boutons correspondent aux options les plus utilises :
Nouveau, Ouvrir,
Sauver,
Go de projet,
Go de fentre ou de page, ...
5. Volets du ruban. Ces volets permettent daccder aux diffrentes options.
Plusieus types de volets sont visibles :
le volet "en cours". Le nom du volet est affich avec un trait orange.
les volets contextuels spcifiques llment en cours (le nom du volet est en orange)
les volets disponibles (nom du volet en blanc).
6. Groupe doptions. Un groupe rassemble les diffrentes options du ruban par thme.
7. Bouton de regroupement. Bouton situ lextrmit dun groupe permettant deffectuer une action
spcifique (affichage des options de llment en cours, affichage de laide, ...).
8. Options du ruban. Plusieurs types doptions sont disponibles dans le ruban :
Boutons cliquer
Options cocher.
Bouton flche permettant de drouler des options.
2 types de boutons flche sont disponibles :
- les boutons flche permettant uniquement de drouler un menu.
- les boutons flche permettant soit de drouler un menu (clic sur la fl-
che), soit deffectuer une action par dfaut (clic sur licne du bouton).
WLangage.book Page 30 Mardi, 23. avril 2013 1:59 13
Partie 1 : Editeur de code 31
1.2 Fonctionnalits lies la saisie du code
Ce paragraphe dtaille quelques fonctionnalits
intressantes de lditeur de code. Pour plus de
dtails, consultez laide en ligne.
1.2.1 Mise en couleur du code
Le code source saisi est automatiquement mis en
couleur pour faciliter la lisibilit des traitements.
Pour modifier les couleurs et les polices, utilisez
longlet "Coloration" des options de lditeur de
code. Pour afficher les options de lditeur de code,
sous le volet "Accueil", dans le groupe "Environne-
ment", droulez "Options" puis slectionnez
"Options de lditeur de code".
1.2.2 Compltion automatique
La compltion automatique permet une saisie
assiste du code WLangage de vos applications.
Cette compltion est disponible sur les ordres du
WLangage, les procdures, les variables, les
fichiers de donnes, les rubriques de fichiers de
donnes, les fentres, les champs, le type des
variables, ...
Cette compltion limine le risque d'erreurs de
frappe et fait gagner normment de temps : inu-
tile de rechercher le nom exact d'une variable glo-
bale ou d'un champ, il est automatiquement
propos !
La compltion automatique permet de :
complter la saisie en cours en proposant une
liste intelligente des diffrentes valeurs (nom de
fonction, nom de proprit, ...) possibles. Toutes
les valeurs proposes dans la liste contiennent le
mot actuellement saisi.
A chaque modification saisie, le contenu de la
liste est mis jour.
Par exemple, lors de la saisie des caractres
"OKA", l'ensemble des fonctions, champs, ... con-
tenant ces caractres est propos.
proposer uniquement la valeur des paramtres
possibles selon la fonction du WLangage utilise.
Par exemple, lors de l'utilisation de la fonction
HLit, le premier paramtre attendu correspond
un nom de fichier de donnes. La compltion
automatique proposera uniquement les fichiers
de donnes de l'analyse associe au projet en
cours.
slectionner les combinaisons de constantes
pour un paramtre.
Il suffit de slectionner les options voulues (avec
les touches flches) et de valider les options
choisies avec la touche ESPACE.
L'ensemble des options slectionnes est auto-
matiquement intgr dans le code lors de la vali-
dation (touche ENTREE).
lancer les assistants de code. Ces assistants per-
mettent de saisir les diffrents paramtres de la
fonction l'aide de questions simples.
L'option <Assistant> signale la prsence d'un
assistant. Pour lancer l'assistant, slectionnez
l'option <Assistant>.
lancer les ressources existantes sur la fonction
utilise : exemple livr, article LST, brique de
code, ...
Pour lancer une ressource, il suffit de la slec-
tionner.
1.2.3 Assistant de code
De nombreuses fonctions du WLangage possdent
des assistants de code. Ces assistants permettent
de simplifier l'criture des diffrents paramtres de
la fonction. Il suffit de suivre les instructions don-
nes par les diffrents crans de l'assistant pour
obtenir la syntaxe correspondante. Lutilisation de
ces assistants de code nest bien entendu pas obli-
gatoire.
Pour chaque fonction possdant un assistant, une
liste souvre lors de la saisie du nom de la fonction.
Il suffit de slectionner loption <Assistant> dans
cette liste pour lancer l'assistant de code corres-
pondant.
1.2.4 Aide la saisie des fonctions
Pour simplifier la saisie des fonctions WLangage
sous l'diteur de code, le mcanisme d'aide la
saisie suivant est propos :
Une visualisation de la syntaxe en cours de sai-
sie grce diffrentes bulles. Cette aide appa-
rat lorsque le nom de la fonction est entirement
saisi. Si diffrentes syntaxes sont disponibles
pour la fonction en cours, des flches apparais-
sent dans les diffrentes bulles.
Pour modifier la syntaxe active, utilisez les tou-
ches [Alt] + [Flche droite] ou [Alt] + [Flche gau-
che].
Une bulle d'aide affiche la description du para-
mtre en cours (bulle d'aide des paramtres).
Cette bulle d'aide apparat :
- lorsque le curseur de la souris est situ la
position d'un paramtre saisir (le curseur de la
souris survole la syntaxe sous forme de bulle).
- si la combinaison de touches [Alt + F1] est utili-
se sur un paramtre dj saisi.
WLangage.book Page 31 Mardi, 23. avril 2013 1:59 13
32 Partie 1 : Editeur de code
Une bulle d'aide affiche la description du rsul-
tat (bulle d'aide du rsultat). Cette bulle d'aide
apparat :
- lorsque le curseur de la souris est situ sur le
nom de la fonction (lors de la saisie d'une nou-
velle fonction).
- si la combinaison de touches [Alt + F1] est utili-
se sur le nom d'une fonction dj saisi.
1.2.5 Aide
Laide est directement accessible depuis lditeur
de code par la touche [F1]. Si une fonction est
slectionne, laide correspondante est affiche. Il
est possible de raliser des "copier-coller" de l'aide
vers le programme.
Cette aide est disponible :
sur Internet : les pages daide de la version en
cours de commercialisation sont rgulirement
mises jour. Vous bnficiez des commentaires
de la communaut des dveloppeurs WinDev,
WebDev, WinDev Mobile.
en local : une mise jour de laide est disponible
chaque nouvelle version ou mise jour du pro-
duit.
1.2.6 Historique du code
La gestion de lhistorique permet de :
conserver le code complet de chaque traitement
modifi.
de restaurer un code existant une date donne,
et effac ou modifi par la suite.
Pour grer lhistorique du code de votre projet :
1. Affichez les options de lditeur de code : sous le
volet "Accueil", dans le groupe "Environnement",
droulez "Options" et slectionnez "Options de ldi-
teur de code".
2. Dans longlet "Code", cochez loption "Sauver
lhistorique des modifications du code".
Cette gestion de lhistorique cre un sous-rper-
toire "Historique" dans le rpertoire du projet. Ce
rpertoire contient les sous-rpertoires suivants :
WDP : historique des traitements du projet
WDW: historique des traitements des fentres
WDC : historique des modifications des classes
WDE : historique des traitements des tats
WDR : historique des traitements des requtes
WDG : historique des traitements des collections
de procdures
...
Dans chaque sous-rpertoire, des fichiers ".FIC",
".NDX" et ".MMO" correspondants au nom des fen-
tres, du projet, ... contiennent l'historique. Ces
fichiers peuvent au bout d'un certain temps occu-
per une taille non ngligeable. Ils peuvent tre :
supprims directement dans lexplorateur de
Windows.
purgs. Pour cela, sous le volet "Code", dans le
groupe "Autres actions", droulez "Historique" et
slectionnez loption "Purger lhistorique".
Attention : Si vous supprimez ou purgez ces
fichiers, lhistorique du code ne pourra plus tre
affich.
1.2.7 Vrification du code
Le code est vrifi en temps rel. Les erreurs et les
warnings sont immdiatement souligns lors de la
frappe.
Le volet "Erreurs de compilation" permet didenti-
fier le type de problme rencontr.
Plusieurs types de messages peuvent tre affichs
dans ce volet :
les warnings, affichs en orange, alertent des ris-
ques dincohrence dans le code. Ces "warnings"
ne bloquent pas lexcution du traitement.
les erreurs, affiches en rouge, signalent les
erreurs dans le code. Ces "erreurs" bloquent
lexcution du traitement.
les informations, affiches en noir, expliquent les
choix du compilateur ou prsentent dventuels
conseils pour amliorer le code.
les erreurs de compilation d'IHM, affiches en
rouge, informent chaque sauvegarde de fen-
tre, de page ou chaque recompilation du projet
des problmes potentiels dtects sur les interfa-
ces.
1.2.8 Indentation automatique
Lors de la saisie dinstructions composes (telles
que "Selon", "Pour" et "Tantque" par exemple), le
code est automatiquement indent afin de mettre
en relief les diffrentes boucles utilises dans le
programme.
Ds la saisie de la premire instruction, le mot
"FIN" est automatiquement insr, et le curseur est
positionn dans linstruction compose.
Pour effectuer lindentation automatique dun code
(copie dun code par exemple), sous le volet "Code",
dans le groupe "Edition", cliquez sur loption "Rin-
dentation auto.".
WLangage.book Page 32 Mardi, 23. avril 2013 1:59 13
Partie 1 : Editeur de code 33
1.2.9 Traduction des messages
Lors de la ralisation dune application multilingue,
WinDev offre la possibilit de saisir la traduction
des diffrents messages afficher.
La fentre de saisie des messages traduits peut
tre appele directement dans tous les messages
traduire. Il suffit :
dutiliser la combinaison de touches [CTRL]+[T]
sous le volet "Code", dans le groupe "Langues",
de drouler loption "Traduire les chanes" et de
slectionner loption "Traduction des messages".
Chaque message traduit correspond alors une
"ressource". Il est possible dutiliser une mme
"ressource" plusieurs fois, dans des traitements dif-
frents.
Une icne et un chiffre apparaissent droite du
message traduit. Le chiffre indique le nombre de
traductions saisies pour le message en cours.
Remarque : Le dveloppement dapplications multi-
lingues est dtaill dans laide en ligne.
1.2.10 Gestion des points darrt
Lors du test de lapplication sous lditeur, les
points darrt permettent de lancer automatique-
ment le dbogueur partir dune ligne donne.
Pour plus de dtails, consultez laide en ligne.
1.2.11 Insertion de traitements spcifiques
Pour chaque lment dun projet, WinDev propose :
des traitements par dfaut (initialisation dun
champ, clic sur un bouton, ...).
des traitements spcifiques (survol de la souris
sur un champ, clic droit sur une fentre, ...). Ces
traitements spcifiques sont affichs sous forme
dicnes dans la fentre de code de llment.
Pour insrer un traitement spcifique lutilisa-
tion de la souris ou du clavier, cliquez sur une des
icnes proposes.
1.2.12 Autres fonctionnalits
Charte de programmation
Une charte de programmation permet de prfixer
automatiquement le nom de toutes les variables et
de tous les lments du projet (fentre, champ d'un
tat, classe, ...). Ce prfixage automatique permet
de connatre et/ou de rechercher facilement un l-
ment d'un type donn.
Pour plus de dtails, consultez laide en ligne.
Reprage du code modifi
Les lignes de code modifies sont immdiatement
identifies par la prsence de bandes colores
devant les lignes de code.
Seules les modifications de code ralises depuis
l'ouverture de l'lment en cours sont prises en
compte :
les lignes de code prcdes d'une bande bleue
ont t sauvegardes.
les lignes de code prcdes d'une bande
orange n'ont pas encore t sauvegardes.
Lors de la fermeture de l'lment, les bandes colo-
res disparaissent automatiquement.
Correction du code saisi
L'diteur de code met votre disposition plusieurs
outils pour corriger le code saisi :
le correcteur automatique des lments du
projet : Lorsque le nom d'une variable ou d'un
lment du projet n'est pas reconnu, le menu
contextuel de l'diteur de code propose dsor-
mais une liste des corrections possibles. Cette
liste prsente le nom des variables et/ou des l-
ments du projet pouvant correspondre.
le correcteur d'orthographe pour les commentai-
res et les chanes de caractres.
Marques de positionnement
Les marques de positionnement permettent de
"marquer" des lignes de codes spcifiques. Ces
marques permettent un parcours rapide du code
d'une marque de positionnement une autre.
Pour plus de dtails, consultez laide en ligne.
WLangage.book Page 33 Mardi, 23. avril 2013 1:59 13
34 Partie 1 : Editeur de code
WLangage.book Page 34 Mardi, 23. avril 2013 1:59 13
PARTIE 2
Syntaxe de base
du WLangage
WLangage.book Page 35 Mardi, 23. avril 2013 1:59 13
WLangage.book Page 36 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 37
1. INTRODUCTION
Le WLangage est un langage de type L5G intgr.
Avec les fonctions du WLangage, vous pouvez crer
des traitements pour chaque projet, fentre, page
et champ.
Ces traitements sont saisis sous un diteur de
sources spcialis (appel galement diteur de
code). Cet diteur est accessible directement
depuis WinDev, WebDev ou WinDev Mobile. Il per-
met d'accder tout moment tous les traite-
ments d'un objet.
1.1 Quelques caractristiques du WLangage
Les fonctions du WLangage peuvent s'crire indif-
fremment en minuscules, majuscules ou une
combinaison des deux. L'diteur de sources
reconnat les deux.
L'diteur de sources permet de visualiser avec
des couleurs diffrentes les diffrents mots-cls
du WLangage. Cette fonctionnalit est trs prati-
que pour vrifier par exemple que vous n'avez
pas fait d'erreurs dans la saisie des fonctions.
Avec le WLangage, vous pourrez faire de la pro-
grammation vnementielle sans mme avoir
la grer.
En effet, pour chaque objet cr avec WinDev,
WebDev ou WinDev Mobile, il est possible d'asso-
cier un ou plusieurs traitements qui s'excuteront
sur laction d'un vnement donn. Vous navez
rien grer, vous n'aurez qu' saisir chaque trai-
tement.
En WebDev, les traitements peuvent tre saisis :
soit en code serveur : le traitement saisi sex-
cutera sur le serveur.
soit en code navigateur : le traitement saisi
sexcutera sur le navigateur affich sur le
poste de linternaute (le WLangage saisi en
code navigateur est automatiquement traduit
en JavaScript).
Par exemple pour les champs de saisie, vous
pouvez dfinir :
un traitement qui s'excute lors de l'initialisa-
tion du champ,
un traitement qui s'excute lors de l'entre
dans le champ,
un traitement qui s'excute lors de la sortie du
champ,
un traitement qui s'excute lors de la sortie lors-
que le champ est modifi,
dautres traitements lis dautres vne-
ments que vous pouvez rajouter directement
dans lditeur de code.
Le WLangage est constitu de mots-cls qui
sont :
des fonctions,
des proprits,
des constantes prdfinies,
des instructions de dclaration de variables,
des instructions de dclaration de fonctions et
de procdures,
des mots-cls,
des variables d'tat, ...
Le WLangage supporte le modle objet.
Les fonctions du WLangage ont un nom qui per-
met d'illustrer l'utilisation de la fonction.
Tous les mots-cls du WLangage (fonctions, cons-
tantes prdfinies, proprits ...) existent en
anglais (amricain).
Un dbogueur est disponible pour le WLangage.
Il peut tre appel soit depuis le dbut du projet,
soit par programmation soit en cours de test d'un
lment (fentre, page, ...) ou d'un projet.
WLangage.book Page 37 Mardi, 23. avril 2013 1:59 13
38 Partie 2 : Syntaxe de base du WLangage
1.2 La programmation en code serveur et navigateur
Ce chapitre prsente la syntaxe du WLangage. Cha-
que fonctionnalit du WLangage est :
soit accessible en code serveur uniquement : la
fonctionnalit sera excute par le serveur,
soit accessible en code navigateur uniquement :
la fonctionnalit sera excute par le navigateur
sur le poste de linternaute,
soit accessible en code navigateur et serveur.
Remarques :
Pour programmer en code serveur, le WLangage
doit tre utilis.
Pour programmer en code navigateur, vous pou-
vez utiliser :
soit le WLangage qui sera automatiquement
traduit en JavaScript,
soit directement le JavaScript.
Dans lditeur de code, des bandeaux de cou-
leurs diffrentes permettent de diffrencier le
code serveur du code navigateur. Par dfaut, les
couleurs utilises sont :
jaune pour le code serveur,
vert pour le code navigateur en WLangage,
bleu pour le code navigateur en Java-Script.
Il est possible dexcuter un traitement sur le ser-
veur depuis un traitement ralis en code naviga-
teur.
Exemple :
WB
// Code navigateur de Modification
// et sortie dune COMBO
PageValide("", "BOUTON1")
// Appelle le code serveur de clic sur
// le bouton BOUTON1
WLangage.book Page 38 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 39
2. LES VARIABLES
Le WLangage propose deux types de variables :
les types simples, pouvant tre dclars directe-
ment
les types avancs, composs dune ou plusieurs
variables de type simple.
2.1 Les types simples
2.1.1 Principe
Une variable se dfinit par son nom et par son type.
Le type de la variable dtermine les valeurs que la
variable peut prendre, son encombrement
mmoire et les oprations possibles.
Rappel : Chaque type est identifi par un mot-cl
du WLangage. Ces mots-cls sont des mots rser-
vs.
2.1.2 Types de variables
Les types "simples" du WLangage sont les
suivants :
Boolen : type conseill pour toutes les opra-
tions logiques o seules deux alternatives sont
possibles :
Vrai (valeur diffrente de 0)
Faux (valeur gale 0)
Exemple : b est un boolen
Entier : type conseill pour des calculs raliss
sur des valeurs entires.
Pour des calculs avancs, le WLangage propose
diffrents types d'entiers.
Exemple : b est un entier
Montaire : type conseill pour des calculs rali-
ss sur des valeurs relles ncessitant une prci-
sion garantie des dcimales, comme par
exemple des valeurs montaires.
Un montaire gre 24 chiffres significatifs (17
maximum pour la partie entire, 6 maximum
pour la partie dcimale). La prcision est assure
sur 6 dcimales.
Plus de dtails sur les montaires, consultez le
paragraphe Le type montaire, page 41.
Exemple : MaMonnaie est un montaire
Numrique : type conseill pour des calculs rali-
ss sur des valeurs relles ncessitant une prci-
sion garantie des dcimales. Un numrique gre
38 chiffres significatifs (32 maximum pour la par-
tie entire, 6 maximum pour la partie dcimale).
Exemple : MaMonnaie est un numrique
Rel : type conseill pour des calculs simples
raliss sur des valeurs relles.
Un rel gre 15 chiffres significatifs, par contre la
prcision des dcimales n'est pas garantie. La
prcision des dcimales n'est pas assure. Pour
effectuer des calculs prcis, utilisez le type
"Montaire".
Pour des calculs avancs, le WLangage propose
diffrents types de rels.
Pour plus de dtails sur le type rel, consultez le
paragraphe Le type rel, page 41.
Exemple : TVA est un rel
Chane : type conseill pour la gestion des carac-
tres et des chanes de caractres.
Avec ce type, il n'est pas ncessaire de dclarer
la longueur de la chane. Celle-ci peut varier de
faon libre lors de l'utilisation de la variable.
Pour une gestion avance des chanes de carac-
tres (essentiellement pour les API Windows), le
WLangage propose diffrents types de chanes.
Pour plus de dtails sur les chanes de caract-
res, consultez le paragraphe Le type Chane,
page 41
Buffer : type conseill pour crire un code porta-
ble entre WinDev et WinDev Mobile.
Date, Heure, DateHeure, Dure : types conseills
pour la gestion des dates et des heures.
Le type "Date" et le type "Heure" permettent de
manipuler simplement les dates et les heures, et
de grer de manire quasi automatique toutes
les conversions.
Plus de dtails, consultez le paragraphe Le type
date, page 42, et le paragraphe Le type heure,
page 43
Le type "DateHeure" permet de grer en une
seule fois une date et une heure. Pour plus de
dtails, consultez le paragraphe Le type Date-
Heure, page 43.
WLangage.book Page 39 Mardi, 23. avril 2013 1:59 13
40 Partie 2 : Syntaxe de base du WLangage
Le type "Dure" permet de grer simplement les
diffrences d'heures ou de dates. Plus de dtails,
consultez le paragraphe Le type dure,
page 43.
Variant : type conseill pour stocker n'importe
quel autre type simple du WLangage.
Le type Variant est un type permettant de grer la
valeur NULL. Plus de dtails sur les variants, con-
sultez le paragraphe Le type variant, page 44.
2.1.3 Dclarer un type simple
Dclarer une ou plusieurs variables
<Nom variable> est un(e) <Type variable>
ou
<Nom variable 1>, <Nom variable 2> sont des
<Type variables>
Remarque : Les mots-cls un, une et des ne sont
pas obligatoires : ce sont des mots d'agrment.
Dclarer et initialiser une variable
<Nom variable> est un(e) <Type variable> =
<Valeur>
OU
<Nom variable> est un(e) <Type variable>
<Nom variable> = <Valeur>
Remarque : Lorsque plusieurs variables du mme
type sont dclares et initialises sur la mme
ligne, seule la dernire variable est initialise.
Valeurs limites des types de donnes
Si une variable est affecte avec une valeur dpas-
sant les limites de son type :
lors du test dune fentre, dune page ou dun
projet, un message d'erreur est gnr.
en excution du programme, aucun message
derreur ne signale le dpassement de capacit.
La valeur de la variable est fausse.
Pour connatre les valeurs limites des diffrents
types de donnes, consultez le fichier "Limites.WL"
dans le rpertoire "Personnel\Externe" de WinDev /
WebDev. Ce fichier peut tre ouvert sous n'importe
quel diteur de texte.
Pour simplifier vos tests, les valeurs limites des dif-
frents types de donnes ont t associes des
constantes dans le fichier "Limites.WL". Pour int-
grer ces constantes dans votre application, utilisez
la ligne de code suivante dans le code dinitialisa-
tion du projet :
Le fichier "Limites.WL" sera automatiquement
recherch dans le rpertoire "Personnel\Externe"
de WinDev / WebDev. Il n'est pas ncessaire de
copier le fichier "Limites.WL" dans le rpertoire du
projet.
Limites : Dclaration de variables de mme nom
Dans un traitement, il est interdit d'utiliser plu-
sieurs variables de mme nom (quel que soit le
type de ces variables).
Si des variables de mme nom sont dclares dans
diffrents traitements du projet, la rgle de porte
des variables s'applique (voir page 66)
2.1.4 Les diffrents types dentier
Le WLangage propose diffrents types d'entiers :
NomClient est une chane
Compteur est un entier
Prix est un rel
i,j,k sont des entiers
NomClient est une chane
NomClient = "Dupond"
Compteur est un entier = 7
i,j,k sont des entiers = 21
// Seul k est initialis 21
Externe "Limites.WL"
Valeur comprise entre
Entier -2 x 10
9
et 2 x 10
9
(envi-
ron)
Entier sur 1 octet -128 et 127 (incluses)
Entier sur 2 octets -32.768 et 32.767 (inclu-
ses)
Entier sur 4 octets -2 x 10
9
et 2 x 10
9
(envi-
ron)
Entier sur 8 octets -9 x 10
18
et 9 x 10
18
(envi-
ron)
Entier sans signe 0 et 4 x 10
9
Octet 0 et 255 (incluses)
Ce type est quivalent au
type Entier sans signe sur
1 octet.
Entier sans signe sur
1 octet
0 et 255 (incluses)
Entier sans signe sur
2 octets
0 et 65.535 (incluses)
Entier sans signe sur
4 octets
0 et 4 x 10
9
(environ)
Entier sans signe sur
8 octets
0 et 18 x 10
18
Entier systme s'adapte automatique-
ment la taille gre par
le systme (4 octets en 32
bits, 8 octets en 64 bits)
WLangage.book Page 40 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 41
Remarque : Tous les types avancs (diffrents du
type "Entier") sont conseills pour l'utilisation des
API Windows.
Valeur par dfaut
Une variable de type "Entier" dclare et non initia-
lise est gale 0.
2.1.5 Le type montaire
Un montaire est un rel cod sur 10 octets. Un
montaire peut avoir jusqu' 23 chiffres significa-
tifs (17 maximum pour la partie entire, 6 maxi-
mum pour la partie dcimale) et peut prendre une
valeur entre -604 462 909 807 314 587,353 087
et +604 462 909 807 314 587,353 087.
Le type montaire est conseill pour viter les
erreurs d'arrondi dues par le codage binaire des
rels.
Pour une plus grande prcision, il est possible duti-
liser les numriques (38 chiffres significatifs).
Pour les autres calculs, il est prfrable d'utiliser
des rels, plus rapides.
Valeur par dfaut
Une variable de type "Montaire" dclare et non
initialise est gale 0.
Codage binaire des rels
Les rels ont tous le mme nombre de chiffres
significatifs (15).
Si le rsultat d'un calcul sur des rels met en jeu
plus de 15 chiffres significatifs, ce rsultat sera
automatiquement arrondi 15 chiffres significatifs.
La prcision du rsultat sera donc plus faible que
pour un calcul ralis avec des montaires.
Calculs sur les montaires
Tous les calculs utilisant au moins un montaire
seront effectus sous forme montaire. Pour
garantir la prcision du rsultat, toutes les opran-
des seront automatiquement converties en mon-
taire.
Langage externe
Le type montaire n'est pas disponible en langage
externe.
2.1.6 Le type numrique
Le type numrique permet de contenir des nom-
bres entiers ou dcimaux en prcisant si
ncessaire :
le nombre de chiffres de la partie entire.
le nombre de chiffres de la partie entire et de la
partie dcimale.
Un numrique peut tre utilis :
pour dclarer une variable simple,
comme lment d'un tableau,
comme lment d'une variable compose,
comme lment d'une structure,
comme lment d'une classe,
Un variant peut contenir un numrique.
2.1.7 Le type rel
Le WLangage propose deux types de rels :
Rel (rel sur 8 octets) : Un rel peut avoir
jusqu' 15 chiffres significatifs. La prcision des
dcimales n'est pas assure. Pour effectuer des
calculs prcis, utilisez le type "Montaire". Valeur
minimale : 1.7*10
-308
, Valeur maximale :
1.7*10
+308
Rel sur 4 octets : Un rel sur 4 octets peut avoir
jusqu' 6 chiffres significatifs. La prcision des
dcimales n'est pas assure. Pour effectuer des
calculs prcis, utilisez le type "Montaire".
Valeur minimale : 3.4*10
-38
, Valeur maximale :
3.4*10
+38
.
Valeur par dfaut
Une variable de type "Rel" dclare et non initiali-
se est gale 0.
Codage binaire des rels
Les rels ont tous le mme nombre de chiffres
significatifs (15).
Si le rsultat d'un calcul sur des rels met en jeu
plus de 15 chiffres significatifs, ce rsultat sera
automatiquement arrondi 15 chiffres significatifs.
Pour obtenir une prcision plus importante, utilisez
le type montaire.
2.1.8 Le type Chane
Le WLangage propose diffrents types de chanes
de caractres.
Les types de chane les plus courants sont les sui-
vants :
Caractre : Caractre cod sur 1, 2 ou 4 octets
selon le mode de gestion des chanes et la plate-
forme d'excution.
Chane Ansi : Chane de taille dynamique conte-
nant uniquement des caractres au format ANSI.
Chane Unicode : Chane de taille dynamique con-
tenant uniquement des caractres au format
UNICODE.
Chane : Chane de taille dynamique.
Le type "chane" est propre au WLangage. Avec
ce type, il n'est pas ncessaire de dclarer la lon-
gueur de la chane. Celle-ci peut varier de faon
WLangage.book Page 41 Mardi, 23. avril 2013 1:59 13
42 Partie 2 : Syntaxe de base du WLangage
libre lors de l'utilisation de la variable.
Buffer : Zone mmoire binaire. Permet d'crire un
code portable entre WinDev et WinDev Mobile en
ce qui concerne la manipulation des donnes
brutes. Pour plus de dtails, consultez Le type
Buffer, page 42
Dautres types de chanes sont galement disponi-
bles :
Chane sur : Chane de taille fixe, termine par
un 0 binaire (identique au langage C). La taille
spcifie correspond au nombre maximum de
caractres de la chane.
Ce type de chane permet de crer un code com-
patible WinDev / WinDev Mobile lors de lappel
dAPI existantes sur les deux plate-formes.
Chane ASCIIZ sur : Chane termine par un 0
binaire (identique au langage C).
La longueur d'une chane ASCIIZ est limite
environ 2 Go. La taille donner la chane
ASCIIZ doit tre gale la taille de la chane plus
1 (pour le zro binaire).
Type non disponible en WinDev Mobile.
Chane fixe sur : Chane de taille fixe.
La longueur d'une chane fixe est limite envi-
ron 2 Go. La chane est complte avec :
0 si la variable nest pas encore affecte
des espaces si ncessaire si la variable est
affecte (elle est semblable au type "string" du
Basic).
Type non disponible en WinDev Mobile.
Chane Pascal sur :
Chane prcde d'un octet prcisant la longueur
(identique au langage Pascal). Cet octet n'est pas
accessible. Par exemple Chaine[1] reprsente le
premier caractre de la chane et non pas sa lon-
gueur.
La longueur d'une chane Pascal est limite
255 caractres maximum. La taille donner la
chane Pascal doit tre gale la taille de la
chane.
Type non disponible en WinDev Mobile.
Chane UNICODE sur :
Chane de taille fixe contenant uniquement des
caractres au format UNICODE.
Remarques :
Le type "Chane sur" doit tre utilis pour envoyer
des paramtres en entre / sortie une API Win-
dows.
Tous les types avancs (diffrents du type
"Chane") sont disponibles pour compatibilit
avec les autres langages de programmation
(Turbo Pascal Windows, C, Visual Basic Windows,
...) et pour les API Windows.
Valeur par dfaut
Une variable de type "Chane" ou "Chane sur"
dclare et non initialise correspond une
chane vide ("").
Une variable de type "Buffer" dclare et non ini-
tialise est vide.
Une variable de type "Buffer sur" dclare et non
initialise est remplie avec des 0.
Type de chane
WinDev Mobile et WinDev ne proposent pas les
mmes types de chane de caractres. Pour plus
de dtails sur les diffrents types de chanes propo-
ses, consultez laide en ligne.
Passer une chane en paramtre une procdure
Il est possible de passer une variable de type
"Chane" en paramtre une procdure.
Attention : Si la variable est de type "Chane Fixe", il
faut supprimer les espaces. Par exemple :
2.1.9 Le type Buffer
Le type Buffer correspond une zone mmoire
binaire. Grce ce type, il est possible de raliser
un code manipulant du binaire, portable entre une
application WinDev et une application WinDev
Mobile.
Le type buffer ne gre pas de marqueur spcifique
de fin, et permet de stocker des 0 binaires.
Deux types de variables sont disponibles :
Buffer :
Ce type permet de manipuler une zone mmoire
dont la taille est dynamique : elle s'adapte auto-
matiquement au contenu du buffer.
Buffer sur :
Ce type permet de manipuler une zone mmoire
dont la taille (en octets) est fixe la compilation.
Ce type est un type avanc permettant de rali-
ser certaines manipulations spcifiques en
mmoire, d'utiliser certaines API windows.
2.1.10 Le type date
Le type Date permet de manipuler simplement des
dates. Ce type permet de grer de manire quasi
MaChane est une chane fixe sur 30
MaChane = "WinDev est formidable"
// Suppression des espaces
MaChane = SansEspace(MaChane)
ComptageLettre(MaChane)
// ComptageLettre est une procdure
WLangage.book Page 42 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 43
automatique les conversions (fonctions ChaneVer-
sDate, DateVersChane, EntierVersDate, DateVer-
sEntier, ...).
Ce type peut tre utilis aussi bien :
pour rcuprer puis manipuler des rubriques
HyperFileSQL au format Date.
pour rcuprer puis manipuler les champs de sai-
sie de type Date.
dans les fonctions du WLangage permettant de
grer les dates.
pour raliser des calculs sur les dates.
Remarque : Plusieurs proprits peuvent tre utili-
ses avec le type Date, pour ne rcuprer par
exemple qu'une partie de la date.
Valeur par dfaut
Par dfaut, une variable de type Date est initialise
avec la date du jour (date systme). Pour rgler la
valeur par dfaut affecte aux variables de type
Date, utilisez la fonction DateHeureParDfaut.
Les proprits utilisables sur les dates
Pour connatre les proprits utilisables sur les
dates, consultez laide en ligne.
Plage de dates
Le type date permet de grer des dates comprises
entre le 01/01/0001 et le 31/12/9999.
2.1.11 Le type heure
Le type Heure permet de manipuler simplement
des heures. Ce type permet de grer de manire
quasi automatique les conversions (fonctions Heu-
reVersChane, HeureVersEntier, ...)
Ce type peut tre utilis aussi bien :
pour rcuprer puis manipuler des rubriques
HyperFileSQL au format Heure,
pour rcuprer puis manipuler les champs de sai-
sie de type Heure,
dans les fonctions du WLangage permettant de
grer les Heures,
pour raliser des calculs sur les heures (diff-
rence, addition, ...).
Proprits utilisables sur les heures :
Pour connatre les proprits utilisables sur les
heures, consultez laide en ligne.
Limites :
Le type Heure permet de grer les heures compri-
ses entre 00:00 et 23:59. La prcision est effec-
tue la milliseconde.
2.1.12 Le type DateHeure
Le type DateHeure permet de manipuler simple-
ment en un seul objet une date et une heure. Le
type DateHeure peut tre utilis par exemple pour
raliser des calculs (diffrence, addition, ...) sur les
dates, les heures et les dures.
Proprits utilisables sur les variables de type
DateHeure
Pour connatre les proprits utilisables sur les
variables de type DateHeure, consultez laide en
ligne.
Intervalle de donnes
Le type DateHeure permet de grer des donnes
comprises entre le 01/01/0001 00h00 et le 31/
12/9999 23h59.
2.1.13 Le type dure
Le type Dure permet de manipuler simplement
des intervalles de dates et d'heures. Le type Dure
peut tre utilis par exemple pour raliser des cal-
DateDbut est une date = 1205
DateFin est une date = "20011231"
// 31/12/2001
DateJour est une date = DateDuJour()
DateDbut est une date = "20011201"
DateDbut..Anne +=5 // Ajoute 5 ans
// Modifie le mois
DateDbut..Mois = 5
// Calcule la fin (30 jours aprs)
DateFin = DateDbut
DateFin..Mois++
DateFin..Jour--
HeureDbut est une heure="20011201"
// Ajoute 5 heures
HeureDbut..Heure +=5
// Modifie le nombre de minutes
HeureDbut..Minutes = 5
DateDbut est une DateHeure
DateDbut = "200112311524"
// 31/12/2001 15h24 minutes
DateDbut est une DateHeure
DateDbut = "200112011530"
DateDbut..Anne +=5 //Ajoute 5 ans
// Modifie le mois
DateDbut..Mois = 5
// Affiche la date
Info("Date" + DateDbut..PartieDate)
// Affiche l'heure
Info("Heure "+ ...
DateDbut..PartieHeure)
WLangage.book Page 43 Mardi, 23. avril 2013 1:59 13
44 Partie 2 : Syntaxe de base du WLangage
culs (diffrence, addition, ...).
Proprits utilisables sur les dures
Pour connatre les proprits utilisables sur les
Dures, consultez laide en ligne.
Valeurs gres
Le type dure permet de grer des dures compri-
ses entre plus et moins 2 milliards de jours. La pr-
cision est la milliseconde.
2.1.14 Le type variant
Le type Variant permet de :
stocker n'importe quelle valeur de type simple :
boolen, numrique, chane, date, heure, ...
grer des interactions avec les objets ActiveX et
la programmation OLE Automation
manipuler la valeur NULL dans le WLangage
Affectation d'un type Variant
Une variable de type variant peut tre affecte
avec :
n'importe quelle valeur littrale
le contenu d'une variable
le contenu d'un champ de type simple
le contenu d'une rubrique
Type variant et NULL
Pour spcifier qu'une variable de type Variant ne
contient pas de valeur, il suffit d'utiliser la cons-
tante NULL.
Remarque :
pour un type variant, NULL signifie "Pas affect"
pour un type numrique, NULL signifie "gal 0".
Type d'un variant
Il est possible de connatre le type d'un variant
grce la proprit ..Type. La proprit ..Type per-
met de connatre le type de la valeur stocke dans
la variable.
Remarques :
la fonction VariantConvertit permet de convertir
le type de la valeur stocke dans une variable de
type Variant.
la fonction TypeVar permet de connatre le type
d'une variable (type Variant pour une variable
Variant).
2.2 Oprations disponibles sur les dates, heures, dures, ...
Les oprations suivantes sont disponibles sur les
variables de type : Date, Heure, DateHeure et
Dure :
addition
soustraction
comparaison
Pour plus de dtails, consultez laide en ligne.
Remarque : Le WLangage dispose aussi de fonc-
tions permettant de manipuler des dates et les
heures (voir fonctions de gestion des dates et des
heures dans laide en ligne).
HeureDbut est une heure = "1330"
HeureFin est une heure = "1730"
DureCongrs est une Dure = ...
HeureFin - HeureDbut
nValeur est un variant = 10
nValeur = Saisie1
nValeur = Client.Nom
vVal est un variant
SI vVal = Null ALORS ...
// renvoie Vrai car non affect
vVal = 0
SI vVal = Null ALORS ...
// renvoie Faux car variant affect
// avec un entier de valeur 0
vVal = 5
SI vVal = Null ALORS ...
// renvoie Faux car variant affect
// avec un entier de valeur 5
nVal est un entier
SI nVal = Null ALORS ...
// le test renvoie Vrai car nVal=0
nVal = 5
SI nVal = Null ALORS ...
// le test renvoie Faux car nVal=5
WLangage.book Page 44 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 45
2.3 La gestion du NULL
Le mot-cl Null peut tre utilis de diffrentes
manires en WLangage :
pour indiquer qu'un paramtre ne doit pas tre
pris en compte dans une requte
pour spcifier qu'une variable de type variant ne
contient pas de valeur
pour comparer une valeur 0
dans certaines fonctions du WLangage, pour indi-
quer que le paramtre ne doit pas tre pris en
compte
pour vrifier si un objet dynamique est allou ou
non
2.3.1 Null et les requtes
Ignorer des paramtres : Null dans la
fonction HExcuteRequte
Lors de l'excution d'une requte paramtre avec
la fonction HExcuteRequte, tous les paramtres
de la requte ne doivent pas obligatoirement tre
prciss. Les conditions de la requte utilisant des
paramtres non prciss ou ayant pour valeur Null
seront ignores.
Exemple : Soit la requte "ClientNomPrnom" dont
le code SQL est le suivant :
Cas n1 : Les 2 paramtres sont donns :
excutera la requte :
Cas n2 : Seul le nom est donn :
excutera la requte :
Cas n3 : Seul le prnom est donn :
Ou
excutera la requte :
Paramtres d'une requte provenant
d'un champ de saisie : Null si vide
Pour que votre requte sexcute mme si aucune
valeur nest saisie par lutilisateur, cochez loption
"NULL si vide" des champs de saisie (onglet "Dtail"
de la description du champ).
Grce cette option, si le champ est vide, la valeur
du paramtre renvoye la requte correspondra
la constante NULL. Ainsi, lors de lexcution de la
requte, aucune erreur nest gnre : la ou les
conditions dpendant de ce paramtre sont simple-
ment ignores.
Par exemple, la requte "Ex1" correspond au code
SQL suivant :
La requte "Ex1" est excute dans le bouton
"Btn_OK" par la fonction HExcuteRequte. Le
code WLangage utilis est le suivant :
Dans ce code, SAI_Saisie1 correspond au champ
dans lequel l'utilisateur doit saisir le paramtre de
la requte.
Pour cet exemple, le tableau ci-dessous dcrit lutili-
sation de loption "NULL si vide" :
SELECT * FROM CLIENT
WHERE NOM = {Param1}
AND PRENOM = {Param2}
HExcuteRequte(ClientNomPrnom, ...
hRequteDfaut, "Dupond", "Jean")
SELECT * FROM CLIENT
WHERE NOM = 'Dupond'
AND PRENOM = 'Jean'
HExcuteRequte(ClientNomPrnom, ...
hRequteDfaut, "Dupond")
SELECT * FROM CLIENT WHERE
NOM='Dupond'
sNom est un Variant = Null
// utilisation du variant
// obligatoire
// pour variable de type Null
// (non renseigne)
HExcuteRequte(ClientNomPrnom, ...
hRequteDfaut, sNom, "Jean")
HExcuteRequte(ClientNomPrnom, ...
hRequteDfaut, Null, "Jean")
SELECT * FROM CLIENT
WHERE PRENOM='Jean'
SELECT NomDesRubriques
FROM NomDesFichiers
WHERE Rubrique = {Param1}
HExcuteRequte, (...
Ex1,hRequteDfaut,SAI_Saisie1)
Valeur saisie
dans le champ
SAI_Saisie1
"NULL si
vide" pour le
champ
ChampSaisi
e1
Code SQL excut
Aucune valeur Option
coche
SELECT Nom-
Rubriques
FROM NomFichiers
WLangage.book Page 45 Mardi, 23. avril 2013 1:59 13
46 Partie 2 : Syntaxe de base du WLangage
2.3.2 Null et les variants
Pour spcifier qu'une variable de type Variant ne
contient pas de valeur, il suffit d'utiliser la cons-
tante NULL.
Remarques :
pour un type variant, NULL signifie "Pas affect"
pour un type numrique, NULL signifie "gal 0"
(voir ci-dessous)
2.3.3 Null et les valeurs numriques
Utilis avec des valeurs numriques, Null permet
de comparer une valeur 0. Il est uniquement pos-
sible d'utiliser les oprateurs de comparaison
d'galit et de diffrence (oprateur = et oprateur
<>).
Remarques :
pour un type variant, NULL signifie "Pas affect"
(voir ci-dessus)
pour un type numrique, NULL signifie "gal 0"
2.3.4 Null et les fonctions du WLangage
Certaines fonctions du WLangage acceptent en
paramtre Null pour spcifier que le paramtre ne
prend aucune valeur.
Quelques exemples :
ArbreAjoute, ArbreInsre : Null permet de ne pas
afficher d'images pour les diffrents niveaux des
lments ajouts.
ArbreListeFils : Null permet de lister les fils par-
tir de la racine de l'arbre.
ArbreModifie : Null permet de ne pas modifier
l'image dfinie avec la fonction ArbreAjoute
InitEcrit : Null permet de supprimer un mot-cl ou
une section dans le fichier INI
2.3.5 Null et les objets dynamiques
Pour tous les objets dynamiques (classe, structure,
tableau, objet automation, ...), Null permet de
savoir si l'objet est allou ou non.
Par exemple :
2.4 Les constantes
Les constantes sont des lments du langage dont
la valeur est fixe une fois pour toutes. Cette valeur
ne peut pas tre modifie au cours du programme.
Remarque : Les mots-cls CONSTANT et CONS-
TANTE sont accepts. Dans cette documentation,
seul le mot-cl CONSTANT est utilis et peut tre
remplac par CONSTANTE.
Syntaxe : Dclarer une ou plusieurs constantes
CONSTANT
<Nom de la constante 1> = <Valeur 1>
<Nom de la constante 2> = <Valeur 2>
FIN
Aucune valeur Option dco-
che
SELECT Nom-
Rubriques
FROM NomFichiers
WHERE Rubrique =

Une valeur est


saisie
Option
coche ou
dcoche
SELECT Nom-
Rubriques
FROM NomFichiers
WHERE Rubrique=
ValeurSaisie
vVal est un variant
SI vVal = Null ALORS ...
// renvoie Vrai car le variant n'est
// pas pas affect
vVal = 0
SI vVal = Null ALORS ...
// renvoie Faux car le variant
// est affect
// avec un entier de valeur 0
vVal = 5
SI vVal = Null ALORS ...
// renvoie Faux car le variant est
// affect avec un entier de valeur 5
nVal est un entier
SI nVal = Null ALORS ...
// le test renvoie Vrai car nVal=0
nVal = 5
SI nVal = Null ALORS ...
// le test renvoie Faux car nVal=5
// Dclaration d'un objet automation
// dynamique
MonObjetDynamique est un objet ...
automation dynamique ...
SI MonObjetDynamique = Null ALORS
// Cration d'un objet automation
// dynamique
MonObjetDynamique = ...
allouer un objet ...
automation dynamique MonServeur
FIN
CONSTANT
TauxTVA = 19.6
FIN
WLangage.book Page 46 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 47
Les constantes doivent tre dclares dans :
le code d'initialisation du projet pour tre utilisa-
ble dans tous les traitements du projet (codes du
projet, codes des fentres / des pages, codes
des champs, procdures, ...).
le code de dclaration des globales d'une fen-
tre / dune page pour tre utilisable dans tous les
traitements de la fentre / page (codes de la
fentre / page, codes des champs prsents dans
la fentre / page, procdures locales, ...).
le code douverture d'un tat pour tre utilisable
dans tous les traitements de l'tat (codes de
l'tat, codes des champs prsents dans l'tat,
procdures locales, ...).
le code de dclaration de classe pour tre utilisa-
ble dans la classe.
Pour accder cette constante depuis une
mthode de la classe, utilisez la syntaxe
"::<Nom de la constante>".
Pour accder cette constante depuis un code
extrieur la classe, utilisez la syntaxe "<Nom
de la classe>::<Nom de la constante>".
Remarque : Une constante est toujours globale :
soit un projet.
soit une fentre / une page.
soit un tat.
soit une classe.
Dclarer des constantes de mme nom
Dans un mme traitement, il n'est pas possible de
dclarer plusieurs lments (variables ou constan-
tes) de mme nom.
Dans un mme projet, si une constante et une
variable portent le mme nom:
la variable sera utilise dans le traitement dans
lequel cette variable est dclare et dans tous les
traitements lis. Par exemple, la variable est
dclare dans le code de clic d'un bouton. Lors
d'un clic sur ce bouton, cette variable est passe
en paramtre une procdure locale. Cette varia-
ble sera utilise dans cette procdure locale.
la constante sera utilise dans tous les autres
traitements.
Si une constante "globale" au projet et une cons-
tante "globale" une fentre portent le mme
nom:
la constante "globale" la fentre sera utilise
dans tous les traitements de la fentre et de ses
champs, ainsi que dans les procdures "locales"
de la fentre.
la constante "globale" au projet sera utilise
dans tous les autres traitements.
Dclarer un membre de type constante
Il n'est pas possible de dclarer un membre de type
constante dans :
une structure.
une variable compose.
2.5 Les types avancs
2.5.1 Tableau simple
Un tableau est un type structur qui permet de
regrouper une srie d'lments de mme type.
Chaque lment du tableau est accessible directe-
ment par son numro d'ordre.
Un tableau peut tre redimensionn au cours du
programme grce la fonction Dimension.
Remarque : Le mot-cl Tableau permet de dfinir
un tableau "simple". Dautres types de tableaux
"avancs" sont disponibles :
Tableau dynamique : Tableau allou la
demande.
Tableau fixe : Tableau de taille fixe (conseill pour
les API Windows).
Syntaxe
Dclarer un tableau "simple"
<Nom du tableau> est un tableau de <Dimension
1>
[par <Dimension 2>]...[par <Dimension 10>]
<Type des lments du tableau>
Ou
<Nom du tableau> est un tableau de <Dimension
1> [,<Dimension 2>]...[,<Dimension 10>]
<Type des lments du tableau>
TableauClient est un tableau ...
de 5 par 7 par 3 entiers
// quivalent :
TableauClient est ...
un tableau de 5,7,3 entiers
// Redimensionner le tableau
Dimension(TableauClient,7,9,4)
WLangage.book Page 47 Mardi, 23. avril 2013 1:59 13
48 Partie 2 : Syntaxe de base du WLangage
Faire rfrence un tableau "simple"
Faire rfrence un lment d'un tableau une
dimension : <Nom du tableau>[Indice1]
Faire rfrence un lment d'un tableau deux
dimensions :
<Nom du tableau>[Indice1, Indice2]
OU
<Nom du tableau>[Indice1][Indice2]
Faire rfrence un lment d'un tableau n
dimensions :
<Nom du tableau>[Indice1,...,IndiceN]
OU
<Nom du tableau>[Indice1]...[IndiceN]
Passer un tableau en paramtre une
procdure :
<Nom de la procdure>(<Nom du tableau>)
Remarque : Il n'est pas possible de manipuler un
tableau dans sa totalit. Par exemple, il n'est pas
possible d'affecter un tableau avec un autre
tableau.
Passer un tableau "simple" en paramtre une
procdure
Un tableau peut tre pass en paramtre une
procdure. Pour cela, utilisez la syntaxe suivante :
<Nom de la procdure>(<Nom du tableau>)
Dimension d'un tableau "simple"
La fonction Dimension permet de :
connatre le nombre total d'lments dans un
tableau.
redimensionner un tableau.
Attention : La fonction Dimension ne permet pas de
modifier le nombre de dimensions d'un tableau.
lments d'un tableau "simple"
Un tableau peut tre constitu de classes unique-
ment si ces classes possdent un constructeur
sans paramtres (ou avec des paramtres faculta-
tifs).
Un tableau ne peut pas tre constitu :
de variables composes.
de tableaux.
Dclaration de variables de mme nom
Dans un traitement, il est interdit d'utiliser plu-
sieurs variables de mme nom (quel que soit le
type de ces variables).
Si des variables de mme nom sont dclares dans
diffrents traitements du projet, la rgle de porte
des variables s'applique.
Fonctions du WLangage et Tableaux simples
Plusieurs fonctions WLangage permettent de mani-
puler des tableaux simples. Il est par exemple pos-
sible d'effectuer des tris, des recherches, ... Pour
plus de dtails, consultez laide en ligne.
Tableaux dans les classes
Lors de copies d'instances de classes, tous les
membres de la classe sont recopis dans la nou-
velle instance, sauf les tableaux. Ainsi, si la valeur
d'un membre de type tableau est modifie, cette
valeur est modifie dans toutes les instances.
Pour obtenir des tableaux indpendants dans tou-
tes les instances de classes, il est ncessaire de
dclarer un tableau local de la manire suivante :
2.5.2 Tableau dynamique
Un tableau dynamique est un type "avanc" de
tableau : les dimensions de ce tableau sont
alloues la demande, au cours du programme.
Dans la plupart des cas, un tableau "simple" est
suffisant.
Rappel : Un tableau est un type structur qui per-
met de regrouper une srie d'lments de mme
type. Chaque lment du tableau est accessible
directement par son numro d'ordre.
Il est conseill d'utiliser :
Un tableau dynamique ou un tableau "simple"
lorsque la taille du tableau doit tre modifie au
cours du programme.
Un tableau fixe pour les API Windows.
Un tableau associatif pour stocker des lments
indexs sur nimporte quel type dinformation.
Syntaxe
Dclarer un tableau dynamique
<Nom du tableau> est un tableau dynamique
Allouer un tableau dynamique
<Nom du tableau dynamique> =
allouer un tableau dynamique de <Dimension 1>
[par <Dimension 2> ... [par <Dimension 10>]]
<Type des lments du tableau>
TableauClient[2,5,3] = 47
// quivalent :
TableauClient[2][5][3] = 47
TableauFourn est un tableau ...
de 10 par 50 chanes
// Appel de la procdure
// AfficheTableau
AfficheTableau(TableauFourn)
ClasseSystme est une classe
tTableauDfaut est un tableau ...
local de 1 entier
FIN
TableauClient est un tableau ...
dynamique
WLangage.book Page 48 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 49
OU
<Nom du tableau dynamique> =
allouer un tableau dynamique de <Dimension
1>
[,<Dimension 2> ... [,<Dimension 10>]]
<Type des lments du tableau>
Faire rfrence un tableau dynamique
Pour faire rfrence un tableau dynamique, ce
tableau doit tre allou.
Faire rfrence un lment d'un tableau une
dimension : <Nom du tableau>[Indice1]
Faire rfrence un lment d'un tableau deux
dimensions :
<Nom du tableau>[Indice1, Indice2]
OU
<Nom du tableau>[Indice1][Indice2]
Faire rfrence un lment d'un tableau n
dimensions :
<Nom du tableau>[Indice1,...,IndiceN]
OU
<Nom du tableau>[Indice1]...[IndiceN]
Passer un tableau en paramtre une
procdure : <Nom de la procdure>(<Nom du
tableau>)
Remarque : Il n'est pas possible de manipuler un
tableau dans sa totalit. Par exemple, il n'est pas
possible d'affecter un tableau avec un autre
tableau.
Librer un tableau dynamique (optionnel)
Un tableau dynamique est automatiquement libr
en fin de vie de la variable (fermeture de la fentre
par exemple) ou lors de l'allocation de nouvelles
dimensions.
Pour librer explicitement un tableau dynamique,
utilisez la syntaxe suivante :
Librer <Nom du tableau dynamique>
Passer un tableau dynamique en paramtre une
procdure
Un tableau dynamique peut tre pass en param-
tre une procdure. Pour cela, utilisez la syntaxe
suivante :
<Nom de la procdure>(<Nom du tableau>)
Dclarer un membre de type tableau dynamique
Il est possible de dclarer un membre de type
"tableau dynamique" dans :
une structure,
une variable compose,
une classe.
L'allocation du tableau dynamique doit tre effec-
tue la suite de la dclaration de la structure, de
la variable compose ou de la classe.
Dimension d'un tableau dynamique
La fonction Dimension permet de :
connatre le nombre d'lments dans un tableau
dynamique.
redimensionner un tableau dynamique.
Attention : La fonction Dimension ne permet pas de
modifier le nombre de dimensions d'un tableau
dynamique.
lments d'un tableau dynamique
Un tableau dynamique peut tre constitu de clas-
ses uniquement si ces classes possdent un cons-
tructeur sans paramtre (ou avec des paramtres
facultatifs).
Un tableau dynamique ne peut pas tre constitu :
de variables composes.
de tableaux.
Dclaration de variables de mme nom
Dans un traitement, il est interdit d'utiliser plu-
sieurs variables de mme nom (quel que soit le
type de ces variables).
TableauClient est un tableau...
dynamique
TableauClient = allouer un...
tableau dynamique de 4 par 7 entiers
// quivalent :
TableauClient = allouer un ...
tableau dynamique de 4,7 entiers
TableauClient[2,5,3] = 47
// quivalent :
TableauClient[2][5][3] = 47
TableauFourn est un tableau...
dynamique
TableauFourn = allouer un tableau...
dynamique de 10 par 50 chanes
// Appel de la procdure
// AfficheTableau
AfficheTableau(TableauFourn)
// Dclaration d'une structure
Struct est une structure
x1 est un entier
x2 est un tableau dynamique
FIN
// Dclaration d'une variable de
// type structure
MaStruct est une struct
// Allocation du tableau
x2 = allouer un tableau dynamique ...
de 4,7 entiers
WLangage.book Page 49 Mardi, 23. avril 2013 1:59 13
50 Partie 2 : Syntaxe de base du WLangage
Si des variables de mme nom sont dclares dans
diffrents traitements du projet, la rgle de porte
des variables s'applique.
Fonctions du WLangage et Tableaux dynamiques
Plusieurs fonctions WLangage permettent de mani-
puler des tableaux dynamiques. Il est par exemple
possible d'effectuer des tris, des recherches, ...
Pour plus de dtails, consultez laide en ligne.
2.5.3 Tableau fixe
Un tableau fixe est un type "avanc" de tableau :
les dimensions de ce tableau sont fixes lors de la
compilation et ne peuvent pas tre modifies.
Les dimensions d'un tableau sont fixes lors de la
compilation, uniquement si les dimensions de ce
tableau correspondent :
soit un entier.
soit une constante pralablement cre.
Dans les autres cas, une erreur du WLangage est
gnre lors de la compilation du projet.
Rappel : Un tableau est un type structur qui per-
met de regrouper une srie d'lments de mme
type. Chaque lment du tableau est accessible
directement par son numro d'ordre.
Il est conseill d'utiliser :
un tableau fixe pour passer en paramtre un
tableau aux fonctions API Windows.
un tableau dynamique ou un tableau "simple"
lorsque la taille du tableau doit tre modifie au
cours du programme.
un tableau associatif pour stocker des lments
indexs sur nimporte quel type dinformation.
Syntaxe
Dclarer un tableau fixe
<Nom du tableau> est un tableau fixe de
<Dimension 1> [par <Dimension 2> ...
[par <Dimension 10>]]
<Type des lments du tableau>
OU
<Nom du tableau> est un tableau fixe de
<Dimension 1> [,<Dimension 2> ...
[,<Dimension 10>]] <Type des lments du
tableau>
Faire rfrence un tableau fixe
Faire rfrence un lment d'un tableau une
dimension : <Nom du tableau>[Indice1]
Faire rfrence un lment d'un tableau deux
dimensions :
<Nom du tableau>[Indice1, Indice2]
OU
<Nom du tableau>[Indice1][Indice2]
Faire rfrence un lment d'un tableau N
dimensions :
<Nom du tableau>[Indice1, ... , IndiceN]
OU
<Nom du tableau>[Indice1]...[IndiceN]
Passer un tableau en paramtre une
procdure : <Nom de la procdure>(<Nom du
tableau>)
Remarque : Il n'est pas possible de manipuler un
tableau dans sa totalit. Par exemple, il n'est pas
possible d'affecter un tableau avec un autre
tableau.
Passer un tableau fixe en paramtre une proc-
dure
Un tableau fixe peut tre pass en paramtre une
procdure. Pour cela, utilisez la syntaxe suivante :
<Nom de la procdure>(<Nom du tableau>)
Dclarer un membre de type tableau fixe
Il est possible de dclarer un membre de type
tableau fixe dans :
une classe. Ce tableau fixe est allou directe-
ment dans la zone mmoire de cette classe.
une variable compose. Ce tableau fixe est
allou directement dans la zone mmoire de
cette variable compose.
une structure <Nom de la structure>. Ce tableau
fixe est allou directement dans la zone mmoire
de chaque variable de type <Nom de la struc-
ture>.
TableauClient est un tableau fixe...
de 5 par 7 par 3 entiers
// quivalent :
TableauClient est un tableau fixe...
de 5,7,3 entiers
TableauClient[2,5,3] = 47
// quivalent :
TableauClient[2][5][3] = 47
TableauFourn est un tableau fixe ...
de 10 par 50 chanes
// Appel procdure AfficheTableau
AfficheTableau(TableauFourn)
Struct est une structure
n1 est un entier
nTab est un tableau fixe sur ...
2 entiers
n2 est un entier
FIN
MaStructure est une Struct
WLangage.book Page 50 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 51
Reprsentation de la zone mmoire de
"MaStructure" :
Cette reprsentation mmoire est compatible avec
les API de Windows. Il est ainsi possible de trans-
mettre un tableau de taille fixe une fonction des
API de Windows.
Dimension d'un tableau fixe
La fonction Dimension permet de connatre le nom-
bre d'lments dans un tableau fixe.
Rappel : Il n'est pas possible de redimensionner un
tableau fixe.
lments d'un tableau fixe
Un tableau fixe peut tre constitu dobjets. Un
objet reprsente linstanciation dune classe. Si la
classe possde un constructeur, ce constructeur
doit tre sans paramtre (ou avec des paramtres
facultatifs).
Un tableau fixe ne peut pas tre constitu :
de variables composes.
de tableaux.
Dclaration de variables de mme nom
Dans un traitement, il est interdit d'utiliser plu-
sieurs variables de mme nom (quel que soit le
type de ces variables). Si des variables de mme
nom sont dclares dans diffrents traitements du
projet, la rgle de porte des variables s'applique.
2.5.4 Tableau associatif
Un tableau associatif est un type "avanc" de
tableau : il permet de regrouper une srie d'l-
ments du mme type. Chaque lment du tableau
est index sur n'importe quel type d'information (et
non plus simplement sur un indice numrique,
comme dans les autres types de tableau).
Remarque : Ce type de tableau permet un accs
rapide un lment quelconque, avec certaines
options sur les chanes, mais il ne permet pas de tri
(en particulier, pas de tri sur la cl).
Syntaxe
Dclarer un tableau associatif
<Nom du tableau> est un tableau associatif
de <Type>
Remarque : Une syntaxe avance est galement
disponible. Pour plus de dtails, consultez laide en
ligne (mot-cl : "Tableau associatif").
2.5.5 Variable compose
Une variable compose est compose d'lments
(membres) de types diffrents.
Remarque : Si vous manipulez des variables per-
sonnalises, il est conseill de dclarer :
une variable compose, si une seule variable de
ce type est utilise dans votre projet.
un type structure, si plusieurs variables de ce
type sont utilises dans diffrents traitements du
projet.
Syntaxe
Dclarer une variable compose
<Nom de la variable> est compose de
<Membres de la variable compose>
FIN
Manipuler un membre d'une variable compose
<Nom de la variable>.<Nom du membre>
// Remplit un tableau associatif
// avec les tailles de fichiers
taTailleFichier est un tableau ...
associatif d'entiers
taTailleFichier[...
"Fichier1.txt"] = ...
fTaille("Fichier1.txt")
taTailleFichier["Fichier2.txt"] =...
fTaille("Fichier2.txt")
// Rcupre la taille d'un fichier
Trace(taTailleFichier[...
"Fichier2.txt"])
RefProduit est compose de
CodeF est un entier
CodePr est une chane fixe sur 10
FIN
RefProduit.CodeF = 7
RefProduit.CodePr = "cran"
WLangage.book Page 51 Mardi, 23. avril 2013 1:59 13
52 Partie 2 : Syntaxe de base du WLangage
Manipuler une variable compose
Une variable compose peut tre utilise sans faire
rfrence ses membres.
Type des membres d'une variable compose
Les membres d'une variable compose peuvent
tre de type :
Entier (ou slectionn parmi les entiers avancs).
Rel (ou slectionn parmi les rels avancs).
Montaire.
Chane fixe, Chane ASCIIZ ou Chane pascal.
Tableau (tableau "simple", tableau dynamique ou
tableau fixe).
Automation ou Automation Dynamique.
Structure.
Variant.
Classe. Cette classe doit possder un construc-
teur sans paramtre (ou avec des paramtres
facultatifs).
Tous les autres types de donnes (chane, cons-
tante, ...) sont interdits.
Dclarer un membre de type tableau dans une
variable compose
Dclarer un membre de type tableau simple :
Les dimensions du tableau sont fixes ds la dcla-
ration. Il est possible de modifier les dimensions du
tableau avec la fonction Dimension.
Dclarer un membre de type tableau dynamique :
Il est ncessaire de dfinir les dimensions du
tableau (c'est--dire d'allouer le tableau) avant d'uti-
liser le tableau.. .
Limites d'une variable compose
Il n'est pas possible de :
affecter directement une variable compose
une autre variable compose : chaque membre
doit tre affect un par un.
comparer deux variables composes.
passer une variable compose en paramtre
une procdure.
dfinir un hritage dans une variable compose.
restreindre l'accs un membre d'une variable
compose : tous les membres d'une variable
compose doivent tre publics.
Quels types "avancs" peuvent tre membre ?
Une variable "avance" peut tre membre d'une
variable "avance". Le tableau ci-dessous prsente
les diffrentes combinaisons :
Dclaration de variables de mme nom
Il est interdit de dclarer :
deux variables de mme nom (quel que soit le
type de ces variables) dans un traitement.
deux membres de mme nom dans une mme
variable compose.
Si des variables de mme nom sont dclares dans
diffrents traitements du projet, la rgle de porte
des variables s'applique.
2.5.6 Structure
Une structure est un type de donnes personna-
lis. Une structure regroupe des lments de types
diffrents.
Remarque : Si vous manipulez des variables per-
sonnalises, il est conseill de dclarer :
un type structure, si plusieurs variables de ce
type sont utilises dans diffrents traitements du
projet.
une variable compose, si une seule variable de
ce type est utilise dans votre projet.
VarCompose est compose de
Membre1 est une chane fixe sur 8
Membre2 est une chane fixe sur 12
FIN
Ch = VarCompose // Ch est construit
en concatnant tous les membres
// de la variable compose
// VarCompose = Ch
// Ch est transfr vers variable
// compose
// Dclaration variable compose
MaVarComp est compose de
x1 est un entier
x2 est un tableau dynamique
FIN
// Allocation du tableau
MaVarCom.x2 = allouer un tableau ...
dynamique de 4,7 entiers
// Initialisation du tableau
MaVarCom.x2[1,1] = 25
Peut tre
un mem-
bre de
Variable
compose
Structure Classe Tableau
Variable
compo-
se
Non Non Non Non
Structure Oui Oui Oui Oui
Classe Oui Oui Oui Oui
Tableau Oui Oui Oui Non
WLangage.book Page 52 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 53
Syntaxe
Dclarer une structure
<Nom de la structure> est une structure
<Membres de la structure>
FIN
Dclarer une variable de type structure
<Nom de la variable> est une <Nom de la
structure>
Manipuler un membre d'une variable de type
structure
<Nom de la variable structure>:<Nom du membre
de la structure>
Dclaration de structures
Si une structure <Nom de la structure> est
dclare :
dans le code du projet, il sera possible de dcla-
rer une variable du type <Nom de la structure>
dans l'ensemble du projet.
dans le code de dclaration des globales d'une
fentre / dune page, il sera possible de dclarer
une variable du type <Nom de la structure> dans
cette fentre / page, dans les champs de cette
fentre / page et dans les procdures locales
associes.
dans le code douverture d'un tat, il sera possi-
ble de dclarer une variable du type <Nom de la
structure> dans cet tat, dans les champs de cet
tat et dans les procdures locales associes.
dans le code de dclaration d'une classe, il sera
possible de dclarer une variable du type <Nom
de la structure> dans cette classe et dans les
mthodes de cette classe.
dans un traitement, il sera possible de dclarer
une variable du type <Nom de la structure> dans
ce traitement.
Type des membres d'une structure
Les membres d'une structure peuvent tre de type :
Entier (ou slectionn parmi les entiers avancs).
Rel (ou slectionn parmi les rels avancs).
Montaire.
Chane (ou slectionn parmi les chanes avan-
ces).
Tableau (tableau "simple", tableau dynamique ou
tableau fixe).
Automation ou Automation Dynamique.
objet (instanciation de classe). La classe peut
possder un constructeur sans paramtre (ou
avec des paramtres facultatifs).
Variant.
Tous les autres types de donnes (variable compo-
se, constante, ...) sont interdits.
Dclarer un membre de type tableau dans une
structure
Dclarer un membre de type tableau simple :
Les dimensions du tableau sont fixes ds la dcla-
ration. Il est possible de modifier les dimensions du
tableau avec la fonction Dimension.
Dclarer un membre de type tableau dynamique :
Il est ncessaire de dfinir les dimensions du
tableau (c'est--dire d'allouer le tableau) avant d'uti-
liser le tableau.
Quels types "avancs" peuvent tre membre ?
Une variable "avance" peut tre membre d'une
variable "avance".
Le tableau ci-dessous prsente les diffrentes
combinaisons :
RefProduit est une structure
CodeF est un entier
CodePr est une chane fixe sur 10
FIN
RefProduit est une structure
CodeF est un entier
CodePr est une chane fixe sur 10
FIN
Fauteuil est une RefProduit
RefProduit est une structure
CodeF est un entier
CodePr est une chane fixe sur 10
FIN
Fauteuil est une RefProduit
Fauteuil:CodeF = 7
Fauteuil:CodePr = "Meuble"
// Dclaration d'une structure
Struct est une structure
x1 est un entier
x2 est un tableau dynamique
FIN// Dclaration d'une
// variable de type structure
MaStruct est une struct
// Allocation du tableau
MaStruct:x2 = allouer un tableau
dynamique de 4,7 entiers
// Utilisation du tableau
MaStruct:x2[1,1] = 25
Peut tre
un mem-
bre de
Variable
compose
Structure Classe Tableau
Variable
compose
Non Non Non Non
Structure Oui Oui Oui Oui
Classe Oui Oui Oui Oui
Tableau Oui Oui Oui Non
WLangage.book Page 53 Mardi, 23. avril 2013 1:59 13
54 Partie 2 : Syntaxe de base du WLangage
Passer une structure en paramtre une proc-
dure
Une variable de type "structure" peut tre passe
en paramtre une procdure.
Pour cela, utilisez la syntaxe suivante :
<Nom de la procdure>(<Nom de la variable de
type structure>)
Limites d'une structure
L'hritage de structure est interdit : une structure
ne peut pas hriter d'une autre structure.
Il n'est pas possible de restreindre l'accs un
membre d'une structure : tous les membres d'une
structure sont publics.
Dclaration de variables de mme nom
Il est interdit de dclarer :
deux variables de mme nom (quel que soit le
type de ces variables) dans un traitement.
deux membres de mme nom dans une mme
structure.
Si des variables de mme nom sont dclares dans
diffrents traitements du projet, la rgle de porte
des variables s'applique.
2.5.7 Structure dynamique
Une structure peut tre alloue dynamiquement :
on parle alors d'instanciation dynamique de la
structure.
L'instanciation dynamique de structure permet de
crer une structure un instant donn et de librer
cette structure lorsqu'elle n'est plus utilise.
Pour instancier une structure, il faut :
1. dclarer une structure dynamique
2. instancier une structure
Remarque : la libration de la structure est auto-
matique lorsquil n'est plus utilis. Toutefois, il est
possible de forcer la destruction de la structure.
Dclaration d'une structure dynamique
<NomVariable> est [un] <NomStucture> dynami-
que
Les paramtres importants de cette syntaxe sont
les suivants :
<NomVariable> : Nom identifiant la variable de la
structure.
<NomStructure>: Nom identifiant la structure,
dfini lors de la cration de la structure
Instancier une structure dynamique
<NomVariable> = ...
allouer un <Nom Structure> [<Paramtres>])
Les paramtres importants de cette syntaxe sont
les suivants :
<NomVariable> : Nom identifiant la variable de la
structure.
<NomStructure> : Nom identifiant la structure,
dfini lors de la cration de la structure
<Paramtres> : Paramtres optionnels du cons-
tructeur.
Librer une structure dynamique
Librer <NomStructure>
o
<NomStructure> : Nom identifiant l'instance de la
structure.
2.5.8 Objet automation
Le mot-cl Automation permet de dclarer un objet
automation. L'allocation de cet objet est directe-
ment effectue lors de la dclaration.
Remarque : Il est aussi possible d'utiliser un objet
automation dynamique. Son allocation est effec-
tue la demande, au cours du programme.
Syntaxe
Dclarer un objet automation
<Nom de l'objet automation> est un objet
automation <Nom du serveur automation>
RefProduit est une structure
CodeF est un entier
CodePr est une chane fixe sur 10
FIN
Fauteuil est une RefProduit
// Appel procdure AfficheProduit
AfficheProduit(Fauteuil)
Fichier est une structure
Nom est une Chane
Extension est une Chane
Rpertoire est une Chane
Fin
FichierSource est un Fichier ...
dynamique
//...
FichierSource = Allouer un Fichier
// traitement sur l'objet
// ...
// librer l'objet
Liberer FichierSource
MonObjetAutomation ...
est un objet automation MonServeur
WLangage.book Page 54 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 55
Appeler une mthode d'un objet automation
<Nom de l'objet automation> >> <Nom de la
mthode>([<Paramtres>])
Remarque : La liste des mthodes pouvant tre uti-
lises dpend du serveur. Pour connatre les
mthodes, reportez-vous la documentation du
serveur.
Dure de vie d'un objet automation
L'objet automation est cr lors de sa dclaration.
L'objet automation est automatiquement dtruit
la fin du traitement contenant sa dclaration.
Un objet automation dclar "global" dans le code :
d'initialisation d'une fentre sera dtruit la fin
du traitement de fermeture de la fentre.
d'initialisation d'un projet sera dtruit la fin du
traitement de fermeture de la premire fentre
du projet.
Allocation d'un objet automation
Lors de l'allocation d'un objet automation, le ser-
veur automation est automatiquement lanc.
Pour allouer un objet automation avec une ins-
tance existante d'un serveur automation, utilisez la
fonction ObjetActif.
Passage de paramtre une mthode
Les mthodes des serveurs automation peuvent
attendre un ou plusieurs paramtres.
Lors de l'appel d'une mthode, l'ordre des param-
tres doit tre respect (reportez-vous la documen-
tation du serveur et de ses mthodes si
ncessaire).
Pour certains serveurs automation, certains para-
mtres des mthodes ne sont pas valus : seule la
prsence du paramtre a de l'importance, et non
sa valeur.
Par exemple, la mthode "EditionRemplacer" de
Word Basic accepte 10 paramtres, le dernier
(RemplacerTout) tant non valu.
En WLangage, pour les paramtres non valus, il
suffit de passer une valeur quelconque.
Les mthodes de certains serveurs automation
peuvent avoir des paramtres optionnels situs
n'importe quel rang dans la liste des paramtres.
En WLangage, les paramtres optionnels doivent
ncessairement tre situs droite des param-
tres obligatoires.
Ainsi pour donner une valeur quelconque un
paramtre optionnel, il suffit d'affecter le caractre
* au paramtre optionnel. Par contre, ce caractre
sera inutile pour les paramtres optionnels situs
droite du dernier paramtre obligatoire.
Dclaration de variables de mme nom
Dans un traitement, il est interdit d'utiliser plu-
sieurs variables de mme nom (quel que soit le
type de ces variables).
Si des variables de mme nom sont dclares dans
diffrents traitements du projet, la rgle de porte
des variables s'applique.
2.5.9 Objet Automation Dynamique
Un objet automation dynamique est un objet auto-
mation allou la demande, au cours du pro-
gramme.
Syntaxe
Dclarer un objet automation dynamique
<Nom de l'objet automation dynamique> est un
objet automation dynamique
Allouer un objet automation dynamique
<Nom de l'objet automation dynamique> =
allouer un objet automation dynamique <Nom du
serveur automation>
Appeler une mthode d'un objet automation dyna-
mique
<Nom de l'objet automation dynamique> >>
<Nom de la mthode>([<Paramtres>])
Remarque : La liste des mthodes pouvant tre uti-
lises dpend du serveur automation. Pour conna-
tre les mthodes, reportez-vous la documentation
du serveur.
Dure de vie d'un objet automation dynamique
L'objet automation dynamique est cr lors de
l'allocation de l'objet.
L'objet automation dynamique est automatique-
ment dtruit la fin du traitement contenant sa
dclaration ou lors d'une nouvelle allocation de
l'objet.
MonObjetAutomation>>...
FichierOuvrir(NomDoc)
// Dclaration
MonObjetDynamique...
est un objet automation dynamique
// Cration d'un objet automation
// dynamique
MonObjetDynamique = allouer un ...
objet automation dynamique ...
MonServeur
MonObjetDynamique>>...
FichierOuvrir(NomDoc)
WLangage.book Page 55 Mardi, 23. avril 2013 1:59 13
56 Partie 2 : Syntaxe de base du WLangage
Un objet automation dynamique dclar "global"
dans le code :
d'initialisation d'une fentre sera dtruit la fin
du traitement de fermeture de la fentre.
d'initialisation d'un projet sera dtruit la fin du
traitement de fermeture de la premire fentre
du projet.
Pour librer explicitement un objet automation
dynamique, utilisez la syntaxe suivante :
Librer <Nom de l'objet automation dynamique>
Allocation d'un objet dynamique
Lors de l'allocation d'un objet automation dynami-
que, le serveur automation est automatiquement
lanc.
Pour allouer un objet automation dynamique avec
une instance existante d'un serveur automation,
utilisez la fonction ObjetActif.
Passage de paramtre une mthode
Les mthodes des serveurs automation peuvent
attendre un ou plusieurs paramtres.
Lors de l'appel d'une mthode, l'ordre des param-
tres doit tre respect (reportez-vous la documen-
tation si ncessaire).
Pour certains serveurs automation, certains
paramtres des mthodes ne sont pas valus :
seule la prsence du paramtre a de l'impor-
tance. La valeur prise par ce paramtre n'en a
pas.
Par exemple, la mthode "EditionRemplacer" de
Word Basic accepte 10 paramtres, le dernier
(RemplacerTout) tant non valu.
En WLangage, pour les paramtres non valus, il
suffit de passer une valeur quelconque.
Les mthodes de certains serveurs automation
peuvent avoir des paramtres optionnels situs
n'importe quel rang dans la liste des paramtres.
En WLangage, les paramtres optionnels doivent
ncessairement tre situs droite des param-
tres obligatoires.
Ainsi pour donner une valeur quelconque un
paramtre optionnel, il suffit d'affecter le carac-
tre * au paramtre optionnel. Par contre, ce
caractre sera inutile pour les paramtres option-
nels situs droite du dernier paramtre obliga-
toire.
Dclaration de variables de mme nom
Dans un traitement, il est interdit d'utiliser plu-
sieurs variables de mme nom (quel que soit le
type de ces variables).
Si des variables de mme nom sont dclares dans
diffrents traitements du projet, la rgle de porte
des variables sapplique.
2.5.10 Source de donnes
Une variable de type Source de donnes permet de
dcrire une source de donnes temporaire
(requte, vue, alias, ...). Toutes les oprations possi-
bles sur une vue (respectivement une requte)
pourront tre effectues sur une variable de type
Source de donnes associe une vue (respective-
ment une requte).
Pour dcrire une source de donnes temporaire, il
est ncessaire de :
1. Dclarer une variable de type "Source de don-
nes".
2. Initialiser la source de donnes (fonctions HEx-
cuteRequteSQL ou hCreVue).
3. La source de donnes est automatiquement
libre la fin de vie de la variable.
Remarque : A la fermeture de l'application (ou du
traitement o la source de donnes a t dcla-
re), la source de donnes sera automatiquement
dtruite.
Syntaxe
Dclarer une source de donnes
<Nom de la variable> est une source de don-
nes
Dclarer plusieurs sources de donnes
<Nom de la variable 1>, <Nom de la variable
2> sont des sources de donnes
Initialiser une variable de type "Source de don-
nes" (requte ou vue)
Pour initialiser une variable de type "Source de don-
nes", utilisez la fonction :
HExcuteRequteSQL si la variable est associe
une requte.
HCreVue si la variable est associe une vue.
MaSourceDonne ...
est une source de donnes
MaSourceDonne1, MaSourceDonne2 ...
sont des sources de donnes
MaRequte est une source de donnes
// MaRequte est associe
// une requte
//Init. de la variable MaRequte
HExcuteRequeteSQL(MaRequte,...
"SELECT NOM FROM CLIENT")
MaVue est une source de donnes
// MaVue est associe une vue
// Init. de la variable MaVue
HCreVue(MaVue,CLIENT,"*",...
"NOM,VILLE","NOM]='A'",...
hVueDfaut)
WLangage.book Page 56 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 57
Supprimer la source de donnes (requte ou vue)
Lorsque la mme variable de type Source de don-
nes est utilise plusieurs fois, avec des sources
de donnes diffrentes, il est ncessaire de librer
la premire source de donnes.
Pour librer l'espace mmoire occup par la source
de donnes (requte ou vue), utilisez la fonction :
HAnnuleDclaration si la variable est associe
une requte.
HDtruitVue si la variable est associe une vue.
Manipuler une requte ou une vue par program-
mation
Pour manipuler une requte ou une vue par pro-
grammation, il est conseill d'utiliser une variable
de type "Source de donnes".
Vous pouvez cependant donner un nom logique
lors de l'initialisation de la requte ou de la vue. Il
sera alors ncessaire d'utiliser le mot-cl Externe
pour manipuler directement la vue ou la requte
dans l'diteur de code. Cette mthode peut ralentir
la vitesse d'excution de vos traitements.
Remarque : Lors de l'utilisation d'un nom logique,
la requte ou la vue n'est pas dtruite
automatiquement : il est ncessaire d'utiliser les
fonctions HAnnuleDclaration et HDtruitVue.
Dclaration de variables de mme nom
Dans un traitement, il est interdit d'utiliser plu-
sieurs variables de mme nom (quel que soit le
type de ces variables).
Si des variables de mme nom sont dclares dans
diffrents traitements du projet, la rgle de porte
des variables s'applique.
2.5.11 Description de fichier
Une variable de type Description de fichier permet
de dcrire un ou plusieurs fichiers de donnes tem-
poraires. La description de chaque fichier de don-
nes est valide par la fonction HDcritFichier.
Aprs cette validation :
ce fichier de donnes pourra tre manipul
comme n'importe quel fichier de donnes dcrit
dans l'analyse.
la variable de type "Description de fichier" est r-
initialise et pourra tre utilise pour dcrire un
autre fichier de donnes temporaire.

Syntaxe
Dclarer une description de fichier de donnes
<Nom de la variable> est une description de
fichier
Dclarer plusieurs descriptions de fichiers
<Nom de la variable 1>, <Nom de la variable
2> sont des descriptions de fichiers
Dcrire une variable de type "Description de
fichier"
Pour dcrire une variable de type "Description de
fichier", utilisez les proprits du WLangage spcifi-
ques aux descriptions de fichiers de donnes.
Pour valider la description d'une variable de type
"Description de fichier", utilisez la fonction HDcrit-
Fichier.
Proprits spcifiques la description de fichiers
de donnes
Les proprits spcifiques la description de
fichiers de donnes sont dtailles dans laide en
ligne.
MaRequte est une source de donnes
MaRequte = HExcuteRequeteSQL(...
MaRequte,"SELECT NOM FROM
CLIENT")
// Destruction de la source
// de donnes associes la
// variable MaRequte
HAnnuleDclaration(MaRequte)
MaRequte = HExcuteRequeteSQL(...
MaRequte,...
"SELECT NOM FROM FOURNISSEUR")
MaVue est une source de donnes
// MaVue est associe une vue
// Initialisation de la variable
HCreVue(MaVue,CLIENT,"*",...
"NOM,VILLE","NOM]='A'",hVueDfaut)
// Destruction de la source de
// donnes associe MaVue
HDtruitVue(MaVue)
HCreVue(MaVue,CLIENT,"*",...
"NOM,PRENOM","NOM]='C'",hVueDfaut)
MonFichier ...
est une description de fichier
MonFichier1, MonFichier2 sont des...
descriptions de fichiers
// Description du fichier "CLIENT"
MonFichier..Nom = "CLIENT"
MonFichier..Type = hFichierNormal
MonFichier..CryptageFic = ...
hCryptageStandard
// Description des rubriques
// du fichier
...
// Validation description
// fichier "CLIENT"
HDcritFichier(MonFichier)
WLangage.book Page 57 Mardi, 23. avril 2013 1:59 13
58 Partie 2 : Syntaxe de base du WLangage
Comment dcrire des fichiers de donnes tempo-
raires ?
Pour dcrire des fichiers de donnes temporaires, il
faut :
1. Dclarer des variables de type "Description de
fichier", "Description de rubrique" et "Description
de liaison" (si ncessaire).
2. Pour chaque fichier de donnes :
dcrire les caractristiques du fichier de donnes
grce aux proprits HyperFileSQL.
dcrire les caractristiques des rubriques grce
aux proprits HyperFileSQL.
valider la description de chaque rubrique (fonc-
tion HDcritRubrique).
valider la description du fichier de donnes (fonc-
tion HDcritFichier).
3. Dcrire si ncessaire les caractristiques des
liaisons grce aux proprits HyperFileSQL.
4. Valider si ncessaire la description de chaque
liaison (fonction HDcritLiaison).
Manipulation des rubriques d'un fichier de don-
nes temporaire
Lors de la cration d'un fichier de donnes sous
l'diteur d'analyses, les noms du fichier de don-
nes et de ses rubriques sont automatiquement
reconnus par le compilateur.
Lors de la cration d'un fichier de donnes tempo-
raire l'aide d'une variable de type "Description de
fichier", les noms du fichier de donnes temporaire
et de ses rubriques sont dfinis grce la proprit
..Nom. Ces noms ne sont pas automatiquement
reconnus par le compilateur. L'utilisation de ces
noms pour dsigner le fichier de donnes tempo-
raire ou ses rubriques provoque une erreur de com-
pilation.
Pour que le nom du fichier de donnes temporaire
soit reconnu par le compilateur, il est ncessaire de
dclarer ce nom de fichier de donnes comme une
source de donnes grce au mot-cl source de
donnes. Ce fichier de donnes temporaire pourra
alors tre manipul par son nom sous l'diteur de
code.
Remarque : Il est galement possible de dclarer
le nom du fichier de donnes temporaire avec le
mot-cl Externe. Cependant, la vitesse d'excution
du traitement sera ralentie.
Dclaration de variables de mme nom
Dans un traitement, il est interdit d'utiliser plu-
sieurs variables de mme nom (quel que soit le
type de ces variables). Si des variables de mme
nom sont dclares dans diffrents traitements du
projet, la rgle de porte des variables s'applique.
2.5.12 Description de liaison
Une variable de type Description de liaison permet
de dcrire une liaison entre deux fichiers de don-
nes temporaires. La description de chaque liaison
est valide par la fonction HDcritLiaison.
Aprs cette validation :
cette liaison pourra tre manipule comme
n'importe quelle liaison dcrite dans l'analyse.
la variable de type "Description de liaison" est r-
initialise et pourra tre utilise pour dcrire une
autre liaison.

Syntaxe
Dclarer une description de liaison
<Nom de la variable> est une description de
liaison
Dclarer plusieurs descriptions de liaisons
<Nom de la variable 1>, <Nom de la variable
2> sont des descriptions de liaisons
Dcrire une variable de type "Description de
liaison"
Pour dcrire une variable de type "Description de
liaison", utilisez les proprits du WLangage spcifi-
ques aux descriptions de liaisons.
Pour valider une description d'une variable de type
"Description de liaison", utilisez la fonction HDcrit-
Liaison.
MonFichier est une description ...
de fichier
...
MonFichier..Nom = "CLIENT"
...
HDcritFichier("CLIENT")
...
CLIENT est une source de donnes
...
HLitPremier(CLIENT,CLIENT.NOMCLI)
MaLiaison ...
est une description de liaison
MaLiaison1, MaLiaison2 sont des ...
descriptions de liaisons
// Description et validation
// des fichiers Ville et Client
...
// Description de la liaison "HABITE"
MaLiaison..Nom = "HABITE"
MaLiaison..FichierSource = "VILLE"
MaLiaison..FichierReli = "CLIENT"
MaLiaison..ClSource = "NOMVILLE"
MaLiaison..ClRelie = "VILLECLI"
WLangage.book Page 58 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 59
Proprits spcifiques la description de liaisons
Les proprits spcifiques la description de
liaisons sont dcrites dans laide en ligne.
Comment dcrire des fichiers de donnes tempo-
raires ?
Pour dcrire des fichiers de donnes temporaires, il
faut :
1. Dclarer des variables de type "Description de
fichier", "Description de rubrique" et "Description
de liaison" (si ncessaire).
2. Pour chaque fichier de donnes :
dcrire les caractristiques du fichier de donnes
grce aux proprits HyperFileSQL.
dcrire les caractristiques des rubriques grce
aux proprits HyperFileSQL.
valider la description de chaque rubrique (fonc-
tion HDcritRubrique).
valider la description du fichier de donnes (fonc-
tion HDcritFichier).
3. Dcrire si ncessaire les caractristiques des
liaisons grce aux proprits HyperFileSQL.
4. Valider si ncessaire la description de chaque
liaison (fonction HDcritLiaison).
Manipulation des liaisons d'un fichier de donnes
temporaire
Lors de la cration d'une liaison sous l'diteur
d'analyses, le nom de cette liaison est automati-
quement reconnu par le compilateur.
Lors de la cration d'une liaison temporaire l'aide
d'une variable de type "Description de liaison", le
nom de cette liaison est dfini grce la proprit
..Nom. Ce nom n'est pas automatiquement
reconnu par le compilateur. L'utilisation de ce nom
pour dsigner la liaison temporaire provoque une
erreur de compilation.
Pour que le nom de la liaison temporaire soit
reconnu par le compilateur, il est ncessaire de
dclarer ce nom grce au mot-cl Externe. Cette
liaison temporaire pourra alors tre manipule par
son nom sous l'diteur de code.
Dclaration de variables de mme nom
Dans un traitement, il est interdit d'utiliser plu-
sieurs variables de mme nom (quel que soit le
type de ces variables).
Si des variables de mme nom sont dclares dans
diffrents traitements du projet, la rgle de porte
des variables s'applique.
2.5.13 Description de rubrique
Une variable de type Description de rubrique per-
met de dcrire une ou plusieurs rubriques d'un
fichier de donnes temporaire. La description de
chaque rubrique est valide par la fonction HDcri-
tRubrique.
Aprs cette validation :
cette rubrique pourra tre manipule comme
n'importe quelle rubrique dcrite dans l'analyse.
la variable de type "Description de rubrique" est
r-initialise et pourra tre utilise pour dcrire
une autre rubrique de fichier de donnes tempo-
raire.
Syntaxe
Dclarer une description de rubrique
<Nom de la variable> est une description de
rubrique
Dclarer plusieurs descriptions de rubriques
<Nom de la variable 1>, <Nom de la variable
2> sont des descriptions de rubriques
Dcrire une variable de type "Description de rubri-
que"
Pour dcrire une variable de type "Description de
rubrique", utilisez les proprits du WLangage sp-
cifiques aux descriptions de rubriques.
Pour valider une description de variable de type
"Description de rubrique", utilisez la fonction HD-
critRubrique.
// Validation description
// liaison "HABITE"
HDcritLiaison(MaLiaison)
MaLiaison est ...
une description de liaison
...
MaLiaison..Nom = "HABITE"
...
HDcritLiaison("HABITE")
...
EXTERNE HABITE
...
Cardinalit = ...
HABITE..CardinalitRelieMax
MaRubrique ...
est une description de rubrique
MaRubrique1, MaRubrique2 sont des
descriptions de rubriques
// Description du fichier
// MonFichier ...
// Description de la rubrique "NOM"
MaRubrique..Nom = "NOM"
MaRubrique..Type = hRubTexte
MaRubrique..Taille = 40
WLangage.book Page 59 Mardi, 23. avril 2013 1:59 13
60 Partie 2 : Syntaxe de base du WLangage
Proprits spcifiques la description de rubri-
ques
Les proprits spcifiques la description de rubri-
ques sont dcrites dans laide en ligne.
Comment dcrire des fichiers de donnes tempo-
raires ?
Pour dcrire des fichiers de donnes temporaires, il
faut :
1. Dclarer des variables de type "Description de
fichier", "Description de rubrique" et "Description
de liaison" (si ncessaire).
2. Pour chaque fichier de donnes :
dcrire les caractristiques du fichier de donnes
grce aux proprits HyperFileSQL.
dcrire les caractristiques des rubriques grce
aux proprits HyperFileSQL.
valider la description de chaque rubrique (fonc-
tion HDcritRubrique).
valider la description du fichier de donnes (fonc-
tion HDcritFichier).
3. Dcrire si ncessaire les caractristiques des
liaisons grce aux proprits HyperFileSQL.
4. Valider si ncessaire la description de chaque
liaison (fonction HDcritLiaison).
Manipulation des rubriques d'un fichier de don-
nes temporaire
Lors de la cration d'un fichier de donnes sous
l'diteur d'analyses, les noms du fichier de don-
nes et de ses rubriques sont automatiquement
reconnus par le compilateur.
Lors de la cration d'un fichier de donnes tempo-
raire l'aide d'une variable de type "Description de
fichier", les noms du fichier de donnes temporaire
et de ses rubriques sont dfinis grce la proprit
..Nom. Ces noms ne sont pas automatiquement
reconnus par le compilateur. L'utilisation de ces
noms pour dsigner le fichier de donnes tempo-
raire ou ses rubriques provoque une erreur de com-
pilation.
Pour que les noms du fichier de donnes tempo-
raire et de ses rubriques soient reconnus par le
compilateur, il est ncessaire de dclarer le nom du
fichier de donnes temporaire en tant que source
de donnes. Ce fichier de donnes temporaire et
ses rubriques pourront alors tre manipuls par
leur nom sous l'diteur de code.
Remarque : il est galement possible de dclarer le
nom du fichier de donnes temporaire avec le mot-
cl Externe. Cependant, la vitesse d'excution du
traitement sera ralentie.
Dclaration de variables de mme nom
Dans un traitement, il est interdit d'utiliser plu-
sieurs variables de mme nom (quel que soit le
type de ces variables).
Si des variables de mme nom sont dclares dans
diffrents traitements du projet, la rgle de porte
des variables s'applique.
2.5.14 Police
Une variable de type Police permet de crer une
police dynamique. Les proprits de cette police
peuvent tre modifies au cours du programme.
Une police dynamique permet de slectionner la
police utilise :
dans les dessins (fonction dPolice).
dans les graphes (fonctions grPoliceEtiquette,
grPoliceLgende, grPoliceTitre et grPoliceTi-
treAxe).
pour les impressions (fonction iPolice).
dans les champs d'une fentre (proprit ..Police
des champs d'une fentre).
dans les champs d'un tat (proprit ..Police des
champs d'un tat).
Syntaxe
Dclarer une police
<Nom de la variable> est une police
Dclarer plusieurs polices
<Nom de la variable 1>, <Nom de la variable
2> sont des polices
MaRubrique..TypeCl = hClUnique
// Validation description
// rubrique "NOM"
HDcritRubrique(MonFichier, ...
MaRubrique)
// Validation description fichier
// MonFichier ...
MonFichier ...
est une description de fichier
...
MonFichier..Nom = "CLIENT"
...
HDcritFichier("CLIENT")
...
CLIENT est une source de donnes
...
HLitPremier(CLIENT,CLIENT.NOMCLI)
MaPolice est une police
MaPolice1, MaPolice2 sont des polices
WLangage.book Page 60 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 61
Dfinir les caractristiques d'une police
Par dfaut, une police est "Arial", de taille 12, de
couleur noir, sans attribut.
Pour dfinir les caractristiques d'une police dyna-
mique, utilisez :
soit la fonction PoliceCre.
soit les proprits ..Alphabet, ..Angle, ..Barr,
..Condens, ..Couleur, ..Etendu, ..Gras, ..Italique,
..Large, ..Nom, ..Soulign et ..Taille.
soit la fonction PoliceSelect qui ouvre la fentre
standard WinDows de slection des polices.
Dclaration de variables de mme nom
Dans un traitement, il est interdit d'utiliser plu-
sieurs variables de mme nom (quel que soit le
type de ces variables).
Si des variables de mme nom sont dclares dans
diffrents traitements du projet, la rgle de porte
des variables s'applique.
2.5.15 Connexion
Une variable de type Connexion permet de dcrire
une ou plusieurs connexions des bases de don-
nes externes (HyperFileSQL Client/Serveur, Accs
Natif, ...).
La connexion pourra tre ouverte grce la fonc-
tion HOuvreConnexion.
La variable de type connexion permet aussi bien
de :
dcrire une nouvelle connexion (quivalent la
fonction HDcritConnexion)
crer une connexion (qui sera ouverte grce la
fonction HOuvreConnexion)
modifier une connexion existante.
Syntaxe
Dclarer une connexion
<Nom de la variable> est une connexion
Dclarer plusieurs connexions
<Nom de la variable 1>, <Nom de la variable
2> sont des connexions
Dfinir les caractristiques d'une connexion
Pour dcrire une variable de type Connexion, utili-
sez les proprits WLangage spcifiques aux con-
nexions.
Dclaration de variables de mme nom
Dans un traitement, il est interdit d'utiliser plu-
sieurs variables de mme nom (quel que soit le
type de ces variables).
Si des variables de mme nom sont dclares dans
diffrents traitements du projet, la rgle de porte
des variables s'applique.
2.5.16 File
Une file est un type structur qui permet de regrou-
per une srie d'lments du mme type. Les l-
ments sont ajouts la fin de la file et sont
rcuprs dans l'ordre d'enfilement.
Syntaxe
Dclarer et initialiser une file
<Nom de la file> est [une] File de <Type des
lments de la file>
Par exemple, si les lments sont ajouts dans
l'ordre suivant : 1, 2, 3, ils seront rcuprs dans
le mme ordre 1, 2, 3
Proprits WLangage utilisables avec le type File
MaPolice = ...
PoliceCre("Arial",12,iGras)
MaPolice..Nom = "Arial"
MaPolice..Taille = 12
MaPolice..Gras = Vrai
MaConnexion est une connexion
// Description de la connexion
MaCxion..Utilisateur = "USER"
MaCxion..MotDePasse = "PASSWORD"
MaCxion..Serveur = "MONSERVEUR"
MaCxion..BaseDeDonnes = "Base1"
MaCxion..Provider = ...
hAccsHFClientServeur
MaCxion..Accs = hOLectureEcriture
MaCxion..InfosEtendues = "Infos"
MaCxion..OptionsCurseur= ...
hCurseurClient
HOuvreConnexion(MaConnexion)
MaFile est une File d'entiers
// On enfile les valeurs 1, 2 et 3
Enfile(MaFile, 1)
Enfile(MaFile, 2)
Enfile(MaFile, 3)
// Affichage de la trace : 1, 2, 3
x est un entier
TANTQUE Dfile(MaFile, x)
Trace(x)
FIN
AjoutTermin Renvoie et modifie le mode
d'ajout des lments.
Cette proprit est utilise
pour la gestion du multithread
NbThreadAttente Renvoie le nombre de threads
en attente.
Cette proprit est utilise
pour la gestion du multithread
Occurence Renvoie le nombre d'occurren-
ces de la file
WLangage.book Page 61 Mardi, 23. avril 2013 1:59 13
62 Partie 2 : Syntaxe de base du WLangage
Remarque : Ces proprits peuvent tre utilises
en utilisant une des deux syntaxes suivantes :
<Nom de la variable>..<Nom de la proprit>
<Nom de la variable>.<Nom de la proprit>
Fonctions WLangage de gestion des files
Les fonctions suivantes peuvent tre utilises pour
manipuler une variable de type File.
Les files et le multithread
La gestion du multithread est prise en compte lors
de l'ajout et de la suppression d'un lment (fonc-
tions Enfile et Dfile).
Il est galement possible d'utiliser les proprits
lors d'une gestion multithread mais le rsultat
n'est pas permanent.
Par exemple :
Parcours des files :
Il est possible d'utiliser la syntaxe POUR TOUT pour
parcourir les files. Les lments sont parcourus
dans l'ordre de dfilement qui est galement l'ordre
d'enfilement.
La syntaxe utilise correspond celle utilise pour
les tableaux :
Les lments peuvent tre modifis pendant le par-
cours. En cas de modification de la file pendant un
parcours, les lments parcourus seront ceux pr-
sents lors de l'initialisation du parcours :
si des lments sont enfils aprs l'initialisation
du parcours, ils ne seront pas parcourus.
si des lments sont dfils aprs l'initialisation
du parcours, ils seront quand mme parcourus.
Remarques
Sous le dbogueur, le contenu de la file est affi-
ch dans l'ordre de dfilement.
Une file peut tre utilise pour typer un param-
tre de procdure.
Une file peut tre copie avec l'oprateur =. Il est
galement possible de copier une instance de
classe ou de structure contenant une file.
Une file peut tre initialise par une liste d'l-
ments dans l'ordre d'enfilement.
2.5.17 Liste
Une liste est un type structur qui permet de
regrouper une srie d'lments du mme type. Les
lments peuvent tre ajouts la fin de la liste ou
tre insrs dans la liste
Syntaxe
Dclarer et initialiser une liste
<Nom de la liste> est [une] Liste de <Type
des lments de la liste>
Proprits WLangage utilisables avec le type Liste
Les proprits suivantes peuvent tre utilises
pour manipuler une variable de type Liste
Remarque :
Ces proprits peuvent tre utilises en utilisant
une des deux syntaxes suivantes :
<Nom variable>..<Nom proprit>
<Nom variable>.<Nom proprit>
Fonctions WLangage de gestion des listes
Les fonctions suivantes peuvent tre utilises pour
manipuler une variable de type liste.
Vide Vrai si la file est vide, Faux
dans le cas contraire
Dfile Rcupre l'lment du dbut de la
file.
Dsrialise Dsrialise une file.
Enfile Ajoute un lment la fin de la file.
Srialise Srialise une file.
Supprime
Tout
Supprime tous les lments d'une
file.
SI MaFile..Occurrence>0 ALORS
// Quand le thread arrive ici, ...
// la file peut tre vide
FIN
POUR TOUT [ELEMENT] <Variable> ...
[, <Compteur> [, <Compteur>]] ...
DE <File>
...
FIN
Occurence Renvoie le nombre d'occur-
rences de la liste.
Vide Vrai si la liste est vide, Faux
dans le cas contraire.
Ajoute Ajoute un lment la fin de la
liste.
Dsrialise Dsrialise une liste.
Insre Insre un lment dans la liste.
Srialise Srialise une liste.
Supprime Supprime un lment de la liste
Supprime-
Tout
Supprime tous les lments de la
liste.
WLangage.book Page 62 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 63
Les listes et le multithread.
La gestion du multithread est prise en compte lors
de l'ajout, l'insertion et de la suppression d'un l-
ment.
Il est galement possible d'utiliser les proprits
lors d'une gestion multithread mais le rsultat
n'est pas permanent.
Par exemple :
Parcours des listes.
Il est possible d'utiliser la syntaxe POUR TOUT pour
parcourir les listes.
La syntaxe utilise correspond celle utilise
pour les tableaux :
Les lments peuvent tre modifis pendant le par-
cours. En cas de modification de la liste pendant
un parcours, le parcours est affect par les opra-
tions d'ajout et de suppression. Les fonctions dis-
ponibles pendant le parcours sont les suivantes :
Syntaxe : Insre(<Nom de la liste>, AvantE-
lmentCourant, <Valeur>)
Attention : l'lment sera parcouru par l'itration
suivante si la boucle est descendante.
Syntaxe : Insre(<Nom de la liste>, AprsE-
lmentCourant, <Valeur>)
Attention : l'lment sera parcouru par l'itration
suivante si la boucle est ascendante.
Syntaxe : Supprime(<Nom de la liste>, El-
mentCourant)
Remarques :
Le contenu de la liste peut tre affich sous le
dbogueur.
Une liste peut tre utilise pour typer un param-
tre de procdure.
Une liste peut tre copie avec l'oprande liste.
Une liste peut tre initialise par une liste d'l-
ments.
2.5.18 Pile
Une pile est un type structur qui permet de regrou-
per une srie d'lments du mme type. Les l-
ments sont ajouts la fin de la pile et sont
rcuprs du plus rcent au plus ancien.
Syntaxe
Dclarer et initialiser une pile
<Nom de la pile> est [une] Pile de <Type des
lments de la pile>
Par exemple, si les lments sont ajouts dans
l'ordre suivant : 1, 2, 3, ils seront rcuprs dans
l'ordre suivant : 3, 2, 1. :
Proprits WLangage utilisables avec le type Pile
Les proprits suivantes peuvent tre utilises
pour manipuler une variable de type Pile.
Remarque : Ces proprits peuvent tre utilises
en utilisant une des deux syntaxes suivantes :
<Nom de la variable>..<Nom de la pro-
prit>
<Nom de la variable>.<Nom de la proprit>
Fonctions WLangage de gestion des piles.
Les fonctions suivantes peuvent tre utilises pour
manipuler une variable de type pile.
SI MaListe..Occurrence>0 ALORS
// Quand le thread arrive ici, ...
// la liste peut tre vide
FIN
POUR TOUT [ELEMENT] <Variable> ...
[, <Compteur> [, <Compteur>]] ...
DE <Liste> [<Sens>]
...
FIN
MaPile est une Pile d'entiers
// On empile les valeurs 1, 2 et 3
Empile(MaPile, 1)
Empile(MaPile, 2)
Empile(MaPile, 3)
// Affichage de la trace : 3, 2, 1
x est un entier
TANTQUE Dpile(MaPile, x)
Trace(x)
FIN
AjoutTermin Renvoie et modifie le mode
d'ajout des lments.
Cette proprit est utilise
pour la gestion du mul-
tithread
NbThreadAttente Renvoie le nombre de
threads en attente.
Cette proprit est utilise
pour la gestion du mul-
tithread
Occurence Renvoie le nombre d'occur-
rences de la pile.
Vide Vrai si la pile est vide, Faux
dans le cas contraire
Dpile Rcupre l'lment du dbut de
la pile.
Dsrialise Dsrialise une pile.
Empile Ajoute un lment dans une pile.
Srialise Srialise une pile.
WLangage.book Page 63 Mardi, 23. avril 2013 1:59 13
64 Partie 2 : Syntaxe de base du WLangage
Les piles et le multithread
La gestion du multithread est prise en compte lors
de l'ajout et de la suppression d'un lment (fonc-
tions Empile et Dpile).
Il est galement possible d'utiliser les proprits
lors d'une gestion multithread mais le rsultat n'est
pas permanent. Par exemple :
Parcours des piles
Il est possible d'utiliser la syntaxe POUR TOUT pour
parcourir les piles. Les lments sont parcourus
dans l'ordre de dpilage qui est galement l'ordre
inverse de l'ordre d'empilage.
La syntaxe utilise correspond celle utilise pour
les tableaux :
Les lments peuvent tre modifis pendant le par-
cours. En cas de modification de la pile pendant un
parcours, les lments parcourus seront ceux pr-
sents lors de l'initialisation du parcours :
si des lments sont empils aprs l'initialisation
du parcours, ils ne seront pas parcourus.
si des lments sont dpils aprs l'initialisation
du parcours, ils seront quand mme parcourus.
Remarques :
Sous le dbogueur, le contenu de la pile est affi-
ch dans l'ordre de dpilement.
Une pile peut tre utilise pour typer un param-
tre de procdure.
Une pile peut tre copie avec l'oprateur =. Il est
galement possible de copier une instance de
classe ou de structure contenant une pile.
Une pile peut tre initialise par une liste d'l-
ments dans l'ordre d'empilage
2.6 Variables locales / variables globales
Les variables peuvent tre de deux types :
Variable locale : utilisable uniquement dans le
traitement dans lequel cette variable a t dcla-
re.
Variable globale : utilisable dans tous les traite-
ments dpendant du traitement dans lequel
cette variable a t dclare.
Important : Il ne faut pas dclarer deux variables
avec le mme nom (notamment une variable glo-
bale et une variable locale).
2.6.1 Variables globales
Variables globales un projet
Les variables globales dclares dans le traite-
ment d'initialisation d'un projet peuvent tre utili-
ses dans tous les traitements :
du projet.
des fentres / des pages (traitement de la fen-
tre / page, de ses champs et des procdures
locales associes).
des tats (traitement de l'tat, de ses champs et
des procdures locales associes).
Disponibilit des variables sous WebDev en code
Navigateur : Les variables globales serveur du pro-
jet sont disponibles dans les codes Navigateur uni-
quement pour les types suivants : Boolen, Entier,
Rel, Chane. Attention : les modifications effec-
tues sur ces variables globales en code naviga-
teur ne sont pas reportes sur le serveur.
Astuce : les variables globales dclares dans un
code serveur peuvent permettre de transmettre
des informations au navigateur.
Variables globales une fentre ou page
Les variables globales dclares dans le traite-
ment de dclaration des globales d'une fentre /
dune page peuvent tre utilises dans tous les
traitements :
de la fentre / page.
des champs de la fentre / page.
des procdures locales associes la fentre /
page.
Limites :
Les variables globales d'une fentre ne peuvent
pas tre utilises par ses fentres soeurs.
SupprimeTout Supprime tous les lments
d'une pile.
SI MaPile..Occurrence>0 ALORS
// Quand le thread arrive ici, ...
// la pile peut tre vide
FIN
POUR TOUT [ELEMENT] <Variable> ...
[, <Compteur> [, <Compteur>]] ...
DE <Pile>
...
FIN
WLangage.book Page 64 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 65
Les variables globales dclares dans une fen-
tre fille ne peuvent pas tre utilises dans sa
fentre mre.
Lorsque la fentre / page dans laquelle la varia-
ble a t dclare est ferme, cette variable ne
peut plus tre utilise.
Disponibilit des variables sous WebDev en code
Navigateur : Les variables Serveur globales une
page sont disponibles dans les codes Navigateur
de la page uniquement pour les types suivants :
Boolen, Entier, Rel, Chane.
Attention : les modifications effectues sur ces
variables globales en code navigateur ne sont pas
reportes sur le serveur.
Astuce : les variables globales dclares dans un
code serveur peuvent permettre de transmettre
des informations au navigateur.
Variables Navigateur globales une
page
Les variables globales dclares dans le code de
"Chargement (onLoad) de la page" peuvent tre
utilises dans tous les traitements navigateur :
de la page.
des champs de la page.
des procdures locales associes la page.
Disponibilit des variables en code Serveur : Les
variables Navigateur globales une page ne sont
pas disponibles dans les codes Serveur de la page.
Astuce : les variables globales dclares dans un
code navigateur peuvent permettre d'changer des
informations entre diffrents traitements excuts
sur le navigateur.
Remarques :
Les variables globales Navigateur ne peuvent pas
tre initialises sur la ligne de dclaration.
Les variables globales Navigateur peuvent tre
initialises avec la valeur d'une variable globale
serveur (uniquement pour les types boolens,
entier, rel et chane).
Il est conseill de dsactiver le "cache" de votre
navigateur pendant le dveloppement de lappli-
cation WebDev. En effet, les variables globales
sont traduites en JavaScript dans des fichiers
".JS". Si le "cache" est actif, les tests de vos pages
peuvent recharger des fichiers correspondant
danciennes valeurs de variables. Pour plus de
dtails, consultez laide en ligne.
Variables globales un tat
Les variables globales dclares dans le traite-
ment douverture d'un tat peuvent tre utilises
dans tous les traitements de l'tat, des champs de
l'tat, des procdures locales associes l'tat.
Variables globales une collection de
procdures
Les variables globales dclares dans le traitement
d'initialisation d'une collection de procdures peu-
vent tre utilises dans tous les traitements :
des diffrentes procdures de la collection.
du projet en cours.
Syntaxe
Dclarer une ou plusieurs variables globales
GLOBAL
<Variables globales>
2.6.2 Variables locales
Les variables locales peuvent tre utilises unique-
ment dans les traitements dans lesquels elles sont
dclares. En dehors de ces traitements, les varia-
bles locales sont inconnues. Ces variables ne pour-
ront pas tre partages par plusieurs traitements.
Par dfaut, lors de sa dclaration, une variable est
locale.
Syntaxe
Dclarer une ou plusieurs variables locales
[LOCAL]
<Variables locales>
GLOBAL // Toutes les dclarations qui
// suivent sont des variables
// globales
Indice est un entier
NomClient est une chane
LOCAL // Toutes les dclarations qui
// suivent sont des variables
// locales
I est un entier
PrnomClient est une chane
WLangage.book Page 65 Mardi, 23. avril 2013 1:59 13
66 Partie 2 : Syntaxe de base du WLangage
2.7 Rgle de porte des variables
La rgle de porte des variables est la suivante :
Si une variable "globale" au projet et une variable
"globale" une fentre / page portent le mme
nom:
la variable "globale" la fentre / page sera
utilise dans tous les traitements de la fentre
/ page et de ses champs, ainsi que dans les
procdures "locales" de la fentre / page.
la variable "globale" au projet sera utilise
dans tous les autres traitements.
Si une variable "globale" au projet et une varia-
ble "locale" un traitement portent le mme
nom:
la variable "locale" sera uniquement utilise
dans le traitement dans lequel cette variable a
t dclare.
la variable "globale" au projet sera utilise dans
tous les autres traitements.
Si une variable "globale" une fentre / page et
une variable "locale" un traitement de cette
fentre / page portent le mme nom:
la variable "locale" sera uniquement utilise
dans le traitement dans lequel cette variable a
t dclare.
la variable "globale" la fentre / page sera uti-
lise dans tous les autres traitements de la
fentre / page et de ses champs (y compris les
procdures "locales" de la fentre / page).
aucune des deux variables ne pourra tre utili-
se dans le reste du projet.
Exception : La rgle de porte des variables ne
s'applique pas sur les constantes.
WLangage.book Page 66 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 67
3. OPRATEURS
3.1 Prsentation
Les diffrents oprateurs sont les suivants :
Oprateurs logiques : Exemples : ET, OU, PAS
Oprateurs arithmtiques : Exemples : "+", "-",
"*", "/", "++", "--", "+=", "-="
Oprateurs binaires : Exemples : ETBinaire, OUBi-
naire, NonBinaire et OUExclusifBinaire
Oprateurs de comparaison : Exemples : "=",
"~=", "<>", "<=", ">=", "<", ">", "~~"
Oprateurs sur des chanes de caractres :
Exemples : "+", "[[" et "]]"
Oprateur sur adresse : &
Oprateurs d'indirection de champ et de
rubrique : { et }
Oprateurs de ponctuation : Exemples : "(" et ")",
"[" et "]", "," et "." et ":" et ";", "..", "..." et "//"
3.2 Oprateurs logiques
3.2.1 Prsentation
Les oprateurs logiques sont :
ET et _ET_ : Multiplication logique.
OU et _OU_ : Addition logique.
PAS : Ngation logique.
Les oprateurs logiques permettent d'effectuer des
oprations logiques et de construire des condi-
tions.
3.2.2 Rgles
Vrai ET Vrai : retourne Vrai
Vrai ET Faux : retourne Faux
Vrai OU Vrai : retourne Vrai
Vrai OU Faux : retourne Vrai
PAS Vrai : retourne Faux
3.2.3 Notes
Variable numrique
Si une variable numrique est manipule comme
un oprateur logique (boolen), "0" est quivalent
Faux. Toute autre valeur est quivalente Vrai.
Par exemple, les deux lignes de codes suivantes
sont quivalentes :
La premire syntaxe (SI NumTest ALORS) doit
tre prfre la seconde syntaxe.
Variable chane
Si une variable chane est manipule comme un
oprateur logique, une erreur du WLangage sera
gnre.
Par exemple, la syntaxe : "SI ChTest ALORS"
retournera une erreur lors de l'excution (mais pas
lors de la compilation du projet).
Priorit
Les oprateurs ET et OU, _ET_ et _OU_ ont la mme
priorit. Pour donner des priorits ces oprateurs,
il suffit de mettre des parenthses. Par exemple :
Exceptions : Dans les filtres SQL et les requtes
SQL, l'oprateur ET est prioritaire sur l'oprateur
OU.
SI Client.Ville = ...
"Boston" ET ...
Client.Civilit = ...
"Monsieur" ALORS
HommeBoston ++
// Nombre d'hommes habitant
// Boston
FIN
SI Client.Ville = ...
"Boston" OU ...
Client.Ville = "New York" ALORS
BostonNewYork ++
// Nombre de clients habitant
// soit Boston, soit
// New York
FIN
SI NumTest ALORS ...
SI NumTest <> 0 ALORS ...
SI (A = 2 ET B > 3) OU ...
(A = 2 ET B < 0) ALORS ...
WLangage.book Page 67 Mardi, 23. avril 2013 1:59 13
68 Partie 2 : Syntaxe de base du WLangage
Par exemple : sera valu ainsi :
3.3 Oprateurs arithmtiques
3.3.1 Prsentation
Les oprateurs arithmtiques sont :
"+" : Addition (valeur numrique ou chane).
"-" : Soustraction (valeur numrique).
"*" : Multiplication.
"/" : Division.
"++" : Incrmentation (valeur numrique).
"--" : Dcrmentation (valeur numrique).
"+=" : Ajout d'une valeur la variable ou au
champ (numrique ou texte).
"-=" : Soustraction d'une valeur la variable ou
au champ (numrique).
3.3.2 Rgles de calcul
Les diffrents calculs se font sans perte de prci-
sion ou tronquage. Les vrifications de dborde-
ment sont effectues au moment de l'affectation
du rsultat dans une variable.
3.3.3 Notes
Affichage du rsultat
Il n'est pas possible d'afficher directement le rsul-
tat du calcul utilisant les oprateurs suivants :
"++" : Incrmentation.
"--" : Dcrmentation.
"+=" : Ajout d'une valeur la variable ou au
champ (numrique ou texte).
"-=" : Soustraction d'une valeur la variable ou
au champ (numrique).
Ainsi, cet exemple gnre une erreur lors de la
compilation :
Pour afficher le rsultat, effectuez les modifica-
tions suivantes :
quivalence
j ++ est quivalent j = j + 1
j - - est quivalent j = j - 1
j += 3 est quivalent j = j + 3
j - = 3 est quivalent j = j - 3
Il est conseill d'utiliser les syntaxes : "j ++", "j --", "j
+=" et "j - =", plus rapides que les syntaxes habituel-
les.
3.4 Oprateurs binaires
Les oprations sur des valeurs binaires sont uni-
quement ralises :
avec des fonctions du WLangage : ETBinaire,
OUBinaire, NonBinaire, OUExclusifBinaire
avec des oprateurs spcifiques : oprateurs
binaires, oprateurs de dcalage vers la droite et
vers la gauche, oprateur d'accs aux bits.
3.4.1 Oprateurs binaires
ET, OU et OU exclusif binaires
Les syntaxes suivantes peuvent tre utilises :
ET binaire : <Valeur 1> & <Valeur 2>
OU binaire : <Valeur 1> | <Valeur 2>
OU exclusif binaire : <Valeur 1> || <Valeur 2>
Le type de rsultat peut tre diffrent selon le type
des oprandes :
Non binaire
La syntaxe est la suivante : ~ <Valeur>
Le type de rsultat peut tre diffrent selon le type
Condition1 ET Condition2 OU
Condition3
(Condition1 ET Condition2) OU
Condition3
n est un entier = 10
Trace(n+=1)
n est un entier = 10
n += 1
Trace(n)
Valeur 2
Valeur 1
Entier sur 4 Entier sur 8 Autre
Entier sur 4 Entier sur 4 Entier sur 8 Entier sur 4
Entier sur 8 Entier sur 8 Entier sur 8 Entier sur 8
Autre Entier sur 4 Entier sur 8 Entier sur 8
WLangage.book Page 68 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 69
de l'oprande :
3.4.2 Oprateurs de dcalage
Dcalage vers la gauche :
Dcalage vers la droite :
Notes
Les bits de <Valeur 1> sont dcals de <Valeur
2> bits vers la droite ou vers la gauche.
Par exemple :
En effet, 4 en dcimal correspond 0100 en
binaire. Dcal de 1 bit vers la gauche, on obtient
en binaire 1000 ce qui correspond 8 en dci-
mal.
Autre exemple :
En effet, 4 en dcimal correspond 0100 en
binaire. Dcal de 2 bits vers la droite, on obtient
en binaire 0001 ce qui correspond 1 en dci-
mal.
Les bits qui dpassent la taille de <Valeur 1>
sont ignors. Par exemple :
Si <Valeur 2> est suprieur la taille de <Valeur
1> (32 pour un entier sur 4 et 64 pour un entier
sur 8), le rsultat est toujours 0. Par exemple :
Le type de rsultat peut tre diffrent selon le
type de l'oprande :
3.4.3 Oprateur daccs direct
Accs un bit
Syntaxe : <Valeur 1> [ <n> ]
Cette syntaxe permet de lire ou de modifier la
valeur du bit <N> dans la valeur <Valeur 1>.
Le comptage des bits commence 1 :
1 32 pour un entier sur 4 octets,
1 64 pour un entier sur 8 octets.
Si la valeur de <n> est incorrecte, l'opration ren-
voie 0.
Exemples :
Accs un entier sur 1, 2 ou 4 octets
Syntaxes :
<Valeur 1> [ <n>, wlEntier_1 ]
<Valeur 1> [ <n>, wlEntier_2 ]
<Valeur 1> [ <n>, wlEntier_4 ]
Ces syntaxes permettent de lire ou de modifier la
valeur de l'entier sur 1, 2 ou 4 octets dans la valeur
<Valeur 1>.
Valeurs possibles pour <n> selon le type de
<Valeur 1> :
Si la valeur de <n> est incorrecte, l'opration ren-
voie 0.
Accs la valeur de plusieurs bits
Syntaxes :
<Valeur 1> [ A <n> ]
<Valeur 1> [ <n> A ]
<Valeur 1> [ <n> A <o> ]
<Valeur 1> [ <n> SUR <Nombre> ]
Ces syntaxes permettent de lire ou de modifier la
valeur correspondant aux bits indiqus.
Oprande Rsultat
Entier sur 4 Entier sur 4
Entier sur 8 Entier sur 8
Autre Entier sur 8
<Valeur 1> bitDcaleGauche <Valeur 2>
bitDcaleGauche(<Valeur1>, <Valeur
2>)
<Valeur 1> bitDcaleDroite <Valeur
2>
bitDcaleDroite(<Valeur1>, <Valeur
2>)
bitDcaleGauche(4,1) // Renvoie 8
bitDcaleDroite(4,2) // Renvoie 1
bitDcaleGauche(4,30) // Renvoie 0
bitDcaleGauche(4,4) // Renvoie 0
bitDcaleGauche(4,35) // Renvoie 0
Oprande Valeur 1 Rsultat
Entier sur 4 Entier sur 4
Entier sur 8 Entier sur 8
Autre Entier sur 8
// Positionne les cinquime et
// septime bits 1
n est un entier
n[5] = 1
n[7] = Vrai
// Teste valeur des bits 4, 5, 6 et 7
SI n[4] ALORS Trace(4) // pas affich
SI n[5] ALORS Trace(5) // affiche 5
SI n[6] ALORS Trace(6) // pas affich
SI n[7] ALORS Trace(7) // affiche 7
Valeur 1 wlEntier_1 wlEntier_2 wlEntier_4
Entier sur 4 1 4 1 2 1
Entier sur 8 1 8 1 4 1 2
WLangage.book Page 69 Mardi, 23. avril 2013 1:59 13
70 Partie 2 : Syntaxe de base du WLangage
3.5 Oprateurs de comparaison
3.5.1 Prsentation
Les oprateurs de comparaison peuvent tre divi-
ss en plusieurs catgories :
Les oprateurs de comparaison peuvent tre utili-
ss avec tous les types d'oprandes.
Le rsultat d'une expression de comparaison est de
type boolen.
3.5.2 Dtail
galit souple et galit trs souple
L'galit souple (~=) et l'galit trs souple (~~)
agissent uniquement sur les chanes de caractres
(sauf les chanes fixes). Ces oprateurs permettent
de :
ne pas diffrencier les caractres majuscules
des caractres minuscules,
ne pas tenir compte des espaces situs avant et
aprs la chane tester,
ne pas tenir compte des caractres accentus
minuscules,
ne pas tenir compte des espaces et des ponctua-
tions l'intrieur des chanes (galit trs souple
uniquement)
quivalence HyperFileSQL : Pour retrouver l'quiva-
lence l'galit trs souple lors d'une recherche
sur une cl texte dans un fichier de donnes Hyper-
FileSQL, il est ncessaire de configurer les options
suivantes lors de la description de la rubrique dans
l'analyse :
Egalit et comparaison : Rel contenant plus de 6
dcimales de diffrence
Le test d'galit de deux rels est effectu en ne
tenant compte que des 6 premires dcimales. En
effet, les erreurs d'arrondi dues au codage interne
des rels ncessitent un test spcifique.
Ce test doit tre ralis en comparant la diffrence
des deux valeurs tester avec une valeur de rf-
rence. Selon le type de votre application, cette
valeur peut tre gale 0,00001 ou moins encore.
Cette gestion d'arrondi n'est pas spcifique
WinDev.
Elle est gnrale tous les langages manipulant
des rels sous forme binaire.
Intervalles de comparaison
Les intervalles de comparaison permettent de sim-
plifier l'criture de comparaisons complexes. Ainsi,
la ligne
peut tre remplace par
La ligne :
peut tre remplace par
Egalit galit stricte : =
galit souple : ~=
galit trs souple : ~~
Commence par : [=
Comparaison Diffrent : <>
Infrieur ou gal : <=
Suprieur ou gal : >=
Strictement infrieur : <
Strictement suprieur : >
Commence par : [=
Intervalle de
comparaison
Strictement compris entre :
Valeur1< x< Valeur2
Compris entre :
Valeur1 < x <= Valeur2
Valeur1 <= x < Valeur2
Compris entre (bornes comprises) :
Valeur1 <= x <= Valeur2
Compris entre (bornes comprises) :
Valeur1 A Valeur2
"Dupond" = "DUPOND" // retourne Faux
"Dupond" ~= "DUPOND" // retourne Vrai
" Dupond" ~= "DUPOND"
// retourne Vrai
" Dupond" ~= "Dupond"
// retourne Vrai
"C'est l't" ~= "C'est l'ete"
// retourne Vrai
"Ent. S.A.R.L" ~~ "Ent SARL"
// retourne Vrai
Diff, R1, R2 sont des rels
Diff = 0.00001
SI Abs(1-(R1/R2)) < Diff ALORS
// R1 et R2 sont gaux
SINON
// R1 et R2 sont diffrents
FIN
SI x>5 et x<10 ALORS ...
SI 5<x<10 ALORS...
SI x>=5 et x<=10 ALORS ...
SI X=5 A 10 ALORS...
WLangage.book Page 70 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 71
Exemple :
Comparaison d'instances de structures et d'instan-
ces de classes
Les structures dynamiques sont instancies uni-
quement lors de leur allocation.
Il est possible de comparer des instances de struc-
tures dynamiques (ou des instances de classes
dynamiques) grce l'oprateur "=".
Exemple :
La mme opration peut tre ralise sur les ins-
tances de classes.
3.6 Oprateurs sur chanes de caractres
Les chanes de caractres peuvent tre manipu-
les par des fonctions spcifiques du WLangage ou
par les oprateurs +, [[ et ]].
Les oprateurs sur des chanes de caractres
sont :
"+" : Pour concatner des chanes.
"[[" et "]]" (double crochets ouvrant et double cro-
chets fermant) : Oprateur d'extraction d'une
sous-chane.
"=" : Egalit stricte
"~=" : Egalit souple (non disponible sous Web-
Dev code navigateur)
"[=" : Commence par
3.6.1 galit souple et galit trs souple
L'galit souple (~=) et l'galit trs souple (~~)
agissent uniquement sur les chanes de caractres
(sauf les chanes fixes). Ces oprateurs permettent
de :
ne pas diffrencier les caractres majuscules
des caractres minuscules,
ne pas tenir compte des espaces situs avant et
aprs la chane tester,
ne pas tenir compte des caractres accentus
minuscules,
ne pas tenir compte des espaces et des ponctua-
tions l'intrieur des chanes (galit trs souple
uniquement).
quivalence HyperFileSQL : Pour retrouver l'quiva-
lence l'galit trs souple lors d'une recherche
sur une cl texte dans un fichier de donnes Hyper-
FileSQL, il est ncessaire de configurer les options
suivantes lors de la description de la rubrique dans
l'analyse :
MonTableau est un tableau de 5 chanes
I est un entier
MonTableau[1] = "Dupond"
MonTableau[2] = "Aida"
MonTableau[3] = "Parapoline"
MonTableau[4] = "Moulin"
MonTableau[5] = "Foolamour"
POUR I = 1 A 5
SI "B"<MonTableau[I]<="M" ALORS
Trace(MonTableau[I])
// Affiche Dupond et Foolamour
FIN
FIN
// Dclaration de structures
O est une ST1
P est une ST2
// Dclaration et instanciation
// de structures dynamiques
P1 est une structure ST1 dynamique
P1 = O
P2 est une structure ST2 dynamique
P2 = O
// Comparaison
SI P1 = P2 ALORS ...
Texte = "Guide de Programmation"
Texte[[10]] // Retourne "P"
Texte[[10 16]]
// Retourne "Program"
Texte[[10 ]]
// Retourne "Programmation"
Texte[[ 13]]
// Retourne "Guide de Prog"
Texte[[10 sur 4]] // Retourne "Prog"
Texte + " de WinDev"
// Retourne "Guide de Programmation
// de WinDev"
SI Texte [= "Guide" ALORS ...
Trace(Texte)
WLangage.book Page 71 Mardi, 23. avril 2013 1:59 13
72 Partie 2 : Syntaxe de base du WLangage
3.6.2 L'oprateur [[ et ]]
L'oprateur [[ et ]] permet d'extraire et de remplacer
une sous chane.
Quelques exemples :
CHAINEAEXTRAIRE[[<Position>]] :
Extrait un caractre dans une chane en fonction
de sa position.
CHAINEAEXTRAIRE[[<Position>]] =
<Nouvelle chane> : Remplace le caractres
de la chane par la nouvelle chane.
CHAINEAEXTRAIRE[[<Dbut>
<Fin>]] : Extrait une chane de caractres
dans une chane en fonction de ses positions de
dbut et de fin.
CHAINEAEXTRAIRE[[<Dbut> ]] :
Extrait une chane de caractres partir de
<Dbut> jusqu' la fin de la chane.
CHAINEAEXTRAIRE[[ <Fin>]] :
Extrait une chane de caractres du dbut de la
chane jusqu' <Fin>.
CHAINEAEXTRAIRE[[<Dbut> sur
<Nombre>]] : Extrait un nombre dfini de
caractres en fonction de la position de dbut et
du nombre de caractres souhait.
Attention : Si vous utilisez une procdure manipu-
lant les chanes avec les oprateurs [[ ]], mfiez-
vous de la syntaxe utilise. Vous pouvez sans le
vouloir modifier vos chanes de caractres.
Par exemple, la procdure suivante peut entraner
la modification d'une partie de la chane.
Pour viter toute modification de la chane initiale,
il est ncessaire de passer le paramtre par
valeur :
soit en utilisant des parenthses autour du para-
mtre dans l'appel de la procdure
soit en utilisant le mot-cl Local dans l'en-tte de
la procdure
3.6.3 Oprateurs sur les chanes de carac-
tres et UNICODE
Les oprateurs disponibles sont :
"+" : Pour concatner des chanes.
"[[" et "]]" (double crochets ouvrant et double cro-
chets fermant) : Oprateur d'extraction d'une
sous-chane.
Oprateur "+"
Il est possible de concatner deux chanes UNI-
CODE. Il n'est pas possible de concatner une
chane UNICODE et une chane ANSI.
Remarque : Aucune erreur de compilation n'est
dtecte si la concatnation de deux chanes AINSI
est affecte une chane UNICODE (et inverse-
ment). Cependant, une erreur WLangage appara-
tra en excution.
Oprateur "[[" et "]]"
Toutes les syntaxes de l'oprateur [[ ]] sont disponi-
bles sur les chanes UNICODE.
Si la chane passe en paramtre est au format
ANSI, l'oprateur [[ ]] renvoie le rsultat au format
ANSI.
Si la chane passe en paramtre est au format
UNICODE, l'oprateur [[ ]] renvoie le rsultat au for-
mat UNICODE.
Les paramtres de position et de longueur sont
donns en nombre de caractres.
Remarque : Aucune erreur de compilation n'est
dtecte si le rsultat de l'oprateur [[ ]] sur une
chane ANSI est affect une chane UNICODE (et
inversement). Cependant, une erreur WLangage
apparatra en excution.
3.6.4 Position dans une chane de caract-
res
Le premier caractre est en position 1 (et non en
position 0).
La fonction Position retourne la position de dpart
d'une chane de caractres donne l'intrieur
d'une autre chane de caractres.
3.6.5 Fonctions du WLangage
Les chanes de caractres peuvent galement tre
manipules grce aux fonctions :
Droite.
Gauche.
Milieu.
Procdure P(sChane)
SI sChane alors sChane="5"
//Appel de la procdure par la
// ligne :
// p(sVar[[3 ]])
WLangage.book Page 72 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 73
3.7 Oprateur sur adresse
L'oprateur & retourne l'adresse d'une variable
sous la forme d'un entier.
Syntaxe
<Rsultat> = &<Nom de la variable>
Remarques
L'oprateur & permet de connatre l'adresse de
toutes les formes de variables (simples et compo-
ses).
L'oprateur & est surtout utilis pour passer des
adresses la fonction AppelDLL32.
L'oprateur & ne permet pas de rcuprer
l'adresse :
d'un champ
d'une rubrique HyperFileSQL
L'oprateur & affiche alors une erreur lors de la
compilation du projet. En effet pour ces deux l-
ments, les adresses peuvent changer tout
moment.
Si une "Chane de caractres" doit tre passe
par adresse la fonction AppelDLL32, il ne faut
pas utiliser une variable de type Chane :
l'adresse de la chane peut changer tout
moment. il est conseill d'utiliser le type Chane
ASCIIZ.
Si la variable est locale, le rsultat retourn par
l'oprateur & doit tre utilis uniquement dans le
traitement dans lequel la variable a t dclare.
Lorsque le traitement en cours sera termin,
l'adresse sera invalide et ne devra plus tre utili-
se.
3.8 Oprateurs d'indirection
Les oprateurs { et } permettent d'accder un
champ, une variable ou une rubrique dun fichier
de donnes en construisant dynamiquement le
nom du champ, de la variable ou de la rubrique.
L'intrt des oprateurs { et } est multiple :
passer en paramtre un nom de champ ou de
rubrique
construire le nom d'un champ ou de rubrique par
programme
Indirection simple
Indirection dans une procdure
Indirection avec variable
i est un entier
z est une chane ASCIIZ sur 50
t est un tableau de 10 rels
s est compos de
Age est un entier
Nom est une chane ASCIIZ sur 50
FIN
adr est un entier
adr = &i
adr = &z
adr = &z + 2 //adresse du 3me
//caractre de la Chane
adr = &t //adresse du dbut du
//tableau (donc du 1er
//lment)adr = &t[5]
//adresse du 5me lment
adr = &s //adresse de la structure
//et donc de s.age
adr = &s.age
adr = &s.nom
{"NOM"} = NomCli
// est quivalent NOM=NomCli
{"NOM"} = {"CL.NOMCLI"}
// est quivalent NOM=CL.NOMCLI
{"FENCLI.NOM"} = NomCli
//est quivalent
//FENCLI.NOM=NomCli
{"FENCLI"+".NOM"} = NomCli
//est quivalent
//FENCLI.NOM=NomCli
NomChamp est une chane
NomChamp = "SAISIE1"
// SAISIE1 est le nom du champ
// appel d'une procdure rendant
// un champ invisible
INVISIBLE(NomChamp)
PROCEDURE INVISIBLE(NChamp)
{NChamp} .. Visible = Faux
NomAlias est une chane
NomAlias = FenPrecedente()
//NOM est le nom du champ
//NomCli est la valeur affecter
{NomAlias+".NOM"} = NomCli
Abrev est une chane
NomRub est une chane
{Abrev+"."+NomRub} = NomCli
{Abrev+"."+NomRub} = {NomChamp}
WLangage.book Page 73 Mardi, 23. avril 2013 1:59 13
74 Partie 2 : Syntaxe de base du WLangage
Indirection avec une classe
Syntaxe
Indirection simple
{<Expression>}
<Expression> : permet d'identifier le champ, la
variable ou la rubrique manipuler. Si cette expres-
sion correspond une chane vide (""), une erreur
du WLangage est gnre.
Indirection sur un membre de classe
{<Expression>}
<Expression> : permet d'identifier le membre de la
classe. Si le membre est :
global, utilisez la syntaxe : {"::NomDuMembre"}
nest pas global, utilisez la syntaxe : {":NomDu-
Membre"}
Si cette expression correspond une chane vide
(""), une erreur du WLangage est gnre.
Indirection en spcifiant le type de llment (opti-
mise la vitesse dexcution)
{<Expression>, <Type>}
<Expression> : permet d'identifier le champ, la
variable ou la rubrique manipuler. Si cette expres-
sion correspond une chane vide (""), une erreur
du WLangage est gnre.
<Type> : Constante permettant de prciser le type
de l'lment recherch :
Quand utiliser l'indirection ?
L'indirection peut tre utilise par exemple :
pour accder la valeur d'un lment (champ,
variable, rubrique, ...)
pour utiliser une proprit
Remarque : Pour dsigner l'objet en cours, utilisez
les mots - cls suivants :
MoiMme : le champ en cours
MaFentre : la fentre en cours
MaPage : la page en cours
MonEtat : l'tat en cours
MaSource : la source de donnes courante
MonFichier : le fichier de donnes qui a dclen-
ch le trigger en cours.
3.9 Oprateurs divers
Les oprateurs divers regroupent les oprateurs
suivants :
"(" et ")" : Les parenthses
"[" et "]" : Les crochets
"," : La virgule
"." : Le point
":" : Les deux points
";" : Le point virgule
".." : Le double point
"..." : Le triple point
"//" : La double barre
3.9.1 Les parenthses
Les parenthses permettent :
de regrouper les diffrents lments d'une opra-
tion tout en indiquant l'ordre de priorit. Par
exemple :
// Dclaration d'une classe avec
// deux membres
Maclasse est une classe
Membre1 est une chane
Membre2 est une chane
FIN
//Affichage de la valeur d'un membre
PROCEDURE GLOBALE AfficheMembre(...
Numro)
// Rcupration de la valeur du
// membre global choisi
Valeur est une chane = ...
{"::Membre"+Numro}
Info(Valeur)
indChamp Elment recherch parmi les champs
indCon-
nexion
Elment recherch parmi les con-
nexions
indEtat Elment recherch parmi les tats
indFentre Elment recherch parmi les fentres
indFichier Elment recherch parmi les fichiers
de donnes
indGPW Elment recherch parmi les lments
du groupware utilisateur
indLiaison Elment recherch parmi les liaisons
indPage Elment recherch parmi les pages
indParam-
treRequte
Elment recherch parmi les param-
tres des requtes
IndRubrique Elment recherch parmi les rubriques
IndVariable Elment recherch parmi les variables
{s_NomChamp} = 10
ValeurChamp = {s_NomChamp}
{s_NomChamp}..Hauteur = 10
Si (A-B)*5 ALORS ....
WLangage.book Page 74 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 75
d'indiquer les diffrents paramtres d'une fonc-
tion du WLangage. Par exemple :
3.9.2 Les crochets
Les crochets sont des oprateurs d'indexation. Ils
permettent de dsigner facilement des objets
indexs.
Quelques exemples :
Elment d'une rubrique HyperFileSQL de type
Tableau. Exemple : Client.Adresse[1]
Elment d'un tableau dfini en WLangage.
Exemple :
MonTableau est un tableau de 5 chanes
MonTableau [1] = "Dupond"
Champ d'une fentre de type combo, liste,
tableau, slecteur, interrupteur. Exemples :
combo : MaCombo[1] = "Montpellier"
interrupteur : Interrupteur[1] = Vrai
3.9.3 La virgule
La virgule permet de sparer :
diffrentes dclarations de variables d'un mme
type effectues sur une mme ligne. Par
exemple :
les diffrents paramtres d'une fonction du
WLangage. Par exemple :
3.9.4 Le point virgule
Le point virgule permet de sparer diffrentes ins-
tructions crites sur la mme ligne. Par exemple :
3.9.5 Deux points
Les deux points permettent d'accder aux mem-
bres et aux mthodes des objets.
Si les deux points sont doubls, ils permettent
d'accder aux membres globaux et aux mthodes
globales d'une classe.
3.9.6 Le point
Le point permet d'accder un sous lment. Quel-
ques exemples :
accs un champ d'une fentre / page : MaFe-
ntre.ChampSaisieDate
accs une variable globale d'une fentre /
page : MaFentre.gDure
accs une rubrique d'un fichier de donnes :
Client.Nom
accs une colonne de table : Table.Colonne1
3.9.7 Le double point
Le double point permet d'accder une proprit
d'un champ, d'une fentre, d'un tat, d'un fichier de
donnes, d'une rubrique, d'une variable. Quelques
exemples :
3.9.8 Triple point
L'oprateur "..." (triple point) permet de continuer
une ligne logique sur la ligne physique suivante. Par
exemple :
La ponctuation suite "..." doit ncessairement tre
utilise en fin de ligne et non pas au milieu d'une
ligne.
Aucun caractre ne doit suivre les "..." (mis part
les commentaires).
A partir de la version 12, l'oprateur "" n'est plus
obligatoire pour continuer la ligne suivante :
les paramtres de fonctions ou de procdures
les oprandes de droite pour les oprateurs arith-
mtiques et logiques.
3.9.9 La double barre
La double barre permet de mettre en commentaire
le texte suivant ce signe. Ce texte ne sera pas pris
en compte lors de la compilation du code et lors de
l'excution du projet.
Par exemple :
dCopieImage(Image1, image2)
MonExemple1, MonExemple2 ...
sont des chanes
dCopieImage(Image1, image2)
I est un entier;M est une chane
Ascenseur..Bormax = 200
FraisDePort..Titre = ...
"Fentre des frais de port"
MonEtat..MargeBasse = 20
MaPolice..Nom = "Arial"
SI (CodeFamille="LV") ET ...
(CodeFamille="MO") ALORS
Traitement
FIN
Libell = "Veuillez saisir le "+ ...
"nom du client."
// Oprateurs arithmtiques
// (+, -, /, *) et logiques (ET, OU)
n est un entier = 5 +
6
// Recherche dans une chane
Machane est une chane = ...
"WinDev est formidable"
SI Position(Machane, "W")<>0 ALORS
Info("trouv") //Rsultat
FIN
WLangage.book Page 75 Mardi, 23. avril 2013 1:59 13
76 Partie 2 : Syntaxe de base du WLangage
4. LES INSTRUCTIONS DU WLANGAGE
4.1 Instructions composes
Plusieurs types dinstructions composes sont dis-
ponibles en WLangage :
Instructions conditionnelles
SELON : Excution d'une action ou d'une autre
en fonction d'une expression
SI : Excution d'une action ou d'une autre en
fonction d'une condition
Instructions rptitives
BOUCLE : Bloc d'instructions rpt l'infini
POUR : Bloc d'instructions rpt jusqu' une
valeur limite
POUR TOUT : Parcours HyperFileSQL (parcours
complet, parcours avec recherche, parcours
avec filtre)
TANTQUE : Bloc d'instructions rpt en fonc-
tion d'une condition
Instruction de branchement : GOTO : Branche-
ment une tiquette donne
4.1.1 Instruction BOUCLE
Le bloc d'instructions est rpt l'infini. Le nom-
bre d'itrations du bloc d'instructions n'est pas con-
trl, il n'y a pas d'expression valuer.
Syntaxe
Syntaxe 1 : Boucle avec sortie selon une condi-
tion "SI"
BOUCLE
...
SI <Condition> ALORS SORTIR
...
FIN
Syntaxe 2 : Boucle avec sortie selon une condi-
tion"TANTQUE"
BOUCLE
...
A FAIRE TANTQUE <Condition>
Syntaxe 3 : Boucle avec sortie selon le nombre
ditrations
BOUCLE (<Nombre ditration>)
...
FIN
Code excuter
Le code excuter est plac entre les instructions
BOUCLE et FIN.
Sortir d'une boucle
Plusieurs instructions sont possibles :
RETOUR : Sortie de la boucle et sortie du traite-
ment (ou de la procdure) en cours.
RENVOYER : Renvoi d'un compte rendu au traite-
ment appelant. Sortie de la boucle et sortie du
traitement (ou de la procdure) en cours.
SORTIR : Sortie de la boucle et excution de la
suite du traitement en cours.
La fonction Ferme permet de sortir de la boucle et
de fermer la fentre en cours.
Attention : Il n'est pas possible d'utiliser les instruc-
tions RETOUR et RENVOYER dans un mme traite-
ment.
Excution de l'itration suivante
Pour excuter directement l'itration suivante sans
terminer le code de l'itration en cours, utilisez
l'instruction Continuer :
Boucle sans fin
Lors de la compilation du projet, une boucle sans
fin vidente (absence des instructions SORTIR,
RETOUR ou RENVOYER) est signale par un war-
ning.
BOUCLE
//lecture d'une ligne du fichier
//texte
UneLigne = fLitLigne(NumFic)
SI UneLigne = EOT ALORS SORTIR
TraiteLigne(UneLigne)
FIN BOUCLE
...
SI <Condition> ALORS CONTINUER
// Retour au mot-cl BOUCLE
...
FIN
WLangage.book Page 76 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 77
4.1.2 Instruction GOTO
L'instruction GOTO permet d'excuter un code iden-
tifi par une tiquette donne.
Important : L'tiquette doit obligatoirement tre
dfinie dans le mme traitement que l'instruction
GOTO.
Syntaxe
...
GOTO <Nom de l'tiquette>
...
<Nom de l'tiquette> :
<Code de l'tiquette>
Code de l'tiquette
Aprs excution du code de l'tiquette, le pro-
gramme excute les lignes de code suivant directe-
ment l'tiquette.
Limites des tiquettes
Dans un mme traitement (ou procdure), il ne
peut pas exister plusieurs tiquettes de mme
nom.
Si une tiquette n'est utilise par aucune instruc-
tion GOTO, un warning apparat lors de la compila-
tion du projet.
tiquette et instructions POUR et POUR TOUT
L'instruction GOTO ne permet pas d'accder direc-
tement dans le bloc d'instructions d'un POUR ou
d'un POUR TOUT.
Ainsi, ce code provoque une erreur la compilation
du projet :
4.1.3 Instruction POUR
Le bloc d'instructions est rpt en modifiant une
variable de contrle puis en la comparant une
valeur limite, avant chaque dbut du bloc d'instruc-
tions.
Le bloc d'instructions est alors excut pour cha-
cune des valeurs que prend successivement la
variable de contrle. La variable de contrle reoit
la valeur initiale lors de la premire entre dans
l'instruction POUR.
Syntaxe
POUR <Variable de contrle> = <Valeur ini-
tiale> A <Valeur finale> [PAS <x>]
...
FIN
Code excuter
Le code excuter est plac entre les instructions
POUR et FIN.
Pas d'incrmentation
Le pas d'incrmentation de l'instruction POUR doit
tre constant. Si le pas d'incrmentation est sus-
ceptible de varier chaque rptition, un warning
apparat lors de la compilation du projet.
Sortir d'une boucle de type POUR
Plusieurs instructions sont possibles :
RETOUR : Sortie de la boucle POUR et sortie du
traitement (ou de la procdure) en cours.
RENVOYER : Renvoi d'un compte rendu au traite-
ment appelant. Sortie de la boucle POUR et sor-
tie du traitement (ou de la procdure) en cours.
SORTIR : Sortie de la boucle POUR et excution
de la suite du traitement en cours.
La fonction Ferme permet de sortir de la boucle
POUR et de fermer la fentre en cours.
Attention : Il n'est pas possible d'utiliser les instruc-
tions RETOUR et RENVOYER dans un mme traite-
ment.
Excution de l'itration suivante
Pour excuter directement l'itration suivante sans
terminer le code de l'itration en cours, utilisez
l'instruction Continuer :
Res = fOuvre(NomFichier, FOEcriture)
SI Res = -1 ALORS GOTO ERROUVRE
Res = fEcrit(Res,"Traitement OK")
SI Res = -1 ALORS GOTO ERRECRIT
...
RENVOYER Vrai
ERROUVRE :
Info("Fichier "+NomFichier+...
" ne peut tre ouvert. "+...
"Vrifiez son existence.")
RENVOYER Faux

ERRECRIT :
Info("Il est impossible d'crire"...
"dans + le fichier "+NomFichier)
RENVOYER Faux
POUR Indice = 1 A 10
EtiqReprise : Res ++
FIN
GOTO EtiqReprise
POUR Indice = 1 A 10
Tableau[Indice] = MaVariable + 10
FIN
POUR <Variable de contrle> = <Valeur
initiale> A <Valeur finale> [PAS <x>]
...
WLangage.book Page 77 Mardi, 23. avril 2013 1:59 13
78 Partie 2 : Syntaxe de base du WLangage
Dans ce cas, la variable de contrle est automati-
quement incrmente.
4.1.4 Instruction POUR TOUT / POUR TOUS,
parcours de fichiers de donnes
L'instruction POUR TOUT permet d'effectuer diff-
rents types de parcours HyperFileSQL :
parcours complet,
parcours complet selon une cl spcifie,
parcours avec filtre,
parcours avec filtre selon une cl spcifie,
parcours avec filtre sur la cl de parcours.
Remarque : Les instructions POUR TOUT et POUR
TOUS sont acceptes. Dans cette documentation,
seule l'instruction POUR TOUT est utilise et peut
tre remplace par POUR TOUS ou POUR CHAQUE.
Syntaxe
Parcours complet
POUR TOUT <Fichier> [<Sens>]
...
FIN
Remarque : La cl de parcours est dtermine
automatiquement par le moteur HyperFileSQL.
Parcours complet selon une cl spcifie
POUR TOUT <Fichier> SUR <Rubrique cl>
[<Sens>]
...
FIN
Parcours avec filtre
POUR TOUT <Fichier> AVEC "<1re Condition>
[ET/OU/PAS <2me Condition>
[ET/OU/PAS...<Nme Condition>]]" [<Sens>]
...
FIN
Remarque : La cl de parcours est dtermine
automatiquement par le moteur HyperFileSQL.
Parcours avec filtre selon une cl spcifie
POUR TOUT <Fichier> AVEC "<1re Condition>
[ET/OU/PAS <2me Condition>
[ET/OU/PAS...<Nme Condition>]]" [<Sens>]
SUR <Rubrique cl>
...
FIN
Parcours avec slection sur la cl de parcours
1. Filtre de comparaison par rapport une valeur
POUR TOUT <Fichier> AVEC ...
<Rubrique cl> [=][<=][>=] <Valeur>
[<Sens>]
...
FIN
2. Filtre de comparaison par rapport un inter-
valle de valeurs
POUR TOUT <Fichier> AVEC <Rubrique cl> = ...
<Valeur Minimale> A <Valeur Maximale>
[<Sens>]
...
FIN
ou
SI <Condition> ALORS CONTINUER
// Retour au mot-cl POUR
...
FIN
POUR TOUT Client
// Ajout des clients dans la liste
ListeAjoute(ListeClient,...
Client.NumClient)
FIN
POUR TOUT Client SUR NumClient
// Ajout des clients dans la liste
ListeAjoute(ListeClient,...
Client.NumClient)
FIN
POUR TOUT Client AVEC ...
"VilleClient = 'Boston'"
ListeAjoute(ListeClient,...
Client.NumClient)
FIN
Ville = "Paris"
POUR TOUT Client AVEC ...
"VilleClient = '"+Ville+...
"' et AgeClient >= 21"
// Ajout des clients dans la liste
ListeAjoute(ListeClient,...
Client.NumClient)
FIN
POUR TOUT Client AVEC ...
"VilleClient = "+...
"'Boston'" SUR NumClient
// Ajout des clients dans la liste
ListeAjoute(ListeClient,...
Client.NumClient)
FINVille = "Paris"
POUR TOUT Client AVEC ...
"VilleClient = "+...
"'"+Ville+"' et AgeClient >= 21"...
SUR NumClient
// Ajout des clients dans la liste
ListeAjoute(ListeClient, ...
Client.NumClient)
FIN
WLangage.book Page 78 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 79
POUR TOUT <Fichier> AVEC ...
<Valeur Minimale> <= <Rubrique cl> <= ...
<Valeur Max> [<Sens>]
...
FIN
Parcours avec recherche gnrique "Commence
par"
POUR TOUT <Fichier> AVEC <Rubrique cl>
[= ...
<Dbut de la valeur recherche> [<Sens>]
...
FIN
Code excuter
Le code excuter est plac entre les instructions
POUR TOUT et FIN.
Filtre (syntaxes 2)
La syntaxe gnrale d'un filtre a la forme suivante :
"<Nom de la rubrique> <Oprateurs> <Valeur de
la rubrique>"
Par exemple :
Les oprateurs accepts sont variables en fonction
du type des rubriques utilises dans la condition :
Remarques :
Les chanes constantes doivent tre encadres
de simples quotes. Par exemple : "NomClient =
'"+Client+"'"
Le <Nom de la rubrique> ne doit comporter que
des lettres, des chiffres et des caractres souli-
gns ("_"). Si le <Nom de la rubrique> contient
d'autres caractres (apostrophe, ...), le nom de la
rubrique doit tre entour de doubles quotes. Par
exemple : "e_mail@"]'fr'
Les comparaisons entre chanes se font en fonc-
tion de la valeur ASCII des caractres et non pas
dune faon lexicographique ('a' > 'Z').
Les mmos binaires et les cls composes ne
peuvent pas faire partie d'une <Valeur de la rubri-
que>.
Si une <Valeur de la rubrique> contient une sim-
ple quote (ou une double quote), il faut faire pr-
cder cette simple quote (ou double quote) par
un anti-slash.
// Comparaison par rapport une
// valeur
POUR TOUT Client AVEC ...
NomClient = "Dupont"
// Ajout des clients dans la liste
ListeAjoute(ListeClient,...
Client.NomClient)
FIN
// Comparaison par rapport une
// valeur
POUR TOUT Commande AVEC ...
DateCommande <= "31/12/2003"
// Ajout des commandes dans la liste
ListeAjoute(ListeCde, ...
Commande.NumCommande)
FIN
// Comparaison par rapport une
// liste de valeurs
POUR TOUT Commande AVEC ...
DateCommande = ...
"01/01/2003" A "31/12/2003"
// Ajout des commandes dans la liste
ListeAjoute(ListeCde,...
Commande.NumCommande)
FIN
// Comparaison par rapport un
// intervalle de valeurs
POUR TOUT Commande AVEC ...
"01/01/2003" ...
<= DateCommande <= "31/12/2003"
// Ajout des commandes dans la liste
ListeAjoute(ListeCde, ...
Commande.NumCommande)
FIN
POUR TOUT Client AVEC ...
NomClient [= "Du"
// Ajout des clients dans la liste
ListeAjoute(ListeClient,...
Client.NumClient)
FIN
"NomClient > 'Dupont' et ...
CodePos = 34 ou AgeClient >= 32"
<> Diffrent Valable pour tous les types
> Plus grand Valable pour tous les types
>= Plus grand ou
gal
Valable pour tous les types
< Plus petit Valable pour tous les types
<= Plus petit ou
gal
Valable pour tous les types
= Strictement gal Valable pour tous les types
~= Environ gal Valable pour les types
"chane" uniquement
] Contient Valable pour les types
"chane" uniquement
]= Commence par Valable pour les types
"chane" uniquement
WLangage.book Page 79 Mardi, 23. avril 2013 1:59 13
80 Partie 2 : Syntaxe de base du WLangage
Sortir d'une boucle de type POUR TOUT
Plusieurs instructions sont possibles :
RETOUR : Sortie de la boucle POUR TOUT et sor-
tie du traitement (ou de la procdure) en cours.
RENVOYER : Renvoi d'un compte rendu au traite-
ment appelant. Sortie de la boucle POUR TOUT et
sortie du traitement (ou de la procdure) en
cours.
SORTIR : Sortie de la boucle POUR TOUT et ex-
cution de la suite du traitement en cours.
La fonction Ferme permet de sortir de la boucle
POUR TOUT et de fermer la fentre en cours.
Attention : Il n'est pas possible d'utiliser les instruc-
tions RETOUR et RENVOYER dans un mme traite-
ment.
Comportement du parcours automatique des
fichiers en fonction du mode de sortie de la boucle
Le parcours automatique des fichiers de donnes a
un comportement diffrent sil se termine automa-
tiquement ou si la sortie est effectue par les ins-
tructions SORTIR, RETOUR, Ferme,
Si le parcours se termine automatiquement :
la position du fichier de donnes avant le par-
cours est restaure.
l'ventuel filtre ncessaire au parcours est dsac-
tiv.
Si le parcours est interrompu (instructions SORTIR,
RETOUR, RENVOYER, Ferme, ) :
la position du fichier de donnes avant le par-
cours n'est pas restaure.
l'ventuel filtre ncessaire au parcours n'est pas
dsactiv. Il doit tre dsactiv manuellement
(fonction HDsactiveFiltre).
Excution de l'itration suivante
Pour excuter directement l'itration suivante sans
terminer le code de l'itration en cours, utilisez
l'instruction CONTINUER :
4.1.5 Instruction POUR TOUT / POUR TOUS,
parcours de chanes
L'instruction POUR TOUT permet d'effectuer diff-
rents types de parcours de chanes :
parcours des sous-chanes spares par un
sparateur.
Parcours des occurrences d'une chane dans une
autre
Remarque : Les instructions POUR TOUT et POUR
TOUS sont acceptes. Dans cette documentation,
seule l'instruction POUR TOUT est utilise et peut
tre remplace par POUR TOUS ou POUR CHAQUE.
Syntaxe
Parcours des sous-chanes spares par un spa-
rateur
POUR TOUTE CHANE <Sous-chane> DE ...
<Chane initiale> ...
[SEPAREE PAR <Sparateur>] [<Sens>]
...
FIN
Cette syntaxe permet de parcourir toutes les sous-
chanes de la chane <Chane initiale> spares par
le sparateur <Sparateur>. Si <Chane initiale>
correspond une chane vide, le parcours n'est pas
effectu.
A chaque itration, la variable <Sous-chane> est
renseigne avec la sous-chane en cours.
Le comportement est indtermin si la chane ini-
tiale ou le sparateur est modifi lors du parcours.
Remarque : Si <Chane initiale> se termine par le
sparateur, <Sous-Chane> renvoie une chane vide
la fin. Dans le cas contraire, <Sous-Chane> cor-
respond au dernier lment extrait.
Parcours des occurrences dune chane dans une
autre chane
1. Sans option
POUR TOUTE POSITION <Position> DE <Recher-
che>...
DANS <Chane initiale> [<Sens>]
...
FIN
POUR TOUT <Fichier> SUR <Rubrique
cl>
...
SI <Condition> ALORS CONTINUER
// Retour au mot-cl POUR TOUT
// Passage l'enregistrement
// suivant
...
FIN
// Rcupre la liste des librairies
// charges en mmoire
ListeLibrairie est une chane
ListeLibrairie = ListeDLL()
UneLibrairie est une chane
// Pour chaque librairie
POUR TOUTE CHANE UneLibrairie ...
DE ListeLibrairie SEPAREE PAR RC
WLangage.book Page 80 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 81
Cette syntaxe permet de parcourir toutes les posi-
tions de la sous-chane <Recherche> dans la
chane <Chane initiale>.
A chaque itration, la variable <Position> est ren-
seigne avec la position de la sous-chane en
cours.
Le comportement est indtermin si la chane ini-
tiale ou la chane recherche est modifie lors du
parcours.
2. Avec option
POUR TOUTE POSITION <Position> DE <Recher-
che>...
DANS <Chane initiale> AVEC <Options>
...
FIN
Cette syntaxe parcourt toutes les positions de la
sous-chane <Recherche> dans la chane <Chane
initiale>.
A chaque itration, la variable <Position> est ren-
seigne avec la position de la sous-chane en
cours.
Le comportement est indtermin si la chane ini-
tiale ou la chane recherche est modifie lors du
parcours.
Code excuter
Le code excuter est plac entre les instructions
POUR TOUT et FIN.
Parcours de chanes et UNICODE
Les paramtres <Sous-chane>, <Chane initiale>,
<Sparateur> et <Recherche> peuvent tous
correspondre :
soit des chanes ANSI.
soit des chanes UNICODE.
Cependant, il n'est pas possible d'utiliser des cha-
nes ANSI et des chanes UNICODE dans la mme
syntaxe.
4.1.6 Instruction POUR TOUT / POUR TOUS,
parcours de champs
L'instruction POUR TOUT permet d'effectuer diff-
rents types de parcours de champs (listes, tables,
zones rptes) :
Parcours des lments du champ.
Parcours des valeurs des lments slectionns.
Parcours des indices des lments slectionns.
Remarque : Les instructions POUR TOUT et POUR
TOUS sont acceptes. Dans cette documentation,
seule l'instruction POUR TOUT est utilise et peut
tre remplace par POUR TOUS ou POUR CHAQUE.
Syntaxe
Parcours des lments dun champ
POUR TOUTE LIGNE DE <Champ>
...
FIN
Cette syntaxe permet de parcourir toutes les lignes
d'un champ Liste, table ou zone rpte.
Pour chaque ligne parcourue :
<Nom du champ> renvoie l'indice de la ligne en
cours.
<Nom du champ>[<Nom du champ>] renvoie tou-
tes les colonnes spares par des TAB.
<Nom de la colonne> renvoie la valeur de la
colonne pour la ligne en cours de parcours.
Le parcours n'a aucune influence sur la slection
courante.
Le comportement est indtermin si le nombre
d'lments du champ est modifi pendant la bou-
cle de parcours.
Remarque : Lors du parcours des lignes d'une
table, l'affichage de cette table est bloqu. La fonc-
tion MultitcheRepeint n'est pas prise en compte.
// Le fichier "C:\Exports.TXT"
// contient la liste des produits
// exports spars par des ";"
// Rcupration de chaque produit
ProduitExport est une chane
ProduitExport = fChargeTexte(...
"C:\Exports.TXT")
AncPosition est un entier
PosActuelle est un entier
// Pour chaque produit
POUR TOUTE POSITION PosActuelle ...
DE ";" DANS ProduitExport
// Ajoute le produit dans la
// liste ListeProduit
ListeAjoute(ListeProduit, ...
ProduitExport[[AncPosition ...
+ 1 A PosActuelle - 1]]
// Mmorisation de la position
// AncPosition = PosActuelle
FIN
// Pour chaque utilisateur list
// dans la liste ListeUtilisateur
POUR TOUTE LIGNE DE ListeUtilisateur
// Envoi d'un email
//EnvoieMessage(ColNom, ColEdmail)
FIN
WLangage.book Page 81 Mardi, 23. avril 2013 1:59 13
82 Partie 2 : Syntaxe de base du WLangage
Parcours des lments slectionns dans un
champ
POUR TOUTE LIGNE SELECTIONNEE DE <Champ>
...
FIN
Cette syntaxe permet de parcourir toutes les lignes
slectionnes d'un champ Liste, table ou zone
rpte.
Pour chaque ligne parcourue :
<Nom du champ> renvoie l'indice de la ligne en
cours.
<Nom du champ>[<Nom du champ> renvoie tou-
tes les colonnes spares par des TAB.
<Nom de la colonne> renvoie la valeur de la
colonne pour la ligne en cours de parcours.
Le parcours n'a aucune influence sur la slection
courante.
Le comportement est indtermin si le nombre
d'lments du champ est modifi pendant la bou-
cle de parcours.
Parcours des indices des lments slectionns
POUR TOUTE LIGNE SELECTIONNEE <Indice> ...
DE <Champ>
...
FIN
Cette syntaxe permet de parcourir toutes les lignes
slectionnes d'un champ Liste, table ou zone
rpte.
Pour chaque ligne parcourue, la variable <Indice>
renvoie l'indice de la ligne slectionne en cours.
Pour accder une valeur particulire d'une
colonne, utilisez la syntaxe <Colonne>[<Indice>]
La ligne courante de la table est toujours dplace
pendant le parcours.
Le comportement est indtermin si le nombre
d'lments du champ est modifi pendant la bou-
cle de parcours.
Parcours des lignes dune table
Lors du parcours des lignes d'une table :
l'affichage de cette table est bloqu. La fonction
MultitcheRepeint n'est pas prise en compte.
il ne faut pas modifier la ou les lignes slection-
nes et/ou la ligne en cours (fonction TableSe-
lectMoins, TableSelectPlus, ...).
dans le cas d'une table fichier, dans la boucle de
parcours, l'enregistrement en cours est l'enregis-
trement trait par le parcours.
4.1.7 Instruction POUR TOUT / POUR TOUS,
parcours de tableaux
L'instruction POUR TOUT permet d'effectuer diff-
rents types de parcours de tableaux :
Parcours des lments du tableau.
Parcours des valeurs des lments du tableau.
Remarque : Les instructions POUR TOUT et POUR
TOUS sont acceptes. Dans cette documentation,
seule l'instruction POUR TOUT est utilise et peut
tre remplace par POUR TOUS ou POUR CHAQUE.
Syntaxe
Parcours des lments dun tableau
POUR TOUT ELEMENT <Variable> DE ...
<Tableau> [<Sens>]
...
FIN
A chaque itration, la variable <Variable> fait direc-
tement rfrence l'lment courant dans le
tableau. Si la valeur de <Variable> est modifie,
l'lment courant dans le tableau est modifi.
En sortie de boucle (Fin normale ou instruction
SORTIR), la valeur de <Variable> est affecte avec
celle du dernier lment parcouru, mais <Variable>
ne fait plus directement rfrence l'lment dans
le tableau.
Tous les types de tableaux sont disponibles : auto-
matiques, fixes, dynamiques.
Les tableaux peuvent avoir plusieurs dimensions.
Le comportement est indtermin si le nombre
d'lments est modifi dans la boucle de parcours.
// Pour chaque utilisateur
// slectionn dans la table
// TableUtilisateur
POUR TOUTE LIGNE SELECTIONNEE DE ...
TableUtilisateur
// Envoi d'un email
EnvoieMessage(ColNom, ColEdmail)
FIN
// Parcourir les lments d'un
// tableau de rels pour calculer
// la somme
// Remplissage du tableau
TabCalcul est un tableau de 3 rels
TabCalcul[1] = 12.5
TabCalcul[2] = 10
TabCalcul[3] = 7.5
// Calcul de la somme
// UnElment est un rel
// SommeTotal est un rel
POUR TOUT ELEMENT UnElment DE ...
TabCalcul SommeTotal += UnElment
FIN
WLangage.book Page 82 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 83
Parcours des valeurs des lments dun tableau
POUR TOUT ELEMENT (<Valeur>) DE
<Tableau> [<Sens>]
...
FIN
A chaque itration, la variable <Valeur> est affecte
avec la valeur de l'lment parcouru. Si la valeur de
<Valeur> est modifie, l'lment courant dans le
tableau n'est pas modifi.
Tous les types de tableaux sont disponibles : auto-
matiques, fixes, dynamiques.
Les tableaux peuvent avoir plusieurs dimensions.
Le comportement est indtermin si le nombre
d'lments est modifi dans la boucle de parcours.
4.1.8 Instruction POUR TOUT / POUR TOUS,
parcours de tableaux associatifs
L'instruction POUR TOUT permet deffectuer diff-
rents types de parcours de tableaux associatifs :
Parcours des lments du tableau associatif.
Parcours des valeurs des lments du tableau
associatif.
Parcours des lments "cl" du tableau associa-
tif.
Remarque : Les instructions POUR TOUT et POUR
TOUS sont acceptes. Dans cette documentation,
seule l'instruction POUR TOUT est utilise et peut
tre remplace par POUR TOUS ou POUR CHAQUE.
Syntaxe
Parcours des lments dun tableau
POUR TOUT ELEMENT <Variable> DE ...
<Tableau> [<Sens>]
...
FIN
A chaque itration, la variable <Variable> fait direc-
tement rfrence l'lment courant dans le
tableau. Si la valeur de <Variable> est modifie,
l'lment courant dans le tableau est modifi.
En sortie de boucle (Fin normale ou instruction
SORTIR), la valeur de <Variable> est affecte avec
celle du dernier lment parcouru, mais <Variable>
ne fait plus directement rfrence l'lment dans
le tableau.
Parcours des lments dun tableau selon la cl
dindexation
POUR TOUT ELEMENT <Variable>, <VariableCl>
DE
<Tableau> [<Sens>]
...
FIN
A chaque itration :
la variable <Variable> fait directement rfrence
llment courant dans le tableau. Si la valeur
de <Variable> est modifie, l'lment courant
dans le tableau est modifi.
la variable <VariableCl> contient la valeur de la
cl de llment. Cette valeur est en lecture uni-
quement et ne peut pas tre modifie.
En sortie de boucle (Fin normale ou instruction
SORTIR), la valeur de <Variable> est affecte avec
celle du dernier lment parcouru, mais <Variable>
ne fait plus directement rfrence l'lment dans
le tableau.
Parcours des lments <cl > du tableau
POUR TOUT ELEMENT <Variable> DE <Tableau> =
<Cl> [<Sens>]
...
FIN
Cette syntaxe parcourt tous les lments du
tableau ayant la valeur <Cl> spcifie. A chaque
itration, la variable <Variable> fait directement
rfrence l'lment courant dans le tableau. Si la
valeur de <Variable> est modifie, l'lment cou-
rant dans le tableau est modifi.
Cette syntaxe est utile dans le cas des parcours de
tableaux associatifs avec doublons. En effet, dans
un tableau associatif sans doublon, le nombre
d'lments parcourus peut tre 0 ou 1. Dans un
tableau associatif avec doublons, le nombre d'l-
ments parcourus peut tre 0 ou N.
// Dclaration d'un
// tableau associatif d'entiers
// Tableau index sur des chanes
// et sans doublon
taIDParClient est un tableau ...
associatif d'entiers
taIDParClient["A"] = 55
// ajout de l'id du client "A"
taIDParClient["B"] = 321
// ajout de l'id du client "B"
taIDParClient["A"] = 56
// modification de l'id du client "A"
// nIdentifiant est un entier
// parcours de tous les identifiants
// 56
// 321
POUR TOUT ELEMENT nIdentifiant ...
DE taIDParClient ...
Trace(nIdentifiant)
FIN
WLangage.book Page 83 Mardi, 23. avril 2013 1:59 13
84 Partie 2 : Syntaxe de base du WLangage
Les lments du tableau sont parcourus dans
l'ordre des ajouts (pas d'option de sens de par-
cours).
En sortie de boucle (Fin normale ou instruction
SORTIR), la valeur de <Variable> est affecte avec
celle du dernier lment parcouru, mais <Variable>
ne fait plus directement rfrence l'lment dans
le tableau.
Parcours des valeurs des lments <cl > du
tableau selon la cl dindexation
POUR TOUT ELEMENT <Variable> , <VariableCl>
DE <Tableau> = <Cl> [<Sens>]
...
FIN
Cette syntaxe parcourt tous les lments du
tableau ayant la valeur <Cl> spcifie.
A chaque itration :
la variable <Variable> fait directement rfrence
l'lment courant dans le tableau. Si la valeur
de <Variable> est modifie, l'lment courant
dans le tableau est modifi.
la variable <VariableCl> contient la valeur de la
cl de l'lment. Cette valeur est en lecture uni-
quement et ne peut pas tre modifie.
Cette syntaxe est utile dans le cas des parcours de
tableaux associatifs avec doublons. En effet, dans
un tableau associatif sans doublon, le nombre
d'lments parcourus peut tre 0 ou 1. Dans un
tableau associatif avec doublons, le nombre d'l-
ments parcourus peut tre 0 ou N.
Les lments du tableau sont parcourus dans
l'ordre des ajouts (pas d'option de sens de par-
cours).
En sortie de boucle (Fin normale ou instruction
SORTIR), la valeur de <Variable> est affecte avec
celle du dernier lment parcouru, mais <Variable>
ne fait plus directement rfrence l'lment dans
le tableau.
4.1.9 Instruction SELON
L'instruction conditionnelle SELON permet de choi-
sir d'excuter une action ou une autre en fonction
de la valeur d'une expression.
Syntaxe
SELON <Variable de comparaison>
Cas <Expression1> : <Action1>
Cas <Expression2> :
<Action2.1>
<Action2.2>
Cas <Expression3>
<Action3>
Cas <Expression4>, <Expression5> : <Action4>
Cas <Expression6>, <Expression7> :
<Action5>
Cas <Expression8>, <Expression9>
<Action6>
Cas <Expression Min> A : <Action7>
Cas A <Expression Max> : <Action8>
Cas <Expression Min> A <Expression Max> :
<Action9>
Cas = <Expression> : <Action10>
Cas ~ = <Expression> : <Action11>
Cas ~~ <Expression> : <Action12>
Cas [= <Expression> : <Action13>
Cas > <Expression> : <Action14>
Cas >= <Expression> : <Action15>
Cas < <Expression> : <Action16>
Cas <= <Expression> : <Action17>
Cas <Expression Min> <= * <= <Expression
Max> :
<Action18>
Cas <Expression Min> < * <= <Expression Max>
:
<Action19>
Cas <Expression Min> <= * < <Expression Max>
:
<Action20>
Cas <Expression Min> < * < <Expression Max>
:
<Action21>
...
[ AUTRE[S] CAS : <Action autre(s) cas>
OU
AUTRE[S] CAS :
<Action autre(s) cas>
OU
AUTRE[S] CAS
<Action autre(s) cas> ]
FIN
Mot-cl AUTRE CAS
AUTRE CAS doit tre la dernire instruction utilise
dans l'instruction conditionnelle SELON.
Instruction SORTIR SELON
Linstruction SORTIR SELON permet de sortir dune
instruction SELON et dexcuter la suite du traite-
ment en cours.
SELON Quantit
CAS 1 : Comment = "Promotions"
CAS 2 : Comment = "Vous en "+...
"achetez deux "+...
"et nen payez qu'un seul"
AUTRE CAS : Comment = ""
FIN
WLangage.book Page 84 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 85
4.1.10 Instruction SI
L'instruction conditionnelle SI permet de choisir
d'excuter une action ou une autre en fonction
d'une condition.
Syntaxe
Syntaxe 1
SI <Condition> ALORS
<Action si condition vraie>
[SINON
<Action si condition fausse> ]
FIN
Syntaxe 2
SI <Condition> ALORS
<Action si condition vraie>
[SINON <Action si condition fausse> ]
Syntaxe 3
SI <Condition> ALORS <Action si condition
vraie>
[SINON
<Action si condition fausse> ]
FIN
Syntaxe 4
SI <Condition> ALORS <Action si condition
vraie> [SINON <Action si condition fausse>]
Syntaxe 5
SI <Condition 1> ALORS
<Action si condition 1 vraie>
[SINON SI <Condition 2> ALORS
<Action si condition 2 vraie>
[SINON SI <Condition 3> ALORS
<Action si condition 3 vraie>
[...]]]
FIN
Condition
Le paramtre <Condition> peut tre de la forme :
<Valeur> = <Expression>
<Valeur> < <Expression>
<Valeur> <= <Expression>
<Valeur> > <Expression>
<Valeur> >= <Expression>
<Valeur> = <Expression Min> A <Expression
Max>
<Expression Min> <= <Valeur> <= <Expression
Max>
<Valeur> DANS (<Expression 1>, <Expression
2>, ... , <Expression N>)
Remarque : Dans ce cas-l, toutes les expres-
sions sont vrifies.
<Valeur> _DANS_ (<Expression 1>, <Expression
2>, ... , <Expression N>)
Remarque : Dans ce cas-l, ds quune expres-
sion est fausse, les expressions suivantes ne
sont pas vrifies.
Condition compose
Les mots-cls ET et OU permettent d'effectuer des
oprations logiques et de construire des conditions
composes.
Les conditions composes de ET et OU sont va-
lues dans leur totalit. Par exemple :
A > 10 ET B < 20
Si la premire condition (A > 10) est fausse, la
deuxime condition (B < 20) sera tout de mme
vrifie.
Pour optimiser lvaluation des conditions compo-
ses, utilisez les mots-cls _ET_ et _OU_. Ainsi, si la
premire condition (A > 10) est fausse, la deuxime
condition (B < 20) ne sera pas vrifie.
SINON sans SI
Le mot-cl SINON ne peut pas tre utilis sans l'ins-
truction conditionnelle SI correspondante.
4.1.11 Instruction TANTQUE
Dans une instruction TANTQUE, l'expression est
value chaque dbut du bloc d'instructions.
Tant que l'expression de condition est vraie, le trai-
tement boucle.
SI Client.Age > 60 ALORS...
PersonneAge += 1
SINON SI Client.Age > 18 ALORS...
PersonneAdulte += 1
SINON SI Client.Age > 4 ALORS...
PersonneEnfant += 1
SINON PersonneBb += 1
FIN
SI Client.Ville = "Boston" ...
ET Client.Civilit = "Monsieur"
ALORS HommeBoston ++
// Nombre d'hommes habitant
// Boston
FIN
SI Client.Ville = "Boston"...
OU Client.Ville = "Miami" ALORS
BostonMiami ++
// Nombre de clients habitant soit
// Boston, soit Miami
FIN
WLangage.book Page 85 Mardi, 23. avril 2013 1:59 13
86 Partie 2 : Syntaxe de base du WLangage
Il y a sortie du bloc d'instructions lorsque l'expres-
sion de condition est fausse.
Syntaxe
TANTQUE <Condition>
<Action si condition vraie>
FIN
Code excuter
Le code excuter est plac entre les instructions
TANTQUE et FIN.
Sortir d'une boucle de type TANTQUE
Plusieurs instructions sont possibles :
RETOUR : Sortie de la boucle TANTQUE et sortie
du traitement (ou de la procdure) en cours.
RENVOYER : Renvoi d'un compte rendu au traite-
ment appelant. Sortie de la boucle TANTQUE et
sortie du traitement (ou de la procdure) en
cours.
SORTIR : Sortie de la boucle TANTQUE et excu-
tion de la suite du traitement en cours.
La fonction Ferme permet de sortir de la boucle
TANTQUE et de fermer la fentre en cours.
Attention : Il n'est pas possible d'utiliser les instruc-
tions RETOUR et RENVOYER dans un mme traite-
ment.
Boucle sans fin
Lors de la compilation du projet, une instruction
TANTQUE sans fin vidente (absence des instruc-
tions SORTIR, RETOUR ou RENVOYER) est signale
par un warning.
Excution de l'itration suivante
Pour excuter directement l'itration suivante sans
terminer le code de l'itration en cours, utilisez
l'instruction Continuer :
Condition compose
Les mots-cls ET et OU permettent d'effectuer des
oprations logiques et de construire des conditions
composes. Par exemple :
Les conditions composes de ET et OU sont va-
lues dans leur totalit. Par exemple :
A > 10 ET B < 20
Si la premire condition (A > 10) est fausse, la
deuxime condition (B < 20) sera tout de mme
vrifie.
Pour optimiser lvaluation des conditions compo-
ses, utilisez les mots-cls _ET_ et _OU_. Ainsi, si la
premire condition (A > 10) est fausse, la deuxime
condition (B < 20) ne sera pas vrifie.
4.2 Instructions simples
Les diffrentes instructions simples sont les
suivantes :
CONTINUER : Retour direct au dbut de la pro-
chaine itration sans terminer le code de l'itra-
tion en cours
RENVOYER : Sortie du traitement (ou de la proc-
dure) en cours en renvoyant un compte rendu
RETOUR : Sortie d'un bloc d'instructions et sortie
du traitement (ou de la procdure) en cours
SORTIR : Sortie d'un bloc d'instructions et excu-
tion de la suite du traitement en cours
Liste = INILit("Exemples",...
"","",FichierIni)
MotCle = ExtraitChane(Liste,nb,RC)
TANTQUE MotCl <> ""
nb = nb + 1
NomExpl = INILit(...
"Projets installs",...
MotCle,"",FichierIni)
MotCl = ExtraitChane(Liste,...
Nb+1,RC)
FIN
TANTQUE <Condition>
...
SI <Condition> ALORS CONTINUER
// Retour au mot-cl TANTQUE
...
FIN
TANTQUE Prix < 100 ET ...
TypeProduit = "AA" ...
NbreProduit ++
// Nombre de produits dont le prix
// est infrieur
// 100 et dont le type est "AA"
FIN
TANTQUE Prix < 100 OU Prix > 500
NbreProduit ++
// Nombre de produits dont le prix
// est compris entre 100 et 500
FIN
WLangage.book Page 86 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 87
4.2.1 Instruction CONTINUER
L'instruction CONTINUER permet de retourner
directement au dbut de la prochaine itration
sans terminer le code de l'itration en cours.
L'instruction CONTINUER peut tre utilise dans les
boucles de type :
POUR.
POUR TOUT.
BOUCLE.
TANTQUE.
Syntaxe
Instruction POUR
POUR <Variable de contrle> = <Valeur ini-
tiale> A <Valeur finale> [PAS <x>]
...
SI <Condition> ALORS CONTINUER
...
FIN
Si la <Condition> est vrifie :
Le code suivant l'instruction CONTINUER n'est
pas excut.
La boucle est excute directement depuis le
dbut de l'instruction POUR.
La <Variable de contrle> est incrmente.
Instruction POUR TOUT
POUR TOUT <Fichier> SUR <Rubrique cl>
...
SI <Condition> ALORS CONTINUER
...
FIN
Si la <Condition> est vrifie :
Le code suivant l'instruction CONTINUER n'est
pas excut.
La boucle est excute directement depuis le
dbut de l'instruction POUR TOUT.
Le passage l'enregistrement suivant est auto-
matique.
Instruction BOUCLE
BOUCLE
...
SI <Condition> ALORS CONTINUER
...
FIN
Si la <Condition> est vrifie :
Le code suivant l'instruction CONTINUER n'est
pas excut.
La boucle est excute directement depuis le
dbut de l'instruction BOUCLE.
Instruction TANTQUE
TANTQUE <Condition 1>
...
SI <Condition 2> ALORS CONTINUER
...
FIN
Si la <Condition 2> est vrifie :
Le code suivant l'instruction CONTINUER n'est
pas excut.
La boucle est excute directement depuis le
dbut de l'instruction TANTQUE.
4.2.2 Instruction RETOUR
L'instruction RETOUR permet de sortir d'un bloc
d'instructions et de sortir du traitement (ou de la
procdure) en cours.
L'instruction RETOUR peut tre utilise dans :
une procdure.
une boucle de type POUR.
une boucle de type POUR TOUT.
une boucle de type BOUCLE.
une boucle de type TANTQUE.
Syntaxe
Procdure
Procdure <Nom de la procdure> ([<Param-
tre>])
SI <Condition> ALORS RETOUR
...
FIN
Instruction POUR
POUR <Variable de contrle> = <Valeur ini-
tiale> A <Valeur finale> [PAS <x>]
SI <Condition> ALORS RETOUR
FIN
Instruction POUR TOUT
POUR TOUT <Fichier> SUR <Rubrique cl>
SI <Condition> ALORS RETOUR
FIN
Instruction BOUCLE
BOUCLE
...
SI <Condition> ALORS RETOUR
...
FIN
Instruction TANTQUE
TANTQUE <Condition 1>
...
SI <Condition> ALORS RETOUR
...
FIN
WLangage.book Page 87 Mardi, 23. avril 2013 1:59 13
88 Partie 2 : Syntaxe de base du WLangage
Dans tous les cas, si la <Condition> est vrifie, les
oprations effectues sont les suivantes :
Sortie du bloc d'instructions.
Sortie du traitement (ou de la procdure) en
cours.
Autres instructions permettant de sortir d'une bou-
cle ou d'une procdure
Plusieurs instructions sont possibles :
RENVOYER : Renvoi d'un compte rendu au traite-
ment appelant. Sortie de la boucle et sortie du
traitement (ou de la procdure) en cours.
SORTIR : Sortie de la boucle et excution de la
suite du traitement (ou de la procdure) en cours.
La fonction Ferme permet de sortir de la boucle (ou
de la procdure) et de fermer la fentre en cours.
Attention : Il n'est pas possible d'utiliser les instruc-
tions RETOUR et RENVOYER dans un mme traite-
ment.
4.2.3 Instruction RENVOYER
L'instruction RENVOYER permet de sortir du traite-
ment (ou de la procdure) en cours en renvoyant un
compte rendu.
L'instruction RENVOYER peut tre utilise dans :
une procdure.
une boucle de type POUR.
une boucle de type POUR TOUT.
une boucle de type BOUCLE.
une boucle de type TANTQUE.
Syntaxe
Procdure
Procdure <Nom de la procdure> ([<Param-
tre>])
SI <Condition> ALORS
RENVOYER <Valeur renvoyer>
SINON
RENVOYER <Valeur renvoyer>
FIN
Instruction POUR
POUR <Variable de contrle> = <Valeur ini-
tiale> A <Valeur finale> [PAS <x>]
SI <Condition> ALORS RENVOYER <Valeur>
FIN
Instruction POUR TOUT
POUR TOUT <Fichier> SUR <Rubrique cl>
...
SI <Condition> ALORS RENVOYER <Valeur>
FIN
Instruction BOUCLE
BOUCLE
...
SI <Condition> ALORS RENVOYER <Valeur ren-
voyer>
...
FIN
Instruction TANTQUE
TANTQUE <Condition 1>
...
SI <Condition> ALORS RENVOYER <Valeur>
...
FIN
Dans tous les cas, si la <Condition> est vrifie, les
oprations effectues sont :
Renvoi d'un compte rendu au traitement appe-
lant.
Sortie du bloc d'instructions.
Sortie du traitement (ou de la procdure) en
cours.
Autres instructions permettant de sortir d'une bou-
cle ou d'une procdure
Plusieurs instructions sont possibles :
RETOUR : Sortie de la boucle et sortie du traite-
ment (ou de la procdure) en cours.
SORTIR : Sortie de la boucle et excution de la
suite du traitement (ou de la procdure) en cours.
La fonction Ferme permet de sortir de la boucle (ou
de la procdure) et de fermer la fentre ou la page
en cours.
Attention : Il n'est pas possible d'utiliser les instruc-
tions RETOUR et RENVOYER dans un mme traite-
ment.
4.2.4 Instruction SORTIR
L'instruction SORTIR permet de sortir d'un bloc
d'instructions et d'excuter la suite du traitement
en cours.
L'instruction SORTIR peut tre utilise dans les
boucles de type :
POUR.
POUR TOUT.
BOUCLE.
TANTQUE.
Remarque : L'instruction SORTIR ne peut pas tre
utilise pour sortir d'une procdure. Utilisez les
mots-cls RETOUR ou RENVOYER.
WLangage.book Page 88 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 89
Syntaxe
Instruction POUR
POUR <Variable de contrle> = <Valeur ini-
tiale> A <Valeur finale> [PAS <x>]
...
SI <Condition> ALORS SORTIR
...
FIN
<Suite du traitement>
Instruction POUR TOUT
POUR TOUT <Fichier> SUR <Rubrique cl>
...
SI <Condition> ALORS SORTIR
...
FIN
<Suite du traitement>
Instruction BOUCLE
BOUCLE
...
SI <Condition> ALORS SORTIR
...
FIN
<Suite du traitement>
Instruction TANTQUE
TANTQUE <Condition>
...
SI <Condition> ALORS SORTIR
...
FIN
<Suite du traitement>
Dans tous les cas, si la <Condition> est vrifie, les
oprations effectues sont les suivantes :
Sortie du bloc d'instructions.
Excution de la suite du traitement en cours.
Autres instructions permettant de sortir d'une bou-
cle
Plusieurs instructions sont possibles :
RETOUR : Sortie de la boucle et sortie du traite-
ment (ou de la procdure) en cours.
RENVOYER : Renvoi d'un compte rendu au traite-
ment appelant. Sortie de la boucle et sortie du
traitement (ou de la procdure) en cours.
La fonction Ferme permet de sortir de la boucle et
de fermer la fentre en cours.
Attention : Il n'est pas possible d'utiliser les instruc-
tions RETOUR et RENVOYER dans un mme traite-
ment.
WLangage.book Page 89 Mardi, 23. avril 2013 1:59 13
90 Partie 2 : Syntaxe de base du WLangage
5. MOTS RSERVS
Plusieurs mots du WLangage sont des mots rser-
vs, permettant deffectuer des actions
spcifiques :
5.1 Externe
Le mot-cl EXTERNE permet de :
intgrer un fichier texte contenant du WLangage
dans une application (voir l'utilisation 1).
dclarer un objet externe (voir l'utilisation 2).
Utilisation 1 : Intgrer un fichier texte dans une
application / un site
L'intgration d'un fichier texte avec le mot-cl
EXTERNE est identique une copie du fichier texte
sous l'diteur de code.

Syntaxe
EXTERNE <Nom du fichier>
Le nom du fichier correspond au nom du fichier
texte contenant du code WLangage intgrer dans
lapplication / le site. Ce fichier est un fichier texte
classique, cr sous n'importe quel diteur de
texte.
Il est possible de spcifier un chemin complet (par
exemple : "C:\WDProjet\MesConst.wl"). Si le che-
min n'est pas spcifi, le fichier est recherch
successivement :
dans le rpertoire du projet.
dans le rpertoire "Personnel\Externe" de
WinDev / WebDev.
Inclure des constantes
L'inclusion de fichier est particulirement utile pour
dcrire des constantes communes plusieurs pro-
jets ou utilises par le systme d'exploitation. Utili-
sez le mot-cl EXTERNE pour inclure dans le code
un fichier contenant des constantes communes.
Plusieurs fichiers dfinissant des constantes sont
fournis en standard avec WinDev / WebDev :
WinConst.wl : Constantes standard de Windows.
Limites.wl : Constantes correspondant aux limi-
tes des types de donnes WinDev / WebDev.
ListeDefinitionHF.wl : Constantes HyperFileSQL
utilises pour la journalisation.
Except.wl : Constantes utilises pour la gestion
des exceptions
KeyConst.wl : Constantes standard de Windows
utilises pour les touches du clavier.
Ces constantes peuvent tre utilises avec la
fonction ToucheEnfonce, dans les traitements
optionnels "Touche Enfonce" ou "Touche rel-
che" en utilisant la variable _EVE.wParam.
Utilisation 2 : Dclarer un objet externe
Le mot-cl EXTERNE permet de dclarer une varia-
ble qui existera uniquement lors de l'excution de
l'application / du site.
Par exemple, il est possible dutiliser le mot-cl
EXTERNE pour manipuler une fentre / page pr-
sente dans une bibliothque externe (charge avec
la fonction ChargeWDL).
Syntaxe
EXTERNE <Nom de l'objet externe>
<Nom de lobjet externe> correspond au nom de
l'objet externe (fichier, variable, constante, ...)
dclarer.
Externe MaFentre
MaPage MaSource
Modulo MoiMme
MonChampPopup MonEtat
MonFichier MonParent
STOP
// Intgration du fichier
// "WinConst.wl"
// Constantes standard de Windows
EXTERNE "WinConst.wl"
EXTERNE MaFentre
ChargeWDL("User1.WDL")
Ouvre(MaFentre)
WLangage.book Page 90 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 91
5.2 MaFentre
Le mot-cl MaFentre permet de manipuler la fen-
tre courante. Lors de l'excution de la fentre, le
mot-cl MaFentre est remplac par la fentre et
non par le nom de la fentre. Le mot-cl MaFentre
s'utilise alors comme une fentre.
Intrt : Le mot-cl MaFentre permet de rendre un
code local (champ, bouton, ...) ou global (procdure
globale, classe, ...) indpendant de la fentre en
cours.
Syntaxe
MaFentre
Manipulation de la fentre en cours
Le mot-cl MaFentre est toujours remplac par la
fentre en cours. Par exemple :
Utilisation de la proprit ..Titre
Passage en paramtre :
Le mot-cl MaFentre peut tre utilis uniquement
dans les traitements manipulant la fentre en
cours (par exemple, dans les traitements associs
un champ, une fentre, ...). Il n'est pas possible
d'utiliser le mot-cl MaFentre dans un tat.
Utilisation de MaFentre dans une procdure
Le mot-cl MaFentre peut tre utilis dans une
procdure (locale ou globale) uniquement si la pro-
cdure manipule la fentre en cours. Le mot-cl
MaFentre fait alors rfrence la fentre en
cours.
Dans le cas d'une procdure locale, le mot-cl
MaFentre correspond la fentre laquelle
appartient la procdure.
Fonctions du WLangage et fentre en cours
Pour dsigner la fentre en cours dans les fonc-
tions du WLangage acceptant un nom de fentre
en paramtre, utilisez :
soit une chane vide.
soit directement le mot-cl MaFentre.
5.3 MaPage
Le mot-cl MaPage permet de manipuler la page
courante. Lors de l'excution de la page, le mot-cl
MaPage est remplac par la page et non par le
nom de la page. Le mot-cl MaPage s'utilise alors
comme une page.
Intrt : Le mot-cl MaPage permet de rendre un
code local (champ, bouton, ...) ou global (procdure
globale, classe, ...) indpendant de la page en
cours.
Syntaxe
MaPage
Manipulation de la page en cours
Le mot-cl MaPage est toujours remplac par la
page en cours. Par exemple :
Utilisation de la proprit ..Titre
Passage en paramtre :
Le mot-cl MaPage peut tre utilis uniquement
dans les traitements manipulant la page en cours
(par exemple, dans les traitements associs un
champ, une page, ...). Il n'est pas possible d'utili-
ser le mot-cl MaPage dans un tat.
Utilisation de MaPage dans une procdure
Le mot-cl MaPage peut tre utilis dans une pro-
cdure (locale ou globale) uniquement si la proc-
dure manipule la page en cours. Le mot-cl
MaPage fait alors rfrence la page en cours.
Dans le cas d'une procdure locale, le mot-cl
MaPage correspond la page laquelle appartient
la procdure.
Fonctions du WLangage et page en cours
Pour dsigner la page en cours dans les fonctions
du WLangage acceptant un nom de page en para-
mtre, utilisez :
soit une chane vide.
soit directement le mot-cl MaPage.
// Rcupration du titre de la
// fentre en cours
TitreFentre = MaFentre..Titre
MaFentre..Titre = ...
"Saisissez vos donnes"
TitreEnCours = MaFentre..Titre
AppelProcedure(MaFentre)
// Rcupration du titre de la page
// en cours
TitrePage = MaPage..Titre
MaPage..Titre = ...
"Saisissez vos donnes"
TitreEnCours = MaPage..Titre
AppelProcedure(MaPage)
WLangage.book Page 91 Mardi, 23. avril 2013 1:59 13
92 Partie 2 : Syntaxe de base du WLangage
5.4 MaSource
Le mot-cl MaSource permet de manipuler la
source de donnes (fichier de donnes, vue ou
requte) courante. Lors de l'excution du projet, ce
mot-cl est automatiquement remplac par la
source de donnes en cours.
Intrt : Le mot-cl MaSource permet de :
rendre le code indpendant de la source de don-
nes en cours.
accder la valeur d'une rubrique de l'enregistre-
ment en cours dans la source de donnes en
cours.
rcuprer le nom de la source de donnes pour
effectuer un traitement HyperFileSQL.
Syntaxe
MaSource
Limite
Le mot-cl MaSource est utilisable uniquement
dans les traitements associs :
un tat.
une table fichier.
5.5 Modulo
Retourne le reste d'une division entire.
Remarque : Modulo peut tre utilis aussi bien en
tant que mot-cl ou en tant que fonction du WLan-
gage.
Syntaxe
Fonction Modulo
<Reste de la division> = Modulo ...
(<Dividende>,<Diviseur>)
Mot-cl Modulo
<Reste de la division> = <Dividende> ...
Modulo <Diviseur>
5.6 MoiMme
Le mot-cl MoiMme permet de manipuler le
champ en cours. Lors de l'excution du projet, le
mot-cl MoiMme est remplac par le champ et
non par le nom du champ. Le mot-cl MoiMme
s'utilise alors comme un champ.
Intrt : Le mot-cl MoiMme permet de rendre un
code local (champ, rubrique, ...) ou global (proc-
dure globale, classe, ...) indpendant du champ en
cours. Syntaxe
MoiMme
Manipulation du champ en cours
Le mot-cl MoiMme est toujours remplac par le
champ en cours. Par exemple :
Rcupration de la valeur du champ en cours :
// Rcupration du nom de la source
// de donnes en cours dans l'tat
SourceDonne = MaSource..Nom
// Rcupration du nom du client
// en cours d'impression
SI MaSource.NomCli = "Martin" ALORS
TotalHT..CouleurFond = iRougeClair
FIN
// Rcupration du reste de
// la division
// ResteDivision = Modulo(21,4)
// ResteDivision vaut 1
// quivalent : ResteDivision = 21
Modulo 4
-- chaque modification d'une combo
// Appel de la procdure MasqueMajus
MasqueMajus()
--Procdure MasqueMajus
// Masque 1re lettre maj
// (combo saisie)
Procdure MasqueMajus()
Valeur = MoiMeme
SI Taille(Valeur) > 1 ALORS
PosCurseur = MoiMeme..Curseur
MoiMeme = ...
Majuscule(Valeur[[1]])+...
Minuscule(Valeur[[2 Taille(...
Valeur)]])
MoiMeme..Curseur = PosCurseur
FIN
ValeurChamp = MoiMme
WLangage.book Page 92 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 93
Modification de la valeur du champ en cours :
Utilisation d'une proprit (proprit Libell par
exemple) :
Passage en paramtre :
Si aucun champ n'est en cours, une erreur du
WLangage est gnre.
Utilisation de MoiMme dans une procdure
Le mot-cl MoiMme peut tre utilis dans une pro-
cdure (locale ou globale) uniquement si la proc-
dure est appele dans un traitement associ un
champ. Le mot-cl MoiMme fait alors rfrence
au champ en cours.
Le mot-cl MoiMme permet de rendre une proc-
dure "gnrique" : le nom du champ ne figure pas
en toutes lettres. Cette procdure peut alors tre
appele pour plusieurs champs.
Fonctions du WLangage et champ en cours
Pour dsigner le champ en cours dans les fonctions
du WLangage acceptant un nom de champ en
paramtre, utilisez :
soit une chane vide.
soit directement le mot-cl MoiMme.
5.7 MonChampPopup
Le mot-cl MonChampPopup permet de manipuler
le champ qui a ouvert une fentre popup. En excu-
tion, le mot-cl MonChampPopup est remplac
par :
le champ qui a ouvert la fentre popup (c'est--
dire le champ depuis lequel la fonction OuvrePo-
pup ou OuvrePopupPosition a t appele)
le champ prcis dans la fonction OuvrePopup-
Position si le mode d'affichage poSelonChamp a
t choisi.
Dans tous les cas, le mot-cl MonChampPopup est
remplac en excution par le champ correspondant
et non par le nom du champ. Le mot-cl Mom-
ChampPopup s'utilise alors comme un champ.
Intrt : Le mot-cl MonChampPopup permet de
rendre un code local (champ, bouton, ...) ou global
(procdure globale, classe, ...) indpendant de la
fentre popup en cours.
Syntaxe
MonChampPopup
Manipulation du champ qui a ouvert la fentre
popup
Le mot-cl MonChampPopup est toujours remplac
par le champ qui a ouvert la fentre de type Popup.
Il est donc possible de le manipuler directement
depuis le code de la fentre popup.
Par exemple :
Passage en paramtre
Le mot-cl MonChampPopup peut tre utilis uni-
quement dans les traitements manipulant la fen-
tre popup en cours (par exemple, dans les
traitements associs un champ, ...). Il n'est pas
possible d'utiliser le mot-cl MonChampPopup
dans un tat ou dans une fentre qui n'est pas de
type Popup.
Utilisation de MonChampPopup dans une proc-
dure
Le mot-cl MonChampPopup peut tre utilis dans
une procdure (locale ou globale) uniquement si la
procdure est appele dans un traitement associ
un champ de la fentre popup ou dans un traite-
ment de la fentre popup. Le mot-cl MonChamp-
Popup fait alors rfrence au champ qui a ouvert la
fentre popup.
Le mot-cl MonChampPopup permet de rendre une
procdure "gnrique" : le nom du champ ne figure
pas en toutes lettres. Cette procdure peut alors
tre appele pour plusieurs champs.
Fonctions du WLangage et fentre en cours
Pour dsigner le champ qui a ouvert la fentre
popup en cours dans les fonctions du WLangage
acceptant un nom de champ en paramtre, utilisez
directement le mot-cl MonChampPopup.
MoiMme = "Dupond"
MoiMme..Libell = "Nom des clients"
LibellChamp = MoiMme..Libell
AppelProcedure(MoiMme)
SI MonChampPopup..Type = ...
TypBouton ALORS
MonChampPopup..Libell = ...
"Slection en cours"
FIN
AppelProcedure(MonChampPopup)
WLangage.book Page 93 Mardi, 23. avril 2013 1:59 13
94 Partie 2 : Syntaxe de base du WLangage
5.8 MonEtat
Le mot-cl MonEtat permet de manipuler l'tat cou-
rant. Lors de l'excution du projet, le mot-cl MonE-
tat est remplac par l'tat et non par le nom de
l'tat. Le mot-cl MonEtat s'utilise alors comme un
tat.
Intrt : Le mot-cl MonEtat permet de rendre un
code local (champ, rubrique, ...) ou global (proc-
dure globale, classe, ...) indpendant de l'tat en
cours.
Syntaxe
MonEtat
Manipulation de l'tat en cours
Le mot-cl MonEtat est toujours remplac par l'tat
en cours. Par exemple :
Utilisation d'une proprit (proprit ..Marge-
Basse par exemple) :
Passage en paramtre :
Le mot-cl MonEtat peut tre utilis uniquement
dans les traitements manipulant l'tat en cours
(par exemple, dans les traitements associs un
champ, une rubrique, ...). Il n'est pas possible
d'utiliser le mot-cl MonEtat dans une fentre.
Utilisation de MonEtat dans une procdure
Le mot-cl MonEtat peut tre utilis dans une pro-
cdure (locale ou globale) uniquement si la proc-
dure manipule l'tat en cours. Le mot-cl MonEtat
fait alors rfrence l'tat en cours.
Dans le cas d'une procdure locale, le mot-cl
MonEtat correspond l'tat auquel appartient la
procdure.
5.9 MonFichier
Le mot-cl MonFichier permet de connatre dans
un trigger le fichier de donnes qui dclenche le
trigger. Lors de l'excution, ce mot-cl est automati-
quement remplac par le fichier de donnes en
cours.
Intrt : Le mot-cl MonFichier permet de faire des
triggers gnriques, sans faire d'indirections sur la
variable H.NomFichier. Il est ainsi possible de mani-
puler le fichier de donnes, ses proprits ou
encore ses rubriques.
5.10 MonParent
Le mot-cl MonParent permet de manipuler :
le superchamp courant partir d'un lment du
superchamp.
Lors de l'excution de la fentre / page, le mot-
cl MonParent est remplac par le superchamp
et non par le nom du superchamp. Le mot-cl
MonParent s'utilise alors comme un super-
champ.
Intrt : Le mot-cl MonParent permet de rendre
le code des champs du superchamp (champ,
bouton, ...) ou des fonctions associes au super-
champ indpendant du nom du superchamp.
l'tat courant partir d'un des champs de l'tat.
la fentre / page courante partir d'un des
champs de la fentre / page.
Syntaxe
MonParent
// Rcupration du nom de l'tat
// en cours
MonEtat = MonEtat..Nom
MonEtat..MargeBasse = 15
ResMarge = MonEtat..MargeBasse
AppelProcedure(MonEtat)
// Code du bouton de slection
NomFichier=fSlecteur(...
fExtraitChemin(...
NomFichier, fRpertoire), ...
fExtraitChemin(NomFichier, ...
fFichier+fExtension), ...
"Slectionner un fichier", ...
"Tous les fichiers (*.*)"+TAB+...
"*.*", "")
// La valeur du superchamp
// correspond
// au fichier slectionn
MonParent..Valeur = NomFichier
WLangage.book Page 94 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 95
Manipulation du superchamp en cours
Le mot-cl MonParent est toujours remplac par le
superchamp en cours. Par exemple, passage en
paramtre :
Le mot-cl MonParent peut tre utilis uniquement
dans les traitements manipulant le superchamp en
cours (par exemple, dans les traitements associs
un champ du superchamp, dans les procdures
associes au superchamp, ...).
Utilisation de MonParent dans une procdure
Le mot-cl MonParent peut tre utilis dans une
procdure associe au superchamp en cours. Le
mot-cl MonParent fait alors rfrence au super-
champ en cours.
5.11 STOP (appel du dbogueur)
Le mot-cl STOP permet d'appeler le dbogueur du
WLangage lors d'un test sous l'diteur (pour plus
dtails, consultez laide en ligne). Aprs excution
de ce mot-cl, le test en cours s'effectuera dans le
dbogueur.
Syntaxe
Lancement du dbogueur
STOP
Lancement du dbogueur avec condition
STOP SI <Condition>
Mode de lancement du dbogueur
Pour lancer le dbogueur lors d'un test, il est possi-
ble d'utiliser :
le mot-cl STOP dans l'diteur de code.
un point d'arrt dans l'diteur de code (Option
"Edition .. Points d'arrt" ou raccourci clavier
[Ctrl][B], clic de la souris dans la marge).
la combinaison des touches [Ctrl][Break] lors de
l'excution du test (sauf en WebDev).
Tracer/ Dboguer un projet
Pour tracer un projet ds le dbut de son excution,
sous le volet "Projet", dans le groupe "Mode test",
cliquez sur "Mode test" et slectionnez loption
"Tracer le projet" (raccourci clavier [Alt][F9]).
Excutable
Le mot-cl STOP prsent dans le code d'un excu-
table n'a aucune action.
AppelProcedure(Monparent)
// Ouverture fentre
Ouvre(FentreSaisie)
STOP // Lancement du dbogueur
WLangage.book Page 95 Mardi, 23. avril 2013 1:59 13
96 Partie 2 : Syntaxe de base du WLangage
6. PROCDURE ET FONCTION
6.1 Prsentation
Une procdure permet d'associer un identificateur
un bloc d'instructions. La procdure peut ensuite
tre appele dans un traitement.
Une fonction permet de dfinir un sous-programme
qui effectue plusieurs instructions avant de retour-
ner une valeur au programme appelant.
Diffrence entre une procdure et une fonction :
une procdure ne retourne pas de rsultat.
une fonction retourne un rsultat.
En WLangage, il n'existe pas de distinction entre les
procdures et les fonctions. Les procdures et les
fonctions sont gres de la mme faon. Une pro-
cdure comme une fonction peut retourner ou non
un rsultat.
Les procdures et les fonctions peuvent avoir un
nombre de paramtres fixe ou variable.
La syntaxe de dclaration est la mme pour les pro-
cdures et les fonctions. Pour plus de dtails, con-
sultez-la Dclarer une procdure / une fonction,
page 99.
La syntaxe d'appel est la mme pour les procdu-
res et les fonctions. Pour plus de dtails, consultez
Appeler une procdure / une fonction, page 100.
Il est possible de crer des procdures multisyn-
taxes. Pour plus dtails, consultez Surcharger une
fonction WLangage, page 102.
Une procdure (une fonction) peut tre globale ou
locale. Pour plus de dtails, consultez le paragra-
phe suivant.
6.2 Procdure / fonction globale et locale
6.2.1 Dfinition
Les procdures peuvent tre de deux types :
Procdure globale : utilisable dans tous les trai-
tements du projet. Cette procdure globale est
mmorise dans le projet.
Procdure locale : utilisable dans tous les traite-
ments dpendant de l'objet (fentre, page ou
tat) dans lequel cette procdure a t dclare.
Cette procdure locale est mmorise dans
l'objet.
Important : Il ne faut pas dclarer deux procdures
avec le mme nom (notamment une procdure glo-
bale et une procdure locale).
Rappel : En WLangage, il n'existe pas de distinction
entre les procdures et les fonctions. Les syntaxes
de dclaration et d'utilisation dcrites pour les pro-
cdures sont les mmes pour les fonctions.
6.2.2 Procdure globale
Procdures globales et collections de
procdures
Les procdures globales sont mmorises dans
des collections de procdures, associes au projet.
Les procdures globales dclares dans le traite-
ment d'initialisation d'un projet peuvent tre appe-
les depuis tous les traitements :
du projet.
des fentres / pages (traitements de la fentre /
page, de ses champs et des procdures locales
associes).
des tats (traitements de l'tat, de ses champs et
des procdures locales associes).
Conseil : Si une procdure est utilise par une
seule fentre / page, il est conseill de dcrire
cette procdure comme locale la fentre / page.
La fentre / page est alors "indpendante".
Procdures globales serveur et navi-
gateur
En WebDev, un projet correspondant un site dyna-
mique contient au moins deux collections de proc-
dures (une "serveur" et une "navigateur").
Lors de la cration du projet :
la collection de procdures serveur par dfaut a
pour nom "Procdures globales de <Nom Projet>"
(fichier ".WDG")
la collection de procdures navigateur par dfaut
a pour nom: "Procdures globales de <Nom pro-
jet>_Navigateur" (fichier ".WWN")
Remarque : une collection de procdures globale
Navigateur est convertie en collection de procdure
WLangage.book Page 96 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 97
Javascript. Cette collection de procdures Javas-
cript est enregistre dans le rpertoire "<Nom Pro-
jet>_WEB" sous le nom "<Nom Projet>.JS".
Limite : Les procdures globales serveur ne peu-
vent pas appeler des procdures globales naviga-
teur et inversement.
Crer une procdure globale
1. Depuis lditeur de code
Pour crer une procdure globale depuis l'diteur
de code :
Mthode 1 : Sous le volet "Code", dans le groupe
"Procdures", droulez "Nouveau" et slectionnez
l'option "Nouvelle procdure globale" (raccourci
clavier [Shift] [F4]).
Mthode 2 : Slectionnez l'option "Crer une pro-
cdure .. Crer une procdure globale vide" du
menu contextuel.
En WebDev :
Si le code en cours est un code serveur, la proc-
dure globale est cre dans la collection de pro-
cdures serveur. Si le code en cours est un code
navigateur, la procdure globale est cre dans
la collection de procdures navigateur.
Pour crer directement une procdure globale
serveur, sous le volet "Code", dans le groupe "Pro-
cdures", droulez "Nouveau" et slectionnez
l'option "Nouvelle procdure globale (serveur)".
Pour crer directement une procdure globale
navigateur, sous le volet "Code", dans le groupe
"Procdures", droulez "Nouveau" et slectionnez
l'option "Nouvelle procdure globale (naviga-
teur)".
Remarque : Pour transformer une partie de code
dj saisi en une procdure globale :
1. Slectionnez le code correspondant.
2. Utilisez l'option "Crer une procdure .. Crer
une procdure globale contenant le code slec-
tionn" du menu contextuel.
3. Indiquez le nom de la procdure. La procdure
est cre, le code correspondant est remplac par
l'appel de la procdure avec les paramtres nces-
saires.
2. Depuis le volet "Explorateur de projet"
Pour crer une procdure globale depuis le volet
"Explorateur de projet" :
1. Slectionnez le dossier "Procdures".
2. Slectionnez la collection de procdures voulue.
3. Affichez le menu contextuel de la collection de
procdures et slectionnez l'option "Nouvelle proc-
dure globale".
4. Saisissez le nom de la nouvelle procdure glo-
bale et validez.
Remarque : Il est possible d'afficher la liste des
procdures globales dans lexplorateur de projet
double-cliquant sur le dossier "Procdures" (rac-
courci clavier [Ctrl] [F8]) de l'diteur de code.
Suppression dune procdure globale
1. Depuis lditeur de code
Pour supprimer une procdure globale depuis l'di-
teur de code :
1. Cliquez sur le bandeau de la procdure dans
l'diteur de code.
2. Dans le menu contextuel, slectionnez "Suppri-
mer".
2. Depuis le volet "Explorateur de projet"
Pour supprimer une procdure globale depuis le
volet "Explorateur de projet" :
1. Slectionnez le dossier "Procdures".
2. Slectionnez la collection de procdures voulue.
3. Affichez le menu contextuel de la collection de
procdures et slectionnez l'option "Supprimer".
Test dune procdure globale
1. Depuis lditeur de code
Pour tester une procdure globale :
1. Affichez la procdure globale sous l'diteur.
2. Cliquez sur le bouton [GO].
3. La fentre de description du test de la procdure
s'affiche. Cette fentre permet de :
Saisir les diffrents paramtres de la proc-
dure.
Lancer le test de la procdure (bouton [Tester la
procdure]).
Vrifier la valeur de retour.
2. Depuis le volet "Explorateur de projet"
Pour tester une procdure globale :
1. Slectionnez le dossier "Procdures" de l'explo-
rateur de projet.
2. Slectionnez le nom de la procdure globale
tester.
3. Slectionnez l'option "Tester la procdure" du
menu contextuel.
4. La fentre de description du test de la procdure
s'affiche. Cette fentre permet de :
Saisir les paramtres de la procdure.
Lancer le test de la procdure (bouton [Tester la
procdure]).
Vrifier la valeur de retour.
WLangage.book Page 97 Mardi, 23. avril 2013 1:59 13
98 Partie 2 : Syntaxe de base du WLangage
Procdure globale publique ou prive
Une procdure globale est publique par dfaut :
elle est accessible depuis n'importe quel code.
Dans certains cas, il est ncessaire de restreindre
l'accs une procdure globale en la rendant "Pri-
ve". Dans ce cas, la procdure globale et accessi-
ble uniquement par une autre procdure globale
prsente dans la collection de procdures.
Pour modifier le mode d'accs une procdure
globale :
1. Slectionnez la procdure globale dans le volet
"Explorateur de projet".
2. Dans le menu contextuel de la procdure, slec-
tionnez le nouveau mode d'accs :
publique.
priv.
La couleur du bandeau de la procdure change en
fonction de son mode d'accs :
dbut de bandeau rouge : procdure prive.
dbut de bandeau habituel : procdure publique.
6.2.3 Procdure locale
Procdures locales une fentre /
page
Les procdures locales dclares dans une fentre
/ page peuvent tre appeles depuis tous les
traitements :
de la fentre / page.
des champs de la fentre / page.
des procdures locales associes la fentre /
page.
Ces procdures sont mmorises dans la fentre /
page.
Attention :
Les procdures locales d'une fentre ne peuvent
pas tre utilises par ses fentres soeurs.
Les procdures locales dclares dans une fen-
tre fille ne peuvent pas tre utilises dans sa
fentre mre.
Procdures locales un tat
Les procdures locales dclares dans un tat peu-
vent tre appeles depuis tous les traitements :
de l'tat.
des champs de l'tat.
des procdures locales associes l'tat.
Ces procdures sont mmorises dans l'tat.
Cration dune procdure locale
1. Depuis lditeur de code :
Pour crer une procdure locale l'lment en
cours depuis l'diteur de code :
Mthode 1 : Sous le volet "Code", dans le groupe
"Procdures", droulez "Nouveau" et slectionnez
loption "Nouvelle procdure locale" (raccourci
clavier [F4]).
En WebDev :
- Pour crer une procdure locale serveur, sous le
volet "Code", dans le groupe "Procdures", drou-
lez "Nouveau" et slectionnez loption "Nouvelle
procdure locale (Serveur)".
- Pour crer une procdure locale navigateur,
sous le volet "Code", dans le groupe "Procdu-
res", droulez loption "Nouveau" et slectionnez
l'option "Nouvelle procdure locale (Navigateur)".
Mthode 2 : Slectionnez l'option "Crer une pro-
cdure .. Crer une procdure locale vide" du
menu contextuel.
En WebDev :
- Pour crer une procdure locale serveur, slec-
tionnez l'option "Crer une procdure .. Crer une
procdure locale (Serveur)".
- Pour crer une procdure locale navigateur,
slectionnez l'option "Crer une procdure ..
Crer une procdure locale (Navigateur)".
Remarque : Pour transformer une partie de code
dj saisi dans une procdure locale en une proc-
dure locale :
1. Slectionnez le code correspondant.
2. Utilisez loption "Crer une procdure .. Crer
une procdure contenant le code slectionn" du
menu contextuel.
3. Indiquez le nom de la procdure. La procdure
est cre, le code correspondant est remplac par
l'appel de la procdure avec les paramtres nces-
saires.
Remarque en WebDev : Si le code slectionn est
un code serveur, la procdure cre sera une pro-
cdure serveur. Si le code slectionn est un code
navigateur, la procdure cre sera une procdure
navigateur.
2. Depuis lexplorateur de projet :
Pour crer une procdure locale depuis le volet
"Explorateur de projet" :
1. Slectionnez l'lment associ la procdure
locale (fentre, page, tat, ...).
2. Droulez les options de l'lment et slection-
nez l'option "Procdures locales" de l'lment.
3. Affichez le menu contextuel et slectionnez
l'option "Nouvelle procdure locale".
WLangage.book Page 98 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 99
4. Saisissez le nom de la nouvelle procdure locale
et validez.
Remarque : Il est possible dafficher la liste des
procdures locales depuis lexplorateur de projet
(dossier "Procdures locales" de llment) ou en
utilisant le raccourci clavier [F8] de l'diteur de
code.
6.3 Collection de procdures
6.3.1 Dfinition
Les procdures globales sont contenues dans des
collections de procdures.
Une collection de procdures permet de :
partager des procdures globales entre plusieurs
dveloppeurs, pour un mme projet.
partager des procdures globales entre plusieurs
projets.
bloquer uniquement cette collection lors de
modifications apportes dans une procdure glo-
bale.
modifier une ou plusieurs procdures globales
mme si le projet est en cours de modification
par un autre utilisateur.
Les collections de procdures d'un projet WinDev
ou WinDev Mobile peuvent tre partages avec un
projet WebDev.
Attention : Seul le code compatible avec WebDev
doit tre utilis dans la collection de procdures
partage.
6.3.2 Cration d'une collection de procdu-
res
Pour crer une collection de procdures :
1. Dans le volet "Explorateur de projet", slection-
nez loption "Procdures".
2. Dans le menu contextuel (clic droit de la souris),
slectionnez l'option "Nouvelle collection de proc-
dures".
6.3.3 Importation d'une collection de proc-
dures
Une collection de procdures peut tre importe
dans un projet. Vous pourrez alors utiliser dans
votre projet des procdures de cette collection
importe.
Pour importer une collection de procdures :
1. Dans le volet "Explorateur de projet", option "Pro-
cdures", slectionnez l'option "Importer une col-
lection de procdures" du menu contextuel.
2. Slectionnez la collection de procdures
importer.
3. Confirmez l'ajout de la collection slectionne
dans votre projet.
6.4 Dclarer une procdure / une fonction
6.4.1 Syntaxe
La dclaration d'une procdure est la mme qu'il
s'agisse d'une procdure globale ou d'une proc-
dure locale.
Important : Il ne faut pas dclarer deux procdures
avec le mme nom (notamment une procdure glo-
bale et une procdure locale).
Dclarer une procdure avec paramtres
PROCEDURE <Nom de la procdure>(<Paramtres>)
<Code de la procdure>
Dclarer une procdure sans paramtre
PROCEDURE <Nom de la procdure>()
<Code de la procdure>
Dclarer une procdure avec paramtres variables
PROCEDURE <Nom de la procdure>([<param-
tres>,]*)
<Code de la procdure>
Remarque : Pour des raisons de lisibilit des pro-
grammes, le mot-cl PROCEDURE peut tre rem-
plac par le mot-cl FONCTION.
6.4.2 Sortie d'une procdure
Pour forcer la sortie d'une procdure, utilisez le
mot-cl Retour. Dans la procdure, tous les traite-
ments suivant le mot-cl Retour ne sont pas excu-
ts. Par exemple :
PROCEDURE Calcul(Dividende)...
SI Dividende = 0 ALORS ...
Erreur("Division par 0 ...
"impossible")
Retour
SINON
...
FIN
WLangage.book Page 99 Mardi, 23. avril 2013 1:59 13
100 Partie 2 : Syntaxe de base du WLangage
Remarques :
Si la procdure renvoie un rsultat, utilisez le
mot-cl Renvoyer.
Il n'est pas possible d'utiliser les mots-cls
Retour et Renvoyer dans le mme traitement.
6.4.3 Renvoi d'un rsultat
Pour retourner le rsultat d'une procdure au traite-
ment appelant, utilisez le mot-cl Renvoyer. Par
exemple :
Conseil : Pour les procdures qui retournent un
rsultat, il est conseill d'utiliser le mot-cl FONC-
TION au lieu de PROCEDURE pour faciliter la lec-
ture du code.
Important : Il ne faut pas forcer la sortie d'une pro-
cdure qui renvoie un rsultat avec le mot-cl
Retour. En effet, l'appel de la procdure attend un
compte-rendu qui ne serait pas retourn en cas de
sortie force de la procdure.
6.5 Appeler une procdure / une fonction
L'appel d'une procdure est le mme qu'il s'agisse
d'une procdure globale ou d'une procdure locale.
Rappel :
En WLangage, il n'existe pas de distinction entre
les procdures et les fonctions. Les syntaxes de
dclaration et d'utilisation dcrites pour les pro-
cdures sont les mmes pour les fonctions.
Dans le cas dune procdure multisyntaxe,
lappel de la bonne syntaxe est rsolu lexcu-
tion. Pour plus de dtails, consultez Surcharger
une fonction WLangage, page 102.
Syntaxe : Appeler une procdure
[<Valeur retourne> = ] <Nom de la proc-
dure>([<Paramtres>])
Remarques :
Pour des raisons de lisibilit des programmes, le
mot-cl PROCEDURE peut tre remplac par le
mot-cl FONCTION.
Pour excuter une procdure d'une fentre
ouverte, il suffit d'utiliser la fonction ExcuteTrai-
tement.
6.6 Paramtre d'une procdure / une fonction
Il est possible de passer des paramtres une pro-
cdure. Ce paragraphe aborde les thmes
suivants :
le typage des paramtres.
le passage de paramtres.
les paramtres locaux.
les paramtres optionnels.
les paramtres variables (procdures nombre
de paramtres variables).
Rappel : En WLangage, il n'existe pas de distinction
entre les procdures et les fonctions. Les procdu-
res et les fonctions sont gres de la mme faon.
6.6.1 Typage des paramtres
Type des paramtres par dfaut
La description du type de paramtre n'est pas obli-
gatoire. Par dfaut, le type de la variable passe en
paramtre lors de l'appel de la procdure est utilis
dans la procdure.
Par exemple :
PROCEDURE Trouve(Fichier,Cl,Valeur)
HLitRecherche(Fichier,Cl,Valeur)
SI HTrouve=Vrai ALORS
Renvoyer Vrai
SINON
Renvoyer Faux
FIN
// Appel de la procdure Trouve qui
// retourne un boolen
SI Trouve(Client,NumCli,Numro)
ALORS
Info("Numro de client trouv")
SINON
Info("Numro de client" ...
"inexistant")
FIN
Indice est un entier
// Appel de la procdure MaProc
MaProc(Indice)
-- Dclaration procdure MaProc
PROCEDURE MaProc(Compteur)
// Compteur est de type entier
Compteur += 1
WLangage.book Page 100 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 101
Il est ainsi possible d'utiliser une mme procdure
pour plusieurs types de variables.
Forcer le typage des paramtres
Pour forcer le typage des paramtres, utilisez la
syntaxe suivante :
PROCEDURE <Nom de la procdure>(...
<Paramtre 1> est un(e) <Type>,...
<Paramtre 2> est un(e) <Type> ,...
<Paramtre N> est un(e) <Type> )
Le type de la variable passe en paramtre (lors de
l'appel de la procdure) doit tre identique au type
dcrit dans la dclaration de la procdure. Si ce
n'est pas le cas, une erreur est gnre lors de la
compilation du projet, de la fentre ou de l'tat.
Dans l'exemple suivant, la variable "Indice" n'est
pas de type rel : une erreur sera gnre lors de la
compilation du projet, de la fentre ou de l'tat.
6.6.2 Passage de paramtres
Lors de l'appel d'une procdure, les paramtres
peuvent tre :
passs par adresse
passs par valeur.
Passage de paramtres par adresse
Par dfaut, lors de lappel dune procdure, les
paramtres sont passs par variable (par adresse).
Si le paramtre est modifi dans la procdure, le
traitement appelant la procdure rcuprera le
paramtre avec sa valeur modifie.
Pour passer un paramtre par variable une proc-
dure, utilisez la syntaxe suivante :
<Nom de la procdure>(<Nom de la variable
passe en paramtre>)
Par exemple :
Passage de paramtres par valeur
Lors de l'appel d'une procdure, les paramtres
peuvent tre passs par valeur. Si le paramtre est
modifi dans la procdure, le traitement appelant
la procdure rcuprera le paramtre avec sa
valeur NON modifie.
Solution 1 : Pour passer un paramtre par valeur
une procdure, utilisez la syntaxe suivante :
<Nom de la procdure>((<Nom de la variable
passe en paramtre>))
Par exemple :
Solution 2 : Utilisation de paramtres "local" dans
la procdure
Lors de la dclaration d'une procdure, les varia-
bles passes en paramtre peuvent devenir locales
cette procdure. Pour cela, il suffit de faire prc-
der le paramtre local par le mot-cl LOCAL. Par
exemple :
PROCEDURE MaProc(LOCAL Indice,
LOCAL Compteur, Numro)
Si ce paramtre est modifi dans la procdure, le
traitement appelant la procdure rcuprera le
paramtre avec sa valeur NON modifie.
Passage dun champ, dune fentre
ou dun tat
Cet lment (champ, fentre, page ou tat) est
alors manipul comme un objet "classique". Pour
passer un lment en paramtre une procdure,
utilisez la syntaxe suivante :
<Nom de la procdure>(<Nom lment>)
Par exemple :
Remarques :
MoiMme permet de manipuler le champ en
cours.
MaFentre permet de manipuler la fentre en
cours.
Indice est un entier = 7
// Appel de la procdure MaProc
MaProc(Indice)

-- Dclaration de la procdure
MaProc
PROCEDURE MaProc(Indice est un rel)
...
Indice est un entier = 1
// Avant l'appel de la procdure,
// Indice vaut 1
AjouteUn(Indice)
// Aprs l'appel de la procdure,
// Indice vaut 2

-- Dclaration de la procdure
PROCEDURE AjouteUn(Compteur)
Compteur += 1
Indice est un entier = 1
// Avant l'appel de la procdure,
// Indice vaut 1
AjouteUn((Indice))
// Aprs l'appel de la procdure,
// Indice vaut toujours 1
-- Dclaration de la procdure
PROCEDURE AjouteUn(Compteur)
Compteur += 1
// Appel procdure ChampVisible
ChampVisible(ChampAdresse)
-- Dclaration de la procdure
PROCEDURE ChampVisible(ChampAdresse)
ChampAdresse..Visible = Faux
WLangage.book Page 101 Mardi, 23. avril 2013 1:59 13
102 Partie 2 : Syntaxe de base du WLangage
MaPage permet de manipuler la page en cours
MonEtat permet de manipuler l'tat en cours.
6.6.3 Paramtre optionnel
Certains paramtres passs une procdure peu-
vent tre optionnels. Lors de la dclaration de la
procdure, les paramtres optionnels doivent tre
dcrits en dernire position ( droite), avec une
valeur par dfaut prcde du signe "=" :
PROCEDURE <Nom de la procdure>(...
<Paramtres obligatoires>,...
<Paramtre optionnel 1> = <Valeur>,...
<Paramtre optionnel 2> = <Valeur>,...)
Par exemple :
Pour conserver la valeur par dfaut d'un paramtre
optionnel, utilisez le caractre "*" lors de l'appel de
la procdure. Par exemple :
6.6.4 Procdure nombre de paramtres
variables
Si la procdure utilise un nombre de paramtres
variables, il est ncessaire dans le code de la pro-
cdure de pouvoir manipuler les diffrents param-
tres passs la fonction. Ces manipulations sont
ralises grce au mot-cl MesParamtres.
Exemple : Procdure de dcalage de champs : Les
champs passs en paramtre sont dcals de 10
pixels.
L'indexation des paramtres commence toujours
1 quel que soit le nombre de paramtres obligatoi-
res ou le nombre de paramtres optionnels.
L'utilisation d'un nombre de paramtres variables
est disponible avec :
les procdures,
les mthodes de classes,
le code de dclaration des globales de fentres,
pages ou tats.
6.7 Surcharger une fonction WLangage
6.7.1 Dfinition
La surcharge d'une fonction WLangage permet
d'utiliser une fonction personnelle du mme nom
que la fonction WLangage.
Par exemple, au lieu d'utiliser la fonction standard
du WLangage Info, il est possible d'utiliser une pro-
cdure personnelle nomme Info. A chaque fois
que la fonction Info sera utilise, ce sera la fonction
personnelle qui sera excute.
6.7.2 Comment le faire ?
Pour surcharger une fonction WLangage :
1. Crez une nouvelle procdure dans votre projet
(procdure locale ou globale). Cette procdure doit
avoir les caractristiques suivantes :
le mme nom que la fonction WLangage sur-
charger.
le mme nombre de paramtres que la fonction
WLangage surcharger. Ces paramtres doivent
galement tre du mme type que ceux de la
fonction WLangage.
2. Lorsque le nom de la fonction / procdure sera
utilis dans le projet (ou dans la fentre / page si la
procdure cre est locale), la procdure personna-
lise sera utilise la place de la fonction WLan-
gage.
6.7.3 Diffrencier la fonction WLangage et
la fonction personnalise
Si vous avez surcharg une fonction WLangage,
pour utiliser la fonction originale, il suffit de prfixer
le nom de la fonction par les lettres WL. La syntaxe
utiliser est la suivante :
WL.<Nom de la fonction>
Par exemple, pour surcharger la fonction Trace du
WLangage, il est possible d'utiliser le code suivant :
-- Dclaration de la procdure
PROCEDURE Dessin(Ligne,Colonne,...
CoulFond = iNoir, CoulTrait = ...
iJauneClair)
...
-- appel de la procdure
Dessin(10,15)
-- Dclaration de la procdure
PROCEDURE Dessin(Ligne,Colonne,...
CoulFond = iNoir, ...
CoulTrait = iJauneClair)
...
-- Traitement d'appel de la procdure
Dessin(10,15,*,iVertClair)
// Procdure de dcalage de champs
PROCEDURE DcaleChamp(*)
POUR I = 1 A ...
MesParamtres..Occurrence
MesParamtres[I]..X +=10
FIN
PROCEDURE Trace(Information1)
Message("Lancement d'une trace")
WL.Trace(Information1)
WLangage.book Page 102 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 103
6.8 Surcharge de prototype
6.8.1 Prsentation
Les procdures et les mthodes de classes peu-
vent avoir plusieurs syntaxes.
Par exemple, une procdure peut avoir :
une syntaxe qui prend en paramtre une chane.
une syntaxe qui prend en paramtre un entier.
Il est ainsi possible d'avoir diffrentes syntaxes
pour une mme procdure ou une mme mthode
avec des paramtres et du code diffrents. A l'ex-
cution, le moteur dtermine automatiquement la
syntaxe appeler en fonction du nombre et du type
des paramtres passs.
Cette technologie est souvent prsente sous diff-
rentes appellations et englobe diffrents objectifs.
Parmi ces appellations, on retrouve les termes
suivants :
Multisyntaxe,
Surcharge de prototype,
Overload,
Dynamic dispatch,
Polymorphisme paramtrique,
etc.
Cette fonctionnalit est disponible pour :
Les procdures globales.
Les procdures locales.
Les mthodes de classe y compris les Construc-
teurs.
Dans la suite de ce document :
le terme multisyntaxe sera utilis.
le mot-cl "Procdure" sera utilis pour dsigner
une procdure globale, une procdure locale ou
bien une mthode.
6.8.2 Comment le faire ?
Ajouter des syntaxes une proc-
dure
Pour ajouter une syntaxe une procdure
existante :
1. Dans l'explorateur de projet, slectionnez la pro-
cdure.
2. Affichez le menu contextuel de la procdure et
choisissez l'option "Ajouter une syntaxe".
3. Une nouvelle syntaxe est automatiquement
cre dans l'diteur de code.
Remarques :
La cration d'une procdure de mme nom pro-
pose automatiquement d'ajouter une nouvelle
syntaxe la procdure existante.
Si une procdure a plusieurs syntaxes, le nombre
de syntaxes est affich dans l'explorateur de pro-
jet ( ct du nom de la procdure).
Supprimer une des syntaxes dune
procdure
Pour supprimer une syntaxe :
1. Affichez le code de la procdure dans l'diteur
de code.
2. Dans le bandeau de la syntaxe, choisissez
l'option "Supprimer" du menu contextuel.
3. Vous pouvez :
supprimer la syntaxe courante.
supprimer toutes les syntaxes (dans ce cas, la
procdure est supprime).
6.8.3 Gestion du multisyntaxe en excution
Mcanisme de base
Le mcanisme de base est le suivant : dtermina-
tion dynamique de la syntaxe selon le nombre et le
type des paramtres
Le moteur d'excution recherche la syntaxe :
dont le nombre de paramtres correspond.
pour laquelle le nombre de conversions est mini-
mal.
Si deux syntaxes sont quivalentes, c'est la pre-
mire dans l'ordre de l'diteur de code qui est ex-
cute.
Dynamic dispatch
Dans le cas d'une procdure plusieurs syntaxes
dont les paramtres attendent des instances de
classe, le moteur d'excution utilise la mthode du
"Dynamic dispatch" pour dterminer la syntaxe
appeler.
Considrons l'exemple suivant :
une classe "ClasseBase"
deux classes "ClasseDrive1" et
WLangage.book Page 103 Mardi, 23. avril 2013 1:59 13
104 Partie 2 : Syntaxe de base du WLangage
"ClasseDrive2" qui hritent de "ClasseBase".
Mthodes virtuelles
Pour la gestion des mthodes virtuelles, plusieurs
aspects peuvent tre pris en compte :
1er aspect : une syntaxe de la mthode de la
classe drive redfinit une syntaxe de la
mthode de la classe de base :
2me aspect : une syntaxe supplmentaire dans
la mthode de la classe drive :
3me aspect : cas particulier lorsque la mthode
de la classe de base et la mthode de la classe
drive ont chacune une seule syntaxe avec des
prototypes diffrents :
Le compilateur ne peut pas dcider si la mthode
de la classe drive est une redfinition de celle
de la classe de base ou une nouvelle syntaxe.
Pour provoquer une redfinition, il faut ajouter
l'attribut d'extension <redfinition> la mthode
de la classe drive : .
Pour provoquer une multisyntaxe, il faut ajouter
l'attribut d'extension <multisyntaxe> la
mthode de la classe drive.
// Premire syntaxe
PROCEDURE p(LOCAL p est ClasseBase)
// Seconde syntaxe
PROCEDURE p(LOCAL p est
ClasseDrive1)
// Appels
pBase est ClasseBase dynamique
// Initialisation
pBase = allouer ClasseBase
p(pBase)// premire syntaxe
// Initialisation
pBase = allouer ClasseDrive1
p(pBase)// seconde syntaxe
// Initialisation
pBase = allouer ClasseDrive2
p(pBase)// premire syntaxe
ClasseBase
PROCEDURE meth(s est une chaine)
PROCEDURE meth(n est un entier)
ClasseDrive
PROCEDURE meth(n est un entier)
// appel
oBase est ClasseBase
oBase.meth("A") // appelle la 1re
syntaxe dans la classe ClasseBase
oBase.meth(1) // appelle la 2me
syntaxe dans la classe ClasseBase
oDrive est ClasseDrive
oDrive.meth("A") // appelle la
1re syntaxe dans la classe Classe-
Base
oDrive.meth(1) // appelle la 1re
syntaxe dans la classe ClasseDrive
ClasseBase
PROCEDURE meth(p)
PROCEDURE meth(s est une chane)
ClasseDrive
PROCEDURE meth(n est un entier)
// appel
oBase est ClasseBase
oBase.meth("A")// appelle la 2me
syntaxe dans la classe ClasseBase
oBase.meth(1)// appelle la 1re syn-
taxe dans la classe ClasseBase
oDrive est ClasseDrive
oDrive.meth("A")// appelle la 2me
syntaxe dans la classe ClasseBase
oDrive.meth(1)// appelle la 1re
syntaxe dans la classe ClasseDrive
ClasseBase
PROCEDURE meth(s est une chane)
ClasseDrive
PROCEDURE meth(n est un entier)
PROCEDURE mthode(...) <redfini-
tion>
PROCEDURE mthode(...) <multisyn-
taxe>
WLangage.book Page 104 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 105
7. GESTION DES EXCEPTIONS
7.1 Prsentation
En cas d'erreur de programmation dans une appli-
cation / un site, le mcanisme de scurit du
WLangage est activ. Un message d'erreur apparat
alors l'utilisateur final / linternaute, et l'excution
du programme se termine.
Pour attnuer les consquences des erreurs de
programmation, WinDev / WebDev propose diver-
ses solutions :
l'affichage d'un message d'erreur personnalis
(non disponible en WebDev).
le mcanisme des exceptions. Il est alors possi-
ble de personnaliser la gestion de l'erreur.
Attention : ces solutions permettent uniquement
de grer des erreurs de programmation. Ces solu-
tions ne permettent pas de grer des erreurs d'ex-
cution (du type criture impossible dans un fichier
en lecture seule).
7.1.1 Affichage d'un message personnalis
Pour afficher un message personnalis lors d'une
erreur de programmation, il suffit de saisir le texte
de l'erreur lors de la cration de l'excutable.
Il est ainsi possible, sans la moindre programma-
tion d'afficher un message du type :
"Problme dans l'application XXX : Notez le texte de
l'erreur et contactez notre support technique au
xx.xx.xx.xx.xx".
7.1.2 Mcanisme des exceptions
Le mcanisme des exceptions permet de traiter les
cas d'erreur par programmation. Si un traitement
d'exception est dclench, aucun message d'erreur
n'est affich, et le code de l'exception est excut.
Ce code permet de raliser toutes les oprations
ncessaires :
pour sortir "correctement" de l'application / du
site en cours si l'erreur est fatale
pour rendre la main l'utilisateur / linternaute si
l'erreur est corrigible.
WinDev / WebDev propose deux types de traite-
ment des exceptions :
les exceptions gnrales : le traitement d'excep-
tion est valable pour l'ensemble d'un objet (pro-
jet, fentre, page, tat, ...)
les exceptions spcifiques : le traitement
d'exception est valable uniquement sur une por-
tion de code dtermine.
les exceptions automatises : la gestion des
exceptions se met en place directement depuis
l'interface de WinDev, WebDev et WinDev Mobile.
7.2 Mcanisme des exceptions gnrales
7.2.1 Prsentation
Un traitement d'exception gnral est disponible
pour l'ensemble des composants de l'objet auquel
il est associ. Ce traitement d'exception sera utili-
sable tant que l'objet est disponible.
Un traitement d'exception gnral peut tre dclar
dans n'importe quel traitement.
Quelques exemples :
si le traitement d'exception est dclar dans le
code d'initialisation du projet, il est valide pour
toute erreur se produisant dans le projet.
si le traitement d'exception est dclar dans le
code d'initialisation d'une fentre (code de dcla-
ration des globales dune page ou code douver-
ture d'un tat), il est valide pour toute erreur
survenant dans la fentre / page, un champ de la
fentre / page, une procdure locale la fentre
/ page. Ce traitement d'exception n'est plus
valide la fermeture de la fentre / page.
si le traitement d'exception est dclar dans un
traitement quelconque, il est valide pour toute
erreur se produisant dans ce traitement. Ce trai-
tement d'exception ne sera plus valide une fois le
traitement termin. Ainsi, un traitement d'excep-
tion dclar dans un code de clic d'un bouton ne
sera valide que dans ce traitement et dans tou-
tes les procdures appeles partir de ce traite-
ment.
WLangage.book Page 105 Mardi, 23. avril 2013 1:59 13
106 Partie 2 : Syntaxe de base du WLangage
7.2.2 Syntaxes de dclaration
Traitement de l'exception sur une ligne
QUAND EXCEPTION <Traitement exception sur 1
ligne>
<Suite du code>
Traitement de l'exception sur plusieurs lignes
QUAND EXCEPTION
<Code du traitement de l'exception>
FIN
<Suite du code>
7.2.3 Dclaration de plusieurs traitements
d'exceptions gnrales
Dclaration des traitements d'exceptions gnra-
les dans un mme traitement
Le second traitement d'exception remplacera le
premier traitement d'exception partir de la dcla-
ration du second traitement d'exception.
Exemple : Dans la procdure Exemple, si une
erreur survient :
dans le <Code1> : aucune gestion des exceptions
n'est active sauf si une procdure d'exception a
t dfinie dans le code appelant (dans la fen-
tre en cours ou dans le projet)
dans le <Code 2> : le traitement des exceptions
actif est <Traitement Exception 1>
dans le <Code 3> : le traitement des exceptions
actif est <Traitement Exception 2
Dclaration de traitements d'exception dans des
traitements diffrents
Si des traitements d'exception sont dclars dans
des objets imbriqus (par exemple projet et fentre
/ page, ou fentre / page et champ), le traitement
d'exception du plus petit objet masque le traite-
ment d'exception principal pendant la dure de vie
de cet objet.
Exemple, si les deux traitements d'exception sui-
vants sont dclars :
traitement d'exception A dclar dans le code
d'initialisation d'un projet
traitement d'exception B dclar dans le code
d'initialisation d'une fentre / page
Pour toutes les erreurs rencontres dans la fentre
/ page, le traitement d'exception B sera utilis et
masquera le traitement d'exception A.
Imbrication de traitements d'exception dans des
traitements diffrents : grer l'exception par un
niveau suprieur
Si des traitements d'exception sont dclars dans
des objets imbriqus (par exemple projet et fentre
/ page, ou fentre / page et champ), il est possible
de grer l'erreur dans le traitement d'exception du
niveau suprieur.
Il suffit d'utiliser le mot-cl EXCEPTION dans le trai-
tement d'exception. Exemple :
7.2.4 Remarques gnrales
Un traitement d'exception ne peut tre utilis
qu'une seule fois
Un traitement d'exception ne peut tre utilis
qu'une seule fois. Si une seconde exception sur-
vient, le traitement d'exception ne sera pas ex-
cut. Si un traitement d'exception d'un niveau
suprieur existe, ce traitement d'exception sera
excut.
Pour r-activer un traitement d'exception aprs utili-
sation, utilisez la fonction ExceptionActive. Atten-
tion, cette fonction doit tre manipule avec
prcaution.
Par exemple : un traitement d'exception gnrale a
t dclar au niveau de la fentre et au niveau du
projet.
PROCEDURE Exemple()
<Code 1>
QUAND EXCEPTION
<Traitement exception 1>
FIN
<Code 2>
QUAND EXCEPTION
<Traitement exception 2>
FIN
<Code 3>
// Code d'initialisation du projet
QUAND EXCEPTION
// on arrte l'application
FinProgramme
FIN

// Procdure globale ValeurChamp
// renvoie la valeur du champ
// renvoie "" si il n'existe pas
PROCEDURE ValeurChamp(sNomChamp)
QUAND EXCEPTION
// si c'est l'erreur de code
// ChampInconnu, on renvoie ""
SI ExceptionInfo(errCODE) = ...
ChampInconnu ALORS RENVOYER ""
// si c'est une autre erreur,
// on appelle le gestionnaire
// d'erreur du projet
EXCEPTION
FIN
WLangage.book Page 106 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 107
Une premire erreur de programmation survient
dans la fentre / page. Cette erreur est traite par
le traitement d'exception de la fentre / page.
Une seconde erreur survient dans la fentre /
page. Cette erreur est traite par le traitement
d'exception du projet.
Qualit du code WLangage du traitement de
l'exception
Il n'est pas possible de dclarer un traitement
d'exception l'intrieur d'un autre traitement
d'exception. Il est recommand de veiller la qua-
lit du code dans les traitements d'exception car
toute erreur provoquera l'affichage de la fentre /
page standard du mcanisme de scurit du WLan-
gage.
Qualit du code suivant un traitement d'exception
Aprs l'excution d'un traitement d'exception, le
code WLangage suivant le traitement est excut. Il
est recommand de veiller la qualit de ce code
(pour viter l'affichage d'un message d'erreur).
Exemple : Dans le code suivant, la ligne
{"Champ1"}..valeur = 5 dclenche le traitement
d'exception. A la fin du traitement d'exception la
mme ligne de code est rexcute : l'exception a
dj t traite et le mcanisme de scurit du
WLangage est dclench.
Pour viter ce problme, il est conseill en fin du
traitement d'exception :
soit de s'assurer que le problme est corrig et
ne se reproduira plus.
soit d'utiliser les mots-cls RETOUR et RENVOYER
pour sortir du traitement en cours
soit d'utiliser la fonction RepriseSaisie pour ren-
dre la main l'utilisateur.
soit dutiliser la fonction FinProgramme pour fer-
mer l'application.
7.2.5 Cas particulier
Un traitement d'exception gnrale ne peut pas
tre dclar dans les instructions composes de
type :
POUR
BOUCLE
TANTQUE
Dans ce type d'instruction, utilisez le traitement
d'exception spcifique.
7.3 Mcanisme des exceptions spcifiques
7.3.1 Prsentation
Un traitement d'exception spcifique permet de
traiter uniquement un code risque (c'est--dire un
code pouvant provoquer une exception). L'excep-
tion sera dclenche si une erreur de programma-
tion survient dans le code spcifi.
Ce traitement d'exception spcifique sera utilisable
uniquement dans le traitement dans lequel il est
dclar.
Remarques
Un traitement d'exception spcifique peut tre
dclar dans n'importe quel traitement.
Un traitement d'exception spcifique est priori-
taire sur un traitement d'exception gnral.
7.3.2 Syntaxes de dclaration
Traitement de l'exception simple
QUAND EXCEPTION DANS
<Code pouvant provoquer une exception>
FAIRE
<Code de traitement de l'exception>
FIN
<Suite du code>
Traitement de l'exception avanc
QUAND EXCEPTION DANS
<Code pouvant provoquer une exception>
FAIRE
<Code de traitement de l'exception>
SINON
<Code utilis si l'exception n'est pas
dclenche>
FIN
<Suite du code>
7.4 Mcanisme des exceptions automatises
La gestion des exceptions peut tre personnalise
par traitement.
Vous pouvez choisir d'utiliser un traitement auto-
matique d'exception, ou opter pour une gestion
avance grce diffrentes fonctions WLangage.
WLangage.book Page 107 Mardi, 23. avril 2013 1:59 13
108 Partie 2 : Syntaxe de base du WLangage
Important : La gestion automatique des erreurs et
des exceptions fonctionne uniquement pour le trai-
tement pour lequel elle est dfinie.
7.4.1 Mise en place
Pour mettre en place la gestion automatique des
exceptions :
1. Affichez sous l'diteur de code, le traitement
dans lequel les exceptions doivent tre traites :
code d'initialisation, code de clic, procdure, ...
2. Dans l'en-tte du code, cliquez sur "Quand
exception par programme".
3. La fentre qui s'affiche permet de spcifier le
type de traitement automatique effectuer :
Excuter le traitement d'erreur ("CAS EXCEP-
TION:" dans le code)
Excuter une procdure de traitement d'excep-
tion.
7.4.2 Excuter le traitement d'erreur ("CAS
EXCEPTION:" dans le code)
Si cette option est slectionne, une ligne de code
est ajoute dans le code en cours "CAS
EXCEPTION : ". Les lignes de code suivant cette ti-
quette seront excutes lorsqu'une exception sera
rencontre dans les lignes de code prcdentes
(ou dans un traitement appel par ces lignes de
code).
Cette option est conseille pour regrouper par
exemple tous les traitements d'exception pouvant
survenir.
7.4.3 Excuter une procdure de traitement
d'exception
Si cette option est slectionne, lorsqu'une excep-
tion sera rencontre dans le traitement en cours
(ou dans les traitements appels par le traitement
en cours), la procdure indique sera automatique-
ment excute pour traiter l'erreur. Cette option est
conseille si vous possdez dans votre application
une procdure existante traitant les exceptions.
L'appel cette procdure sera automatique ds
qu'une exception est rencontre. Aucun test faire.
Dans cette procdure, il est possible de renvoyer
une des constantes prsentes dans le tableau ci-
dessous.
En fonction de la constante renvoye, WinDev/Web-
Dev effectuera le traitement correspondant.
7.5 Fonctions de gestion des exceptions
Les fonctions suivantes permettent de grer les
exceptions :

Ces fonctions sont dtailles dans laide en ligne.
OpAnnuler Relance l'exception
OpFinTraite-
ment
La fonction ayant dclench
l'erreur renvoie une erreur et le
traitement en cours s'arrte.
quivalent RepriseSaisie
OpFinPro-
gramme
La fonction ayant dclench
l'erreur renvoie une erreur et le
programme s'arrte. quivalent
FinProgramme
OpRelancePro-
gramme
Termine l'application et relance
automatiquement l'application.
ExceptionActive R-active le traitement d'exception en cours si l'exception a pu tre corrige.
ExceptionAffiche Affiche la fentre standard des exceptions avec le contenu de l'exception courante.
ExceptionChangePara-
mtre
Paramtre le comportement automatique adopter en cas d'exception dans le trai-
tement en cours.
ExceptionDclenche Dclenche artificiellement le mcanisme de scurit de WLangage en provoquant
une exception. Cette exception peut alors tre traite par un code d'exception prvu
cet effet.
ExceptionInfo Rcupre des informations sur l'exception en cours.
ExceptionPropage Propage une exception. Cette fonction doit tre excute dans un traitement
d'exception et permet de relancer le mcanisme de traitement des exceptions.
ExceptionRetaurePara-
mtre
Rtablit le traitement d'exception d'un traitement. Ce traitement d'exception a t
modifi dans le traitement en cours par un appel la fonction ExceptionChangePa-
ramtre.
WLangage.book Page 108 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 109
8. PROGRAMMATION ORIENTE OBJET (POO)
8.1 Prsentation de la POO (Programmation Oriente Objet)
La programmation oriente objet (appele "POO")
est une mthode de programmation dans laquelle
les programmes sont organiss comme des ensem-
bles d'objets. Chaque objet reprsente une ins-
tance d'une certaine classe, toutes les classes
tant des membres d'une hirarchie de classes
unifie par des relations d'hritage.
La POO utilise donc des objets.
Chaque objet est une instance d'une certaine
classe.
Les classes sont relies l'une l'autre par des
relations d'hritage
WLangage et POO
Le WLangage est orient objet, en effet :
il supporte les objets
les objets ont une classe associe
les classes peuvent hriter d'attributs venant de
"super classes"
Important : L'objet de ce chapitre n'est pas de
dcrire les concepts de la programmation oriente
objet, mais uniquement de dcrire comment dcla-
rer les classes, les mthodes et les objets en WLan-
gage. Ce chapitre donne les syntaxes de la POO en
WLangage et le principe de la cration d'un pro-
gramme orient objet en WLangage.
Le lecteur est suppos connatre les classes, les
objets, les hritages, ...
Si vous ne connaissez pas la POO, nous vous con-
seillons de lire des manuels spcialiss sur la POO
avant de lire la suite de ce chapitre.
8.2 Concepts de la POO
8.2.1 Classe
Une classe rassemble la description d'une struc-
ture de donnes (les membres) et les traitements
(les mthodes) qui manipulent cette structure.
Une classe dfinit donc un type de donne et son
comportement.
Pour plus de dtails, consultez le paragraphe
Classe, membres et mthodes, page 110.
8.2.2 Objet
Une classe permet de crer des objets. Chaque
objet cr possde les membres dcrits dans sa
classe et peut-tre manipul par les mthodes de
sa classe. On dit qu'un "objet est une instance de la
classe".
Une classe peut tre considre comme un modle
qui dfinit les membres et les mthodes commu-
nes plusieurs objets.
Un membre est un paramtre de l'objet. Une
mthode permet d'agir sur l'objet, pour modifier
ses membres par exemple.
Pour plus de dtails, consultez le paragraphe
Objet, page 114.
WLangage.book Page 109 Mardi, 23. avril 2013 1:59 13
110 Partie 2 : Syntaxe de base du WLangage
8.2.3 Constructeur et destructeur
La notion de Constructeur et Destructeur est impor-
tante puisquelle permet un appel automatique de
mthode lors de la cration d'un objet et lors de sa
destruction.
La mthode Constructeur associe une classe
est automatiquement appele lors de la dclara-
tion d'un objet de la classe. Cela permet de s'assu-
rer que les traitements d'initialisation de l'objet
(affectation des membres, par exemple) ne seront
pas oublis par le dveloppeur.
La mthode Destructeur associe une classe est
automatiquement appele lors de la suppression
de l'objet (sortie de procdure dans laquelle l'objet
a t dclar). Cela permet de librer sans risque
d'oubli les ressources utilises par l'objet (zone
mmoire, par exemple). Elle peut aussi tre utilise
pour mettre jour un fichier relatif l'objet.
Pour plus de dtails, consultez le paragraphe
Constructeur et destructeur, page 113.
8.2.4 Hritage
L'hritage permet d'inclure les caractristiques
d'une classe existante (classe de base) dans une
nouvelle classe (classe drive). Cela permet de
crer un nouveau type de donne partir d'un type
connu, dans le but de lui ajouter des fonctionnali-
ts, ou d'en modifier le comportement. La classe
de base ne sera donc pas modifie. Une classe
peut hriter d'une ou de plusieurs autres classes
dont elle devient une sous-classe.
Une classe drive hrite donc des membres et
des mthodes de sa ou ses classes mres, en plus
de ses propres membres et mthodes. Il n'est pas
ncessaire de dupliquer les membres et mthodes
de la ou des classes mres.
Pour plus de dtails, consultez le paragraphe Hri-
tage de classe, page 115.
8.2.5 Encapsulation de donnes
L'encapsulation des donnes est sans aucun doute
la notion la plus importante de la POO. Cette techni-
que permet de garantir que les donnes membres
de l'objet ne seront pas modifies tort par des
fonctions (mthodes) extrieures l'objet. Il est
ainsi possible d'interdire un utilisateur d'un objet
l'accs certain ou tous ses membres. Les mem-
bres dont l'accs est interdit sont appels mem-
bres privs.
Il n'est possible d'y accder qu' partir des mtho-
des prvues cet effet dans la classe.
8.3 Classe, membres et mthodes
Une classe est compose de :
donnes, appeles membres
constantes
procdures, appeles mthodes. Une mthode
est une procdure spcialement crite pour
manipuler les objets de la classe.
Pour utiliser une classe, il faut dclarer un ou plu-
sieurs objets. Tous les objets d'une classe donne
sont identiques par leur forme et leur comporte-
ment, mais leurs membres contiennent des don-
nes diffrentes.
Par dfaut les membres d'une classe sont publics,
ils sont accessibles aussi bien par une mthode de
la classe que par un traitement du projet ou de ses
lments (champ, fentre, page, ...)
Exemple de classe :
La classe "Fichier" est compose des membres :
Nom, Extension, Rpertoire
La classe "Fichier" a les mthodes suivantes :
SlectionFichier() pour slectionner un fichier et
affecter les membres de l'objet Fichier avec le
fichier slectionn
TailleFichier() pour connatre la taille du fichier de
l'objet Fichier
8.3.1 Dclaration de la classe
<NomClasse> est une classe
<Dclaration des membres>
FIN
ClasseSystme est une classe
Nom est une chane
FIN
Membre
Mthode
WLangage.book Page 110 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 111
8.3.2 Dclaration des membres
[<Accs>] [CONSTANT] [GLOBAL] <Nom du membre>
est un <Type du membre>
Les paramtres importants de cette syntaxe sont
les suivants :
<Accs> : Optionnel
Permet de restreindre l'accs ce membre de
la classe. 3 niveaux sont disponibles :
Priv : accs autoris depuis un code de la
classe
Protg : accs autoris depuis un code de la
classe ou un code d'une classe drive
Public (par dfaut) : accs autoris depuis
n'importe quel code de la classe ou du pro-
jet.
CONSTANT : Optionnel
Modifie les contraintes d'accs, en autorisant
un accs en lecture.
Protg CONSTANT : La valeur du membre
peut tre lue et modifie depuis un code de
la classe, uniquement lue depuis un code
d'une classe drive, et inaccessible depuis
un autre code de l'application.
Public CONSTANT : La valeur du membre
peut tre lue et modifie depuis un code de
la classe ou d'une classe drive, et unique-
ment lue depuis un autre code de l'applica-
tion.
GLOBAL : Optionnel
Dfinit un membre global. Ce membre existera
en dehors des objets. Il pourra tre utilis sans
instancier un objet. Si plusieurs objets sont
dclars, un membre global est commun
tous les objets.
<Nom du membre>
Nom identifiant le membre.
<Type du membre>
Type du membre choisi parmi les types disponi-
bles du WLangage.
8.3.3 Dclaration des constantes
CONSTANT <Nom constante> = ...
<Valeur de la constante>
ou
CONSTANT
<Nom constante> = <Valeur de la constante>
<Nom constante> = <Valeur de la constante>
FIN
Les paramtres importants de cette syntaxe sont
les suivants :
<Nom de la constante>
Nom de la constante. Une constante est publi-
que.
<Valeur de la constante>
Valeur associe la constante. Cette valeur ne
variera pas au cours du programme.
8.3.4 Dclaration des mthodes
Fonction [<Accs>] [Globale] [VIRTUELLE]
<Nom de la classe>::<Nom de la mthode>
([<Paramtre1>, ... [<ParamtreN>]])
ou
Procdure [<Accs>] [Globale] [VIRTUELLE]
<Nom de la classe>::<Nom de la mthode>
([<Paramtre1>, ... [<ParamtreN>]])
Les paramtres importants de cette syntaxe sont
les suivants :
<Accs> : Optionnel
Permet de restreindre l'accs cette mthode.
3 niveaux sont disponibles :
Priv : la mthode peut tre appele unique-
ment depuis un code de la classe
Protg : la mthode peut tre appele uni-
quement depuis un code de la classe ou un
code d'une classe drive
Public (par dfaut) : la mthode peut tre
appele depuis n'importe quel code de la
ClasseSystme est une classe
Nom est une chane Priv
Taille est un entier
FIN
CONSTANT K=5
CONSTANT
K=5
J=10
FIN
Procdure Globale ...
ClasseSystme::VoirObjet(obj)
// Le membre priv Taille est
// accessible depuis le code de
// la classe
Info("Nom : "+Obj:Nom + ...
"Taille : "+Obj:Taille)
Fonction Globale ...
ClasseSystme::Essai(a,b)
Renvoyer a+b
WLangage.book Page 111 Mardi, 23. avril 2013 1:59 13
112 Partie 2 : Syntaxe de base du WLangage
classe ou du projet.
Globale : Optionnel
Dfinit une mthode globale. Cette mthode
ne travaillera pas sur un objet particulier : il
n'est pas ncessaire de disposer d'un objet de
la classe pour appeler cette mthode.
Cette classe permet aussi de manipuler les
membres globaux.
Virtuelle : Optionnel
Dfinit une mthode virtuelle. Par dfaut, une
mthode redfinie est virtuelle.
<Nom de la classe>
Nom identifiant la classe.
<Nom de la mthode>
Nom identifiant la mthode.
<Paramtre 1 .... Paramtre N>
Paramtres optionnels passer la mthode.
Porte identifie par la couleur du
bandeau
Une mthode d'une classe peut tre publique, pri-
ve ou protge.
La couleur de dbut de bandeau de l'vnement
change en fonction de la porte de la mthode :
dbut de bandeau rouge : mthode prive.
dbut de bandeau orange : mthode protge.
dbut de bandeau habituel : mthode publique.
Suppression dune mthode
Une mthode peut tre supprime :
directement depuis le volet "Explorateur de pro-
jet" (option "Supprimer" du menu contextuel)
depuis l'diteur de code, par le menu contextuel
du bandeau de la mthode (option "Supprimer").
8.3.5 Cration et dclaration des proprits
Une proprit est un lment de code possdant
deux traitements : un traitement de rcupration
de la valeur et un traitement d'affectation de la
valeur.
Une proprit peut tre utilise comme une varia-
ble ou un membre (rcupration directe de la
valeur, affectation par le symbole '=', ...). Lors de
l'excution :
Toute opration ncessitant la lecture de la pro-
prit excute le traitement de rcupration de la
valeur. Ce traitement doit renvoyer une valeur.
Toute opration ncessitant l'criture de la pro-
prit excute le traitement d'affectation de la
valeur qui doit traiter un paramtre.
Cration dune proprit de classe
Pour crer une proprit de classe :
1. Dans l'explorateur de projet, affichez les diff-
rentes classes disponibles (droulez le dossier
"Classes").
2. Slectionnez la classe voulue. Affichez le menu
contextuel de la classe et slectionnez l'option
"Nouvelle proprit".
3. Saisissez le nom de la proprit dans la fentre
qui s'ouvre et validez.
4. L'diteur de code affiche les traitements lis la
proprit :
Traitement de rcupration de la proprit. Ce
traitement contient :
soit le mot-cl "RENVOYER" qui permet d'obtenir
la valeur de la proprit.
soit le mot-cl "RETOUR =" pour renvoyer la
valeur de la proprit.
Traitement d'affectation de la proprit. Ce traite-
ment permet de donner une valeur la proprit.
Cette valeur est passe en paramtre. Ce traite-
ment ne doit pas renvoyer de rsultat.
Remarque : Une nouvelle proprit peut galement
tre cre depuis le menu contextuel d'un membre.
Les procdures manipulent alors automatiquement
le membre spcifi.
Pour plus de dtails, consultez laide en ligne.
Droits daccs une proprit
Si le traitement de rcupration est vide, la lecture
de la proprit est interdite. Une erreur de compila-
tion apparatra sous l'diteur et une erreur se pro-
duira galement en excution.
Si le traitement d'affectation est vide, l'criture de
la proprit est interdite. Une erreur de compilation
apparatra sous l'diteur et une erreur se produira
galement en excution.
Les traitements de rcupration et d'affectation
peuvent tre publics, privs ou protgs. Les droits
d'accs de la proprit correspondent aux droits les
moins restrictifs des deux traitements.
Les proprits peuvent tre globales. Une proprit
est globale la classe lorsque les traitements de
rcupration et d'affectation sont globaux. Si l'un
des traitements est global, tous les traitements doi-
vent l'tre sinon une erreur de compilation est affi-
che.
Pour plus de dtails, consultez laide en ligne.
WLangage.book Page 112 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 113
8.4 Constructeur et destructeur
Par dfaut, lors de la cration d'une classe sous
l'diteur de code les mthodes Constructeur et
Destructeur sont automatiquement cres.
La mthode Constructeur, si elle est dfinie par le
dveloppeur, est automatiquement appele lors de
l'instanciation d'un objet. Elle permet par exemple
d'effectuer des initialisations sur l'objet ou relatives
l'objet (affectation des membres, vrifications...)
La mthode Destructeur, si elle est dfinie par le
dveloppeur, est automatiquement appele lors de
la suppression de l'objet (sortie de procdure dans
laquelle l'objet a t instanci). Elle permet par
exemple d'effectuer les traitements de libration de
ressources...
Les mthodes Constructeur et Destructeur ne peu-
vent pas contenir les fonctions Evnement, Timer,
Multitache, DnDEvnement, DDEEvnement,
AppelDLL32, ...
8.4.1 Constructeur de la classe
Dclaration du constructeur
Syntaxe :
PROCEDURE [<Accs>] Constructeur([<Param-
tres>])
Les paramtres importants de cette syntaxe sont
les suivants :
<Accs>
3 niveaux d'accs sont disponibles :
PUBLIC (par dfaut) : Le constructeur est
accessible en dehors de la classe.
PROTEGE : Le constructeur est accessible
dans la classe et dans les classes drives.
PRIVE : Le constructeur est accessible uni-
quement dans la classe.
<Paramtres>
Paramtres optionnels du constructeur.
8.4.2 Constructeur des classes de base et
des membres
Si une classe de base ou un membre de type
classe possde un constructeur, ce constructeur
est automatiquement appel sans paramtre. Il
faut :
soit attribuer des valeurs par dfaut aux param-
tres du constructeur (de la classe de base ou du
membre)
soit appeler explicitement le constructeur en lui
passant les paramtres.
Appel de la mthode constructeur
pour construire une classe
Syntaxe :
Constructeur <NomClasse>(<Paramtres>)
o
<NomClasse>
Nom identifiant la classe
<Paramtres>
Paramtres du constructeur.
Appel de la mthode constructeur
pour construire un membre
Syntaxe :
Constructeur <Nom Membre>(<Paramtres>)
o
<NomMembre>
Nom identifiant le membre de la classe
<Paramtres>
Paramtres du constructeur.
8.4.3 Mthode Destructeur
Dclaration de la mthode
Procdure <NomClasse>::Destructeur()
Le destructeur n'accepte aucun paramtre.
ClasseSystme est une classe
Nom est une chane
FIN
WLangage.book Page 113 Mardi, 23. avril 2013 1:59 13
114 Partie 2 : Syntaxe de base du WLangage
8.5 Objet
Pour accder une classe, il faut dclarer l'objet
comme tant de la classe manipuler, on parle
d'instanciation d'un objet.
Une instance est un objet qui appartient une
classe donne.
Pour manipuler un objet, il faut
1. dcrire sa classe,
2. dclarer l'objet comme tant de la classe.
Un objet peut tre pass en paramtre une fonc-
tion ou une procdure.
Remarque : Il est possible d'instancier dynamique-
ment un objet une classe. Pour plus de dtails,
consultez instanciation dynamique.
Exemple d'objet : "FichierSource" est un objet de la
classe "Fichier". Pour cet objet, il est possible de
manipuler les membres "Nom", "Extension"...
8.5.1 Dclaration d'un objet
<NomObjet> est [un] [objet] <NomClasse>
([<Paramtres>])
Les paramtres importants de cette syntaxe sont
les suivants :
<NomObjet>
Nom identifiant l'instance de la classe.
<Nom classe>
Nom identifiant la classe, dfini lors de la cra-
tion de la classe sous l'diteur de code.
<Paramtres>
Paramtres optionnels du constructeur.
8.5.2 Les membres d'un objet
Un membre d'un objet est une donne associe
l'objet. Un objet possde ncessairement tous les
membres dcrits dans la classe. Un membre est
galement appel proprit de l'objet.
Les membres d'un objet correspondent tous les
membres dfinis pour la classe d'origine de l'objet.
Rappel : un membre est dclar dans la classe.
8.5.3 Les mthodes d'un objet
Les mthodes d'un objet sont des fonctionnalits
associes l'objet. Un objet possde ncessaire-
ment toutes les mthodes dcrites dans la classe.
Ces mthodes peuvent tre appeles de diffren-
tes faons selon le lieu de l'appel.
1. Appeler une mthode appartenant un objet
diffrent de l'objet en cours
<Nom Objet> : <Nom Mthode> ([<Paramtres>])
La mthode est recherche parmi les mthodes de
la classe de l'objet. Si la mthode n'est pas trou-
ve, elle est recherche parmi les mthodes des
classes anctres de la classe de l'objet.
2. Appeler une mthode de l'objet en cours
: <Nom Mthode> ([<Paramtres>])
3. Appeler une mthode d'une classe anctre qui
a t redfinie
<Nom Objet> : <Nom Classe> :: <Nom Mthode>
([<Paramtres>])
4. Appeler une mthode de classe gnrale
<Nom Classe>::<Nom Mthode>([<Paramtres>])
8.5.4 Dure de vie d'un objet
L'objet est cr lors de sa dclaration. Par dfaut
l'objet est local. L'objet est automatiquement
dtruit la fin du traitement contenant sa
dclaration :
Un objet dclar global dans le code de dclara-
tion des globales d'une fentre / page sera
dtruit la fin du traitement de fermeture de la
fentre / page.
Un objet dclar global dans le code d'initialisa-
tion d'un projet sera dtruit la fermeture du pro-
jet.
FichierSource est un objet Fichier
FichierSource est un Fichier
FichierS est un Fichier
FichierD est un Fichier
ch1,ch2 sont des Chanes
// Mthode de slection d'un fichier
FichierS:SlectionFichier()
FichierD:SlectionFichier()
// Appel de la mthode de vrif.
// de l'espace disponible
SI FichierS:EspaceRestant(...
FichierD:Repertoire[[1]]) alors
ch1= FichierS:Repertoire+"\"+...
FichierS :Nom+"."+ ...
FichierS Extension
ch1= FichierD :Repertoire+"\"+...
FichierD :Nom+"."+ ...
FichierD :Extension
fCopieFichier(FichierS,FichierD)
SINON
Erreur("Espace non suffisant")
FIN
WLangage.book Page 114 Mardi, 23. avril 2013 1:59 13
Partie 2 : Syntaxe de base du WLangage 115
8.6 Instanciation dynamique d'un objet
Un objet peut tre associ dynamiquement une
classe, on parle alors d'instanciation dynamique de
l'objet.
L'instanciation dynamique d'objet permet de crer
un objet un instant donn et de librer cet objet
lorsqu'il n'est plus utilis.
Pour instancier un objet, il faut :
1. dclarer un objet dynamique
2. instancier l'objet
Remarque : la libration de l'objet est automatique
lorsquil n'est plus utilis. Toutefois, il est possible
de forcer la destruction de l'objet (pour provoquer
l'excution du destructeur par exemple).
8.6.1 Dclaration d'un objet dynamique
<NomObjet> est [un][objet] <NomClasse> dyna-
mique
Les paramtres de cette syntaxe sont les suivants :
<NomObjet> : Nom identifiant l'instance de la
classe.
<Nom classe> : Nom identifiant la classe, dfini
lors de la cration de la classe sous l'diteur de
code.
8.6.2 Instancier un objet dynamique
<NomObjet> = ...
allouer un <Nom Classe> [<Paramtres>])
Les paramtres de cette syntaxe sont les suivants :
<NomObjet> : Nom identifiant l'instance de la
classe.
<Nom classe> : Nom identifiant la classe, dfini
lors de la cration de la classe sous l'diteur de
code.
<Paramtres> : Paramtres optionnels du cons-
tructeur.
8.6.3 Librer un objet dynamique
Librer <NomObjet>
8.7 Hritage de classe
L'organisation hirarchique en classe et sous
classe a permis de crer la notion d'hritage.
Autrement dit un objet de la sous-classe A (classe
drive) qui possde les mmes caractristiques
que la classe B (classe anctre), plus certaines qui
lui sont propres, hrite d'emble des caractristi-
ques de la classe B sans qu'il soit ncessaire de
dupliquer les programmes dans l'objet de la sous-
classe A. Ainsi le nombre de lignes de code dimi-
nue.
L'hritage est le mcanisme par lequel la classe
en cours de description utilise les mthodes et les
membres dfinis dans les classes existantes.
La classe existante est appele Classe anctre
ou classe de base.
La nouvelle classe est appele Classe drive.
La Classe drive englobe la classe anctre et y
ajoute de nouvelles mthodes et de nouveaux
membres.
Le but de l'hritage est de rcuprer pour une
classe, les mthodes dveloppes pour une autre
classe, en y ajoutant les spcificits de la nouvelle
classe.
Une classe drive permet ses objets d'accder
toutes les mthodes et tous les membres de ses
classes anctres; tout se passe comme si les
mthodes et les membres des classes anctres fai-
saient partie de la classe drive.
Caractristiques d'un hritage :
Un hritage peut tre multiple. Dans ce cas la
classe drive peut tre drive de plusieurs
classes anctres.
Un hritage peut tre priv ou public (par dfaut).
Si l'hritage est public, il est possible d'accder
aux mthodes et aux membres hrits depuis
l'extrieur de la classe.
Si l'hritage est priv, seules les mthodes de la
classe drive peuvent accder aux mthodes et
aux membres hrits.
Fichier est une classe
Nom est une Chane
Extension est une Chane
Rpertoire est une Chane
Fin
FichierSource est un objet
Fichier dynamique
//...
//crer l'objet
//FichierSource =Allouer un Fichier
//traitement sur l'objet ...
//...
//librer l'objet
//Liberer FichierSource
WLangage.book Page 115 Mardi, 23. avril 2013 1:59 13
116 Partie 2 : Syntaxe de base du WLangage
8.7.1 Syntaxe
<NomClasseDrive> est une classe
[PRIVE, PROTEGE, PUBLIC]
Un objet <NomClasseAnctre>
<Nom Membre classe Drive> est
<Type membre>
...
FIN
Les paramtres importants de cette syntaxe sont
les suivants :
<NomClasseDrive> : Nom identifiant la classe
drive en cours de dclaration.
PRIVE : Mot-cl optionnel. Indique si l'hritage
est priv ou non. Si ce mot n'est pas prcis,
l'hritage est public.
<NomClasseAnctre> : Nom de la classe anc-
tre.
<Nom Membre classe Drive> : Nom du mem-
bre de la classe drive. Ce membre sera utilisa-
ble uniquement dans un objet de la classe
drive.
<Type du membre> : Type du membre, choisi
parmi les types disponibles.
8.7.2 Redfinition de mthodes
Dans une classe drive, une mthode de la classe
de base peut tre redfinie en crant dans la
classe drive une mthode de mme nom que
celle de la classe de base.
La redfinition de mthode permet de modifier le
comportement de la mthode dfinie dans la
classe de base; la classe drive peut ventuelle-
ment redfinir la mthode en fonction de ses
besoins.
Par dfaut, la mthode redfinie est une mthode
virtuelle.
Remarque : la surcharge d'une mthode (utilisation
de deux mthodes de mme nom dans la mme
classe) n'est pas gre en WLangage.
Note : le mot-cl Objet permet d'accder l'objet
courant l'intrieur d'une mthode.
Fichier est une Classe
Nom est une Chane
Extension est une Chane
Rpertoire est une Chane
Fin

InfoFichier est une classe
un objet Fichier
TailleF est un entier
DateF est une Chane
HeureF est une Chane
Fin
WLangage.book Page 116 Mardi, 23. avril 2013 1:59 13
PARTIE 3
Gestion des champs,
des fentres
et des pages
WLangage.book Page 117 Mardi, 23. avril 2013 1:59 13
WLangage.book Page 118 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 119
1. GESTION DES FENTRES
1.1 Prsentation
Les fentres constituent l'interface principale d'une
application WinDev. En effet, c'est grce aux fen-
tres que les utilisateurs vont pouvoir consulter et
manipuler des informations. Ces informations peu-
vent tre dynamiques et provenir par exemple de
fichiers de donnes, de requtes ou tre statiques,
saisies directement dans les champs de la fentre.
WinDev et WinDev Mobile proposent plusieurs fonc-
tions permettant de grer les fentres.
Ce chapitre prsente :
les fonctions de gestion des fentres.
les fonctions MDI.
les fonctions de gestion des menus.
1.2 Fonctions de gestion des fentres
Les fonctions permettant de grer les fentres sont les suivantes :
WD WDMobile
Abandonne Ferme la fentre en cours en excutant ventuellement le code du bouton de type
"ABANDON"
ChangeFentre-
Source
Change dynamiquement la fentre affiche dans un champ fentre interne
ChangeGabarit Change le gabarit d'une fentre.
DlaiAvantFerme-
ture
Limite le temps d'affichage d'une fentre (lorsque le temps spcifi est coul, le code
d'un bouton de la fentre est excut)
DsactiveFAA Dsactive une Fonctionnalit Automatique d'une Application (FAA) sur un champ, sur
une fentre ou sur l'application en cours.
EnumreElment Enumre les fentres d'un projet
EnumreSousEl-
ment
Enumre les groupes ou les menus d'une fentre.
ExcuteFAA Excute une Fonctionnalit Automatique d'une Application (FAA) sur un champ ou une
fentre.
FenActiveGFI Active ou dsactive le GFI
FenAdapteHauteur Adapte la hauteur de la fentre au contenu des champs.
FenAdapteLargeur Adapte la largeur de la fentre au contenu des champs.
FenAdapteTaille Adapte la taille de la fentre au contenu des champs. La fentre se redimensionne
pour afficher les champs de manire optimale (sans ligne vide et sans ascenseur)
FenAnimationFer-
meture
Modifie le type et la dure des animations utilises lors de la fermeture des fentres
de l'application
FenAnimationOuver-
ture
Modifie le type et la dure des animations utilises lors de louverture des fentres de
l'application
FenAnimationSui-
vante
Modifie le type et la dure de la prochaine animation de fentre
FenChangeAlias Modifie l'alias d'une fentre
FenColleFormulaire Colle le contenu d'un formulaire stock dans le presse-papiers.
FenCopieFormulaire Copie le contenu d'un formulaire dans le presse-papiers.
FenDsactiveEffet Dsactive des effets visuels du moteur graphique de WinDev. Cette fonction est utile
pour permettre une application de fonctionner sur un poste ayant des capacits gra-
phiques limites ou pour le mode TSE si la bande passant est limite.
FenDonneHauteurA-
dapte
Renvoie la hauteur d'une fentre, adapte au contenu des champs.
WLangage.book Page 119 Mardi, 23. avril 2013 1:59 13
120 Partie 3 : Gestion des fentres, des pages et des champs
FenDonneLargeurA-
dapte
Renvoie la largeur d'une fentre, adapte au contenu des champs.
FenEffetInactif Active ou dsactive le GFI
FenEnCours Identifie la fentre en cours de saisie
FenEnExcution Identifie la fentre contenant le code du WLangage en cours d'excution
FenEtat Identifie ou modifie l'tat d'une fentre
FenExtHaut Renvoie la hauteur totale d'une fentre
FenExtLarg Renvoie la largeur totale d'une fentre
FenExtPosX Renvoie la position horizontale d'une fentre par rapport au coin haut gauche de
l'cran
FenExtPosY Renvoie la position verticale d'une fentre par rapport au coin haut gauche de l'cran
FenForceGFI Force le GFI (Grisage des Fentres Inaccessibles) sur une fentre mme si cette fen-
tre n'est pas inaccessible.
FenHauteurBarreI-
cone
Renvoie ou modifie la hauteur actuelle de la zone "Barre d'icnes" de la fentre mre
MDI en cours
FenImageFond Modifie l'image de fond d'une fentre en prcisant le mode d'affichage de cette image
FenInitialise Permet de savoir si le code de fin d'initialisation d'une fentre a t excut.
FenIntHaut Renvoie la hauteur interne d'une fentre
FenIntLarg Renvoie la largeur interne d'une fentre
FenIntPosX Renvoie la position horizontale de la zone interne d'une fentre par rapport au coin
haut gauche de l'cran
FenIntPosY Renvoie la position verticale de la zone interne d'une fentre par rapport au coin haut
gauche de l'cran
FenOrientation Modifie ou rcupre lorientation daffichage de la fentre courante.
FenPrcdente Identifie la fentre qui tait en cours de saisie avant la fentre actuellement en cours
de saisie
FenRectangleEcran Renvoie les coordonnes de l'cran qui contient une fentre.
FenRepeint Re-dessine immdiatement les champs de la fentre ncessitant une mise jour gra-
phique
FenTaille Renvoie ou modifie le mode d'affichage d'une fentre, modifie la hauteur et/ou la lar-
geur d'une fentre, dplace une fentre et modifie sa hauteur et/ou sa largeur
FenTailleUtile Change dynamiquement la taille utile de la fentre interne affiche dans un champ
fentre interne.
FenTauxGFI Permet de connatre ou de modifier le taux de grisage des fentres utilisant le GFI
Ferme Ferme une fentre WinDev (en renvoyant si ncessaire une valeur)
Iconise Iconise une fentre WinDev
ImageFentre Cre l'image de la fentre spcifie dans un fichier BMP
InitFentre Initialise les champs zro (ou non) et lance les traitements d'initialisation des
champs et de la fentre
Maximise Affiche une fentre WinDev dans sa taille maximale
MultitacheRepeint Re-dessine immdiatement les champs de la fentre ncessitant une mise jour gra-
phique
NombreFentre Calcule le nombre de fentres de l'application en cours actuellement ouvertes
Ouvre Ouvre une fentre modale WinDev
OuvreFille Ouvre une fentre fille non modale
OuvrePopup Ouvre une fentre popup
OuvrePopupPosition Ouvre une fentre popup selon une position dfinie
OuvreSoeur Ouvre une fentre soeur non modale
RAZ R-initialise les champs de la fentre en cours.
Restaure Affiche une fentre WinDev dans sa taille initiale
WLangage.book Page 120 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 121
1.3 Fonctions MDI
Les fonctions permettant de grer les fentres MDI sont les suivantes :
1.4 Fonctions de gestion des menus
WinDev et WinDev Mobile proposent plusieurs fonc-
tions du WLangage spcifiques aux options de
menu :
StyleDessin Permet de connatre et de modifier le mode d'affichage des boutons griss ainsi que le
mode d'affichage du cadre translucide des fentres de votre application.
TitreEnCours Modifie le titre de la fentre en cours et la barre de titre
TitreSuivant Modifie le titre de la prochaine fentre ouvrir
Utilise Ouvre une fentre WinDev et ferme toutes les autres fentres prcdemment ouvertes
Pour plus de dtails sur ces fonctions, et pour connatre la disponibilit de ces fonctions dans les diffrents
produits (WinDev, WinDev Mobile), consultez laide en ligne.
MDIActive Identifie ou active une fentre fille MDI en avant-plan
MDIEnumreFille Renvoie l'alias de la fentre fille MDI spcifie
MDIMenuFentre Modifie l'agencement des fentres filles MDI
MDIMre Identifie le nom de la fentre mre MDI
MDIOuvre Ouvre une fentre fille MDI
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Ces fonctions sont disponibles uniquement sous WinDev.
ChampContextuel Identifie le champ sur lequel le menu contextuel a t ouvert
EnumreMenu Renvoie le nom de la nime option de menu
EnumreSousElment Utilise dans une boucle, cette fonction permet d'numrer les menus drou-
lants ou les menus contextuels d'une fentre ou d'un champ.
grMenu Active ou dsactive le menu contextuel d'un graphe.
MenuAjoute Ajoute un menu contextuel dans un menu
MenuAjouteMenu Ajoute un nouveau menu dans une fentre. Ce menu pourra contenir d'autres
menus, des options de menu, des sparateurs,
MenuAjouteOption Ajoute une nouvelle option de menu la fin d'un menu. Cette option de menu
excute une procdure passe en paramtre.
MenuAjouteOptionURL Ajoute une nouvelle option de menu la fin d'un menu prsent dans une
page. Cette option de menu excute une URL passe en paramtre et affiche
la page correspondante.
MenuAjouteSparateur Ajoute un nouveau sparateur dans un menu.
MenuClone Clone un menu ou une option de menu ainsi que le code associ.
MenuDmarque Enlve la marque devant l'option de menu
MenuEtat Identifie l'tat d'une option de menu : active, inactive ou invisible
MenuExiste Indique si une option de menu existe dans un menu.
WLangage.book Page 121 Mardi, 23. avril 2013 1:59 13
122 Partie 3 : Gestion des fentres, des pages et des champs
MenuInsreMenu Insre un menu avant un autre menu dans une fentre. Le menu insr
pourra contenir d'autres menus, des options de menus, des sparateurs,
MenuInsreOption Insre une nouvelle option une position spcifique. Cette option de menu
excute une procdure passe en paramtre.
MenuInsreSparateur Insre un sparateur dans un menu.
MenuInvisible Rend une option de menu invisible
MenuLibell Identifie ou modifie le libell d'une option de menu
MenuMarquage Permet de savoir si la marque est prsente devant l'option de menu
MenuMarque Positionne la marque devant l'option de menu
MenuSelectMoins Dsactive (grise) une option de menu
MenuSelectPlus Active une option de menu
MenuSupprime Supprime un menu ou une option de menu
OuvreMenuContextuel Ouvre automatiquement un menu contextuel pour le champ ou la fentre en
cours
PiloteMenu Pilote le prochain menu qui sera ouvert, puis excute automatiquement une
option de ce menu indique en paramtre.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Ces fonctions sont disponibles uniquement sous WinDev.
WLangage.book Page 122 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 123
2. GESTION DES PAGES
2.1 Prsentation
Les pages constituent l'interface principale d'un
site WebDev. En effet, c'est grce aux pages que
les internautes vont pouvoir consulter et manipuler
des informations.
Ces informations peuvent tre :
dynamiques et provenir par exemple de fichiers
de donnes, requtes, ... Ces informations
varient en fonction des demandes des internau-
tes.
statiques. Ces informations sont fixes et ne
changent pas.
2.2 Fonctions de gestion des pages
Les fonctions permettant de grer les pages sont
les suivantes :
WB
AnnuleContexteAWP Supprime du contexte AWP une variable ajoute par la fonction DclareContex-
teAWP.
CelluleAfficheDialogue Affiche une cellule dans la page avec un effet de GFI (Grisage des Fentres Inac-
cessibles).
CelluleFermeDialogue Masque une cellule affiche dans la page via la fonction CelluleAfficheDialogue.
ChangeAction Permet de spcifier l'action effectue en cas de dsynchronisation entre la page
HTML affiche dans le navigateur et le contexte de page sur le serveur
ChangeDestination Change par programmation le cadre de destination de la page en cours aprs l'ex-
cution d'un clic de bouton
ConfigureContexteAWP Dfinit le mode de fonctionnement des contextes AWP.
ContexteExiste Permet de savoir si un contexte de page existe sur le serveur.
ContexteFerme Ferme un contexte de page
ContexteOuvre Ouvre un contexte de page sans renvoyer les informations vers le navigateur
DclareContexteAWP Permet de dclarer une liste de variables dont la valeur sera persistante entre les
affichages successifs des pages AWP.
Enumrechamp Enumre les champs d'une page.
EnumreSousElement Enumre les sous-lments d'une page
FramesetActualise Actualise un frameset affich dans le navigateur de l'internaute partir du con-
texte prsent sur le serveur
FramesetAffiche Affiche un frameset dans le navigateur de l'internaute
FamesetUtilise Affiche un frameset WebDev dans le navigateur de l'internaute et ferme tous les
contextes de pages et de frameset en cours
IdentifiantContexteAWP Renvoie l'identifiant du contexte AWP.
PageActiveGFI Active ou dsactive le GFI lors de l'affichage d'une page modale.
PageActualise Actualise une page affiche dans le navigateur de l'internaute partir du contexte
prsent sur le serveur
PageAdresse Permet d'obtenir l'adresse Internet d'une page WebDev
PageAffiche Affiche une page dans le navigateur de l'internaute
PageAfficheDialogue Affiche une page de manire modale (cre un dialogue avec l'utilisateur).
PageCourante Renvoie le nom de la page contenant le code WLangage en cours d'excution.
PageExiste Vrifie si la page est actuellement affiche dans le navigateur de l'internaute
WLangage.book Page 123 Mardi, 23. avril 2013 1:59 13
124 Partie 3 : Gestion des fentres, des pages et des champs
2.3 Fonctions de gestion des menus
WebDev propose plusieurs fonctions du WLangage
spcifiques aux options de menu :
PageFermeDialogue Ferme la page courante. Cette page a t ouverte avec la fonction PageAfficheDia-
logue. Une valeur de retour peut tre renvoye la page appelante.
PageInitialisation Remet zro (ou non) les champs de la page encours et lance les traitements d'ini-
tialisation des champs
PageParamtre Renvoie la valeur d'un paramtre pass la page en cours
PagePosition Fait dfiler une page pour position un champ dans la partie visible de la page (le
plus haut) dans le navigateur
PagePrcdente Renvoie le nom de la page prcdente
PageSemiDynami-
queAffiche
Affiche une page semi-dynamique dans le navigateur de l'internaute partir d'une
page WebDev dynamique ou statique.
PageTauxGFI Dfinit et renvoie le taux de grisage utilis par le GFI.
PageUtilise Affiche une page WebDev dans le navigateur de l'internaute et ferme tous les con-
textes de pages en cours
PageValide Valide la page spcifie et lance l'excution d'un bouton
PageVersASP Envoie les donnes d'une page affiche sous le navigateur vers un serveur ASP
PageVersEmail Envoie les donnes d'une page affiche sous le navigateur dans un email
PageVersJSP Envoie les donnes d'une page affiche sous le navigateur vers un serveur JSP
PageVersPHP Envoie les donnes d'une page affiche sous le navigateur vers un serveur PHP
PopupAffiche Affiche une popup dans la page avec un effet de GFI (Grisage des Fentres Inacces-
sibles).
PopupAnime Affiche une popup dans une cellule de la page.
PopupFerme Masque une popup affiche dans la page via la fonction PopupAffiche.
SiteAdresse Renvoie l'adresse Internet de connexion un site dynamique WebDev situ sur le
mme serveur
SiteDynamiqueAffiche Affiche un site dynamique (cr avec WebDev) dans le navigateur de l'internaute
partir d'une page WebDev dynamique ou statique
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents types de code (code Serveur et code Navi-
gateur), consultez laide en ligne.
ChampContextuel Identifie le champ sur lequel le menu contextuel a t ouvert
EnumreMenu Renvoie le nom de la nime option de menu
MenuAjouteMenu Ajoute un nouveau menu dans une fentre.
MenuAjouteOption Ajoute une nouvelle option de menu la fin d'un menu. Cette option de menu
excute une procdure passe en paramtre.
MenuAjouteOptionURL Ajoute une nouvelle option de menu la fin d'un menu prsent dans une page.
Cette option de menu excute une URL passe en paramtre et affiche la page
correspondante.
MenuAjouteSparateur Ajoute un nouveau sparateur dans un menu.
MenuInsreSparateur Insre un sparateur dans un menu.
MenuSupprime Supprime un menu ou une option de menu
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
WLangage.book Page 124 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 125
3. GRER LE BOUTON "PRCDENT" DANS
UNE PAGE
3.1 Prsentation
Le bouton "Prcdent" ou "Back" du navigateur per-
met l'internaute d'afficher les pages prcdentes
dj consultes.
Dans un site WebDev, chaque page HTML affiche
sur le navigateur est associe un contexte de
page, prsent sur le serveur. Chaque action effec-
tue dans une page affiche par le navigateur doit
entraner une action identique sur le contexte de
page correspondant prsent sur le serveur.
Or l'utilisation du bouton "Prcdent" du navigateur
permet de raliser une action uniquement sur le
navigateur : la page affiche sur le navigateur et
son contexte prsent sur le serveur peuvent donc
tre dsynchroniss en cas d'utilisation du bouton
"Prcdent" du navigateur.
3.1.1 Deux mthodes de gestion du bouton
"Prcdent" du navigateur
Pour viter tout problme li la dsynchronisation
entre les pages affiches sur le navigateur et les
contextes correspondants prsents sur le serveur,
WebDev met votre disposition deux modes de
gestion du bouton "Prcdent" du navigateur :
Solution 1 : Empcher le retour sur cette page
depuis le bouton "prcdent" du navigateur.
Si le bouton "Prcdent" du navigateur est utilis
pour afficher la page, cette action n'aura aucun
effet.
Solution 2 : Gestion de la synchronisation (solu-
tion par dfaut)
Pour chaque action effectue dans une page
depuis le navigateur, un test de synchronisation
entre la page HTML et son contexte est automati-
quement ralis.
Deux modes de gestion de la synchronisation
sont possibles :
synchronisation par dfaut (mode utilis par
dfaut lors de la cration d'une nouvelle page).
synchronisation programme.
3.1.2 Exemple de dsynchronisation
Voici un exemple de site :
Une page du navigateur contient une table fichier
reli au fichier de donnes ITEM et un lien "Sui-
vant".
Le fichier de donnes ITEM ne contient quune
rubrique, chaque enregistrement est constitu
dune lettre de lalphabet.
La page permet dafficher 6 lignes de la table, le
lien "Suivant" permet dafficher les 6 suivantes.
A louverture de la page, la table affiche les 6 pre-
miers enregistrements du fichier de donnes (de
A F). Voici un enchanement d'actions faites par
l'utilisateur :
1. clic sur le lien "Suivant"
Rsultat : le serveur se positionne sur les 6 enre-
gistrements suivants de ITEM et renvoie au naviga-
teur leurs contenus. Le navigateur affiche la page
suivante de la table avec les 6 nouveaux contenus
(G L).
2. clic sur "Prcdent" du navigateur
Rsultat : le navigateur affiche la page prcdant
la premire action. La table affiche contient les
lettres A F. Le serveur na pas t sollicit, il est
donc toujours positionn sur les enregistrements
G L.
3. clic sur "Suivant"
Rsultat : le serveur se positionne sur les 6 enre-
gistrements suivants de ITEM (donc de M R). Le
navigateur se synchronise avec le serveur et affi-
che les mmes lments : linternaute a l'impres-
sion que certaines informations ne sont pas
affiches.
Ce dysfonctionnement peut avoir des consquen-
ces inattendues lors dune modification dun enre-
gistrement du fichier de donnes (modification de
l'enregistrement qui n'est pas celui visualis par
l'internaute par exemple).
Rappel : chaque action sur le navigateur doit
entraner une action du serveur : le serveur envoie
alors une rponse au navigateur. Or le clic sur le
bouton "Prcdent" du navigateur tant une action
navigateur indpendante de votre site WebDev, la
deuxime condition peut ne pas tre ralise.
WB
WLangage.book Page 125 Mardi, 23. avril 2013 1:59 13
126 Partie 3 : Gestion des fentres, des pages et des champs
3.2 Empcher lutilisation du bouton "Prcdent"
Si le bouton "Prcdent" du navigateur est utilis
pour afficher la page, cette action n'aura aucun
effet.
3.2.1 Fonctionnement
La dsactivation de la fonction "Page prcdente"
du navigateur entrane l'insertion du code Javas-
cript suivant dans la page HTML gnre :
Lors de l'excution de la page sous un navigateur, il
sera impossible de revenir sur cette page par la tou-
che "Prcdent" du navigateur.
Remarques :
Lutilisation du bouton "Prcdent" du navigateur
peut entraner un clignotement de la page.
Ce mcanisme peut tre mis en chec si un clic
sur le bouton [STOP] du navigateur intervient
avant lexcution de l'instruction forward() par le
navigateur.
3.2.2 Mise en place
Pour dsactiver le bouton "Prcdent" du naviga-
teur pour une page prcise :
1. Affichez la fentre de description de la page.
Pour cela, sous le volet "Page", cliquez sur le bou-
ton du groupe "Edition".
2. Dans l'onglet "Dtail", cochez loption "Empcher
le retour sur cette page depuis le bouton "Prc-
dent" du navigateur".
3. Validez.
Pour dsactiver le bouton "Prcdent" du naviga-
teur pour un frameset :
1. Affichez l'onglet "Dtail" de la fentre de descrip-
tion du frameset (option "Description" du menu
contextuel de la frame).
2. Cochez loption "Empcher le retour sur ce fra-
meset depuis le bouton "Prcdent" du navigateur".
3. Validez.
Pour dsactiver le bouton "Prcdent" du naviga-
teur pour toutes les pages du projet :
1. Affichez la description du projet (sous le volet
"Projet", dans le groupe "Projet", cliquez sur "Des-
cription").
2. Cliquez sur longlet "Options".
3. Cochez loption "Empcher le retour sur la page
depuis le bouton "Prcdent" du navigateur".
4. Validez. Cette option sera automatiquement
prise en compte pour toutes les nouvelles pages du
site.
3.3 Gestion de la synchronisation
3.3.1 Prsentation
Grce au mcanisme de synchronisation des
pages, lors de chaque action effectue dans une
page une vrification de synchronisation est auto-
matiquement ralise. Cette vrification consiste
vrifier si la page affiche sur le navigateur corres-
pond bien au contexte de page prsent sur le ser-
veur.
Deux modes de gestion de la synchronisation sont
disponibles :
1. Gestion de la synchronisation par dfaut.
2. Gestion de la synchronisation par programma-
tion, dans le code de synchronisation de la page.
3.3.2 Synchronisation par dfaut
Le mcanisme de synchronisation par dfaut est
dclench uniquement si l'option "Utiliser le mca-
nisme de synchronisation des pages" est slection-
ne pour la page.
En cas de dsynchronisation, un message daver-
tissement informe l'internaute que laction deman-
de na pu tre effectue. La page correspondant
au contexte prsent sur le serveur est raffiche.
Le site peut continuer fonctionner.
Pour mettre en place la gestion de la synchronisa-
tion dans une page :
1. Affichez la fentre de description de la page.
Pour cela, sous le volet "Page", cliquez sur le bou-
ton du groupe "Edition".
2. Dans l'onglet "Dtail", cochez l'option "Utiliser le
mcanisme de synchronisation des pages".
3. Validez. Cette page sera automatiquement
<SCRIPT LANGUAGE="JavaScript">
history.forward()
</SCRIPT>
WLangage.book Page 126 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 127
incluse dans l'historique des pages du navigateur :
il sera possible de revenir sur cette page par la tou-
che "Prcdent" du navigateur.
Pour mettre en place la gestion de la synchronisa-
tion dans toutes les pages du projet :
1. Affichez la description du projet. Pour cela, sous
le volet "Page", cliquez sur le bouton du
groupe "Edition".
2. Dans longlet "Options", cochez l'option "Utiliser
le mcanisme de synchronisation des pages".
3. Validez. Les pages du projet seront automatique-
ment incluses dans l'historique des pages du
navigateur : il sera possible de revenir sur ces
pages par la touche "Prcdent" du navigateur.
Remarques :
Ce mode de gestion ne ncessite aucun code
WLangage particulier.
Pour les champs de la page ne ncessitant pas
une gestion de la synchronisation (bouton "Fer-
mer" par exemple) il est possible de dbrancher
le mcanisme de synchronisation : il suffit de
cocher l'option "Dsactiver le mcanisme de syn-
chronisation des pages pour ce champ" dans
longlet "Avanc" de la description du champ.
Le message d'avertissement peut tre personna-
lis (voir le paragraphe suivant).
3.4 Synchronisation par programmation
Pour grer la synchronisation par programmation :
1. Affichez la fentre de description de la page.
Pour cela, sous le volet "Page", cliquez sur le bou-
ton du groupe "Edition".
2. Dans l'onglet "Dtail", cochez l'option "Utiliser le
mcanisme de synchronisation des pages".
3. Configurez si ncessaire les champs de la page
pour lesquels la synchronisation ne doit pas tre
gre.
Pour chaque champ dclenchant une action sur le
serveur, il est possible de paramtrer si la gestion
de la synchronisation de la page doit tre effectue
(option par dfaut) ou ignore lors de cette action.
Pour ignorer la gestion de la synchronisation, il suf-
fit de cocher l'option "Dsactiver le mcanisme de
synchronisation des pages pour ce champ" dans
longlet "Avance" de la description du champ.
4. Saisissez le code ncessaire la gestion person-
nalise de la synchronisation dans le code de syn-
chronisation de la page. Utilisez la fonction
ChangeAction dans le code de synchronisation de
la page. Cette fonction permet de dterminer
l'action qui sera faite en cas de dsynchronisation
de la page.
Remarques :
La fonction ChangeAction est initialise avec
l'action "Ne rien faire" si une fonction du WLan-
gage permettant d'afficher ou de rafficher une
page est utilise dans le code de synchronisation
de la page.
Pour personnaliser le message de dsynchroni-
sation, il suffit de saisir dans le code de synchro-
nisation de la page :
1. le message personnalis.
2. le raffichage de la page en cours sur le ser-
veur (avec la fonction PageActualise par exem-
ple).
Pour raliser une synchronisation partir des
informations prsentes sur le poste de l'inter-
naute, il est conseill de :
1. Utiliser un champ cach contenant l'identifiant
de l'enregistrement affich et slectionn.
2. Rechercher dans le code de synchronisation
l'enregistrement en cours sur le navigateur. Cette
recherche est ralise partir de son identifiant
contenu dans le champ cach.
3. Ractualiser la page.
WLangage.book Page 127 Mardi, 23. avril 2013 1:59 13
128 Partie 3 : Gestion des fentres, des pages et des champs
4. DIALOGUER AVEC L'UTILISATEUR OU
LINTERNAUTE
4.1 Prsentation
WinDev, WebDev et WinDev Mobile permettent de
dialoguer avec lutilisateur ou linternaute grce
aux botes de dialogue.
Il est possible dutiliser des botes de dialogue stan-
dard (composes dune image, dun texte et de plu-
sieurs boutons : OK, Annuler, Oui ou Non).
WinDev permet galement dutiliser des botes de
dialogue avances, permettant :
dafficher un texte spcifique dans les boutons,
pour une meilleure comprhension.
de permettre une saisie lutilisateur.
4.2 Les botes de dialogue standard
Les botes de dialogue sont des fentres standard
permettant de dialoguer avec l'utilisateur. Il est
ainsi possible de lui signaler une erreur, demander
une confirmation, etc.
Les botes de dialogue comportent toujours les
mmes lments :
Une icne permettant d'identifier rapidement le
type du message affich : Information, Question
ou Erreur.
Un titre affich dans la barre de titre.
Un ou plusieurs boutons permettant l'utilisa-
teur / linternaute de choisir la rponse voulue.
Le nombre et le type de ces boutons dpendent
du type de la bote de dialogue utilise.
Un texte sur une ou plusieurs lignes correspon-
dant au message destin l'utilisateur/linter-
naute.
Plusieurs types de botes de dialogue sont
disponibles :
Les botes d'information ou d'erreur (fonction
Avertissement, Info ou Erreur du WLangage).
Par exemple :
Les botes de question (fonction OuiNon du
WLangage).
Les botes de confirmation (fonction Confirmer
du WLangage).
Par dfaut, les botes de dialogue sont fermes uni-
quement lors de l'action de l'utilisateur / linter-
naute sur un des boutons de la bote. Si aucun
bouton n'est enfonc, l'application / le site est blo-
qu(e).
Pour viter tout risque de blocage, il suffit d'utiliser
la fonction DlaiAvantFermeture en indiquant la
dure voulue avant la fermeture automatique de la
bote de dialogue.
WLangage.book Page 128 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 129
4.3 Les botes de dialogue avances
4.3.1 Prsentation
Les botes de dialogue avances sont des fentres
permettant de dialoguer avec l'utilisateur. Ces fen-
tres permettent de grer :
l'interrogation directive : l'utilisateur rpond
une question grce des boutons contenant le
texte de l'action effectuer.
la saisie immdiate, en proposant l'utilisateur
de saisir directement dans la bote de dialogue la
valeur voulue.
4.3.2 Interrogation directive
La scurit des donnes d'une application dpend
aussi de la rponse des utilisateurs aux questions
poses dans les messages. Or il arrive souvent que
les questions poses correspondent des textes
ambigus. Par exemple "Voulez-vous annuler la sup-
pression en cours ?" avec les boutons "Oui" ou
"Non".
Pour simplifier l'criture de ces messages, cha-
que utilisation d'une fonction de dialogue avec l'uti-
lisateur, WinDev propose :
soit de slectionner un message dj existant
soit de crer un nouveau message grce une
fentre trs simple.
Lorsque les diffrentes caractristiques du mes-
sage sont saisies, le code correspondant est auto-
matiquement gnr.
Remarque : Le code gnr utilise la fonction Dia-
logue.
4.3.3 Saisie immdiate
Dans une application, il est souvent long et fasti-
dieux de crer une fentre entire pour permettre
uniquement la saisie d'un seul champ avec deux
boutons "OK" et "Annuler".
La fonction Saisie permet de simplifier cette mani-
pulation. La fentre cre avec cette fonction per-
met de saisir une donne (champ de saisie ou case
cocher) et de valider ou d'annuler la saisie.
4.3.4 Base de messages
WinDev propose une liste de messages par dfaut.
Ces messages ne peuvent pas tre supprims.
Lors de la cration d'un message, ce message est
automatiquement ajout la base de messages.
Par dfaut, la base de messages est prsente dans
le rpertoire "Personnel\Messages" de WinDev.
Pour modifier ce rpertoire :
1. Affichez les options du produit : sous le volet
"Accueil", dans le groupe "Environnement", drou-
lez "Options" puis slectionnez "Options gnrales
de WinDev".
2. Dans longlet "Rpertoires", modifiez le rper-
toire des messages.
Pour supprimer un message de la base de
messages :
1. Affichez l'diteur de code.
2. Sous le volet "Code", dans le groupe "Langues",
droulez la liste "Traduire les chanes" et slection-
nez loption "Interrogation directive".
3. Dans la fentre qui saffiche, slectionnez le
message supprimer et cliquez sur licne "-".
4.4 Personnaliser les botes de dialogue
Vos applications utilisent de nombreuses botes de
dialogue systmes ? Pourquoi ne pas personnaliser
ces fentres et leur donner le "look" de votre appli-
cation ?
WinDev permet d'intgrer facilement la fentre
"WinDevMessageBox" dans vos applications. Cette
fentre est une fentre d'information systme (une
bote de dialogue) entirement personnalisable et
pouvant tre utilise dans toutes vos applications.
Aucun code n'est ncessaire. Lorsque cette fentre
est intgre votre projet, les fonctions Info, Oui-
Non, Confirmer et Erreur affichent automatique-
ment la fentre "WinDevMessageBox".
WD
WD
WLangage.book Page 129 Mardi, 23. avril 2013 1:59 13
130 Partie 3 : Gestion des fentres, des pages et des champs
Rappel : Par dfaut, les botes de dialogue affi-
ches sont des botes de dialogue standard et pos-
sdent les caractristiques suivantes :
fond gris.
icne indiquant le type d'informations affiches.
boutons standard de WinDev.
Remarque : L'utilisation de cette fentre permet
d'obtenir des botes de dialogues multilingues (ima-
ges, libell des boutons, ...). Par dfaut, cette fen-
tre gre le franais, l'anglais, l'allemand, l'espagnol,
l'italien, le nerlandais et le portugais. Pour plus de
dtails, consultez le paragraphe "Botes de dialo-
gues multilingues".
4.4.1 Personnaliser les fentres dinforma-
tion systme
Pour personnaliser les fentres d'information
systme :
1. Sous WinDev, affichez la description du projet
(sous le volet "Projet", dans le groupe "Projet", cli-
quez sur "Description").
2. Dans longlet "Style", cochez l'option "Appliquer
le thme de gabarit sur les fentres d'information
systme" et validez. Les fentres "WinDevMessage-
Box" et "WinDevDialogBox" sont automatiquement
intgres dans votre application. Le gabarit de
votre projet est appliqu sur ces fentres.
La fentre "WinDevMessageBox" remplace la fen-
tre d'information systme standard (affiches
grce aux fonctions Avertissement, Info, OuiNon,
OKAnnuler, Confirmer et Erreur).
La fentre "WinDevDialogBox" remplace la fentre
affiche par la fonction Dialogue.
Conseils
Ne modifiez ni le code des fentres "WinDevMes-
sageBox"et "WinDevDialogBox", ni le code de
leurs champs.
Ne supprimez pas de champs.
Si vous ajoutez des champs aux fentres "WinDe-
vMessageBox" et "WinDevDialogBox", aucun
code ne doit tre associ ces champs.
Limitez les modifications de style de ces fentres
et de leurs champs, et testez toutes ces modifica-
tions.
4.4.2 Ne plus personnaliser les fentres
dinformation systme
Pour ne plus personnaliser les fentres d'informa-
tion systme :
1. Sous WinDev, affichez la description du projet
(sous le volet "Projet", dans le groupe "Projet", cli-
quez sur "Description").
2. Dans l'onglet "Style", dcochez l'option "Appli-
quer le thme de gabarit sur les fentres d'informa-
tion systme" et validez.
3. Supprimez les fentres "WinDevMessageBox" et
"WinDevDialogBox" de votre projet :
soit depuis le graphe du projet
soit depuis le volet "Explorateur de projet".
4. Si ncessaire, supprimez le fichier correspon-
dant aux fentres "WinDevMessageBox" et "WinDe-
vDialogBox" du rpertoire de votre projet).
4.4.3 Botes de dialogues multilingues
Pour obtenir des botes de dialogues multilingues :
1. Personnalisez les fentres d'information sys-
tme (voir le paragraphe prcdent).
2. Saisissez les libells multilingues des diffrents
boutons (option "Description" du menu contextuel).
3. Slectionnez les images multilingues des diff-
rents champs image (option "Description" du menu
contextuel).
4. Utilisez des chanes de caractres multilingues
(raccourci [Ctrl]+[T]) dans la syntaxe des fonctions
Info, OuiNon, Confirmer, Erreur, ...
4.5 Fermeture automatique des botes de dialogue
WinDev permet de fermer automatiquement ces
botes de dialogue pour viter tout blocage de
l'application. En effet, par dfaut, les botes de dia-
logue sont fermes uniquement lors de l'action de
l'utilisateur sur un des boutons de la bote. Si
aucun bouton n'est enfonc, l'application est blo-
que.
Pour viter tout risque de blocage, il suffit d'utiliser
la fonction DlaiAvantFermeture en indiquant la
dure voulue avant la fermeture automatique de la
bote de dialogue.
WD WDMobile
WLangage.book Page 130 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 131
4.6 Dialogue avanc avec linternaute
4.6.1 Prsentation
Dsormais, grce aux nouvelles technologies Web,
les sites peuvent ressembler des applications
Windows et afficher des botes de dialogues.
Pour que l'internaute identifie rapidement la page
active, le systme de grisage automatique des
pages est automatiquement utilis. La page inac-
tive est assombrie, et ainsi les pages actives sont
plus visibles par l'internaute.
4.6.2 Les fonctions WLangage disponibles
WebDev met votre disposition plusieurs fonctions
permettant de dialoguer avec linternaute :
Toutes ces fonctions permettent de dialoguer avec
l'utilisateur et prennent en compte les paramtres
du GFI dfinis par les fonctions suivantes :
4.6.3 Grer un dialogue avec des cellules
Voici un exemple permettant de grer un dialogue
l'aide d'une cellule prsente dans une page. Cette
solution est conseille si seule une page du site
doit proposer un dialogue avec l'internaute.
Pour grer un dialogue avec une cellule, il suffit
de :
1. Crer une cellule dans la page devant afficher le
dialogue. Cette cellule permettra de dialoguer avec
l'internaute. Cette cellule contient au minimum:
un libell qui permet d'afficher le texte du dialo-
gue.
un bouton permettant de valider la bote de dialo-
gue.
2. La cellule (et les champs qui la composent) est
invisible.
3. Si ncessaire, il est possible d'ajouter des
champs dans la cellule (image, ).
4. Le code du bouton de fermeture du dialogue
prsent dans la cellule contient le code suivant :
La fonction CelluleFermeDialogue permet de ren-
dre invisible la cellule prcdemment affiche.
5. Pour dialoguer avec l'internaute depuis la page
(par exemple partir d'un bouton de la page) il suf-
fit d'utiliser la fonction CelluleAfficheDialogue, en
prcisant le nom de la cellule utiliser pour le dia-
logue.
4.6.4 Grer un dialogue avec des pages
Voici un exemple permettant de grer un dialogue
l'aide d'une page du site. Cette solution est con-
seille si plusieurs pages du site doivent proposer
un dialogue avec l'internaute. La page de dialogue
pourra tre ouverte depuis n'importe quelle page
du site.
Pour grer un dialogue avec une page, il suffit de :
1. Crer un page (nomme par exemple
PAGE_Info). Cette page permettra de dialoguer
avec l'internaute. Cette page contient au minimum:
une cellule qui dlimite la bote de dialogue.
un libell qui permet d'afficher le texte. Ce libell
est contenu dans la cellule.
un bouton permettant de valider la bote de dialo-
gue. Ce bouton est contenu dans la cellule.
2. Si ncessaire, il est possible d'ajouter des
champs dans la cellule (images, ).
Il est conseill de centrer la page dans le naviga-
WB
CelluleAfficheDialo-
gue
Affiche une cellule dans la
page avec un effet de GFI (Gri-
sage des Fentres Inaccessi-
bles). Permet de simuler
simplement une bote de dia-
logue en code navigateur.
CelluleFermeDialo-
gue
Masque une cellule affiche
dans la page via la fonction
CelluleAfficheDialogue.
OKAnnuler Affiche un message dans une
bote de dialogue standard
proposant les rponses "OK"
et "Annuler" et renvoie la
rponse de l'utilisateur.
OuiNon Affiche un message dans une
bote de dialogue standard
proposant les rponses "Oui"
et "Non" et renvoie la rponse
de l'utilisateur.
PageAfficheDialo-
gue
Affiche une page de manire
modale. Permet de crer un
dialogue avec l'utilisateur. La
page est affiche devant, et
en arrire-plan se trouve la
page ouvrante, grise par le
mcanisme de GFI.
PageFermeDialo-
gue
Ferme la page courante.
Cette page a t ouverte avec
la fonction PageAfficheDialo-
gue. Une valeur de retour
peut tre renvoye la page
appelante.
PageActiveGFI Active ou dsactive le GFI (Grisage
des pages inaccessibles).
PageTauxGFI Dfinit et renvoie le taux de grisage
utilis par le GFI.
CelluleFermeDialogue("MaCellule")
WLangage.book Page 131 Mardi, 23. avril 2013 1:59 13
132 Partie 3 : Gestion des fentres, des pages et des champs
teur.
3. Le code du bouton de fermeture du dialogue
prsent dans la page contient le code suivant :
La fonction PageFermeDialogue permet de ren-
voyer une valeur la page qui a ouvert le dialogue.
4. Pour appeler la page de dialogue depuis une
autre page, il suffit d'utiliser la fonction PageAffi-
cheDialogue, en prcisant le nom de la page
ouvrir, et si ncessaire les paramtres lui passer.
Ces paramtres peuvent par exemple permettre de
remplir dynamiquement le texte affich dans le
libell.
4.6.5 Grer un dialogue avec OuiNon et
OKAnnuler
Les fonctions OuiNon et OKAnnuler permettent
galement de grer un dialogue simple avec l'inter-
naute. Ces fonctions permettent de poser une
question l'internaute laquelle la rponse sera
soit "Oui" ou "Non", soit "OK" ou "Annuler".
Pour grer un dialogue avec les fonctions OuiNon
et OKAnnuler, il faut :
1. Intgrer des pages internes spcifiques dans
votre projet. Ces pages internes contiennent la
bote de dialogue :
WebDevOKAnnuler pour la fonction OKAnnuler.
WebDevOuiNon pour la fonction OuiNon
L'intgration de ces pages est ralise dans
lassistant de cration de pages. Ces pages doi-
vent tre enregistres dans votre projet avec le
nom propos par dfaut.
2. Utiliser les fonctions OuiNon et OKAnnuler dans
le code de l'application.
4.7 Fonctions de gestion des botes de dialogue
Les fonctions permettant de grer les messages et les botes de dialogue sont les suivantes :
PageFermeDialogue()
Avertissement Affiche un message personnalis dans une fentre d'avertissement systme
BulleActive Active ou non l'affichage des bulles d'aide
Confirmer Afficher un message dans une fentre proposant les rponses "Oui", "Non" ou
"Annuler" et retourner la rponse de l'utilisateur
DlaiAvantFermeture Limite le temps d'affichage d'une bote de dialogue de type information ou d'erreur,
de question, de confirmation
Dialogue Affiche une bote de message et renvoie la valeur du bouton cliqu
Erreur Affiche un message d'erreur personnalis dans une fentre d'erreur systme
ErreurConstruit Affiche un message d'erreur personnalis dans une fentre d'erreur systme.
Info Affiche un message personnalis dans une fentre d'information systme
InfoConstruit Affiche un message personnalis dans une fentre d'information systme
Jauge Affiche une jauge dans la barre de message de la fentre en cours
Message Affiche (ou efface) un message dans la barre de message de la fentre en cours
MessageAjouteCase Ajoute une nouvelle case dans la barre de message de la fentre en cours
MessageSupprimeCase Supprime une case de la barre de message de la fentre en cours
OKAnnuler Affiche un message dans une bote de dialogue standard proposant les rponses
"OK" et "Annuler" et renvoie la rponse de l'utilisateur
OuiNon Affiche un message dans une bote de dialogue standard proposant les rponses
"Oui" et "Non" et renvoie la rponse de l'utilisateur
Saisie Affiche un message en permettant l'utilisateur de saisir une information
ToastAffiche Affiche un message de type "Toast".
ToastsupprimeTout Supprime tous les toasts affichs par la fonction ToastAffiche.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 132 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 133
5. GESTION DU DRAG AND DROP
5.1 Qu'est-ce que le "Drag and Drop" ?
Le "Drag and Drop" (ou "Glisser/Dplacer") permet
de transfrer des donnes entre plusieurs champs
grce la souris. Ces donnes peuvent tre dpla-
ces entre plusieurs champs d'une mme applica-
tion ou d'applications diffrentes.
Il faut distinguer :
La source, objet contenant les donnes copier
ou couper.
La cible, objet dans lequel les donnes doivent
tre copies.
Le "Drag and Drop" consiste :
1. Slectionner les donnes de la source avec la
souris.
2. Cliquer sur le bouton gauche de la souris et le
maintenir enfonc pendant le dplacement vers la
destination
3. Relcher le bouton de la souris pour valider le
transfert des donnes
Si les donnes doivent tre copies, la touche CTRL
doit tre maintenue enfonce pendant l'opration.
WinDev permet deffectuer plusieurs types de
"Drag and Drop" dans vos applications :
Drag and Drop automatique pour les champs de
saisie, les listes, les listes image, les arbres et les
tables hirarchiques.
Drag and Drop programm pour de nombreux
types de champs.
Drag and Drop programm entre l'explorateur
Windows et une application WinDev.
WebDev permet la gestion du Drag and Drop grce
HTML 5. Il est possible de mettre en place :
Drag and Drop automatique pour les champs de
saisie, les listes, ...
Drag and Drop programm pour de nombreux
types de champs.
5.2 "Drag and Drop" automatique
Pour certains types de champs, WinDev et WebDev
proposent une gestion automatique du Drag and
Drop.
Aucune programmation spcifique n'est nces-
saire. Il suffit de prciser dans la description du
champ que le "Drag and Drop" doit tre gr.
Vous ne devez en aucun cas :
faire appel aux fonctions de gestion du Drag and
Drop par programmation,
procder l'activation des codes de gestion du
Drag and drop dans les traitements des champs
Dans le cas contraire, la gestion automatique sera
dsactive : il faudra donc grer le Drag and Drop
par programmation.
5.2.1 WinDev : Champs concerns par le
Drag and Drop automatique
En WinDev, le Drag and Drop automatique est dis-
ponible sur les champs suivants :
les champs de saisie,
les listes,
les listes image,
les tables,
les arbres.
Cas particuliers : Drag and Drop entre deux tables :
Pour raliser un "Drag and Drop" automatique entre
deux tables :
Le nombre de colonnes doit tre identique. Le
contenu de la colonne 1 de la table source sera
copi dans la colonne 1 de la table cible, idem
pour la colonne 2, ...
Les colonnes peuvent avoir des noms diffrents.
Le type des colonnes peut tre diffrent.
ATTENTION : Dans ce cas, les donnes peuvent
tre altres ou perdues lors du transfert (con-
versions automatiques). Dans ce cas, il est con-
seill d'utiliser le Drag and Drop programm.
5.2.2 WebDev : Champs concerns par le
Drag and Drop automatique
En WebDev, le Drag and Drop automatique est dis-
ponible sur les champs suivants :
Champ Upload,
Champ Libell,
WLangage.book Page 133 Mardi, 23. avril 2013 1:59 13
134 Partie 3 : Gestion des fentres, des pages et des champs
Champ Bouton,
Champ Lien,
Champ Image,
Champ Libell format,
Champ de saisie,
Champ Liste,
Champ Combo.
Remarque : Actuellement, seul FireFox et Chrome
grent pleinement le Drag and Drop par HTML 5. Si
les nouvelles versions des diffrents navigateurs
intgrent la gestion du Drag And Drop par HTML 5,
cette fonctionnalit sera automatiquement gre
par WebDev.
5.2.3 Configurer le "Drag and Drop" par
dfaut
Il est possible de configurer le "Glisser/Dplacer"
par dfaut dans longlet "Dtail" de la fentre de
description du champ.
L'option "Est source" per-
met de dfinir le champ
comme "source" du "Glis-
ser/Dplacer". L'utilisateur
pourra slectionner le con-
tenu du champ pour le dplacer vers un autre
champ par exemple.
L'option "Est cible" permet de dfinir le champ
comme "Cible" du "Glisser/Dplacer". Ce champ
pourra recevoir tout objet "lch" par l'utilisateur.
Les deux options peuvent tre slectionnes en
mme temps.
5.3 "Drag and Drop" programm
Le "Drag and Drop" programm permet de grer
entirement le "Glisser/Dplacer" entre diffrents
types de champs. En fonction de son type, le
champ peut tre source ou cible du "Drag and
Drop".
En WinDev, les champs suivants sont grs :
Source du Drag and Drop :
Uniquement les champs suivants : champ de sai-
sie, liste, liste image, arbre, table, image et code-
barres.
Cible du Drag and Drop :
Tous les types de champs sauf : jauge, ActiveX,
OLE, forme, barre doutils, HTML, Web Camra et
champ confrence.
En WebDev, les champs suivants peuvent tre
source et cible dun Drag and Drop programm :
Champ de saisie
Champ Libell
Bouton
Liste
Image
Champ d'affichage format
Combo
Lien
Cellule
Superchamp
Modle de champs
5.3.1 Principe
Pour raliser un "Drag and Drop" programm entre
plusieurs champs d'une application WinDev, effec-
tuez les manipulations suivantes :
1. Dans le code d'initialisation du champ source :
Dfinissez qu'un "Drag and Drop" programm va
tre ralis (proprit ..DnDSource).
Dfinissez la procdure excute lors du dbut
de l'action "Glisser" (fonction DndEvnement
pour l'vnement DndDbutGlisser).
2. Dans le code d'initialisation du champ cible :
Dfinissez qu'un "Drag and Drop" programm va
tre ralis (proprit ..DndCible).
Dfinissez la procdure excute lors du survol
du champ (fonction DndEvnement pour l'vne-
ment DndSurvol).
Dfinissez la procdure excute lors du "Lcher"
sur le champ (fonction DndEvnement pour l'v-
nement DndLcher).
3. Dans chacune des procdures WLangage appe-
les, dfinissez l'action excuter grce aux fonc-
tions "Drag and Drop" du WLangage.
5.3.2 Programmation
Plusieurs exemples de "Drag and Drop" programm
sont livrs avec WinDev :
WD Puzzle : Drag and Drop programm entre des
images.
Exemple unitaire de Drag and Drop (WinDev) :
Drag and Drop programm entre des listes, entre
des tables et des arbres.
WLangage.book Page 134 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 135
Exemple didactique de Drag and Drop HTML 5
(WebDev) : Drag and Drop programm dans un
site WebDev.
5.4 "Drag and Drop" depuis l'explorateur
Le "Drag and drop" depuis l'explorateur consiste
slectionner un ou plusieurs fichiers dans l'explora-
teur de Windows et les transfrer dans un champ
d'une fentre WinDev.
Par exemple, l'exemple "WD Drag and Drop" permet
ainsi d'afficher les fichiers image "dropps" depuis
l'explorateur.
5.4.1 Principe
Pour permettre un "Drag and Drop" depuis l'explora-
teur vers une application WinDev, les diffrentes
tapes sont les suivantes :
1. Activez la possibilit de raliser un "Drag and
Drop" depuis l'explorateur (fonction ExplorerAc-
cepte).
2. Pour traiter l'action effectue par l'utilisateur,
associez une procdure du WLangage au lcher du
fichier dans la fentre (fonction Evnement).
3. Dans la procdure appele chaque lcher de
fichier dans la fentre, rcuprez les caractristi-
ques des fichiers "dropps" grce la fonction
ExplorerRcupre.
5.4.2 Fonctions spcifiques au "Drag and
Drop" depuis l'explorateur
Les fonctions suivantes permettent de grer le
Drag and Drop depuis l'explorateur Windows vers
une fentre d'une application WinDev :
ExplorerAccepte : Active ou dsactive la possibi-
lit de faire du "Drag and Drop" depuis lexplora-
teur de Windows vers une fentre WinDev.
ExplorerRcupre : Rcupre le nombre et le
nom des fichiers "dropps".
5.4.3 Programmation
Activation de la gestion du "Drag and Drop" depuis
l'explorateur vers la fentre
Pour activer la possibilit de "Drag and Drop"
depuis l'explorateur vers une fentre, il suffit de
dclarer dans le code d'initialisation de la fentre :
La prise en compte du "Drag and Drop".
L'vnement permettant de lier l'action du
lcher (vnement Windows 563) une procdure
WLangage spcifique (RecupFichiers dans notre
exemple). Cette procdure est une procdure
locale la fentre.
Traitement des fichiers "dropps"
Dans la procdure appele chaque "lcher" de
fichiers dans la fentre, il est possible d'obtenir des
renseignements et de traiter les fichiers concerns.
Dans notre exemple, il est ainsi possible grce la
fonction ExplorerRcupre de :
connatre le nombre de fichiers "lchs" depuis
l'explorateur,
rcuprer le nom et le chemin de chaque fichier
et de les afficher dans une nouvelle fentre.
ExplorerAccepte(Vrai, "")
Evnement("RecupFichiers", ...
"*.", 563)
// Nombre de fichiers poss dans
// l'application par Drag and Drop
nbFic est un entier
nbFic =...
ExplorerRcupre(_EVE.wparam)
sNomFic est une chane
// Rcupration de tous les fichiers
i est un entier
POUR i = 1 nbFic
sNomFic = ExplorerRcupre(...
_EVE.wparam, i)
OuvreImage(sNomFic)
FIN
WLangage.book Page 135 Mardi, 23. avril 2013 1:59 13
136 Partie 3 : Gestion des fentres, des pages et des champs
5.5 Fonctions de gestion du "Drag and Drop"
Les fonctions permettant de grer le Drag and Drop sont les suivantes :
DnDAccepte Indique l'action accepte par la cible du glisser/dplacer et gre le curseur souris
lors du glisser/dplacer
DnDCurseur Gre le curseur souris lors du glisser/dplacer
DnDDonne Indique le type des donnes et les donnes copier/dplacer lors du glisser/dpla-
cer
DnDDonneDisponible Teste si des donnes d'un type spcifi sont disponibles lors du glisser/dplacer
DnDEvnement Indique la procdure excuter lors d'un vnement du glisser/dplacer
DnDRcupre Rcupre les donnes d'un certain type lors du glisser/dplacer
ExplorerAccepte Active ou dsactive la possibilit de faire du "Drag and Drop" de l'explorateur de Win-
dows vers une fentre WinDev
ExplorerRcupre Rcupre le nombre de fichiers "dropps" et le nom des fichiers "dropps"
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Ces fonctions sont disponibles uniquement sous WinDev.
WLangage.book Page 136 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 137
6. GESTION DES CHAMPS
6.1 Prsentation
WinDev, WebDev et WinDev proposent de nom-
breux types de champs, facilement intgrables
dans vos fentres ou vos pages.
De nombreuses fonctions du WLangage permettent
de manipuler par programmation ces champs. Il
existe :
des fonctions permettant de grer tous les types
de champs.
des fonctions permettant de grer un type de
champs spcifique. Dans ce cas, le champ est
associ une famille de fonctions facilement
identifiable grce un prfixe simple. Par exem-
ple, les fonctions prfixes par le mot "Arbre" per-
mettent de grer les champs "Arbre", le prfixe
"Table" est utilis pour grer les champs Table, ...
Ce chapitre prsente toutes les fonctions WLan-
gage utilisables sur les diffrents types de champs.
Pour plus de dtails sur chaque type de champ,
leurs principales caractristiques, ainsi que leur
programmation en WLangage, consultez laide en
ligne.
6.2 Fonctions gnrales de manipulation des champs
Les fonctions suivantes permettent de manipuler
les champs. Ces fonctions sont des fonctions gn-
rales, pouvant tre utilises avec tout type de
champs.

ActiveXEvnement Associe une procdure crite en WLangage un vnement d'un contrle ActiveX
AjouteLien Ajoute un lien sur une portion de texte dans un champ de saisie
AscenseurAffiche Affiche ou non un ascenseur dans un champ (champ de saisie ou liste)
BulleActive Active ou dsactive le mcanisme d'affichage des bulles d'aide sur les champs
BulleCouleur Modifie les couleurs des bulles d'aide pour la fentre en cours
BulleDlai Permet de modifier le dlai attendre avant l'affichage des bulles d'aide et la dure
d'affichage des bulles d'aide des champs
ChampActif Dgrise un champ ou un groupe de champs d'une fentre. Pendant cette opration,
une animation sur les champs peut tre effectue.
ChampAlias Identifie, modifie ou restaure la liaison fichier d'un champ ou d'un ensemble de
champs
ChampCauseEn-
treSortie
Indique l'origine de la modification du champ en cours de saisie
ChampClone Cre un nouveau champ (ce nouveau champ est une copie d'un champ existant dans
la fentre en cours)
ChampContextuel Identifie le champ sur lequel le menu contextuel a t ouvert
ChampEnCours Renvoie le nom du champ en cours de saisie
ChampErreur Personnalise le message d'erreur affich dans les champs, en cas d'impossibilit
d'afficher la valeur
ChampExiste Teste l'existence d'un champ dans une fentre / une page
ChampGris Grise un champ ou un groupe de champs. Pendant cette opration, une animation
sur les champs peut tre effectue.
ChampInvisible Rend invisible un champ ou un groupe de champs dans une fentre. Pendant cette
opration, une animation sur les champs peut tre effectue.
ChampPrcdent Renvoie le nom du champ prcdemment en cours de saisie dans la fentre en cours
ChampPremier Renvoie le nom du premier champ en saisie dans la fentre spcifie
WLangage.book Page 137 Mardi, 23. avril 2013 1:59 13
138 Partie 3 : Gestion des fentres, des pages et des champs
ChampSansEspace Indique si les espaces droite de la valeur prsente dans le champ sont supprims
ChampSuivant Identifie le champ suivant en saisie
ChampSupprime Supprime dfinitivement un champ ou une colonne de table
ChampSurvol Identifie le champ survol par le curseur de la souris
ChampVisible Rend visible un champ ou un groupe de champs dans une fentre. Pendant cette
opration, une animation sur les champs peut tre effectue.
ChangeStyle Modifie dynamiquement le style dun champ
ChargeParamtre Lit une valeur persistante. La valeur persistante a t sauvegarde grce la fonc-
tion SauveParamtre dans le fichier spcifi avec la fonction InitParamtre
ColonneEnCours Connatre l'indice de la colonne indice en cours dans une table fichier ou une table
mmoire
CouleurSlection Change les caractristiques du bandeau de slection dans une table, une combo ou
une liste
DonneFocus Donne le focus au champ spcifi
EcranPremier Dfinit le prochain champ qui sera en saisie dans la fentre en cours
EnumreChamp numre les champs d'une fentre, dune page, d'un groupe, d'un onglet ou d'un
superchamp
HTMLNavigue Lance une opration de navigation dans un champ HTML
IndiceEnCours Obtenir l'indice du champ en cours
IndiceSuivant Renvoie le numro de la ligne suivante affiche dans la table en cours.
InitParamtre Initialise la gestion des valeurs persistantes dans la base de registres
Occurrence Obtenir le nombre d'occurrences d'un champ dans une fentre / une page
OngletDuChamp Renvoie le nom du champ Onglet qui contient le champ spcifi
OuvreMenuContex-
tuel
Ouvre automatiquement un menu contextuel pour le champ ou la fentre en cours
ParamtreOrthogra-
phe
Permet de configurer la gestion du correcteur orthographique Open Office pour tous
les champs de saisie de lapplication
ParentObjet Identifie le "Parent" d'un objet graphique : champ, colonne, fentre, page, etc.
RAZ R-initialise tous les champs de la fentre / page en cours
RepriseSaisie Permet de reprendre la saisie sur le champ ou la fentre / page spcifie
RTFAjoute Ajoute une chane de caractres (au format RTF ou non) la fin du contenu dun
champ de saisie RTF
RTFCharge Charge un fichier au format RTF dans un champ de saisie RTF
RTFInsre Insre une chane de caractres au format RTF dans le contenu dun champ de saisie
RTF
RTFRecherche Recherche une chane de caractres dans un champ de saisie de type RTF
RTFRemplace Remplace ou insre une chane de caractres dans un champ de saisie de type RTF
RTFSlection Change ou liste les attributs du texte actuellement slectionn dans un champ de sai-
sie de type RTF
RTFVersTexte Renvoie le texte prsent dans un champ de saisie au format RTF sans les caractristi-
ques de formatage propres au RTF
SaisieAssisteAjoute Ajoute une ligne dans la liste des valeurs disponibles pour la saisie assiste dun
champ de saisie.
SaisieAssisteFerme Ferme la liste des valeurs proposes par la saisie assiste dun champ de saisie.
SaisieAssisteOuvre Ouvre la liste des valeurs proposes pour la saisie assiste dun champ de saisie.
SaisieAssisteSuppri-
meTout
Vide la liste des valeurs proposes pour la saisie assiste dun champ de saisie.
SauveParamtre Sauve une valeur persistante dans la base de registres (ou dans un autre fichier sp-
cifi avec la fonction InitParamtre)
SupprimeParamtre Supprime un paramtre ou une srie de paramtres sauvs prcdemment.
WLangage.book Page 138 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 139
TexteHauteur Calcule la hauteur en pixels d'un texte affich dans un champ de saisie, un libell ou
une combo
TexteLargeur Calcule la largeur en pixels d'un texte affich dans un champ de saisie, une combo ou
un libell
TexteVersHTML Convertit un texte en HTML
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne
WLangage.book Page 139 Mardi, 23. avril 2013 1:59 13
140 Partie 3 : Gestion des fentres, des pages et des champs
7. PROPRITS DES FENTRES, DES PAGES ET
DES CHAMPS
Les proprits sappliquant aux fentres, aux pages et leurs champs sont les suivantes :
Adresse Permet de connecter le flux avec un correspondant et de connatre l'adresse de la der-
nire demande de connexion
Affichage Permet de connatre et de modifier la vido actuellement affiche par le champ Conf-
rence
AffichageActif Permet de savoir si le rafrachissement de l'affichage d'un champ ou d'une fentre est
activ ou non, et permet d'activer ou de dsactiver le rafrachissement rgulier du
champ ou de la fentre
Alias WinDev : Permet de connatre et de modifier l'alias d'une fentre
WebDev : Renvoie le nom interne HTML/Javascript dun champ ou dune page
Altitude Permet de connatre et de modifier l'altitude d'un champ
Ancrage Permet de connatre l'ancrage actuel d'un champ et de modifier les caractristiques
d'ancrage d'un champ
AngleObservateur Permet de connatre et de modifier l'angle secondaire d'un champ carrousel. Permet de
faire "pivoter" le champ.
AngleTitre
Permet de savoir si les titres des colonnes d'une table sont inclins et permet dincliner
ou non les titres des colonnes d'une table (par exemple 45%).
Animation Permet de connatre l'tat actuel de l'image anime et de lancer ou d'arrter l'animation
d'une image ou dun libell anim
AnimationInitiale Permet de connatre l'tat initial de l'animation dans un champ image ou dans un
champ libell
AvanceRapide Permet de connatre et de modifier la valeur de l'avance rapide d'un ascenseur
AvecSaisie Permet de savoir si un champ Combo est avec ou sans saisie et permet de modifier cet
tat.
AxeXMax Permet de connatre la borne maximale des abscisses (axe X) d'un champ de type gra-
phe.
AxeXMin Permet de connatre la borne minimale des abscisses (axe X) d'un champ de type gra-
phe.
AxeYMax Permet de connatre la borne maximale des ordonnes (axe Y) d'un champ de type gra-
phe.
AxeYMin Permet de connatre la borne minimale des ordonnes (axe Y) d'un champ de type gra-
phe.
BandeauVisible Permet de savoir si le bandeau est visible sur une colonne de table (ou table hirarchi-
que) et permet de rendre visible ou invisible le bandeau de slection sur une colonne de
table.
BarreDeMessage Permet de savoir si la barre de message d'une fentre est visible ou non et permet de
rendre visible ou non la barre de message d'une fentre
BorneMax Permet de connatre et de modifier la borne maximale d'un champ
BorneMin Permet de connatre et de modifier la borne minimale d'un champ
BoutonCalculatrice Permet de savoir et d'indiquer si un champ de saisie numrique ou montaire propose
un bouton pour afficher une calculatrice en popup.
BoutonCalendrier Permet de savoir et d'indiquer si un champ de saisie de type Date propose un bouton
pour afficher un calendrier en popup.
Bulle Permet de connatre/modifier le texte affich dans la bulle d'aide associe un champ
WLangage.book Page 140 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 141
BulleAutomatique Permet d'autoriser ou non l'affichage des bulles automatiques sur les listes, les tables
et les tables hirarchiques.
BulleTitre Permet de connatre et de modifier le texte affich dans la bulle d'aide associe au titre
d'une colonne de table
CadrageHorizontal Permet de connatre et de modifier le cadrage horizontal d'un champ
CadrageVertical Permet de connatre et de modifier le cadrage vertical d'un champ
ClicDroit Permet de connatre et de modifier le nom du bouton qui sera excut lors d'un clic droit
sur un objet
Coche Permet de savoir si une option de menu possde une marque ( ) ou non et d'afficher
ou non cette marque devant une option de menu
CocheVisible
Permet de savoir si la coche est visible ou non devant une ligne d'un champ Arbre. et
permet de modifier la visibilit de la coche devant une ligne d'un champ Arbre.
CompacteBarreOu-
tils
Permet de savoir si les barres d'outils de la fentre sont compactes et de compacter ou
non les barres d'outils.
ContenuInitial Permet de connatre le contenu initial d'une liste ou d'une combo mmoire
Couleur Permet de connatre et de modifier la couleur du texte affich dans un champ
CouleurFond Permet de connatre et de modifier la couleur de fond d'un champ
CouleurJauge Permet de connatre et de modifier la couleur de progression (c'est--dire la couleur de
la zone qui avance) dans un champ jauge, une colonne de type jauge ou une cellule de
type jauge
Curseur Permet de connatre et de modifier la position du curseur de la souris dans un champ
CurseurSouris Permet de connatre et de modifier le curseur de survol dfinie pour un champ ou une
fentre
DateDbut Permet de connatre et de modifier la date de dbut d'une priode slectionne dans un
champ Calendrier / Agenda / Planning.
DateFin Permet de connatre et de modifier la date de fin d'une priode slectionne dans un
champ Calendrier / Agenda / Planning.
Dplaable Permet de savoir si une colonne de table peut tre dplace ou non par l'utilisateur et
d'autoriser/empcher le dplacement d'une colonne de table par l'utilisateur
DplaableParLe-
Fond
Permet de savoir si la fentre est dplaable par le fond et de rendre ou non la fentre
dplaable par le fond
DplacementRDV Permet de savoir et d'indiquer si l'utilisateur peut dplacer un rendez-vous dans un
champ Planning ou dans un champ Agenda.
Description Permet de connatre et de modifier la description associe une page.
Dtection Permet de connatre et de modifier le mcanisme de dtection automatique des flux
entrants
DeviseAffichage Permet de connatre et de modifier la devise utilise lors de l'affichage et de la saisie
d'une valeur dans un champ de saisie ou dans une colonne de type "Montaire + Euro"
DeviseMmoire Permet de connatre et modifier la devise utilise lors de la manipulation dun champ de
saisie ou dune colonne de type "Montaire + Euro" par programmation
DnDCible Permet de connatre et de modifier le comportement du champ cible vis--vis du "Drag
and Drop"
DnDSource Permet de connatre et de modifier le comportement du champ source vis--vis du "Drag
and Drop"
DoubleClic Permet de connatre et de modifier le nom du bouton qui sera excut lors d'un double
clic sur un objet
Driver Permet de connatre les proprits du driver de capture vido associ un champ Web
Camra
DroiteAGauche Permet de connatre le sens d'criture rel, effectif sur un champ ou une colonne pr-
sent dans une fentre.
WLangage.book Page 141 Mardi, 23. avril 2013 1:59 13
142 Partie 3 : Gestion des fentres, des pages et des champs
DureNonRponse Permet de connatre et de modifier dlai partir duquel la tentative de connexion sera
considre comme "ayant chou"
EffacementAuto-
matique
Permet de grer le mode "Effacement automatique" d'un champ de saisie.
EffetVisuel Permet de grer un effet visuel sur un champ ou un groupe de champs d'une fentre.
Ellipse Permet de connatre et modifier le mode de gestion de l'ellipse dans un champ libell,
dans une liste ou dans une colonne de table de type Libell
Emission Permet de connatre et modifier le type de donnes mises par le flux
Enfonc Permet de connatre et modifier l'tat d'un bouton poussoir (bouton enfonc ou non)
Enroul Permet de dfinir l'tat (enroul ou droul) qui sera utilis lors des prochains ajouts de
ligne dans la table hirarchique.
EnSaisie Permet de connatre et de modifier les options de saisie d'un champ ou d'un groupe de
champs.
Etat Permet de connatre et de modifier l'tat d'affichage d'un champ, d'un groupe de
champs ou d'une fentre
EtatInitial Permet de connatre l'tat initial d'un champ ou d'une fentre
FichierParcouru Permet de connatre et de modifier le fichier ou la requte utilis pour l'affichage des
enregistrements dans les zones rptes fichier, les tables fichier, les listes fichier ou
les combos fichier
Filtre Permet de connatre et de modifier le filtre utilis pour l'affichage des enregistrements
dans les zones rptes fichier, les tables fichier, les listes fichier ou les combo fichier
FinCurseur Permet de connatre/modifier la position de fin de slection du curseur de la souris
FocusAuClic
Permet de savoir si un champ prend le focus lors d'un clic et permet de modifier l'effet
de prise de focus lors du clic sur un champ
Format HTLM
Permet de savoir si un champ de saisie accepte la saisie au format HTML et permet de
modifier le format de saisie d'un champ de saisie.
FormatMmoris Permet de connatre et de modifier le format de la valeur retourne pour les champs de
saisie et les colonnes de type Date ou Heure
Fusion Permet de savoir si les cellules d'une table (ou les titres de colonnes) sont fusionnes,
et permet de fusionner les cellules d'une table (ou les titres de colonnes).
GranularitDpla-
cement
Permet de connatre et de modifier la taille de la grille pour le dplacement des rendez-
vous d'un champ Agenda ou d'un champ Planning.
GranularitDure
Permet de connatre et de modifier la taille de la grille utilise pour le redimensionne-
ment des rendez-vous d'un champ Agenda ou d'un champ Planning.
Gris Permet de savoir si un champ ou un groupe de champs est gris ou non et de griser ou
dgriser un champ ou un groupe de champs.
Groupe Permet de savoir si le champ appartient ou non un groupe de champs
Hauteur Permet de connatre et de modifier la hauteur d'un champ, d'une fentre, dune ligne de
table ou dune ligne de liste
HauteurElment Permet de connatre et de modifier la hauteur des lments d'un champ Organigramme.
HauteurImage Permet de connatre et de modifier la hauteur de la portion de l'image originale qui est
affiche dans le champ image
HauteurInitiale Permet de connatre la hauteur de cration d'un champ ou d'une fentre et de modifier
la hauteur de base utilise pour l'ancrage des champs "en hauteur"
HauteurJour Permet de connatre et de modifier la hauteur des jours dans un champ Planning avec
les jours en ligne et les ressources en colonne.
HauteurLigne Permet de connatre et de modifier la hauteur des lignes d'une liste, d'une table, d'une
combo
HauteurLigneMax Permet de connatre et de modifier la hauteur maximale des lignes dune table (cas des
lignes multi-lignes redimensionnement automatique)
WLangage.book Page 142 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 143
HauteurMax Permet de connatre et de modifier la hauteur maximale d'un champ ou d'une fentre
HauteurMin Permet de connatre et de modifier la hauteur minimale d'un champ ou d'une fentre
HauteurRessource
Permet de connatre et de modifier la hauteur des ressources dans un champ Planning
avec les ressources en ligne.
HauteurRupture-
Jour
Permet de connatre et de modifier la hauteur des ruptures entre les jours dans un
champ Planning avec les jours en ligne et les ressources en colonne.
HeureOuvrableD-
but
Permet de connatre et de modifier l'heure de dbut des heures ouvrables utilises par
un champ Agenda ou par un champ Planning.
HeureOuvrableFin
Permet de connatre et de modifier l'heure de fin des heures ouvrables utilises par un
champ Agenda ou par un champ Planning
HTMLAprs Permet de connatre et de modifier le code HTML insr aprs le champ.
HTMLAvant Permet de connatre et de modifier le code HTML insr avant le champ.
HTMLEntte Permet de connatre et de modifier le code HTML ajout dans l'en-tte de la page.
HTMLFinPage Permet de connatre et de modifier le code HTML ajout la fin de la page.
Identifiant Permet de connatre et modifier le nom sous lequel le poste en cours apparat pour les
correspondants (correspond la prsentation du numro)
Image Permet de connatre et de modifier l'image d'un champ (bouton, onglet, option de
menu), d'un curseur (jauge, potentiomtre) ou de la barre d'outils d'une fentre de type
mre MDI
ImageDroule Permet de connatre/modifier l'image par dfaut d'une ligne droule dans une table
hirarchique.
ImageEnroule Permet de connatre/modifier l'image par dfaut d'une ligne enroule dans une table
hirarchique.
ImageEtat Permet de connatre et de modifier le nombre de dessins prsents dans l'image asso-
cie un bouton ou dans l'image du curseur dans un potentiomtre
ImageFond Permet de connatre et de modifier l'image de fond d'une fentre, l'image associe au
cadre d'un bouton, l'image de fond d'une jauge ou d'un potentiomtre
ImageFondEtat Permet de connatre et de modifier le nombre de dessins prsents dans l'image asso-
cie au cadre d'un bouton
ImageMode Permet de connatre et de modifier le mode d'affichage d'une image dans un champ
image
ImageTitre Permet de connatre et de modifier l'image affiche dans le titre d'une colonne de table
ou de table hirarchique.
Indication Permet de connatre et de modifier le texte d'aide affich dans le champ de saisie. Ce
texte disparatra ds la saisie des premiers caractres.
InterprteEtCom-
mercial
Permet de connatre et de modifier le mode d'interprtation du caractre '&
JaugeSystme Permet de connatre et de modifier la jauge utilise comme jauge systme (dans la
barre des tches) avec Windows 7 (et suprieur).
Largeur Permet de connatre et de modifier la largeur d'un champ, d'une fentre ou dune
colonne de table
LargeurColonne Permet de connatre et modifier la largeur de chaque colonne d'une zone rpte multi-
colonnes
LargeurElment Permet de connatre et modifier la largeur des lments d'un champ Organigramme.
LargeurImage Permet de connatre et de modifier la largeur de la portion de l'image originale qui est
affiche dans le champ image
LargeurInitiale Permet de connatre la largeur de cration d'un champ ou d'une fentre et de modifier la
largeur de base utilise pour l'ancrage des champs "en largeur"
LargeurJour Permet de connatre et de modifier la largeur des jours dans un champ Planning avec
les jours en colonne et les ressources en ligne.
WLangage.book Page 143 Mardi, 23. avril 2013 1:59 13
144 Partie 3 : Gestion des fentres, des pages et des champs
LargeurMax Permet de connatre et de modifier la largeur maximale d'un champ ou d'une fentre
LargeurMin Permet de connatre et de modifier la largeur minimale d'un champ ou d'une fentre
LargeurRessource Permet de connatre et de modifier la largeur des ressources dans un champ Planning
avec les ressources en colonne.
LecteurMultimdia Permet de connatre ou de modifier le lecteur multimdia actuellement utilis par un
champ vido pour lire les fichiers multimdia.
LiaisonFichier Permet de connatre et de modifier la liaison d'un champ avec une rubrique d'un fichier
Libell Permet de connatre et de modifier le libell d'un champ, le titre d'une fentre ou le titre
dune page
LienAutomatique Permet de connatre le mode de dtection automatique des liens dans les champs de
saisie multi-lignes, et d'activer ou non ce mode.
MasqueAffichage Permet de connatre et de modifier le masque d'affichage.
MasqueSaisie Permet de connatre et de modifier le masque de saisie
MaxFeuilleParLi-
gne
permet de connatre et de modifier le nombre maximum d'lments en ligne dans un
champ Organigramme.
MDIBas Permet de connatre et de modifier la distance entre le bord bas de la fentre mre MDI,
et le bord bas de la zone MDI
MDIDroite Permet de connatre et de modifier la distance entre le bord droit de la fentre mre
MDI, et le bord droit de la zone MDI
MDIGauche Permet de connatre et de modifier la distance entre le bord gauche de la fentre mre
MDI, et le bord gauche de la zone MDI
MDIHaut Permet de connatre et de modifier la distance entre le bord haut de la fentre mre
MDI, et le bord haut de la zone MDI
Mmoire Permet de savoir si le champ spcifi est une liste, une combo, une zone rpte ou
une table mmoire ou fichier
MmoriseFiltreFAA Permet de savoir et d'indiquer si les filtres poss par lutilisateur sur un champ Table ou
Table hirarchique sont conservs entre 2 lancements de lapplication.
MmoriseTriFAA Permet de savoir et d'indiquer si le tri effectu par lutilisateur sur un champ Table ou
Table hirarchique est conserv entre 2 lancements de lapplication.
MenuContextuel Permet de connatre et de changer le menu contextuel associ un champ
Message Permet de connatre et de modifier le message d'aide
Miniature Permet de connatre et de modifier limage associe un lment dune liste image
ModeCarte Permet de connatre et de modifier le mode d'affichage de la carte dans le champ Carte
ModeListeImage Change le mode daffichage de la liste image (passage dune liste image en liste classi-
que et inversement)
ModeLoupe Permet de connatre et de modifier le mode de gestion de la loupe dans le titre des
colonnes de table ou de table hirarchique.
ModeSaisie Permet de connatre et de modifier le mode de saisie sur un Smartphone.
ModeTest Permet de savoir si la publicit affiche dans le champ Publicit est une publicit de
test.
ModificationDu-
reRDV
Permet de savoir et d'indiquer si lutilisateur peut modifier la dure dun rendez-vous
dans un champ Planning ou Agenda.
Modifi Permet de savoir si un champ a t modifi par l'utilisateur (clavier ou souris)
MotDePasse Permet de savoir si un champ de saisie est de type "Mot de passe"
MotsCls Permet de connatre et modifier les mots-cls associs une page.
Multiligne Permet de savoir si un champ de saisie ou une colonne de table est multiligne
Multislection Permet de connatre et de modifier le mode de slection d'une table, liste, zone rpte
NbJourAffich Permet de connatre et de modifier le nombre de jours affichs dans un champ Agenda.
NbLignesParPage Permet de connatre et de modifier le nombre de lignes dune table ou le nombre de
rptitions dune zone rpte affiches dans une page
WLangage.book Page 144 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 145
Nom Permet de connatre le nom d'un champ, d'un groupe de champs, d'une fentre ou
dune page
NombreColonne Permet de connatre le nombre de colonnes prsentes dans une liste multi-colonnes ou
dans une table et de modifier le nombre de colonnes prsentes dans une liste multi-
colonnes
NombrePage Permet de connatre le nombre de pages prsentes dans un fichier image de type "multi-
pages"
NomComplet Permet de connatre le nom complet d'un champ, d'un groupe de champs ou d'une fen-
tre
NomFichierNaviga-
teur
Permet de connatre le nom original du fichier uploader prsent sur le poste de l'inter-
naute.
NomFichierServeur Permet de connatre le nom du fichier upload prsent sur le serveur.
Note Permet de connatre et de modifier les notes associes un champ, une fentre ou
une page
Nouveau Permet de savoir si la ligne en cours dans une table ou dans une zone rpte vient
d'tre cre grce aux fonctions TableAjoute, TableAjouteLigne, TableInsre et TableIn-
sreLigne
Num1erJourDeLaS
emaine
Permet de connatre et de modifier le 1er jour de la semaine affich dans un champ
Calendrier, un champ Agenda ou un champ de saisie au format Date avec Calendrier.
NumroAide Permet de connatre et de modifier le numro d'aide associ au champ
NumroPage Permet de connatre et de modifier le numro de la page affiche dans un champ image
(cas des fichiers image de type "multi-pages"
NumTab Permet de connatre la position d'un champ dans l'ordre de navigation d'une fentre
Occurrence Permet de connatre le nombre dlments
OrientationEl-
ment
Permet de connatre et modifier l'orientation dun champ Organigramme.
OrientationVerti-
cale
Permet de connatre et de modifier lorientation dun champ liste image
ParcoursAuto Permet de savoir si le parcours dune zone rpte, d'une liste, d'une table ou d'une
combo fichier est automatique ou programm
PriodeAnimation Permet de connatre et de modifier la priode de rotation des champs Cube et Carrousel
Plan Permet de connatre et de modifier le plan actif d'une fentre ou associer un champ
un autre plan
Police Permet de connatre et de modifier la police utilise dans un champ d'une fentre
PoliceAlphabet Permet de connatre et de modifier l'alphabet actuellement utilis par la police d'un
champ
PoliceBarre Permet de connatre et de modifier l'attribut "Barr" pour le contenu d'un champ
PoliceCondense Permet de savoir si les caractres du texte affich sont condenss ou non, et de con-
denser ou non les caractres du texte affich
PoliceEtendue Permet de savoir si les caractres du texte affich sont tendus ou non et d'tendre ou
non les caractres du texte affich
PoliceGras Permet de connatre et de modifier l'attribut "Gras" pour le contenu d'un champ
PoliceItalique Permet de connatre et de modifier l'attribut "Italique" pour le contenu d'un champ
PoliceLarge Permet de savoir si les caractres du texte affich sont largis ou non, et d'largir ou
non les caractres du texte affich
PoliceNom Permet de connatre et de modifier la police utilise dans un champ
PoliceSouligne Permet de connatre et de modifier l'attribut "Soulign" pour le contenu d'un champ
PoliceTaille Permet de connatre et de modifier la taille de la police utilise dans un champ
PublicitCharge Permet de savoir si une publicit est actuellement charge dans le champ Publicit.
Rception Permet de connatre et modifier le type de donnes reues par le flux
WLangage.book Page 145 Mardi, 23. avril 2013 1:59 13
146 Partie 3 : Gestion des fentres, des pages et des champs
Ressource
Permet de connatre les ressources visibles dans un champ Planning et permet decon-
natre la ressource du champ Planning correspondant l'indice spcifi
RessourceSlec-
tionne
Renvoie le nom de la ressource correspondant la slection de lutilisateur dans un
champ Planning
RetraitGauche Permet de connatre et de modifier l'espace laiss gauche du texte dans les colonnes
de table
RichEdit Permet de savoir si un champ d'une fentre est de type RTF (Rich Text Format)
RubriqueAffiche Permet de connatre ou de modifier la rubrique affiche dans une table, une zone rp-
te, une liste ou une combo
RubriqueAfficheI-
mage
Permet de connatre ou de modifier la rubrique correspondant l'image affiche dans
une liste image
RubriqueMmori-
se
Permet de connatre ou de modifier la rubrique mmorise d'une table, dune zone rp-
te, d'une liste ou d'une combo
RubriqueParcou-
rue
Permet de connatre et de modifier la rubrique utilise pour le parcours automatique
des tables, des zones rptes, des listes ou des combos
SaisieDirecteRDV Permet de savoir et d'indiquer si lutilisateur peut modifier directement le titre dun ren-
dez-vous dans un champ Planning ou dans un champ Agenda.
SaisieManuscrite Permet de connatre et de modifier le mode de saisie manuscrite dans les champs de
saisie RTF.
ScrollAuDoigt Permet de savoir si le contenu d'un champ peut tre dplac avec le doigt ("scroll au
doigt") et permet dautoriser ou non un champ tre manipul directement avec le
doigt
ScuritHTML
Permet de connatre et de modifier l'tat du mcanisme de scurit des champs de sai-
sie au format HTML
Slectionne Permet de savoir si une ligne dune liste ou dune table est slectionne et de slection-
ner une ligne dune liste ou dune table
SlectionPriode Permet de savoir et d'indiquer si l'utilisateur peut slectionner une priode dans un
champ Planning ou dans un champ Agenda.
SensEcriture Permet de connatre et de modifier le sens d'criture utilis dans une fentre ou dans
un champ (utile pour la gestion des langues de type arabe ou hbreux).
SousLibell Permet de connatre et de modifier le libell secondaire d'une option de slecteur.
StyleFond Permet de modifier le style d'affichage du fond des cellules de tables et / ou de tables
hirarchiques.
Taille Permet de connatre et de modifier le nombre maximum de caractres contenus dans
un champ d'une fentre ou dune page
TauxAncrageBas Permet de connatre et de modifier le taux d'ancrage en dplacement d'un champ sur
l'axe vertical
TauxAncrageDroite Permet de connatre et de modifier le taux d'ancrage en dplacement d'un champ sur
l'axe horizontal
TauxAncrageHau-
teur
Permet de connatre et de modifier le taux d'ancrage en hauteur d'un champ
TauxAncrageLar-
geur
Permet de connatre et de modifier le taux d'ancrage en agrandissement d'un champ
sur l'axe vertical
TexteSelectionn Permet de connatre et de modifier le texte slectionn dans un champ de saisie, une
combo en saisie ou une colonne de table en saisie.
Titre Permet de connatre et de modifier le titre d'une colonne de table, le titre d'une fentre
ou dune page
TitreNote Permet de connatre et de modifier le libell pour le dossier de programmation d'un
champ, d'une fentre ou dune page
TotauxActif Permet de connatre le mode de fonctionnement des calculs automatiques pour une
table, et d'interdire ou de forcer les calculs automatiques dans une table
WLangage.book Page 146 Mardi, 23. avril 2013 1:59 13
Partie 3 : Gestion des fentres, des pages et des champs 147
Triable Permet de savoir si une colonne peut tre choisie par l'utilisateur comme critre de tri
de la table et d'autoriser/empcher l'utilisateur de choisir une colonne comme critre
de tri de la table
Trie Permet de savoir si une liste ou une combo mmoire est trie et de rendre une liste ou
une combo mmoire trie
TroisEtats Permet de connatre et de modifier le mode de gestion d'une option d'interrupteur
Type Permet de connatre le type d'un objet
TypeFichiers Permet de connatre et de modifier le filtre sur les fichiers propos dans le slecteur de
fichiers du champ Upload.
TypeSaisie Permet de connatre le type d'un champ de saisie ou d'une colonne de table
Unicode Permet de savoir si un champ a une valeur Unicode et d'indiquer si un champ a une
valeur Unicode
URL Permet de connatre ladresse associe un lien, un bouton ou une image clicable
Valeur Permet de connatre et de modifier la valeur d'un champ, d'une fentre ou dune page
ValeurAffiche Permet de connatre la valeur actuellement affiche l'cran dans un champ d'une
fentre ou dune page
ValeurInitiale Permet de connatre la valeur initiale d'un champ d'une fentre ou dune page
ValeurMmorise Permet de connatre la valeur qui sera mmorise lors de la slection d'un lment de
la liste
ValeurRenvoye Permet de connatre et de modifier la valeur renvoye par une fentre
VrifieOrthographe Permet de savoir si la correction orthographique de OpenOffice est propose ou non
dans un champ de saisie ou une colonne de table et de l'activer si ncessaire.
Vertical Permet de savoir si un champ est horizontal ou vertical
Vide Permet de savoir si une table, une zone rpte, une liste ou une combo est vide
Visible Permet de savoir si un lment (champ, groupe de champs, fentre ou page) est visible
et de rendre visible / invisible un lment (champ, groupe de champs, fentre ou page)
VisibleHorsFentre
permet de savoir si un bouton est visible mme si sa position (X,Y) le met en dehors du
cadre de la fentre (entirement ou partiellement) et permet de modifier la visibilit
d'un bouton "hors fentre"
VisibleInitial Permet de savoir si un champ ou une fentre tait visible lors de sa cration
X Permet de connatre et de modifier l'abscisse d'un champ, d'une colonne d'une table ou
d'une fentre (position sur l'axe des X)
XImage Permet de connatre et de modifier l'origine (abscisse) de l'image dans un champ image
XInitial Permet de connatre et de modifier l'abscisse de cration d'un champ ou d'une fentre
Y Permet de connatre et de modifier l'ordonne d'un champ ou d'une fentre
YImage Permet de connatre et de modifier l'origine (ordonne) de l'image dans un champ image
YInitial Permet de connatre et de modifier l'ordonne de cration d'un champ ancr "en bas"
Zoom Permet de connatre et de modifier la valeur du zoom effectu dans un champ image
Pour plus de dtails sur ces proprits, consultez laide en ligne.
Pour connatre la disponibilit de ces proprits dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 147 Mardi, 23. avril 2013 1:59 13
148 Partie 3 : Gestion des fentres, des pages et des champs
WLangage.book Page 148 Mardi, 23. avril 2013 1:59 13
PARTIE 4
Fonctions standard
WLangage.book Page 149 Mardi, 23. avril 2013 1:59 13
WLangage.book Page 150 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 151
1. MANIPULER LES NUMRIQUES
1.1 Prsentation
De nombreuses fonctions de programmation per-
mettent de :
grer les valeurs numriques,
raliser des calculs de trigonomtrie,
manipuler les valeurs binaires,
utiliser les matrices,
raliser des calculs financiers et statistiques.
1.2 Les matrices
De nombreuses fonctions du WLangage permettent
de manipuler les matrices.
Les matrices sont un outil mathmatique permet-
tant de simplifier et de rsoudre de nombreux pro-
blmes. Les calculs sur les matrices sont utiliss
dans de nombreux domaines : conomie, physique,
etc.
Dans ces domaines, les problmes rencontrs peu-
vent souvent se mettre sous la forme d'un systme
d'quations. Le rsultat de ce systme d'quations
peut tre calcul grce aux matrices.
1.2.1 Dfinition
Une matrice est un ensemble ordonn de "n p"
nombres, gnralement reprsent sous forme
d'un tableau de n lignes et p colonnes.
Les nombres composant la matrice sont les l-
ments de la matrice. Chaque lment est identifi
par sa ligne et sa colonne. Une valeur est associe
chaque lment.
Dans cette matrice, n = 2 lignes et p = 4 colonnes. La
valeur de l'lment (ligne 2 , colonne 3) est 7.
La dimension (ou taille) de la matrice correspond
au nombre de lignes et au nombre de colonnes de
la matrice considre.
La taille de vos matrices peut tre gre dynami-
quement. En effet, lors de sa cration, une matrice
est vide : elle contient 0 ligne et 0 colonne. C'est
une matrice de dimension 0 x 0. Il suffit d'initialiser
un lment en ligne n et colonne p pour que la
taille de la matrice devienne n x p. Par exemple,
aprs l'initialisation d'un lment en ligne 6 et
colonne 12, la taille de la matrice devient 6 x 12.
1.2.2 Manipulations des matrices
Plusieurs fonctions du WLangage vous permettent
de grer vos matrices. Ces fonctions commencent
par les lettres "MAT". Ces fonctions permettent de :
manipuler les matrices (cration, copie, inver-
sion, compression, suppression),
initialiser les lments des matrices,
lire la valeur des lments des matrices,
effectuer divers calculs sur les matrices (addi-
tion, multiplication, transpose, dterminant,
etc.),
obtenir diverses informations sur les matrices
(nombre de lignes, nombre de colonnes, etc.).
Exemple
Pour effectuer des calculs financiers, votre pro-
gramme cre plusieurs matrices. Les lments des
matrices peuvent tre initialiss. Plusieurs calculs
sont possibles sur ces matrices.
WLangage.book Page 151 Mardi, 23. avril 2013 1:59 13
152 Partie 4 : Fonctions standard
1.3 Les statistiques
De nombreuses fonctions du WLangage permettent
de raliser diffrentes statistiques.
Les statistiques sont calcules partir de matrices.
Les valeurs prises en compte pour le calcul des sta-
tistiques sont les valeurs des lments d'une
matrice. Les sries de valeurs correspondent une
ligne (ou une colonne) d'une matrice.
Par exemple, les valeurs de la ligne 1 de cette
matrice sont 3, 2, 4, 5 et 6.
Les fonctions permettant de raliser des calculs
statistiques commencent par les lettres "Stat". Ces
fonctions permettent de :
calculer la variance et la covariance,
calculer lcart-type, etc.
1.4 Calculs financiers
De nombreuses fonctions du WLangage permettent
de raliser diffrents calculs financiers. Ces calculs
sont raliss partir de matrices. Les valeurs pri-
ses en compte pour ces calculs sont les valeurs
des lments d'une matrice. Les sries de valeurs
correspondent une ligne (ou une colonne) d'une
matrice.
Les fonctions permettant de raliser des calculs
financiers commencent par les lettres "Fin". Ces
fonctions permettent de :
calculer lamortissement dun bien selon plu-
sieurs mthodes,
calculer lcart-type, etc.
1.5 Fonction de gestion des numriques
1.5.1 Fonctions diverses
Les fonctions de gestion des valeurs numriques sont les suivantes :
Abs Calcule la valeur absolue d'une expression numrique (entire ou relle)
ArcCosinus Calcule l'arc cosinus d'une valeur numrique (entire ou relle)
ArcSinus Calcule l'arc sinus d'une valeur numrique (entire ou relle)
ArcTang Calcule l'arc tangente d'une valeur numrique (entire ou relle)
ArcTang2 Renvoie l'arc tangente 2 des valeurs passes en paramtre
Arrondi Calcule la valeur arrondie d'une valeur numrique selon le nombre de dcimales
prcis
ArrondiInfrieur Renvoie la valeur arrondie d'une valeur numrique l'entier infrieur le plus pro-
che
ArrondiSuprieur Renvoie la valeur arrondie d'une valeur numrique l'entier suprieur le plus pro-
che
Conversion Convertit une valeur d'une unit dans une autre
Cosinus Calcule le cosinus d'un angle
CoTang Calcule la co-tangente d'un angle
EstImpair Identifie un nombre impair
EstPair Identifie un nombre pair
Exp Calcule lexponentielle dune valeur numrique
Factorielle Renvoie la factorielle d'un nombre entier
Hasard Renvoie un nombre alatoire
WLangage.book Page 152 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 153
1.5.2 Fonctions Binaire
Les fonctions de gestion des valeurs binaires sont les suivantes :
1.5.3 Fonctions Matrice
Les fonctions de gestion des matrices sont les suivantes :
InitHasard Initialise le gnrateur de nombres alatoires
Ln Calcule le logarithme nprien dune valeur numrique
Log Calcule le logarithme dune valeur numrique
Max Renvoie la plus grande des valeurs passes en paramtre
Min Renvoie la plus petite des valeurs passes en paramtre
Moyenne Calcule la moyenne de plusieurs lments
NumriqueVersChane Renvoie une chane de caractres correspondant au nombre pass en paramtre
PartieDcimale Renvoie la partie dcimale d'un nombre
PartieEntire Renvoie la partie entire d'un nombre
Puissance lve un nombre une puissance
Racine Calcule la racine d'un nombre
Sinus Calcule le sinus d'un angle
Somme Calcule la somme des lments d'un tableau.
Tang Calcule la tangente d'un angle
Pour plus de dtails sur ces fonctions, et pour connatre la disponibilit de ces fonctions dans les diffrents
produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.
ETBinaire Renvoie le rsultat du ET logique (bit bit) entre deux valeurs
NONBinaire Renvoie le rsultat du NON logique (bit bit) d'une valeur
OUBinaire Renvoie le rsultat du OU logique (bit bit) entre deux valeurs
OUExclusifBinaire Renvoie le rsultat du OU Exclusif logique (bit bit) entre deux valeurs
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
MatAdditionne Additionne deux matrices de mme dimension
MatCompresse Compresse la place mmoire occupe par une matrice
MatCopie Cre la copie d'une matrice
MatCre Cre une matrice
MatDterminant Calcule le dterminant d'une matrice carre
MatEcrit crit un lment dans une matrice
MatErreur Identifie le type de la dernire erreur due une fonction de gestion de matrices
MatExiste Teste l'existence d'une matrice en mmoire
MatInverse Inverse une matrice carre
MatLit Lit la valeur d'un lment d'une matrice
MatLitColonne Lit la valeur de tous les lments d'une colonne d'une matrice
MatLitLigne Lit la valeur de tous les lments d'une ligne d'une matrice
MatMultiplie Multiplie deux matrices
MatNbColonne Renvoie le nombre de colonnes d'une matrice
MatNbLigne Renvoie le nombre de lignes d'une matrice
MatRelAdditionne Additionne une valeur chaque lment d'une matrice
MatRelMultiplie Multiplie chaque lment d'une matrice par une valeur
MatRemplit Initialise tous les lments d'une matrice d'une taille donne
MatSupprime Supprime une matrice existante
MatTranspose Calcule la transpose d'une matrice
WLangage.book Page 153 Mardi, 23. avril 2013 1:59 13
154 Partie 4 : Fonctions standard
1.5.4 Fonctions Financires
Les fonctions financires sont les suivantes :
1.5.5 Fonctions Statistiques
Les fonctions statistiques sont les suivantes :
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
FinAmortissement Cre une matrice d'amortissement pour le montant d'un emprunt un taux
d'intrt constant pour une dure dfinie
FinAmortissementDgressif Calcule la valeur de l'amortissement d'un bien pour une priode spcifique
grce la formule de l'amortissement dcroissant taux fixe
FinAmortissementLinaire Calcule la valeur de l'amortissement linaire d'un bien pour une priode
donne
FinErreur Renvoie le numro de la dernire erreur due une fonction financire
FinIntrtPriode value pour une priode donne le montant des intrts dus pour un
emprunt rembours par des versements priodiques constants avec un
taux d'intrt constant
FinNbVersement Renvoie le nombre de versements ncessaires pour rembourser un capital
selon un taux
FinTauxIntrt value le taux d'intrt pour un emprunt donn sur une priode avec des
versements constants
FinValActuelle Renvoie la valeur actuelle d'un investissement
FinValActuelleNette Renvoie la valeur actuelle nette d'un investissement bas sur des flux
financiers non constants
FinValFuture Renvoie la valeur future d'un investissement (remboursements priodiques
constants avec un taux d'intrt constant)
FinValRemboursement Renvoie le montant de chaque remboursement priodique d'un investisse-
ment remboursement et taux d'intrt constants
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
StatCorrlation Calcule le coefficient de corrlation entre deux sries de valeurs
StatCovariance Calcule la covariance entre deux sries de valeurs
StatEcartMoyen Calcule la moyenne des carts absolus des valeurs par rapport leur moyenne arith-
mtique
StatEcartType Calcule l'cart type d'une srie de valeurs
StatEcartTypeP Calcule l'cart type d'une srie complte de valeurs
StatErreur Calcule le numro de la dernire erreur due une fonction statistique
StatMax Calcule la valeur maximale d'une srie de valeurs
StatMin Calcule la valeur minimale d'une srie de valeurs
StatMoyenne Calcule la moyenne arithmtique, gomtrique ou harmonique d'une srie de valeurs
StatSomme Calcule le cumul d'une srie de valeurs
StatVariance Calcule la variance d'une srie de valeurs
StatVarianceP Calcule la variance d'une srie complte de valeurs
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 154 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 155
2. MANIPULER LES CHANES DE CARACTRES
Les fonctions du WLangage permettent de raliser
plusieurs types d'oprations sur les chanes de
caractres.

Il est ainsi possible :
de manipuler le contenu de la chane,
d'effectuer des conversions et des cryptages.
2.1 Manipuler le contenu d'une chane
Les fonctions du WLangage permettent aussi bien
d'extraire des parties d'une chane de caractres
(fonctions Gauche, Droite, Milieu par exemple) que
d'effectuer des recherches dans une chane (fonc-
tion Position ou Remplace par exemple).
Certaines fonctionnalits proposes par les fonc-
tions du WLangage peuvent aussi tre ralises
grce aux oprateurs sur les chanes de caractres
du WLangage.
Plusieurs fonctions du WLangage permettent de
simplifier les conversions et les cryptages des cha-
nes de caractres.
Il est ainsi possible par exemple de :
convertir une chane au format ANSI ou OEM
(fonctions AnsiVersOem et OemVersAnsi),
convertir une chane au format ANSI ou UNICODE
(fonctions AnsiVersUnicode et UnicodeVersAnsi),
crypter ou dcrypter une chane de caractres
(fonctions Crypte et Dcrypte),
convertir une chane de caractres en phonti-
que (fonction Phontique).
Remarque : Pour toutes les conversions de type
Chane/Date ou Chane/Heure, consultez le chapi-
tre Manipuler des dates et des heures, page 159.
Pour plus de dtails, consultez le paragraphe Op-
rateurs sur chanes de caractres, page 71.
2.2 WinDev et lUnicode
2.2.1 Qu'est-ce que l'UNICODE
L'Unicode est un systme de codage spcifiant un
nombre unique pour chaque caractre. Ce codage
est ralis sur 16 bits. Ce nombre est lisible quelle
que soit la plate-forme, le logiciel et la langue utili-
se.
L'UNICODE peut prendre en compte tous les syst-
mes d'criture de la plante.
2.2.2 WinDev et l'unicode
Pour grer l'UNICODE, WinDev propose :
le type Chane UNICODE
deux fonctions de conversion :
l'adaptation des fonctions de manipulation des
chanes de caractres (Droite, Gauche, Milieu,
Taille, TypeVar, ...)
Ajout d'une constante permettant de savoir si
une chane est de type Chane ANSI ou Chane
Unicode
l'adaptation des oprateurs de manipulation des
chanes de caractres
l'oprateur de concatnation (+)
l'oprateur de comparaison (=)
l'oprateur d'extraction ([[ ]])
l'oprateur de comparaison (<>)
l'adaptation des fonctions de manipulation des
fichiers texte (fEcrit, fEcritLigne, fLit, fLitLigne,
fOuvre).
AnsiVersUnicode Convertit une chane de caract-
res au format ANSI (Windows) en
une chane de caractres au for-
mat UNICODE.
UnicodeVersAnsi Convertit une chane de caract-
res au format Unicode en une
chane de caractres au format
ANSI (Windows).
WLangage.book Page 155 Mardi, 23. avril 2013 1:59 13
156 Partie 4 : Fonctions standard
2.3 Manipulation des chanes de caractres sous Pocket PC
Le format par dfaut des chanes de caractres est
diffrent sur un poste PC et sur un Pocket PC.
En effet, sur les postes PC, les applications Win-
dows manipulent gnralement des chanes de
caractres au format ANSI. Au contraire, sur les
Pockets PC, les applications Windows pour Pocket
PC manipulent par dfaut des chanes de caract-
res au format UNICODE.
Chane de caractres
Dans la plupart des cas, la manipulation des cha-
nes de caractres l'aide des fonctions WLangage
sera identique sous WinDev Mobile et sous WinDev
standard. L'utilisation de formats de chanes de
caractres diffrents est automatiquement gre
par WinDev Mobile et entirement transparente
pour le dveloppeur et l'utilisateur.
Fichiers texte
Sous Pocket PC, lors de l'utilisation de fichiers texte
contenant des chanes de caractres au format
ANSI, WinDev convertit automatiquement ces cha-
nes de caractres au format UNICODE. Cette con-
version est effectue mme si l'ouverture de ce
fichier au format ANSI est explicitement demande.
Cette conversion est totalement transparente.
2.4 Fonctions de gestion des chanes de caractres
Les fonctions permettant de grer les chanes de caractres sont les suivantes :
AnsiVersOem Convertit une chane de caractres au format ANSI (Windows) en une chane de carac-
tres au format OEM (DOS)
AnsiVersUnicode Convertit une chane de caractres au format ANSI (Windows) en une chane de carac-
tres au format UNICODE
Asc Calcule le code ASCII du caractre spcifi (le code ASCII utilis correspond la norme
ANSI utilise par Windows)
BufferVersHexa Convertit un buffer en une chane hexadcimale affichable (par exemple : "4A 5B 00").
Caract Renvoie le caractre correspondant au code ASCII spcifi (le code ASCII utilis corres-
pond la norme ANSI utilise par Windows)
CaractOccurren-
ceType
Renvoie le nombre de caractres vrifiant les informations de type donnes.
CaractType Renvoie des informations sur le type d'un caractre.
CaractUnicode Renvoie le caractre Unicode correspondant au code ASCII spcifi
ChaneCommen-
cePar
Vrifie si une chane de caractres commence par une chane de caractres spcifique
ou par une des chanes de caractres prsentes dans une liste.
ChaneCompare Compare deux chanes de caractres
ChaneConstruit Construit une chane de caractres en fonction d'un format et de paramtres
ChaneFinitPar Vrifie si une chane de caractres se termine par une chane de caractres spcifique
ou par une des chanes de caractres prsentes dans une liste.
ChaneFormate Formate une chane de caractres selon les options choisies
ChaneInverse Inverse les caractres d'une chane.
ChaneOccurrence Calcule le nombre d'occurrences d'une chane de caractres spcifique dans une autre
chane de caractres
ChaneRcupre Rcupre une chane de caractres partir d'un format externe (C, etc.)
ChaneSupprime Supprime toutes les occurrences d'une sous-chane l'intrieur d'une chane.
ChaneVersDate Transforme une date sous forme de chane en une date au format AAAAMMJJ
ChaneVersTableau Remplit un tableau une ou 2 dimensions avec le contenu d'une chane.
ChaneVersUTF8 Convertit une chane ANSI ou UNICODE au format UTF8
Complte Renvoie une chane de caractres spcifique une taille dtermine.
ComplteRep Ajoute si ncessaire le caractre "\" la fin d'une chane de caractres
Compresse Compresse une chane de caractres ou un bloc mmoire (buffer) sous forme binaire
Contient Permet de savoir si une sous-chane est contenue dans une chane.
WLangage.book Page 156 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 157
Crypte Crypte une chane de caractres sous forme binaire ou sous forme ASCII
DcomplteRep Enlve si ncessaire le caractre "\" ou "/" la fin d'une chane de caractres
Dcompresse Dcompresse une chane de caractres ou un bloc mmoire (buffer) pralablement
compress par la fonction Compresse
Dcrypte Dcrypte une chane de caractres pralablement crypte par la fonction Crypte
Dsrialise Transforme une chane ou un buffer en structure, classe, tableau
Droite Extrait la partie droite d'une chane de caractres (c'est--dire les derniers caractres)
EntierVersHexa Renvoie la chane hexadcimale d'une valeur numrique
ExtraitChane Extrait une sous-chane d'une chane de caractres, en fonction d'un sparateur de
chane donn
Gauche Extrait la partie gauche d'une chane de caractres (les premiers caractres)
HexaVersBuffer Convertit une chane reprsentant des octets en hexadcimal en un buffer binaire.
HexaVersEntier Renvoie la valeur numrique d'une chane hexadcimale
HTMLVersRTF Convertit une chane de caractres ou un buffer au format HTML en un texte au format
RTF.
HTMLVersTexte Convertit une chane de caractres ou un buffer au format HTML en un texte.
Inverse Renvoie pour chaque caractre d'une chane de caractres le complment 255 (la
chane de caractres est ainsi inverse)
LigneVersPosition Renvoie la position du premier caractre d'une ligne dans un bloc de texte.
Majuscule Convertit une chane de caractres en majuscules, en fonction des paramtres de
localisation dfinis dans Windows (les accentuations sont conserves)
Milieu Extrait une sous-chane d'une chane partir d'une position donne
Minuscule Convertit une chane de caractres en minuscules, en fonction des paramtres de
localisation dfinis dans Windows (les accentuations sont conserves)
MotOccurrence Renvoie le nombre de mots d'une chane.
MotVersTableau Remplit un tableau avec les mots d'une chane.
NumriqueVers-
Chane
Transforme un numrique (entier, rel ou montaire) en une chane de caractres
selon le format spcifi
OemVersAnsi Convertit une chane de caractres au format OEM (Dos) en une chane de caractres
au format ANSI (Windows)
Phontique Dtecte si deux chanes de caractres sont phontiquement semblables (selon la pho-
ntique franaise)
Position Recherche la position d'une chane de caractres dans une autre chane de caractres
PositionOccur-
rence
Recherche la X me position d'une chane de caractres dans une autre chane de
caractres
PositionVersLigne Renvoie le numro de la ligne auquel appartient un caractre connu par sa position
dans un bloc de texte.
Remplace Remplace toutes les occurrences d'un mot prsent dans une chane par un autre mot
Rpte Concatne N rptitions d'une mme chane de caractres
SansAccent Transforme les caractres accentus d'une chane de caractres en caractres non
accentus
SansCaractre Renvoie une chane de caractres sans les caractres spcifis situs gauche et
droite
SansEspace Renvoie une chane de caractres sans les espaces situs gauche et droite
TableauVersChane Convertit un tableau 1 ou 2 dimensions en chane de caractres.
Taille Renvoie la taille d'une chane de caractres (nombre de caractres)
TailleCommune Renvoie le nombre de caractres communs deux chanes de caractres
TailleVersChane Convertit une taille donne en octets en une chane de caractres formate en kilo-
octets, mga-octets ou tera-octets
TexteVersXML Convertit une chane de caractres au format ANSI en une chane de caractres au for-
mat XML
WLangage.book Page 157 Mardi, 23. avril 2013 1:59 13
158 Partie 4 : Fonctions standard
UnicodeVersAnsi Convertit une chane de caractres au format Unicode en une chane de caractres au
format ANSI (Windows)
UTF8VersChane Convertit une chane au format UTF8 en une chane ANSI ou une chane UNICODE
URLDcode Dcode une URL encode (c'est--dire avec des caractres sous la forme de %xx)
URLEncode Encode une URL avec uniquement un sous-ensemble de caractres ASCII
Val Renvoie la valeur numrique d'une chane de caractres
VrifieExpression-
Rgulire
Vrifie si une chane de caractres correspond un format spcifique, et rcupre les
diffrentes sous-chanes constituant le format
XMLVersTexte Convertit une chane de caractres au format XML en une chane de caractre au for-
mat ANSI
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 158 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 159
3. MANIPULER DES DATES ET DES HEURES
3.1 Prsentation
De nombreux moyens vous permettent de manipu-
ler les dates et les heures dans vos applications :
les champs de saisie de type Date ou de type
Heure,
les rubriques de fichiers de donnes de type
Date ou de type Heure,
les variables de type Date, Heure, DateHeure et
Dure,
les proprits sur les variables de type Date,
Heure, DateHeure et Dure,
les fonctions du WLangage de gestion des dates
et des heures.
3.2 Diffrentes faons de manipuler les dates et les heures
Selon le type de manipulation effectu sur les
dates et les heures, il peut tre plus efficace d'utili-
ser les variables ou les fonctions du WLangage.
Les fonctions du WLangage sont conseilles :
pour le formatage des dates ou des heures, ainsi
que pour les oprations de conversion (conver-
sion d'une date en entier, etc.),
pour obtenir des informations sur les dates et les
heures (validit de la date ou de l'heure, obtenir
le jour en toutes lettres, etc.).
L'utilisation des variables est conseille :
pour tous les calculs effectus sur les dates et
les heures (diffrence, calcul de dure, etc.),
pour les extractions de partie de date ou d'heure
(jour, mois, anne, etc.).
3.3 Manipuler les dates / heures prsentes dans des champs de saisie
Il est possible de manipuler les valeurs prsentes
dans les champs de saisie avec les variables de
type date ou heure.
Il suffit d'affecter la variable avec le contenu du
champ.
Pour plus de dtails, consultez les types Date
(page 42), Heure (page 43), DateHeure (page 43)
et Dure (page 43).
3.4 Fonctions de gestion des dates et des heures
Les fonctions de gestions des dates et des heures sont les suivantes :
Age Renvoie lge partir dune de naissance
AnneEnCours Renvoie l'anne en cours sous forme d'entier
ChaneVersDate Transforme une date sous forme de chane de caractres en une date au format
AAAAMMJJ
ChaneVersDure Transforme une dure sous forme de chane de caractres en une dure utilisa-
ble par une variable de type Dure
ChronoDbut Dmarre un chronomtre afin de mesurer la dure d'un traitement (en millise-
condes) et permet de remettre zro un chronomtre existant
ChronoFin Arrte un chronomtre et renvoie le temps coul (en millisecondes) depuis le
dbut du chronomtrage (appel de la fonction ChronoDbut).
ChronoPause Interrompt un chronomtre afin de mesurer la dure dun traitement.
ChronoReprend Redmarre un chronomtre prcdemment arrt
ChronoValeur Indique le temps coul depuis l'appel la fonction ChronoDbut
DateDiffrence Calcule la diffrence de jours entre deux dates
WLangage.book Page 159 Mardi, 23. avril 2013 1:59 13
160 Partie 4 : Fonctions standard
DateDuJour Renvoie ou modifie la date systme
DateHeureDiffrence Calcule la diffrence entre deux dates et heures
DateHeureLocaleVersUTC Convertit une date et une heure exprime en date et heure locale (fuseau
horaire, horaire d't, horaire d'hiver) en temps universel (UTC)
DateHeureParDfaut Permet de dfinir la valeur par dfaut des variables de type Date, Heure, et Date-
Heure
DateHeureSys Renvoie ou modifie la date systme (date et heure du jour dfinies pour le poste
en cours)
DateHeureUTCVersLo-
cale
Convertit une date et une heure exprime en date et heure UTC (temps universel)
en date et heure locale (fuseau horaire, horaire d't, horaire d'hiver).
DateSys Renvoie ou modifie la date systme
DateValide Teste la validit d'une date (entre le 01 janvier 0001 et le 31 dcembre 9999)
DateVersChane Formate la date spcifie au format spcifi
DateVersEntier Transforme une date en un entier
DateVersJour Renvoie le jour correspondant une date donne
DateVersJourEnLettre Renvoie le jour de la semaine en toutes lettres correspondant la date spcifie
DateVersMoisEnLettre Renvoie le mois en toutes lettres correspondant la date spcifie
DateVersNumroDeSe-
maine
Renvoie le numro de la semaine dans l'anne correspondant la date spcifie
DernierJourDeLa Semaine Renvoie la date du dernier jour de la semaine correspondant une date donne.
DernierJourDuMois Renvoie la date du dernier jour du mois spcifi
DureVersChane Formate la dure spcifie au format spcifi
EntierVersDate Transforme un entier en une date au format "AAAAMMJJ"
EntierVersHeure Transforme un entier en une heure au format "HHMMSSCC"
EntierVersJour Renvoie le jour de la semaine correspondant la date spcifie
EntierVersJourEnLettre Renvoie le jour de la semaine en toutes lettres correspondant la date
EntierVersMoisEnLettre Renvoie le mois en toutes lettres correspondant la date spcifie
EntierVersNumroDe-
Semaine
Renvoie le numro de la semaine dans l'anne correspondant la date
HeureDiffrence Calcule la diffrence en centimes de secondes entre deux heures
HeureSys Renvoie ou modifie l'heure systme
HeureValide Teste la validit d'une heure
HeureVersChane Formate l'heure passe en paramtre selon le format "HH:MM:SS:CC"
HeureVersEntier Transforme une heure en un entier
JourFri Indique si un jour est fri ou non.
JourFriAjoute Indique qu'un jour ou qu'une liste de jours est fri.
JoufFriSupprimeTout Vide la liste de tous les jours fris.
Maintenant Renvoie ou modifie l'heure systme
NumrodeJourVersLet-
tre
Renvoie le nom du jour de la semaine en fonction de son numro.
NumroDeMoisVersLe-
trre
Renvoie le nom du mois en fonction de son numro.
MoisEnCours Renvoie le mois en cours
NumroDeSemaine Renvoie le numro de la semaine dans l'anne correspondant la date
Pques Renvoie la date de Pques pour une anne donne
PremierJourDeLaSe-
maine
Renvoie la date du premier jour de la semaine (c'est--dire le Lundi).
PremierJourDuMois Renvoie le premier jour du mois
Pour plus de dtails sur ces fonctions, consultez laide en ligne. Pour connatre la disponibilit de ces fonc-
tions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.
WLangage.book Page 160 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 161
4. MANIPULER LES GRAPHES
4.1 Prsentation
WinDev / WebDev / WinDev Mobile mettent votre
disposition un champ graphe (utilisable dans l'di-
teur de fentres, de pages, et d'tats) ainsi que des
fonctions qui permettent de crer et de manipuler
des graphes.
La plupart des applications et des sites manipulent
un grand nombre de donnes numriques. Les gra-
phes permettent une visualisation rapide et con-
crte de ce type de donnes.
Il est possible de raliser plusieurs types de
graphes : Secteurs, Histogramme, Courbe, Nuage
de points. Pour chacun des types de graphes, des
options d'affichage permettent d'avoir des rendus
diffrents.
4.2 Les diffrents types de graphes
Les diffrents types de graphes sont les suivants :
graphe de type secteur (ou camembert),
graphe de type histogramme,
graphe de type courbe,
graphe de type nuage de points,
graphe de type boursier,
graphe en 3 dimensions.
4.2.1 Les graphes de type "Secteur"
Un graphe en secteur (ou camembert) reprsente
un cercle dcoup en secteurs. La taille de chaque
secteur est proportionnelle une donne de la
srie.
Un graphe en secteur n'affiche jamais plus d'une
srie de donnes. Il permet de mettre en vidence
un lment particulirement important.
1. Angle de dpart. 2. Titre du graphe. 3. Lgende.
4. tiquette de secteur. 5. Couleur de secteur. 6.
Relief. 7. Libell de secteur.
4.2.2 Les graphes de type "Histogramme"
Les donnes sont interprtes comme des "barres"
dont la hauteur est proportionnelle la valeur de la
donne.
Les graphes de type histogramme permettent de
reprsenter l'volution des donnes sur une
priode donne. Ils facilitent galement les compa-
raisons entre des lments.
Les catgories sont organises horizontalement et
les valeurs verticalement afin de mettre en vi-
dence leur variation dans le temps.
1. Libell des donnes. 2. Titre de l'axe vertical. 3.
Graduation. 4. Titre du graphe. 5. Lgende. 6. ti-
quette de srie. 7. Couleur de srie. 8. Libell de
catgorie. 9 Espacement. 10. Relief. 11. Qua-
drillage.
WD WM WebDev
WLangage.book Page 161 Mardi, 23. avril 2013 1:59 13
162 Partie 4 : Fonctions standard
4.2.3 Les graphes de type "Courbe"
Dans les graphes de type courbe, les donnes sont
interprtes comme des ordonnes successives de
points. Les points de chaque srie sont ensuite
relis entre eux par des traits.
1. Titre du graphe. 2. Titre de l'axe vertical. 3. Gra-
duation. 4. Lgende. 5. tiquette de srie. 6. Cou-
leur de srie. 7. Libell de catgorie. 8. Titre de l'axe
horizontal. 9. Quadrillage.
Les graphes de type courbe permettent de mettre
en vidence les tendances des donnes.
4.2.4 Les graphes de type "Nuage de
points"
Un nuage de points (XY) reprsente la relation entre
deux valeurs numriques dans deux sries de don-
nes. Les sries impaires permettent d'identifier
les abscisses des points, et les sries paires, les
ordonnes des mmes points. Les nuages de
points mettent en vidence des intervalles irrgu-
liers, ils permettent aussi de grouper les donnes.
Les graphes "nuage de points" sont couramment
utiliss pour reprsenter des donnes scientifi-
ques.
1. Titre de l'axe vertical. 2. Valeur Y. 3. Graduation.
4. Titre du graphe. 5. Lgende. 6. tiquette de
srie. 7. Couleur de srie. 8. Valeur X. 9. Titre de
l'axe horizontal.
4.2.5 Les graphes de type "Boursier"
Les graphes de type bousier permettent de repr-
senter les variations du cours d'une action. Trois
types de graphes boursiers sont disponibles :
Chandelier
Barcharts
Minmax
4.2.6 Les graphes en 3 dimensions
Tous les types de graphes peuvent tre affichs en
3 dimensions.
WLangage.book Page 162 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 163
4.3 Comment crer des graphes ?
4.3.1 Crer des graphes dans les diteurs
Les diffrents diteurs de fentres, de pages et
d'tats disposent d'un champ graphe. Lors de la
cration de ce champ, les assistants vous posent
diffrentes questions afin de dcrire le graphe qui
va tre cr.
La fentre de description du champ permet de
modifier tout moment ces options.
Les fonctions WLangage permettent galement de
modifier les graphes affichs dans les champs Gra-
phe. Il suffit d'indiquer le nom du champ Graphe
dans les diffrentes fonctions.
4.3.2 Crer des graphes par programma-
tion
Une cinquantaine de fonctions WLangage permet-
tent de manipuler les graphes. Ces fonctions per-
mettent de crer les graphes, de les modifier, de
changer des options d'affichage, etc.
Les oprations raliser pour crer des graphes
sont les suivantes :
1. Crez le graphe avec la fonction grCre.
2. Initialisez les donnes du graphe avec les
fonctions :
grAjouteDonne, pour les graphes de type
courbe, secteur, ...
grNuageAjouteDonneXY pour les graphes de
type Nuage de points,
grBourseAjouteDonne pour les graphes de type
boursier.
3. Choisissez la destination daffichage du graphe
avec les fonctions :
grDestinationChamp pour afficher le graphe
dans un champ Image,
grDestinationFen pour afficher le graphe dans
une fentre WinDev indpendante,
grDestinationBmp, grDestinationEmf ou grDesti-
nationWMF pour enregistrer directement le gra-
phe dans des fichiers respectivement au format
BMP, EMF ou WMF.
4. Dessinez le graphe avec la fonction grDessine.
De nombreuses fonctions permettent de param-
trer et de modifier l'apparence du graphe. Il est
ainsi possible d'afficher une lgende, le titre des
axes, etc.
4.3.3 Graphes et threads
Un seul graphe peut tre manipul dans un thread.
Consquences :
Deux threads ne peuvent pas manipuler le mme
graphe.
Un graphe cr dans un thread est automatique-
ment dtruit la fin de ce thread. Le graphe
existe dans le thread qui contient l'appel la
fonction grCre.
4.3.4 Valeurs par dfaut d'un graphe
Les valeurs par dfaut d'un graphe sont les
suivantes :
Menu contextuel WinDev activ (paramtrable
avec les fonctions grMenu et grOptionMenu).
Graduation automatique des axes (paramtrable
avec la fonction grGraduation).
Les couleurs sont slectionnes selon un ordre
pr-dfini parmi un ventail de 13 couleurs (para-
mtrable avec la fonction grCouleurSrie).
Les couleurs sont dgrades (paramtrable avec
la fonction grDgrad).
Taille fichier WinDev (paramtrable avec la fonc-
tion grFenTaille).
Taille fentre WinDev (paramtrable avec la fonc-
tion grFenTaille).
Taille image WebDev (paramtrable avec la fonc-
tion grTailleImage).
Pas d'tiquette pour les sries (paramtrable
avec la fonction grEtiquetteSrie).
Pas de libell pour les lments (paramtrable
avec les fonctions grEtiquetteCatgorie et grLi-
bell).
Pas de lgende (paramtrable avec la fonction
grLgende).
Pas de titre pour le graphe (paramtrable avec la
fonction grTitre).
Pas de titre pour les axes (paramtrable avec la
fonction grTitreAxe).
Pas de quadrillage de fond (paramtrable avec la
fonction grQuadrillage).
Pas de donnes (ajout d'lments avec la fonc-
tion grAjouteDonne).
Pas de destination (paramtrable avec les fonc-
tions grDestinationChamp, grDestinationFen et
grDestinationWMF).
Pas d'affichage du graphe (pour dessiner le gra-
phe, utilisez la fonction grDessine).
WLangage.book Page 163 Mardi, 23. avril 2013 1:59 13
164 Partie 4 : Fonctions standard
Pas de relief (paramtrable avec la fonction grRe-
lief).
Pour les graphes en secteurs, l'angle de dpart
est gal 0 (paramtrable avec la fonction
grSecteurAngleDpart).
Pour les histogrammes et les graphes boursiers
de type Minimum/Maximum, l'espace entre deux
catgories est gal 10 pixels (paramtrable
avec la fonction grHistoEspacement).
Pour les nuages de points, les points sont relis
et de taille gale 1 (paramtrable avec les fonc-
tions grNuageReliePoint et grNuageTaillePoint).
4.4 Exemples livrs avec WinDev
WinDev est livr en standard avec plusieurs exem-
ples de gestion des graphes :
WD Graphe boursier : cet exemple permet de
dessiner les diffrents types de graphes (boursier
ou non boursier).
WD Lissage de courbes : cet exemple permet de
lisser un graphe de type courbe.
4.5 Fonctions de gestion des graphes
Les fonctions de gestion des graphes sont les suivantes :
grAjouteDonne Ajoute une donne dans un graphe
grBourseAjouteDonne Ajoute une donne dans un graphe boursier
grBulle Affiche et met en forme la bulle d'aide associe un graphe
grChargeParamtre Restaure les paramtres de dessin d'un graphe.
grCouleur Renvoie et initialise la couleur de diffrents lments du graphe.
grCouleurSrie Initialise la couleur d'une srie ou d'une part de secteur
grCre Cr un graphe d'un type spcifi
grCrePolice Cre une police pour les graphes
grDgrad Affiche les couleurs en mode dgrad ou non
grDessine Dessine un graphe selon l'ensemble des paramtres fournis
grDestinationBMP Dfinit un fichier au format BMP comme destination du graphe
grDestinationChamp Dfinit un champ image comme destination d'un graphe
grDestinationEMF Dfinit un fichier au format EMF comme destination du graphe
grDestinationFen Dfinit une fentre comme destination d'un graphe
grDestinationWMF Dfinit un mta fichier comme destination d'un graphe
grDonutPourcentageTrou Modifie le pourcentage correspondant au rayon du trou d'un graphe de type
beignet (ou donut).
grEffaceDessin Efface le dessin d'un graphe
grEpaisseurTrait Change la valeur de lpaisseur du trait dans un graphe de type courbe
grEtiquetteCatgorie Initialise l'tiquette d'une catgorie de donnes (ou d'un secteur) d'un graphe
grEtiquetteSrie Initialise l'tiquette d'une srie de donnes d'un graphe
grExiste Teste l'existence d'un graphe en mmoire
grFenTaille Dfinit la taille de la fentre contenant le graphe
grGraduation Indique la frquence des graduations sur l'axe vertical/horizontal d'un graphe
grHistoEspacement Indique l'espacement entre chaque catgorie de donnes dans un histo-
gramme
grImprime Imprime un graphe
grIncrmenteDonne Ajoute une valeur une donne dans un graphe
grInfoPoint Renvoie les coordonnes l'cran d'un point ou d'une valeur prsent dans un
graphe.
grInfoXY Renvoie des informations sur la srie prsente en un point du graphe
grLgende Indique la prsence et la position de la lgende dans un graphe
WLangage.book Page 164 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 165
grLibell Indique divers paramtres de lgende complmentaire dans un graphe
grLissage Lisse un graphe par la mthode des splines cubiques
grMAJAutomatiqueEtiquet-
teCatgorie
Identifie ou dfinit si les tiquettes de catgorie est mise jour chaque des-
sin du graphe
grMAJAutomatiqueSrie Lit et dfinit si une srie est mise jour chaque dessin du graphe
grMasque Dfinit un masque daffichage des valeurs de la lgende complmentaire
grMenu Active ou dsactive le menu contextuel d'un graphe
grNuageAjouteDon-
nesXY
Ajoute une donne dans un graphe de type "Nuage de points"
grNuageCouleurSrie Initialise la couleur d'une srie pour un graphe de type "Nuage de points"
grNuageEtiquetteSrie Initialise l'tiquette d'une srie de donnes dans un graphe de type "Nuage de
points"
grNuageReliePoint Relie ou non les points dans un graphe de type "Nuage de points"
grNuageTaillePoint Dfinit la taille des points dans un graphe de type "Nuage de points"
grOptionMenu Modifie le texte d'une option du menu contextuel d'un graphe
grOrientation Modifie l'orientation des axes d'un graphe
grOrigine Modifie la graduation de dbut et de fin sur l'axe horizontal ou vertical d'un
graphe
grParamtre3DS Rcupre ou modifie un paramtre de dessin d'un graphe en mode 3D Spa-
tiale
grParamtre Rcupre ou modifie un paramtre d'un graphe.
grPoliceEtiquette Modifie la police utilise pour les tiquettes d'un graphe
grPoliceLgende Modifie la police utilise pour la lgende d'un graphe
grPoliceTitre Modifie la police utilise pour le titre d'un graphe
grPoliceTitreAxe Modifie la police utilise pour les titres des axes d'un graphe
grQuadrillage Affiche ou rend invisible le quadrillage d'un graphe
grRelief Indique la profondeur du relief pour les graphes en 3D
grSauveBMP Sauvegarde un graphe pralablement dessin au format BMP
grSauveEMF Sauvegarde un graphe pralablement dessin au format vectoriel EMF
grSauveParamtre Sauve les paramtres d'un graphe sous forme d'une chane compress
grSauveWMF Sauvegarde un graphe pralablement dessin au format vectoriel EMF
grSecteurAngleDpart Indique l'angle de dpart de la premire part dans un graphe en secteurs
grSecteurPartExcentre Excentre une part dans un graphe en secteurs
grSrieAxeSecondaire Dtermine si une srie sera dessine sur laxe secondaire
grSourceEtiquetteCatgorie Dfinit la source des tiquettes de catgorie
grSourceSrie Dfinit la source d'une srie
grSuperposeGraphe Permet d'afficher deux graphes de type diffrent dans le mme graphe
grSupprimeSrie Supprime une srie de donnes d'un graphe
grSupprimeTout Efface un graphe dessin et dtruit ce graphe
grTailleImage Modifie la taille de limage contenant le graphe
grTitre Modifie le libell et/ou la position du titre d'un graphe
grTitreAxe Dfinit le titre de l'un des axes d'un graphe
grType Modifie ou renvoie le type d'un graphe
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 165 Mardi, 23. avril 2013 1:59 13
166 Partie 4 : Fonctions standard
5. MANIPULER LES ZONES MMOIRE
Les fonctions permettant de grer les zones mmoire sont les suivantes :
MemAjoute Ajoute un lment dans une zone mmoire
MemCre Cre une zone mmoire
MemDernier Positionne sur le dernier lment d'une zone mmoire et renvoie la valeur de retour de
cet lment
MemEnCours Renvoie l'indice de l'lment en cours
MemEnDehors Permet de savoir si le parcours effectu sur la zone de mmoire est en dehors de la
zone de mmoire
MemExiste Teste l'existence d'une zone de mmoire
MemModifie Modifie un lment dans une zone mmoire
MemOccurrence Renvoie le nombre d'lments prsents dans une zone de mmoire
MemPositionne Positionne la zone mmoire sur un lment
MemPrcdent Positionne sur l'lment prcdent d'une zone mmoire et renvoie la valeur de retour de
cet lment
MemPremier Positionne sur le premier lment d'une zone mmoire et renvoie la valeur de retour de
cet lment
MemRecherche Recherche un lment dans une zone mmoire
MemRcupre Rcupre la valeur de retour d'un lment dans une zone mmoire
MemSuivant Positionne sur l'lment suivant d'une zone mmoire et renvoie la valeur de retour de
cet lment
MemSupprime Supprime un lment dans une zone mmoire
MemSupprime-
Tout
Vide et supprime une zone mmoire
MemTrie Trie les lments prsents dans une zone mmoire
MemTrouv Vrifie si l'lment recherch a t trouv
MemValCl Renvoie la valeur ajoute ou modifie (par les fonctions MemAjoute ou MemModifie) de
l'lment en cours dans une zone mmoire
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WD WebDev
WLangage.book Page 166 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 167
6. MANIPULER DES FICHIERS EXTERNES
6.1 Prsentation
De nombreuses fonctions WLangage vous permet-
tent de grer des fichiers externes.
Un fichier externe est un fichier accs direct,
appel galement "fichier texte" par abus de lan-
gage. Les fichiers externes peuvent tre de tout
type (".TXT", ".INI", etc.). Les fichiers externes peu-
vent contenir :
des caractres lisibles (sous forme de chane de
caractres),
des caractres non lisibles (sous forme binaire).
Attention : Il ne faut pas confondre fichiers exter-
nes et fichiers HyperFileSQL. Les fichiers HyperFi-
leSQL sont des fichiers de donnes au format
WinDev/WebDev et doivent tre manipuls avec les
fonctions HyperFileSQL.
Trois groupes de fonctions permettent de
manipuler :
le contenu de vos fichiers externes,
les fichiers prsents sur vos disques (copie de
fichier par exemple),
les rpertoires de vos disques (cration d'un
rpertoire par exemple).
6.2 Manipulation du contenu des fichiers externes
Il est possible de :
crer, ouvrir et fermer vos fichiers externes,
grer le blocage de vos fichiers externes,
lire le contenu de vos fichiers externes : lecture
d'une ligne ou d'un bloc d'octets (caractres),
crire dans vos fichiers externes : criture d'une
ligne, d'une chane de caractres ou d'une por-
tion de mmoire,
se dplacer dans vos fichiers externes.
Exemple
Votre programme gre un fichier de type ".INI" de
taille suprieure 64 Ko. La taille de ce fichier
".INI" est trop importante pour manipuler ce fichier
avec les fonctions INI. Utilisez les fonctions des
fichiers externes pour manipuler ce fichier.
Pour rcuprer le contenu de ce fichier : lisez le
contenu du fichier et affectez ces informations lues
dans une portion de mmoire.
Pour modifier le contenu de ce fichier : ajoutez
diverses informations dans ce fichier une position
donne.
Ce fichier ncessite d'tre partiellement bloqu
pour une mise jour : bloquez ce fichier. Ce fichier
sera uniquement accessible par l'application ou le
site qui bloque le fichier.
6.3 Manipulation de fichiers
Il est possible de :
compresser et crypter des fichiers,
connatre les caractristiques des fichiers,
modifier et obtenir le nom et le chemin des
fichiers,
comparer le contenu de plusieurs fichiers,
lister les fichiers d'un rpertoire en lanant une
procdure effectuant un traitement pour chaque
fichier.
Exemple
Votre programme gre des fichiers de taille impor-
tante contenant des informations confidentielles.
Cryptez et compressez ces fichiers avant de les
transfrer sur votre rseau.
Effectuez une recherche sur vos fichiers et excu-
tez une procdure spcifique sur les fichiers trou-
vs.
WLangage.book Page 167 Mardi, 23. avril 2013 1:59 13
168 Partie 4 : Fonctions standard
6.4 Manipulation de disques et de leurs rpertoires
Il est possible de :
obtenir des informations sur les rpertoires et sur
les disques accessibles,
manipuler des rpertoires.
6.5 Fonctions de gestion des fichiers externes
Les fonctions de gestion des fichiers externes sont les suivantes :
ComplteRep Ajoute, si ncessaire, le caractre "\" la fin d'une chane de caractres. Cette
fonction est utile pour la construction de noms de fichiers complets en cas d'incer-
titude sur le format du chemin (par exemple si l'utilisateur saisit un chemin de
fichier)
DcompleteRep Enlve le caractre "/"' ou "\"' la fin d'une chane si ce caractre est prsent.
Cette fonction est utile pour la construction de noms de fichiers complets en cas
d'incertitude sur le format du chemin (par exemple si l'utilisateur saisit un chemin
de fichier)
fAttribut Identifie ou modifie les attributs d'un fichier
fAttributLectureSeule Identifie ou modifie l'attribut "Lecture seule" d'un fichier
fBloque Bloque entirement ou partiellement un fichier externe
fChangeTaille Change la taille d'un fichier
fChargeBuffer Charge le contenu d'un fichier texte dans une variable de type buffer
fChargeTexte Charge le contenu d'un fichier texte dans tout champ ou variable texte (variable de
type chane, champ de saisie d'une fentre ou dune page, un champ libell d'un
tat, ...)
fCheminCourt Renvoie le chemin complet court d'un fichier ou d'un rpertoire
fCheminLong Renvoie le chemin complet long d'un fichier ou d'un rpertoire
fCompacte Compresse un fichier
fCompare Compare bit bit le contenu de deux fichiers
fCopieFichier Copie un fichier
fCopieFichieRpertoi-
reWeb
Copie un fichier image depuis le rpertoire des donnes de l'application (ou un de
ses sous-rpertoires) vers le rpertoire "_WEB" de l'application (ou un de ses sous-
rpertoires).
fCre Cre un nouveau fichier externe
fCreLien Cre un lien sur un fichier l'emplacement spcifi.
fCrypte Crypte un fichier sous forme binaire ou sous forme ASCII
fDate Renvoie ou modifie les diffrentes dates d'un fichier (date de cration, de modifica-
tion ou d'accs)
fDateHeure Renvoie ou modifie les diffrentes dates et heures d'un fichier ou d'un rpertoire
(date de cration, de modification ou d'accs).
fDbloque Dbloque entirement ou partiellement un fichier externe
fDcompacte Dcompresse un fichier
fDcrypte Dcrypte un fichier pralablement crypt par fCrypte
fDplaceFichier Dplace un fichier. Il est possible de le renommer
fDtecteStockageAmo-
vible
Dtecte si une unit de stockage amovible (par exemple CD, cl USB, appareil
photo USB, ) a t ajoute ou enleve
fDisqueEnCours Renvoie ou modifie le disque en cours
fDisqueInfo Renvoie des informations sur un disque
fDisquePrt Permet de savoir soit si le lecteur de disquette est disponible, soit si le disque
existe
WLangage.book Page 168 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 169
fEcrit crit une chane de caractres ou une portion de mmoire dans un fichier externe
fEcritLigne crit une ligne dans un fichier externe
fEstUneImage Permet de savoir si un fichier prsent sur disque ou un fichier contenu dans un buf-
fer correspond un format d'image reconnu
fExtraitChemin Renvoie les diffrents lments d'un chemin : disque, rpertoire(s), nom et exten-
sion du fichier
fExtraitRessource Extrait une ressource de l'application dans un emplacement physique de l'appareil
fFerme Ferme un fichier externe
fFichierExiste Vrifie l'existence d'un fichier externe
fFichierTemp Renvoie le nom d'un fichier temporaire unique
fFiltreImage Renvoie la liste des formats d'images grs par WinDev, au format attendu par le
filtre de fSlecteur
fHeure Renvoie ou modifie les diffrentes heures d'un fichier : heure de cration, de modi-
fication ou d'accs
fListeDisque Renvoie la liste des disques installs sur la machine.
fListeFichier Liste les fichiers d'un rpertoire (et les fichiers des sous-rpertoires du rpertoire)
et retourne le nombre de fichiers lists
fListeRpertoire Liste les rpertoires d'un rpertoire (et de ses sous-rpertoires) et retourne le nom-
bre de rpertoires lists
fLit Lit le contenu d'un fichier externe pour l'affecter ou non dans une portion de
mmoire
fLitLigne Lit une ligne dans un fichier externe
fLitLigneExpression-
Rgulire
Lit une ligne dun fichier externe et rcupre dans des variables les morceaux de
cette ligne en fonction dune expression rgulire.
fNomCourt Renvoie le nom court dun fichier ou dun rpertoire
fNomFichier Renvoie le nom d'un fichier externe actuellement ouvert.
fNomLong Renvoie le nom long dun fichier ou dun rpertoire
fOuvre Ouvre un fichier externe
fOuvreFichierTemp Cre et ouvre un fichier temporaire. Le systme fournit un nom de fichier tempo-
raire unique
fPositionne Renvoie et modifie la position en cours dans un fichier externe
fRenomme Modifie le nom d'un fichier
fRep Recherche un fichier ou un rpertoire
fRepAttribut Renvoie les attributs d'un rpertoire
fRepCopie Copie un rpertoire et son contenu
fRepCre Cre un rpertoire
fRepDplace Dplace un rpertoire et son contenu
fRepDonnes Renvoie le chemin complet du rpertoire des fichiers de donnes HyperFileSQL
fRepDonnesCommun Renvoie un chemin de rpertoire pour les donnes partages de l'application cou-
rante. Ces donnes sont partages entre tous les utilisateurs du poste.
fRepDonnesUtilisateur Renvoie un chemin de rpertoire pour les donnes de l'application courante. Ces
donnes sont spcifiques l'utilisateur en cours pour l'application en cours.
fRepDroit Identifie les droits d'accs de l'utilisateur sur un rpertoire spcifi
fRepEnCours Identifie ou modifie le rpertoire en cours
fRepertoireExiste Teste l'existence d'un rpertoire
fRpertoireTemp Renvoie le nom du rpertoire o le systme stocke les fichiers temporaires
fRepEtatsEtRequtes Renvoie le chemin complet du rpertoire des tats et requtes personnels ou par-
tags
fRepExe Renvoie le chemin complet du rpertoire dexcution du projet
WLangage.book Page 169 Mardi, 23. avril 2013 1:59 13
170 Partie 4 : Fonctions standard
fRepGlobalCommun Renvoie un chemin de rpertoire pour les donnes globales de l'application cou-
rante (donnes partages par plusieurs applications) quel que soit l'utilisateur en
cours.
fRepGlobalUtilisateur Renvoie un chemin de rpertoire pour les donnes globales de l'application cou-
rante (donnes partages par plusieurs applications), pour l'utilisateur en cours.
fRepParent Renvoie le chemin du rpertoire parent du rpertoire spcifi.
fRepressource Renvoie le chemin des ressources en lecture seule de l'application.
fRepSlecteur Ouvre un slecteur de rpertoires
fRepSupprime Supprimer un rpertoire sur un disque
fRepTaille Renvoie la taille en octets d'un rpertoire.
fRepWeb Renvoie le chemin complet du rpertoire des objets Web (image, flash, ...)
fSauveBuffer Cre et remplit un fichier texte avec le contenu dune variable de type chane ou
buffer
fSauveTexte Cre et remplit un fichier texte avec le contenu d'un champ texte ou d'une variable
texte (variable de type chane, champ de saisie d'une fentre, champ libell d'un
tat, ...)
fSlecteur Ouvre le slecteur de fichiers de Windows
fSlecteurImage Ouvre le slecteur d'images de Windows
FSep Renvoie le sparateur de rpertoire selon la plate-forme en cours ('\' ou '/')
fSparateur Renvoie un chemin de fichier avec des sparateurs normaliss.
fStopCompacte Arrte l'opration de compression ou de dcompression d'un fichier. Le fichier com-
pact ou dcompact n'est pas cr
fSupprime Supprime un fichier accessible depuis le poste en cours
fSupprimeFichierR-
pertoireWeb
Supprime un fichier image du rpertoire "_WEB" de l'application (ou de un de ses
sous-rpertoires).
fTaille Renvoie la taille d'un fichier en octets
fTailleDcompact Renvoie la taille d'un fichier avant compression
RpertoireWeb Renvoie le chemin du rpertoire contenant les images, les fichiers Javascript, les
fichiers applet Java, les autres fichiers accessibles depuis le navigateur
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 170 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 171
7. ZONES DE MEMOIRES PARTAGEES
7.1 Prsentation
WinDev, WebDev et WinDev Mobile proposent de
manipuler les zones de mmoires partages.
Les zones de mmoires partages sont un mca-
nisme de communication entre plusieurs applica-
tions sur un poste donn. Elles permettent par
exemple d'changer simplement des donnes
entre un service et l'application de paramtrage.
Les fonctions de gestion des zones de mmoire
partages utilisent les API standard des diffrents
systmes d'exploitation (Windows ou Linux) et facili-
tent l'interoprabilit entre les applications Win-
Dev/WebDev/WinDev Mobile et des applications
dveloppes dans d'autres langages.
7.2 Comment le faire ?
7.2.1 Crer une zone de mmoire partage
Les zones de mmoire partages sont cres et
ouvertes par la fonction fMemOuvre.
La premire application accdant la zone provo-
quera sa cration, les applications suivantes feront
une simple ouverture.
L'application qui cre la zone dtermine sa taille en
fournissant une taille minimale. Le systme
d'exploitation crera une zone d'une taille multiple
de la taille des pages mmoire (4 Ko sous Windows
32 bits par exemple). La taille relle de la zone
mmoire peut tre connue grce la fonction
fTaille.
7.2.2 Savoir si une zone de mmoire parta-
ge existe dj
Dans certains cas, il est ncessaire de savoir si une
zone de mmoire partage existe dj.
Par exemple, une application permettant de para-
mtrer un service peut s'assurer que le service est
bien lanc de la faon suivante : il suffit de vrifier
que le service a cr une zone de mmoire parta-
ge particulire. Si la zone n'existe pas, l'applica-
tion peut afficher un message d'erreur.
La fonction fMemExiste permet de savoir si une
zone de mmoire partage a dj t cre par
une autre application.
7.2.3 Manipuler le contenu d'une zone de
mmoire partage par programmation
Pour manipuler le contenu d'une zone de mmoire
partage, il est possible :
soit d'utiliser directement les fonctions de lecture
et d'criture dans les fichiers externes. Cette
solution est conseille pour les cas simples
(transmission d'une chane par exemple).
soit d'utiliser la srialisation automatique du
WLangage (fonctions Srialise et Dsrialise),
puis d'utiliser les fonctions de lecture et d'cri-
ture des fichiers externes pour transmettre les
lments. Cette solution est conseille pour la
transmission par exemple de classes dont les
membres correspondent aux lments trans-
mettre
// Ouverture zone mmoire partage
IdZone est un entier
IdZone = fMemOuvre("MaZone"+ ...
"Partage",50,partageGlobal)
SI IdZone>0 ALORS
TailleZone est un entier
TailleZone = fTaille(IdZone)
Info(ChaneConstruit(...
"La zone de mmoire %1 " +...
"a t ouverte."+ ...
"Elle a une taille de %2"+...
" octets.",IdZone,TailleZone))
FIN
...
// Fermeture de la zone de mmoire
// partage
fFerme(IdZone)
// Vrification de l'existence de la
// zone de mmoire partage
SI fMemExiste("MaZonePartage",...
partageGlobal)=Faux ALORS
Erreur("Vrifiez que le "+...
"service XXX a bien t dmarr.")
RETOUR
FIN
WLangage.book Page 171 Mardi, 23. avril 2013 1:59 13
172 Partie 4 : Fonctions standard
7.2.4 Fonctions WLangage
Les fonctions de gestion des fichiers externes utili-
sables avec les zones de mmoire partages sont
les suivantes :
7.3 Dialogue entre plusieurs applications
Deux applications peuvent partager des donnes
en utilisant une zone de mmoire partage.
Deux mcanismes de synchronisation sont
possibles :
la notification automatique (en utilisant les fonc-
tions de callback)
la synchronisation manuelle au moyen de sma-
phore
7.3.1 Notification automatique des modifi-
cations
La notification automatique des modifications peut
tre mise en place ds l'ouverture d'une zone de
mmoire partage.
Il suffit chaque application accdant la zone de
mmoire de donner le nom d'une procdure WLan-
gage en dernier paramtre de la fonction fMemOu-
vre. Cette procdure sera appele
automatiquement chaque modification du con-
tenu de la zone de mmoire partage.
Pour attendre que les autres applications aient fini
de traiter la notification (avant d'effectuer une nou-
velle modification de la zone mmoire par exem-
ple), il faut utiliser la fonction fMemAttend.
.
7.3.2 Synchronisation manuelle
La synchronisation peut tre ralise de faon
manuelle selon le principe suivant :
Les applications ouvrent la zone de mmoire par-
tage et le smaphore de dialogue.
La premire application "prend" le smaphore
(fonction SmaphoreDbut).
La premire application crit ses donnes dans
la zone de mmoire.
fEcrit crit une chane de caractres dans un fichier externe et dans une portion de mmoire.
fEcritligne crit une ligne dans un fichier texte (au format ANSI ou UNICODE).
fLit Lit :
un bloc d'octets (bloc de caractres) dans un fichier externe (ANSI ou UNICODE),
le contenu d'un fichier externe (ANSI ou UNICODE) pour l'affecter dans une portion de
mmoire.
fLitLigne Lit une ligne dans un fichier externe (au format ANSI ou UNICODE).
fPositionne Renvoie et modifie la position en cours dans un fichier externe.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
// Ouverture zone mmoire
// dans l'application 1
IdZone est un entier
IdZone = fMemOuvre...
("ZonePartage",200,...
partageGlobal,"ModifMemoire")
-- Procdure utilise pour
callback (application 1)
PROCEDURE ModifMemoire...
(NomZoneModif est une chane,...
IdZoneModif est un entier)
Info(ChaneConstruit(...
"La zone %1 a t"+ ...
"modifie.",NomZoneModif))
// Ouverture de la zone mmoire
// dans l'application 2
IdZone est un entier
IdZone = fMemOuvre(...
"ZonePartage",200,...
partageGlobal,"ModifMemoire")
// Ecriture dans la zone
fEcrit(IdZone,"Bonjour,"...
"je suis l'application 2.")
// Attente de la validation
// du "Info" de la procdure ...
// "ModifMemoire" dans ...
// l'application 1
fMemAttend(IdZone)
// Deuxime criture dans la zone
fEcrit(IdZone, ...
"Nouvelle information.")
WLangage.book Page 172 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 173
La premire application libre le smaphore
(fonction SmaphoreFin).
La seconde application "prend" son tour le
smaphore.
La seconde application lit les donnes crites par
la premire application.
La seconde application libre le smaphore.
Remarque : Si les deux applications veulent
s'changer des donnes, il faut utiliser deux sma-
phores pour assurer la rgulation.
Conseil : La synchronisation manuelle sera utilise
de prfrence lorsque :
l'une des deux applications n'est pas crite en
WLangage.
le mcanisme de notification des modifications
n'est pas disponible.
7.4 Nommage des zones de mmoire partages
Les zones de mmoires partages sont identifies
par leur nom.
7.4.1 Gestion du mode de partage
Selon les versions des systmes d'exploitation, le
mode de partage diffre :
Linux, Windows 2000 et antrieur : il n'y a qu'un
seul espace de cration de zone mmoire. Le
paramtre <Partage> de la fonction fMemOuvre
est ignor.
Windows XP : le paramtre <Partage> de la fonc-
tion fMemOuvre est effectif si le service de chan-
gement rapide d'utilisateur est actif, sinon il est
ignor.
Windows Vista et postrieur : le paramtre <Par-
tage> de la fonction fMemOuvre est gr. Les ser-
vices sont dans un espace diffrent des
utilisateurs. Pour partager une zone mmoire
entre un service et une application dans la ses-
sion d'un utilisateur, il faut utiliser la constante
partageGlobal.
En Terminal Serveur : le paramtre <Partage> de
la fonction fMemOuvre est gr. Chaque session
ouverte sur le Terminal Serveur a un espace de
mmoire diffrent. Des applications lances
dans la mme session TSE peuvent partager une
zone de mmoire cre avec la constante parta-
geUtilisateur. Des applications situes dans des
sessions diffrentes peuvent partager une zone
de mmoire partage cre avec la constante-
partageGlobal.
7.4.2 Correspondance entre le nom fourni
fMemOuvre et l'ouverture en C
Les deux exemples de code suivant montrent
l'ouverture de la mme zone mmoire (nomme
"mazone" en WLangage et en C).
.
7.5 Fonctions de gestion des zones mmoires partages
Les fonctions permettant de grer les zones mmoires sont les suivantes :
// Code en WLangage
// IdZone est un entier
IdZone = fMemOuvre("mazone",1024...
partageGlobal);
// Code C quivalent
char * szNomZone = "mazone";
int nTaille;
int nMem;
key_t nKey;
int nAccess = 0666;
// Ouverture en lecture/criture
nTaille = 1024;
nKey =
ftok(szNomZone+sizeof(char),...
(int) szNomZone[0]);
nMem = shmget(nKey, nTaille ,...
nAccess);
fMemAttend Attend la fin du traitement des notifications de modification d'une zone de mmoire parta-
ge
fMemExiste Teste l'existence d'une zone de mmoire partage
fMemOuvre Ouvre une zone de mmoire partage entre plusieurs applications
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 173 Mardi, 23. avril 2013 1:59 13
174 Partie 4 : Fonctions standard
8. IMPRIMER EN WLANGAGE
8.1 Prsentation
Plusieurs moyens sont votre disposition pour
imprimer :
L'diteur d'tats, qui permet de crer des "Etats
pr-dfinis".
Les fonctions d'impression du WLangage.
L'diteur d'tats
L'diteur d'tats permet de crer des tats impri-
ms (sous forme d'tat ou d'tiquette) contenant
des informations provenant de fichiers de donnes.
Les fonctions d'impression du WLangage
Pour des dveloppements trs spcifiques, l'di-
teur d'tats ne permet pas de crer les tats sou-
haits. Dans ce cas, il faut utiliser les fonctions
d'impression du WLangage.
De plus, pour des impressions trs simples (de tex-
tes ou d'images), il n'est pas ncessaire de passer
par l'diteur d'tats.
Remarques :
Les fonctions d'impression ne sont pas disponi-
bles en langage externe.
Ce chapitre dcrit uniquement le principe des
impressions en WLangage.
8.2 Principe de l'impression en WLangage
Les tapes pour imprimer en WLangage sont :
Etape 1 (optionnelle) : Configuration des para-
mtres d'impression.
Etape 2 (optionnelle) : Cration de la police ou
des polices d'impression.
Etape 3 : Impression des caractres, des lignes
ou des images et fin d'impression.
Etape 4 : Lancement de limpression (fonction
iFinImprime).
Conseil : Pour acclrer vos impressions, limitez les
options graphiques (traits d'encadrement, trame,
etc.) qui ralentissent normment les impressions
et qui sont gourmandes en mmoire imprimante.
8.2.1 Etape 1 : Configuration des paramtres
d'impression
Cette tape permet de choisir selon le cas :
Les paramtres d'impression du document (qua-
lit d'impression, nombre de copies, etc.).
Les paramtres de configuration de l'imprimante
(driver imprimante, orientation, format papier,
etc.).
Cette tape est facultative et doit tre effectue
uniquement si les paramtres par dfaut (param-
tres dfinis dans le panneau de configuration de
Windows) ne conviennent pas pour l'impression
lancer.
Les diffrentes manipulations
possibles
Les manipulations possibles sont les suivantes :
1. Slection des paramtres d'impression du
document (fonction iParamtre). Il est possible :
soit d'ouvrir la fentre standard de paramtrage
de l'impression (WinDev et WinDev Mobile),
soit de configurer un un les paramtres de
l'impression (par exemple, l'orientation et le for-
mat du papier, la hauteur et la largeur de la page,
le nombre de copies, etc.).
2. Choix de l'imprimante utilise pour l'impression
(fonction iConfigure). Il est possible :
soit d'ouvrir la fentre standard de slection de
l'imprimante (WinDev et WinDev Mobile),
soit de modifier directement l'imprimante utilise
pour l'impression en cours. Cette modification
peut tre temporaire (uniquement pour le pro-
gramme en cours) ou dfinitive (modification de
l'imprimante par dfaut dans le panneau de con-
figuration de Windows).
3. Re-dfinition des marges d'impression (fonction
iMarge). Il est possible de modifier les marges
basse, haute, gauche et droite. Si cette fonction
n'est pas appele, les marges par dfaut (diffren-
tes selon l'imprimante) seront utilises.
WB Important : L'utilisation des fonctions
d'impression du WLangage ncessite une
configuration particulire de votre ser-
veur. Pour plus de dtails, consultez
laide en ligne.
WLangage.book Page 174 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 175
Attention : L'ordre des manipulations prsentes
ci-dessus doit tre respect. Si une impression est
en cours, les fonctions iParamtre et iConfigure
provoquent la fermeture de l'impression en cours.
Fonctions permettant de configurer la
destination de l'impression
Les fonctions suivantes permettent de configurer la
destination de l'impression et de connatre la confi-
guration en cours :
iAperu / iDestination : Paramtre la destination
de limpression.
iConfigure : Configure limprimante.
iInfoImprimante : Rcupre les caractristiques
de limprimante en cours ou de limprimante par
dfaut.
iListeImprimante : Renvoie la liste des impriman-
tes installes sur le poste en cours.
iParamtre : Paramtre limpression.
La configuration et le paramtrage raliss par les
fonctions iConfigure et iParamtre r-initialisent le
module d'impression. En consquence, ces fonc-
tions doivent tre les premires fonctions d'impres-
sion appeles. Toutes les fonctions d'impression
appeles avant ces deux fonctions ne seront pas
prises en compte.
8.2.2 Etape 2 : Cration des polices
d'impression
Cette tape permet de dfinir et de choisir les diff-
rentes polices qui seront utilises dans le docu-
ment imprim. Il est possible de choisir et de
dfinir :
des polices spcifiques l'impression : ces poli-
ces ne pourront tre utilises que lors de
l'impression avec les fonctions du WLangage.
des polices dynamiques, pouvant tre aussi bien
utilises l'cran (dans des fentres, des des-
sins, etc.) que dans des impressions ralises en
WLangage.
Cette tape est facultative.
Si aucune police n'est dfinie pour l'impression, la
police par dfaut est utilise. Cette police a pour
caractristiques :
Fonte : Don't care
Police numro 0
Taille : 12 points pica
Style normal
Couleur : noir
Police d'impression
Les polices d'impression sont cres avec la fonc-
tion iCrePolice. Cette fonction permet de choisir :
la fonte (nom et famille),
la taille (des caractres),
les attributs (gras, italique, soulign, etc.),
la couleur.
Les diffrents paramtres de la police sont dfinis
l'aide de plusieurs constantes.
Chaque police est associe un numro. Pour
choisir la police d'impression, il suffit d'utiliser la
fonction iPolice.
Police dynamique
Une variable de type "Police" vous permet de crer
une police dynamique qui pourra tre utilise dans
tous les objets du projet : fentres, pages, tats,
impression, graphes, dessins, etc.
Pour dfinir une police dynamique :
1. Crez une variable de type Police.
2. Dfinissez les caractristiques de la police :
soit en utilisant la fonction PoliceCre,
soit grce aux proprits de police : ..Angle,
..Barr, ..Condens, ..Couleur, ..Etendu, ..Gras,
..Italique, ..Large, ..Nom, ..Soulign et ..Taille.
Pour choisir une police d'impression, il suffit d'utili-
ser la fonction iPolice.
Police dimprimante
Les constructeurs d'imprimante installent des poli-
ces sur les imprimantes. Ces polices sont appeles
police "imprimante".
Au contraire des polices logicielles (telles que "True
Type"), ces polices sont directement accessibles
par l'imprimante, elles n'ont pas besoin d'tre tl-
charges.
Dans les listes des polices, les polices imprimantes
sont identifies par une icne "imprimante" pr-
sente devant le nom de la police.
Attention : l'utilisation de polices d'imprimante peut
entraner des effets d'affichage en aperu avant
impression.
Si vous utilisez des polices d'imprimante, ces poli-
ces ne sont interprtes que par l'imprimante. Lors
de l'aperu avant impression, l'affichage des poli-
ces est gr par Windows. Ne sachant pas grer
ces polices spcifiques, Windows utilise la police
cran la plus proche.
WLangage.book Page 175 Mardi, 23. avril 2013 1:59 13
176 Partie 4 : Fonctions standard
8.2.3 Etape 3 : Impression
Cette tape consiste "envoyer l'impression" les
diffrents lments imprimer : texte, images, des-
sins, etc.
L'impression sur le support voulu (configur avec la
fonction iAperu ou iDestination) ne sera effective
qu' la fin de l'impression (fonction iFinImprime).
Impression de texte
Voici les principales fonctions du WLangage per-
mettant d'imprimer des textes :
iHauteurTexte : Calcule la hauteur de la police du
texte imprimer en millimtres.
iHauteurZone : Calcule la hauteur ncessaire
dune zone de largeur fixe pour que lensemble
dun texte puisse tre imprim dans cette zone.
iImprime : Envoie au "buffer" dimpression la
chane de caractres passe en paramtre.
iImprimeCodeBarre : Imprime un code-barres
lintrieur dun rectangle.
iImprimeMot : Envoie au "buffer" dimpression la
chane de caractres passe en paramtre.
iImprimeZone : Imprime un texte dans une zone
rectangulaire.
iImprimeZoneRTF : Imprime un texte au format
RTF dans une zone rectangulaire.
iLargeurTexte : Calcule la largeur du texte impri-
mer en millimtres, en fonction de la police spci-
fie.
iLien : Imprime un lien vers une URL lors de
limpression dune page HTML.
iPolice : Slectionne la police par dfaut.
iPoliceDidot : Slectionne lunit utiliser pour la
hauteur des polices (cres avec la fonction
iCrePolice) : point DIDOT ou point PICA.
iPosX : Permet de grer la position horizontale
(abscisse) du curseur dimpression dans la page.
iPosY : Permet de grer la position verticale
(ordonne) du curseur dimpression dans la
page.
Remarques :
Les textes peuvent tre dans des polices
diffrentes : la police est slectionne par la
fonction iPolice.
Les textes peuvent tre crits des positions
spcifiques : fonctions iPosX et iPosY.
Impression d'images
Plusieurs fonctions du WLangage permettent
d'imprimer des images en tenant compte de leur
taille.
iHauteurImage : Calcule la hauteur de limage
imprimer (en millimtres).
iImprimeCodeBarre : Imprime un code-barres
lintrieur dun rectangle.
iImprimeImage : Envoie au "buffer" dimpression
le fichier image imprimer.
iLargeurImage : Calcule la largeur de limage
imprimer (en millimtres).
iMagentaTransparent : Modifie la gestion de la
couleur Magenta afin que cette couleur soit con-
sidre comme transparente ou non lors des pro-
chaines impressions.
iPosX : Permet de grer la position horizontale
(abscisse) du curseur dimpression dans la page.
iPosY : Permet de grer la position verticale
(ordonne) du curseur dimpression dans la
page.
Impression de dessin
Le WLangage permet d'imprimer simplement diff-
rentes formes grce aux fonctions suivantes :
iCadre : Imprime un cadre aux coordonnes sp-
cifies.
iEllipse : Imprime une ellipse lintrieur dun
rectangle.
iImprimeCodeBarre : Imprime un code-barres
lintrieur dun rectangle.
iLigne : Imprime une ligne (au standard Windows,
avec le bout arrondi) aux coordonnes spcifies.
iMagentaTransparent : Modifie la gestion de la
couleur Magenta afin que cette couleur soit con-
sidre comme transparente ou non lors des pro-
chaines impressions.
iMMVersPica : Convertit les coordonnes dun
point (exprimes en millimtres) en coordonnes
systme.
iPosX : Permet de grer la position horizontale
(abscisse) du curseur dimpression dans la page.
iPosY : Permet de grer la position verticale
(ordonne) du curseur dimpression dans la
page.
iTrait : Imprime un trait aux coordonnes spci-
fies.
iTraitH : Imprime un trait horizontal aux coordon-
nes spcifies.
iTraitV : Imprime un trait vertical aux coordon-
nes spcifies.
WLangage.book Page 176 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 177
Autres fonctions
Le WLangage propose diverses fonctions permet-
tant d'optimiser les impressions ralises en WLan-
gage. Il est ainsi possible de grer par exemple :
le saut de page,
l'abandon de l'impression par l'utilisateur,
la taille de la page.
iFentreAbandon : Paramtre laffichage de la
fentre permettant labandon de limpression en
cours (WinDev uniquement).
iFinImprime : Signale la fin du document impri-
mer et lance limpression effective des donnes
actuellement stockes dans la file dattente de
limprimante.
iHauteurPage : Calcule la hauteur de la page
imprimable en tenant compte des marges dfi-
nies.
iHauteurRestantePage : Calcule la hauteur dis-
ponible restant sur la page en cours en tenant
compte des marges (hautes ou basses) dfinies.
iImpressionAbandonne : Permet de savoir si
lutilisateur a demand labandon de limpres-
sion du document en cours (WinDev unique-
ment).
iImpressionDemande : Permet de savoir si luti-
lisateur a demand limpression du document
depuis laperu avant impression (WinDev uni-
quement).
iLargeurPage : Calcule la largeur de la page
imprimable en tenant compte des marges dfi-
nies.
iNumPage : Renvoie ou initialise le numro de la
page en cours dimpression.
iRAZ : R-initialise les paramtres dimpression
mmoriss dans la librairie dimpression.
iSauteLigne : Force un saut de ligne.
iSautePage : Gnre un saut de page.
iStatusImpressionEtat : Renvoie ltat de
limpression en cours.
8.3 Fonctions dimpression
Les fonctions dimpression sont les suivantes :
iAjoutesignet Ajoute un signet dans laperu avant impression ou lors de l'export en PDF.
iAperu Paramtre la destination de l'impression
iCadre Imprime un cadre aux coordonnes spcifies
iCadreArrondi Imprime un cadre avec des bords arrondis aux coordonnes spcifies
IChangeSousEtatSource Modifie par programmation l'tat associ un sous-tat dans un tat composite
iConfigure Configure l'imprimante
iConfigureEtat Configure l'imprimante en ouvrant directement la fentre de configuration
iCrePolice Cre une nouvelle police d'impression
iDernierFichier Renvoie le nom complet du dernier fichier gnr lors de l'impression (PDF, RTF,
XML, ...)
iDestination Paramtre la destination de l'impression
iEllipse Imprime une ellipse l'intrieur d'un rectangle
iEnchanementAjoute Ajoute un tat dans un enchanement d'impressions d'tats.
iEnchanementImprime Dclenche l'impression d'un enchanement d'tats.
iEscape Envoie une commande ESCAPE une imprimante
iFentreAbandon Paramtre l'affichage de la fentre permettant l'abandon de l'impression en cours
iFermeEtat Arrte immdiatement l'impression de l'tat en cours
iFinEtat Force l'arrt de l'impression d'un tat ralis avec l'diteur d'tats
iFinImprime Signale la fin du document imprimer et lance l'impression effective des donnes
actuellement stockes dans la file d'attente de l'imprimante
iForceComplment Force l'impression d'un bloc de complment de corps
iHautBasPageImbri-
qu
Imprime ou non les hauts et bas de page de l'tat imbriqu
iHauteurImage Calcule la hauteur de l'image imprimer (en millimtres)
WLangage.book Page 177 Mardi, 23. avril 2013 1:59 13
178 Partie 4 : Fonctions standard
iHauteurPage Calcule la hauteur de la page imprimable (en millimtres) en tenant compte des
marges (hautes ou bases) dfinies
iHauteurRestantePage Calcule la hauteur disponible (en millimtres) restant sur la page en cours en
tenant compte des marges (hautes ou bases) dfinies
iHauteurTexte Calcule la hauteur de la police du texte imprimer en millimtres
iHauteurZone Calcule la hauteur ncessaire d'une zone de largeur fixe pour que l'ensemble d'un
texte puisse tre imprim dans cette zone
iImpressionAbandon-
ne
Permet de savoir si l'utilisateur a demand l'abandon de l'impression du docu-
ment en cours
iImpressionDeman-
de
Permet de savoir si l'utilisateur a demand l'impression du document depuis
l'aperu avant impression
iImprime Envoie au "buffer" d'impression la chane de caractres passe en paramtre
iImprimeBloc Force l'impression d'un bloc de l'tat en cours d'impression
iImprimeCodeBarre Imprime un code-barres l'intrieur d'un rectangle
iImprimeComplment-
Corps
Force l'impression d'un bloc de complment de corps en spcifiant la hauteur du
bloc de complment
iImprimeDuplicata Imprime un duplicata.
iImprimeEtat Imprime un tat ralis avec l'diteur d'tats
iImprimeImage Envoie au buffer d'impression le fichier image imprimer
iImprimeMot Envoie au "buffer" d'impression la chane de caractres passe en paramtre
iImprimeZone Imprime un texte dans une zone rectangulaire
iImprimeZoneRTF Imprime un texte au format RTF dans une zone rectangulaire
iInfoImprimante Rcupre les caractristiques de l'imprimante en cours ou de l'imprimante par
dfaut
iInitRequteEtat Initialise la requte lie l'tat (cas d'une requte paramtre)
iInitRequteEtatCon-
nexion
Initialise la requte lie l'tat (cas d'une requte base sur une connexion spci-
fique)
iInitSousEtat Initialise les paramtres d'un sous-tat d'un tat composite
iParamtreFiligrane Ajoute un texte en filigrane dans un tat (tat cr sous l'diteur d'tats ou tat
imprim).
iLargeurImage Calcule la largeur de l'image imprimer (en millimtres)
iLargeurPage Calcule la largeur de la page imprimable (en millimtres) en tenant compte des
marges (gauches ou droites) dfinies
iLargeurTexte Calcule la largeur du texte imprimer en millimtres, en fonction de la police sp-
cifie
iLien Imprime un lien vers une URL lors de l'impression d'une page HTML
iLigne Imprime une ligne (au standard Windows, avec le bout arrondi) aux coordonnes
spcifies
iListeEtatsImbriqus Renvoie la liste des tats imbriqus en cours d'impression
iListeImprimante Renvoie la liste des imprimantes installes sur le poste en cours
iMagentaTransparent Modifie la gestion de la couleur Magenta, afin que cette couleur soit considre
comme transparente ou non dans toutes les prochaines impressions
iMarge Dfinit les marges "logiques" d'impression
iMMVersPica Convertit les coordonnes d'un point (exprimes en millimtres) en coordonnes
systme
INumColonne Renvoie le numro de la colonne courante dans les tats multi-colonnes.
iNumPage Renvoie ou initialise le numro de la page en cours d'impression
iParamtre Paramtre l'impression
iParamtreAperu Paramtre l'affichage ou non de chaque bouton prsent dans l'aperu avant
impression
WLangage.book Page 178 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 179
8.4 Fonctions PDF
WinDev permet dimprimer des fichiers PDF grce
aux fonctions dimpression. Ces fichiers PDF peu-
vent tre manipuls par programmation grce aux
fonctions PDF :
iParamtreDuplicata Paramtre la cration automatique du duplicata gnr lors de la prochaine
impression.
iParamtreEtat Configure l'imprimante en ouvrant directement la fentre de configuration
iParamtreExport Paramtre les options d'exportations depuis l'aperu avant impression (notam-
ment l'envoi d'emails).
iParamtrePDF Fixe les options de protection du fichier PDF gnr
iParamtreXLS Fixe les options du fichier XLS gnr lors de l'impression. Il est possible de pren-
dre en compte la mise en forme actuelle (couleur et police) ou non.
iPicaVersMM Convertit les coordonnes d'un point (exprimes en coordonnes systme) en mil-
limtres
iPolice Slectionne la police par dfaut
iPoliceDidot Slectionne l'unit utiliser pour la hauteur des polices (cres avec la fonction
iCrePolice) : point DIDOT ou point PICA
iPosX Permet de grer la position horizontale (abscisse ou colonne) du curseur d'impres-
sion dans la page
iPosY Permet de grer la position verticale (ordonne ou ligne) du curseur d'impression
dans la page
iRAZ Rinitialise les paramtres d'impression mmoriss de la librairie d'impression
iRepImageHTML Permet de slectionner le rpertoire des images gnres lors d'une l'impression
au format HTML
iSauteLigne Force un saut de ligne.
iSautePage Gnre un saut de page
iSelectPolice Cre une nouvelle police d'impression depuis la fentre standard de slection de
polices de Windows
iStatusImpressionEtat Renvoie l'tat d'impression en cours
iSubstBloc Substitue un bloc de l'tat par un autre, au cours de l'impression de l'tat
iTermineColonne Force un saut de colonne dans un tat multicolonne
iTerminePage Force le passage la page suivante en cours d'impression d'un tat
iTrait Imprime un trait aux coordonnes spcifies
iTraitH Imprime un trait horizontal aux coordonnes spcifies
iTraitV Imprime un trait vertical aux coordonnes spcifies
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
PDFEstProtg Vrifie si le fichier PDF ncessite un mot de passe pour tre lu.
PDFFusionne Fusionne plusieurs fichiers PDF existant en un seul fichier PDF
PDFFusionneAvecMotde-
Passe
Fusionne plusieurs fichiers PDF existants et protgs par un mot de passe
d'ouverture en un seul fichier PDF
PDFNombreDePages Renvoie le nombre total de pages d'un fichier PDF.
PDFVersTexte Extrait le texte contenu dans un fichier PDF.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 179 Mardi, 23. avril 2013 1:59 13
180 Partie 4 : Fonctions standard
9. GRER WINDOWS
9.1 Prsentation
De nombreuses fonctions WLangage permettent
dintgrer la gestion de Windows.
Il est ainsi possible de grer :
la base de registres grce aux fonctions registres,
le presse-papiers de Windows,
la corbeille de Windows,
la souris,
les ports srie et parallle,
les priphriques Twain,
les priphriques USB,
le systme,
les services,
Windows,
les vnements Windows,
des applications Java,
les excutables,
le dialogue DDE,
les agents,
le rseau,
le protocole SNMP,
le projet,
le planificateur.
9.2 Fonctions de gestion de la base de registres
Les fonctions permettant de grer la base de registres sont les suivantes :
9.3 Fonctions de gestion du presse-papiers
Les fonctions permettant de grer le presse-papiers sont les suivantes :
RegistreCherche Cherche une chane de caractres dans la base de registres
RegistreClSuivante Identifie la cl suivant la cl spcifie dans la base de registres de Windows
RegistreCopiecl Copie une cl de registre avec toutes ses sous-cls et ses valeurs
RegistreCreCl Cre une cl dans la base de registres de Windows
RegistreEcrit crit une valeur dans un registre de la base de registres de Windows
RegistreExiste Teste l'existence d'une cl de la base de registres de Windows
RegistreListeCl Liste les sous-cls d'une cl de la base de registres.
RegistreListeValeur Renvoie le nom et le type des valeurs d'une cl de la base de registres.
RegistreLit Lit la valeur d'un registre dans la base de registres de Windows
RegistrePremireSous-
Cl
Identifie le chemin de la premire sous-cl de la cl spcifie dans la base de
registres de Windows
RegistreRenomme Renomme une cl de la base de registres.
RegistreSupprimeCl Supprime une cl dans la base de registres de Windows
RegistreSupprimeValeur Supprime une valeur dans la base de registres de Windows
RegistreTypeValeur Renvoie le type d'une valeur prsente dans la base de registres.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
PressePapier Rcupre le texte ou l'image contenu dans le presse-papiers de Windows
PressePapierFormat Identifie le format des informations contenues dans le presse-papiers
PressePapierHauteur Calcule la hauteur de l'image (au format Bitmap) contenue dans le presse-papiers
PressePapierLargeur Calcule la largeur de l'image (au format Bitmap) contenue dans le presse-papiers
WD WDMobile
WLangage.book Page 180 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 181
9.4 Fonctions de gestion de la corbeille
Les fonctions permettant de grer la corbeille sont les suivantes :
9.5 Fonctions de gestion de la souris
Les fonctions permettant de grer la souris sont les suivantes :
9.6 Fonctions de vrification de l'orthographe
Les fonctions permettant de grer la correction orthographique sont les suivantes :
PressePapierRTF Rcupre une chane RTF dans le presse-papiers.
PressePapierUnicode Retourne le texte contenu dans le presse-papiers au format UNICODE.
TableVersPressePapier Copie dans le presse-papiers le contenu d'une table.
TwainVersPressePapier Permet soit de copier le document provenant du priphrique Twain dans le
presse-papiers, soit de visualiser le document provenant du priphrique Twain.
VersPressePapier crit des informations de type texte dans le presse-papiers de Windows
VersPressePapierRTF crit une chane de caractres au format RTF dans le presse-papiers.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
CorbeilleListeFichier Liste les fichiers prsents dans la corbeille
CorbeilleRestaure Restaure un fichier prsent dans la corbeille
CorbeilleSupprime Supprime un fichier prsent dans la corbeille
CorbeilleVide Vide la corbeille.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
ChampSurvol Identifie le champ survol par le curseur de la souris.
CurseurAffiche Affiche ou masque le curseur de la souris
CurseurCapture Dirige tous les vnements associs la souris vers une fentre spcifique ou un champ
CurseurPos Renvoie et modifie la position du curseur de souris
Sablier Transforme le curseur souris en sablier et inversement
SourisPosX Renvoie la position horizontale (X) du curseur de souris par rapport au champ
SourisPosY Renvoie la position verticale (Y) du curseur de souris par rapport au champ
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
OrthoAjouteDic-
tionnaire
Ajoute un mot au dictionnaire orthographique de OpenOffice pour l'instance de l'applica-
tion en cours.
OrthoDisponible Indique si un dictionnaire OpenOffice est disponible pour la vrification orthographique.
OrthoSuggre Renvoie la liste des mots possibles prsents dans le dictionnaire de OpenOffice..
OrthoVrifie Indique si un mot est correctement orthographi.
WD
WD WDMobile
WLangage.book Page 181 Mardi, 23. avril 2013 1:59 13
182 Partie 4 : Fonctions standard
9.7 Fonctions Reconnaissance vocale
Les fonctions permettant de grer la reconnaissance vocale sont les suivantes :
9.8 Fonctions de gestion des ports srie et parallle
Les fonctions permettant de grer les ports srie et les ports parallle sont les suivantes :
9.9 Fonctions de gestion des priphriques Twain
Les fonctions permettant de grer les priphriques Twain sont les suivantes :
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
ReconnaissanceVocaleAjou-
teCommande
Ajoute une commande vocale dans la fentre en cours.
ReconnaissanceVocaleDclenche Dclenche le service de reconnaissance vocale de lappareil.
ReconnaissanceVocaleSuppri-
meCommande
Supprime une commande vocale ajoute par AjouteCommandeVo-
cale
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
sCalculeCrc16 Contrle une chane de caractres avant et aprs transmission entre applications Win-
Dev
sCalculeCrc32 Contrle une chane de caractres avant et aprs transmission entre application WinDev
sDansFileEntre Rcupre le nombre d'octets en attente dans le buffer d'entre du port srie spcifi
sDansFileSortie Rcupre le nombre d'octets en attente de transfert dans le buffer de sortie du port srie
ou du port parallle spcifi
sEchap Lance diverses fonctions agissant directement sur les bits du port srie et du port paral-
lle, indpendamment du protocole de communication
sEcrit crit une chane de caractres dans le buffer de sortie du port srie ou du port parallle
spcifi
sEvenement Branche un vnement sur un port srie.
sFerme Ferme le port srie ou le port parallle spcifi
sFinEvnement Dbranche la dtection d'un vnement sur un port srie.
sFixeParamtre Fixe ou modifie les paramtres de configuration du port srie ou du port parallle spci-
fi
sLit Lit une chane de caractres dans le buffer d'entre du port srie spcifi
sOuvre Ouvre et initialise le port srie (ou le port parallle) spcifi
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
TwainEtat Renvoie l'tat de la source en cours.
TwainHauteurSource Renvoie la hauteur de la zone scanner.
TwainLargeurSource Renvoie la largeur de la zone scanner.
WD WDMobile
WD WDMobile
WD
WLangage.book Page 182 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 183
9.10 Fonctions USB
Les fonctions permettant de grer les priphriques USB sont les suivantes :
9.11 Fonctions MCI
Les fonctions permettant de grer le MCI (Media Control Interface) sont les suivantes :
TwainListeSource Liste les drivers des priphriques Twain connects au poste en cours.
TwainSelectSource Affiche la liste des priphriques Twain disponibles sur le poste en cours et per-
met de choisir le priphrique Twain utilis par dfaut.
TwainSourceEnCours Permet de connatre et de changer le priphrique Twain utilis par dfaut.
TwainVersBMP Permet :
soit d'enregistrer directement le document provenant du priphrique Twain dans
un fichier Bitmap (extension ".BMP").
soit de visualiser le document provenant du priphrique Twain dans linterface uti-
lisateur du priphrique.
TwainVersChamp Permet :
soit de visualiser le document provenant du priphrique Twain dans un champ de
type image.
soit de visualiser le document provenant du priphrique Twain dans linterface uti-
lisateur du priphrique.
TwainVersGIF Permet :
soit d'enregistrer directement le document provenant du priphrique Twain dans
un fichier GIF.
soit de visualiser le document provenant du priphrique Twain dans linterface uti-
lisateur du priphrique.
TwainVersJPEG Permet :
soit d'enregistrer directement le document provenant du priphrique Twain dans
un fichier JPEG.
soit de visualiser le document provenant du priphrique Twain dans linterface uti-
lisateur du priphrique.
TwainVersPressePa-
pier
Permet :
soit de copier le document provenant du priphrique Twain dans le presse-papiers.
soit de visualiser le document provenant du priphrique Twain dans linterface uti-
lisateur du priphrique.
TwainZoneScan Permet de dfinir ou de r-initialiser la zone scanner.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
USBDeconnecte Dconnecte ou jecte un priphrique USB
USBDtecteStocka-
geAmovible
Dtecte si une unit de stockage amovible (par exemple CD, cl USB, appareil
photo USB, ) a t ajoute ou enleve
USBListePriphrique Liste les priphriques USB actuellement branchs sur le poste en cours
USBProprit Rcupre la valeur d'une proprit d'un priphrique USB
USBRecherche Recherche un priphrique USB d'aprs certains mots-cls
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
MCIArrt Arrte lexcution dun fichier multimdia
WD
WD
WLangage.book Page 183 Mardi, 23. avril 2013 1:59 13
184 Partie 4 : Fonctions standard
9.12 Fonctions Service
Les fonctions de gestion des services Windows
sont les suivantes :
MCIDbut Permet de se positionner au dbut dun fichier multimdia
MCIErr Renvoie le numro de la dernire erreur survenue sur une fonction MCI
MCIEtat Permet dobtenir ltat dun fichier multimdia
MCIExcute Excute une commande MCI
MCIFerme Ferme un fichier multimdia
MCIFin Permet de se positionner la fin dun fichier multimdia
MCIFormatPosition Fixe le format de la position dun fichier multimdia
MCIHauteur Retourne la hauteur dun fichier multimdia (en pixels)
MCIJoue Joue un fichier multimdia
MCILargeur Retourne la largeur dun fichier multimdia (en pixels)
MCIMsgErr Renvoie le libell de la dernire erreur survenue sur une fonction MCI
MCINombrePiste Renvoie le nombre de pistes du fichier multimdia
MCIOuvre Ouvre un fichier multimdia
MCIPause Permet de faire une pause dans lexcution dun fichier multimdia
MCIPiste Renvoie le numro de la piste en cours
MCIPosition Permet de connatre ou de modifier la position dun fichier multimdia
MCIRcupre Renvoie le dernier rsultat retourn par la fonction MciExcute
MCITaille Permet dobtenir la taille dun fichier multimdia (exprime dans lunit dfinie par
MciFormatPosition)
MCITailleFentre Modifie la taille et la position de la fentre daffichage dun fichier multimdia
MCIVolume Modifie ou identifie le volume sonore pour les fichiers de type "MID" ou "WAV"
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
FinService Termine l'excution du service en cours.
ServiceActualise Demande un service de relire ses informations de configuration.
ServiceArrte Arrte un service.
ServiceAttendEtat Attend qu'un service soit dans un tat spcifique.
ServiceContrle Envoie un message de contrle un service.
ServiceDmarre Dmarre un service.
ServiceDsinstalle Dsinstalle un service.
ServiceEcritEvnemen-
tJournal
Ecrit un vnement dans le journal des vnements Windows.
ServiceEtat Renvoie l'tat actuel d'un service
ServiceExiste Teste si un service est install.
ServiceInfo Renvoie les caractristiques d'un service
ServiceInstalle Installe un service grce aux informations donnes dans les membres de la
variable Service.
ServiceListe Liste les services prsents sur le poste en cours ou sur le poste distant indiqu.
ServiceModifie Modifie la configuration d'un service grce aux informations donnes dans les
membres de la variable Service.
ServicePause Met en pause un service.
ServiceRedmarre Redmarre un service prcdemment arrt.
ServiceRelance Relance un service en pause.
WLangage.book Page 184 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 185
9.13 Fonctions systme
Les fonctions systme sont les suivantes :
ServiceTemporise Temporise le service en cours pour la dure indique.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
SysArrte Arrte le systme ou ferme la session Windows en cours
SysChangeEnvironne-
ment
Modifie les variables d'environnement du systme d'exploitation du poste en cours
SysChangeRsolutio-
nEcran
Modifie la rsolution d'un cran.
SysCouleur Identifie ou modifie la couleur d'un lment Windows
SysCouleurRes Renvoie la rsolution de l'cran en nombre de couleurs
SysDocRcentAjoute Ajoute un fichier dans la liste des documents rcemment ouverts. Cette liste est
gre par le shell de Windows.
SysDocRcentListe Renvoie la liste des documents rcemment ouverts.
SysDonneFocus Donne le focus une fentre ou un champ
SysEnvironnement Renvoie les variables d'environnement du systme d'exploitation
SysEspace Renvoie l'espace mmoire total du poste en cours
SysEtatCarteStoc-
kage
Renvoie l'tat de disponibilit de la carte de stockage de l'appareil.
SysFenActive Renvoie le handle de la fentre active ou active une fentre
SysFenAffiche Modifie l'tat d'affichage d'une fentre
SysFenHandle Renvoie le numro de handle d'une fentre identifie par son titre
SysFenTitre Renvoie le titre d'une fentre
SysHandleValide Teste la validit d'un handle de fentre
SysIconeAjoute Ajoute une icne dans la barre des tches
SysIconeAjouteImage Ajoute une icne en surimpression de l'icne de l'application dans la barre des
tches. Cette icne pourra tre supprime grce la fonction SysIconeSupprimeI-
mage.
SysIconeModifie Modifie le fichier icne et/ou le message de survol d'une icne dans la barre des
tches
SysIconeSupprime Supprime une icne dans la barre des tches
SysIconeSupprimeI-
mage
Supprime l'icne en surimpression de l'icne de l'application dans la barre des
tches.
SysIconis Permet de savoir si une fentre est iconise
SysIMEI Renvoie le numro IMEI d'un Smartphone
SysInstance Renvoie l'instance d'une application
SysLibreDC Libre le DC (Device Context) en cours rcupr par la fonction SysRcupreDC
SysListeCarteGraphi-
que
Renvoie le nom des cartes graphiques connectes au poste en cours.
SysListeEcran Renvoie la liste des crans connects sur une ou plusieurs cartes graphiques.
SysListeOrientationE-
cran
Permet de connatre les orientations possibles de l'cran d'un Pocket PC.
SysListeRsolutionE-
cran
Renvoie la liste des rsolutions possibles pour un cran.
SysMtrique Renvoie la rsolution d'un lment spcifique
WLangage.book Page 185 Mardi, 23. avril 2013 1:59 13
186 Partie 4 : Fonctions standard
9.14 Fonctions diverses Windows
Les fonctions Windows sont les suivantes :
SysMiniatureAjoute-
Bouton
Ajoute un bouton sur la miniature de l'application dans la barre de tches.
SysMiniatureModifie-
Bouton
Modifie un des boutons prsents sur la miniature de l'application dans la barre des
tches.
SysMiniatureSuppri-
meBouton
Supprime un des boutons prsents sur la miniature de l'application dans la barre
des tches.
SysMiniatureSuppri-
meTout
Supprime tous les boutons associs la miniature de l'application dans la barre
des tches.
SysMiseEnVeille Permet de connatre et de modifier la dure d'inactivit avant la mise en veille du
Pocket PC en cours. Cette fonction permet galement d'activer et de dsactiver la
mise en veille du Pocket PC
SysModeErreur Modifie le mode d'affichage des erreurs
SysNombreEcran Renvoie le nombre d'crans actuellement connects au poste en cours
SysNomEcranPrinci-
pal
Renvoie le nom de l'cran principal
SysNomExe Renvoie le nom et le chemin complet d'une application
SysNumSrie Renvoie le numro de srie du Pocket PC en cours
SysOrientationEcran Permet de connatre ou de modifier l'orientation de l'cran du Pocket PC
SysRectangleEcran Renvoie les coordonnes du rectangle daffichage correspondant tous les crans
SysRcupreDC Rcupre le DC (Device Context) d'une fentre, d'un champ ou de l'cran
SysRep Renvoie le chemin d'un rpertoire du systme
SysRepCarteStoc-
kage
Renvoie la liste des cartes de stockages prsentes dans le Pocket PC en cours
SysRsolutionEcran Renvoie les caractristiques de la rsolution de l'cran
SysThme Renvoie le thme visuel affich actuellement sur le mobile en Windows Phone 7
SysVersion Renvoie des renseignements sur la version de PHP utilise sur le poste serveur en
cours
SysVersionAndroid Retourne des informations sur la version dAndroid utilise par lapplication.
SysVersionWindows Renvoie des informations sur la version de Windows utilise sur le poste en cours
SysXRes Renvoie la rsolution horizontale de l'cran
SysYRes Renvoie la rsolution verticale de l'cran
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
AppelInterface Excute une mthode d'une interface d'un objet implment dans une DLL externe au
framework WinDev. Cet objet peut tre un objet C++ ou un objet COM.
API / AppelDLL32 Excute une fonction prsente dans une DLL externe 32 bits
APIParamtre Modifie les options d'appel de la fonction API et de la fonction AppelDLL32
ChargeDLL Charge en mmoire la librairie 32 bits (DLL) spcifie
COMAppelleM-
thode
Excute une mthode d'une interface d'un objet COM instanc grce la fonction
COMCreInstance.
COMCreInstance Instancie un objet COM (Component Object Model).
COMRcupreInter-
face
Appelle la mthode QueryInterface de l'objet COM spcifi pour obtenir une interface
spcifique de cet objet afin de l'utiliser avec la fonction COMAppelleMthode.
ComposantCharge Charge en mmoire le composant spcifi
WLangage.book Page 186 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 187
9.15 Evnement Windows
Les fonctions permettant de grer les vnements Windows sont les suivantes :
ConstruitEntier Construit un entier partir de 2 entiers sur 2 octets
CreRaccourci Cre un raccourci sur le bureau de Windows, dans le menu "Dmarrer" de Windows ou
dans un rpertoire spcifique
DchargeDLL Dcharge la librairie 32 bits (DLL) qui a t prcdemment charge en mmoire avec la
fonction ChargeDLL
EnvoieTouche Simule des manipulations de touches au clavier
InstalleIcone Cre une icne (associe un programme) dans un groupe de programme de Windows,
avec la ligne de commande associe
Instance Renvoie le "Handle systme" (HINSTANCE) du programme en cours
Ping Teste si une adresse est accessible (quivalent de lutilitaire rseau PING)
PoidsFaible Renvoie les deux octets de poids faible d'un entier
PoidsFort Renvoie les deux octets de poids fort d'un entier
sCalculeCrc16 Contrle une chane de caractres avant et aprs transmission entre applications Win-
Dev / entre sites WebDev
sCalculeCrc32 Calcule le code de redondance cyclique (CRC) d'un tampon.
SortieStandard crit une information dans le flux de sortie standard "stdout" (galement appel "con-
sole")
SupprimeRac-
courci
Supprime un raccourci prcdemment cr avec CreRaccourci
ToucheEnfonce Vrifie quelle est la touche enfonce
Transfert Copie un bloc d'octets ou une chane de taille fixe d'une adresse mmoire dans une
autre
VersionWindows Renvoie le mode d'excution du programme dans l'environnement en cours
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
Evnement Intercepte un vnement Windows sur un champ, un groupe de champs ou une fentre
WinDev
FinEvnement Annule l'interception d'un vnement Windows sur un champ ou une fentre WinDev mis
en place grce la fonction Evnement
FinTimer Termine l'excution d'un timer dclench par la fonction Timer
FinTimerSys Termine l'excution d'un timer dclench par la fonction TimerSys
Handle Renvoie le "Handle" systme (HWND) d'un champ ou d'une fentre WinDev
HandleParensui-
vant
Force le parent de la prochaine fentre ouvrir. Cette fonction permet une fentre Win-
Dev d'tre fille d'une autre application ou d'tre fille d'une fentre non WinDev.
Multitache Permet deffectuer une temporisation, de rendre la main Windows ou de rendre la main
Windows et au WLangage
PostMessage Envoie un message Windows un champ ou une fentre
SendMessage Envoie un message Windows un champ ou une fentre
Temporistaion Stoppe temporairement l'excution d'un programme
Timer Appelle priodiquement et automatiquement une procdure du WLangage. Utilise dans la
procdure, la fonction Timer permet d'identifier le timer qui a lanc la procdure.
TimerSys Appelle priodiquement et automatiquement une procdure du WLangage. Utilise dans la
procdure, la fonction TimerSys permet d'identifier le timer qui a lanc la procdure.
WLangage.book Page 187 Mardi, 23. avril 2013 1:59 13
188 Partie 4 : Fonctions standard
9.16 Fonctions Java
Les fonctions permettant de grer des applications Java sont les suivantes :
9.17 Fonctions diverses WinDev / WebDev
Les fonctions diverses sont les suivantes :
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
JavaCharge Indique l'emplacement des classes ncessaires l'excution de l'application ou de
l'applet Java
JavaExcute Lance une application ou une applet Java en appelant la mthode "Main" d'une classe
Java donne
JavaExcuteFonction Excute une fonction statique spcifique d'une classe java
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WebDev WD
AnalyseurDbut Lance la "collecte d'informations" pour l'analyseur de performances
AnalyseurFin Arrte la "collecte d'informations" pour l'analyseur de performances
AppliContrle Active (ou dsactive) le contrle distance de l'application WinDev multi-utilisateurs
en cours
ASPAffiche Appelle un script ASP externe et renvoie la page rsultat dans la fentre en cours du
navigateur
ASPExcute Appelle un script externe .asp et renvoie le rsultat dans une chane
AutomationEvnement Branche une procdure sur un vnement d'un objet automation
AutomationParamtre Paramtre la gestion des accs aux objets ActiveX et aux objets Automation
Bip met un bip sonore
CertificatClientinfo Renvoie des informations sur le certificat utilis par le poste client.
ChaneAffiche Affiche une chane de caractres (ou un buffer) dans le navigateur
ChangeGabarit Change dynamiquement le gabarit associ une fentre (fentre spcifique, fen-
tres des composants WinDev, ...)
ChargeProcdure La fonction ChargeProcdure est conserve uniquement pour compatibilit.
ChargeWDL Charge en mmoire une bibliothque d'objets (.WDL)
Compile Compile dynamiquement une procdure
ComposantCharge Charge en mmoire le composant spcifi
ComposantChargeTout Charge en mmoire de manire rcursive tous les composants utiliss dans le pro-
jet.
ComposantInfo Renvoie des informations sur un composant
ConnexionOccur-
rence
Renvoie le nombre d'instances du site WebDev en cours d'excution sur le serveur
ConstruitVariantAuto-
mation
Construit un paramtre de type variant Automation
CookieEcrit Ecrit un cookie sur le poste de l'internaute
CookieLit Rcupre la valeur d'un cookie enregistr sur le poste de l'internaute
DchargeWDL Dcharge la bibliothque prcdemment charge en mmoire avec la fonction
ChargeWDL
WLangage.book Page 188 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 189
DsactiveFAA Dsactive une fonctionnalit automatique de WinDev sur un champ ou une fentre
diffApplique Applique un buffer de diffrences sur un buffer spcifique
diffCre Compare deux buffers et cre un buffer contenant les diffrences entre ces deux
buffers
Dimension Calcule la taille d'une variable ou redimensionne un tableau dynamique
DonneCouleur Permet dobtenir une suite de couleurs harmonieuses sans avoir utiliser une table
de couleurs
DonneGUID Calcule un identifiant globalement unique (nomm "GUID")
DonneIdentifiant Calcule un identifiant unique de type entier pour un excutable donn
DchargeProcdure La fonction DchargeProcdure est conserve uniquement pour compatibilit
DchargeWDL Dcharge la bibliothque prcdemment charge en mmoire avec la fonction
ChargeWDL
Dsactive FAA Dsactive une Fonctionnalit Automatique d'une Application (FAA) sur un champ,
sur une fentre ou sur l'application en cours
EnMode64bits Identifie si le code est excut en mode 64 bits ou non.
EnModeAJAX Identifie sir le code est excut depuis un traitement en mode AJAX ou depuis une
procdure appele grce aux fonctions AJAXExcute ou AJAXExcuteAsynchrone
EnModeAWP Identifie si le code est excut depuis une page AWP.
EnModeComposant Identifie si le code est excut depuis une application WinDev ou depuis un compo-
sant
EnModeEmulateu-
rAndroid
Identifie si le code est excut dans l'mulateur Android ou non
EnModeEmulateu-
riOS
Identifie si le code est excut dans lmulateur iOS (iPhone, iPad) ou non.
EnModeEmula-
teurWindowsPhone
Identifie si le test est excut grce l'mulateur Windows Phone ou non
EnModeEtatsEtRequ-
tes
Identifie si le code est excut lors du test d'un tat ou d'une requte sous le logiciel
Etats et Requtes
EnModeFabrique Identifie si le code est excut par un plan d'actions de la fabrique logicielle
EnModeiOS Identifie si le code en cours d'excution est en mode iOS (iPhone, iPad) ou non.
EnModeJava Identifie si le code est excut en Java ou non
EnModeLinux Identifie si le code est excut en mode Linux ou non
EnModeMCU Identifie si le code est excut depuis un macro-code utilisateur.
EnModePHP Identifie si le code est excut en PHP ou non
EnModePocket Identifie si le code est excut depuis une application WinDev Mobile ou depuis une
application WinDev standard
EnModeProcdureStoc-
ke
Identifie si le code est excut sur un serveur HyperFileSQL
EnModeService Identifie si le code est excut dans un service
EnModeSimulateur Permet de savoir si l'application est lance en "mode test simulateur" de WinDev
Mobile.
EnModeSimulateurAn-
droid
Identifie si le code est excut dans le simulateur Android ou non
EnModeSimulateuriOS Identifie si le code est excut dans le simulateur iOS (iPhone, iPad) ou non.
EnModeSimulateurPHP Identifie si le code est excut en mode simulateur PHP ou non
EnModeSimulateurPoc-
ket
Identifie si le code est excut dans le simulateur Pocket ou non
EnModeSimulateurWin-
dowsPhone
Identifie si le code est excut dans le simulateur Windows Phone ou non
EnModeTest Identifie le mode de lancement de l'application ou du site
WLangage.book Page 189 Mardi, 23. avril 2013 1:59 13
190 Partie 4 : Fonctions standard
EnModeTestAutomati-
que
Permet de savoir si un test automatique est en cours ou non
EnModeTSE Identifie si le code est excut depuis un poste en TSE ou depuis un bureau distant.
EnModeVGA Indique si lapplication sexcute sur un mobile en mode VGA
EnModeWeb Identifie le mode de lancement du code en cours
EnModeWebservice Permet de savoir si l'excution est en cours dans le moteur AWWS.
EnModeWindows Identifie si le code est excut en mode Windows ou non
EnModeWindowsMo-
bile
Identifie si le code est excut depuis une application Windows Mobile.
EnModeWindows-
Phone
Identifie si le code est excut en mode Windows Phone ou non.
ErreurInfo Rcupre des informations sur la dernire erreur d'une fonction d'une composante
EstNumrique Permet de savoir si une variable ou un champ est de type numrique ou de type
chane pouvant tre converti en numrique
EvalueExpression Evalue la valeur d'une expression construite dans une chane de caractres.
Excute Lance l'excution d'un traitement par programmation
ExcuteActionPrdfi-
nie
Excute une action prdfinie de WinDev
ExcuteAnctre Dans le cas d'une surcharge de code, permet d'excuter le traitement du modle
correspondant au traitement du champ en cours.
ExcuteCode Excute un code WLangage prsent dans une chane de caractres.
ExcuteFAA Excute une fonctionnalit automatique de l'application (FAA) sur un champ spcifi-
que
ExcuteTraitement Lance l'excution d'un traitement par programmation
FacteurGrandePolice Renvoie le facteur d'agrandissement courant d'une fentre WinDev (uniquement si
Windows est en mode grandes polices)
FichierAide Renvoie ou modifie le nom du fichier d'aide utilis par l'aide contextuelle d'une fen-
tre.
FichierAffiche Renvoie un fichier spcifique sur le navigateur du client
FinAutomatismeProc-
dure
Arrte l'excution (en cours ou venir) d'une procdure automatique (dfinie par les
proprits de la procdure sous l'diteur de code
FinProgramme Termine l'excution du programme en cours
fRepDonnes Renvoie le chemin complet du rpertoire des fichiers de donnes HyperFileSQL
fRepWeb Renvoie le nom physique complet du rpertoire contenant les images, les fichiers
Javascript et Java du site WebDev
Hasard Renvoie un nombre alatoire
Hasp Interroge une cl lectronique HASP
IniEcrit Ecrit une valeur spcifique dans un fichier INI
IniLit Lit le contenu d'un fichier INI
InitHasard Initialise le gnrateur de nombres alatoires
JSEvnement Associe une procdure navigateur un vnement sur un objet en code navigateur
JSFinEvnement Supprime l'association d'une fonction WLangage navigateur vnement (mis en
place grce la fonction JSEvnement.
JSInfoEvnement Permet de manipuler les proprits JavaScript de l'vnement navigateur qui a
dclench l'excution du code
JSInterruptionEvne-
ment
Interrompt le traitement de l'vnement en cours
JSMthode Permet d'excuter une mthode Javascript sur un lment de la page en cours
JSONExcute Appelle une URL serveur du mme domaine qui retourne des donnes au format
JSON
JSONExcuteExterne Appelle une URL serveur externe qui retourne des donnes au format JSON
WLangage.book Page 190 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 191
JSProprit Permet de manipuler des fonctionnalits spcifiques sur des objets de la page en
cours
LanceEtatsEtRequtes Lance le logiciel Etats et Requtes
LigneCommande Identifie et rcupre les diffrents lments de la ligne de commande passe en
paramtre au programme en cours
ModeExcution Renvoie ou modifie le comportement de l'application (du site) lorsque certaines
erreurs sont gnres
NumHelp Renvoie le numro de contexte d'aide associ au champ spcifi
ParamtreFAA Permet de spcifier le comportement de certaines fonctionnalits automatiques de
l'application (FAA).
ParamtreOrthographe Paramtre le correcteur orthographique de OpenOffice pour les champs de saisie et
les colonnes de table de toute l'application. Il est possible de spcifier dans quelle
langue la correction orthographique doit tre effectue.
PHPAffiche Appelle un script PHP externe et renvoie la page rsultat dans la fentre en cours du
navigateur
PHPExcute Appelle un script externe .php et renvoie le rsultat dans une chane
RpertoireDonnes La fonction RpertoireDonnes est conserve uniquement pour compatibilit
RpertoireWeb Renvoie le chemin du rpertoire contenant les images, les fichiers Javascript, ...
sCalculeCRC16 Vrifie si une chane a t correctement transmise lors de transmissions compor-
tant des risques de perte d'information
ScriptAffiche Appelle un script externe (par exemple .php ou .asp) et renvoie la page rsultat dans
la fentre en cours du navigateur
ScriptExcute Appelle un script externe (par exemple .php ou .asp) et renvoie le rsultat dans une
chane (une requte http est effectue, ce qui permet d'utiliser soit une mthode
POST soit une mthode GET)
SelectCouleur Ouvre la fentre standard de slection de couleur de Windows
Son Joue un son au format WAV
SSLActive Permet d'activer ou de dsactiver le mode scuris SSL.
SourisPosX Renvoie la position horizontale du curseur de la souris
SourisPosY Renvoie la position verticale du curseur de la souris
StyleDessin Permet de modifier certains paramtres du mode d'affichage des fentres
Trace Affiche des informations demandes (contenu d'un champ par exemple) dans une
fentre ouverte en parallle de la fentre en cours
TraceDbut Ouvre la fentre de Trace
TraceFin Ferme la fentre de Trace si cette fentre a t ouverte
TypeVar Identifie le type d'une expression, d'une variable (lors d'un appel de procdure par
exemple) ou d'un champ
TypeVariable Identifie le type d'une variable du WLangage
UploadCopieFichier Enregistre sur le serveur un fichier "upload" par l'internaute (c'est--dire envoy par
l'internaute au serveur via un champ de saisie de type "Upload")
UploadNomFichier Renvoie le nom d'un fichier "upload" par l'internaute (cest--dire envoy par l'inter-
naute au serveur via un champ de saisie de type "Upload")
VariableRAZ Remet la variable sa valeur initiale
VariantConvertit Convertit la valeur stocke dans une variable de type Variant
VersionDmo Permet de savoir si l'excution courante de l'application est en mode "version d'va-
luation"
VersionWinDev Renvoie le numro de version de la DLL WD150WM de WinDev
WHelp Afficher un fichier ou une page d'aide au format HLP ou CHM
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 191 Mardi, 23. avril 2013 1:59 13
192 Partie 4 : Fonctions standard
9.18 Fonctions de gestion des excutables
Les fonctions suivantes permettent de manipuler et d'obtenir des renseignements sur les excutables acces-
sibles ou lancs sur le poste en cours :
9.19 Fonctions Hasp
Les cls lectroniques de la famille Hasp (Hasp3, Hasp4, NetHasp, MemoHasp et Hasp HL) permettent de
protger les applications dveloppes avec WinDev ou WebDev.
Les fonctions permettant de grer les fonctions Hasp sont les suivantes :
AutoLanceAjoute Permet de lancer automatiquement une application WinDev Mobile lors d'un vne-
ment prcis. Ce lancement est dfini partir d'une application WinDev Mobile.
Permet galement de lancer automatiquement une application WinDev standard
lors d'un vnement prcis. Ce lancement est dfini partir d'une application Win-
Dev standard.
AutoLanceSupprime Permet d'arrter le lancement automatiquement d'une application WinDev Mobile
ou WinDev standard. Ce lancement automatique a t pralablement dfini avec la
fonction AutoLanceAjoute.
DonneIdentifiant Calcule un identifiant unique de type entier pour un excutable ou une session
donn.
ExeDonnePID Renvoie des informations sur le processus courant.
ExeInfo Rcupre les informations spcifies sur la version dun excutable ou dune DLL
ExeLanc Permet de savoir si une application est dj lance
ExeListeDLL Retourne la liste des librairies (fichiers ".DLL") utilises par une application en cours
d'excution
ExeListeProcessus Retourne la liste des applications en cours d'excution. Pour chaque application
trouve, il est possible de connatre son identifiant, l'identifiant du processus parent
(celui qui a lanc l'application), le nom et l'extension de son excutable, le nom et le
chemin complet de son excutable, sa consommation actuelle ainsi que sa consom-
mation maximale atteinte.
ExePriorit Renvoie ou modifie la priorit d'une application en cours d'excution
ExeTermine Termine lexcution dune application 32 bits : toutes les instances de lexcutable
sont "tues"
LanceAppli Lance lexcution dun programme (excutable par exemple) depuis lapplication ou
le site en cours
LanceAppliAssocie Ouvre directement un document dans son application ou dans son site associ
ListeDLL Retourne la liste des librairies (fichiers ".DLL") utilises par l'application WinDev,
WinDev Mobile ou par le site WebDev en cours. Seules les librairies en mmoire
sont listes.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
Hasp Interroge une cl lectronique HASP de type HASP-3, HASP-4, MemoHasp ou
NetHasp.
HaspHLConnecte Connecte l'application une cl Hasp.
HaspHLCrypte Crypte une chane de caractres en utilisant les algorithmes de la cl Hasp spcifie.
HaspHLDconnecte Ferme la connexion de l'application une cl Hasp.
HaspHLDcrypte Dcrypte une chane de caractres en utilisant les algorithmes de la cl Hasp.
WLangage.book Page 192 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 193
9.20 Fonctions de gestion du DDE
Les fonctions permettant de grer le DDE (Dynamic Data Exchange) sont les suivantes :
9.21 Fonctions de gestion des applications avec "live update"
Les fonctions permettant de grer les applications avec "Live update" sont les suivantes :
HaspHLEcrit Ecrit des donnes (chanes de caractres ou buffer) dans la mmoire interne de la cl
Hasp.
HaspHLInfo Rcupre des informations sur la cl lectronique Hasp.
HaspHLLit Lit des donnes (chanes de caractres ou buffer) dans la mmoire interne de la cl
Hasp.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
DDEChane Retourne les informations rcupres par la fonction DDERcupre
DDEConnecte Ouvre une connexion DDE entre le programme en cours et le destinataire selon un sujet
donn
DDEDconnecte Supprime une connexion entre le programme en cours et un destinataire
DDEDestinataire Identifie le destinataire d'une connexion DDE
DDEEnvoie Envoie une donne au programme connect via DDE
DDEErreur Retourne le compte rendu d'excution d'une fonction de gestion du dialogue DDE
DDEEvnement Associe une procdure WLangage un vnement DDE
DDEExcute Envoie un ordre excuter
DDEFinLien Interrompt un lien entre un item et une donne
DDEItem Identifie l'item concern par un vnement DDE
DDELance Lance l'excution d'un programme depuis l'application ou le site en cours
DDELien Cre un lien chaud avec une donne
DDELienTide Cre un lien tide avec une donne
DDEModifie Modifie une donne lie
DDERcupre Rcupre une donne envoye par un programme (le destinataire de la connexion pour
l'objet spcifi)
DDESujet Identifie le sujet de la conversation associe une connexion DDE
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
AppliActiveVersion Active une des versions de l'application disponible dans l'historique des versions
sur le serveur d'installation de rfrence.
AppliChangeParam-
tre
Change une information du mcanisme de mise jour automatique de l'applica-
tion spcifie.
AppliContrle Active (ou dsactive) le contrle distance de l'application WinDev multi-utilisa-
teurs en cours.
AppliDclencheMAJ Dclenche la mise jour automatique de l'application en cours.
AppliInfoVersion Renvoie des informations sur une version disponible sur le serveur d'installation.
AppliInstalleVersion Installe une version spcifique de l'application.
AppliListeVersion Liste les versions disponibles sur le serveur d'installation de rfrence. Ces ver-
sions sont disponibles dans l'historique de l'installation de rfrence.
AppliMAJDisponible Permet de savoir si une mise jour est disponible pour l'application spcifie.
AppliParamtre Renvoie des informations sur le mcanisme de mise jour automatique de l'appli-
cation spcifie.
WebDev WD
WLangage.book Page 193 Mardi, 23. avril 2013 1:59 13
194 Partie 4 : Fonctions standard
9.22 Fonctions de gestion des rseaux
Les fonctions permettant de grer les rseaux sont les suivantes :
9.23 Fonctions de gestion du protocole SNMP
Les fonctions permettant de grer le protocole SNMP sont les suivantes :
AppliSupprimeVer-
sion
Supprime une version de l'historique des versions prsent sur le serveur d'installa-
tion de rfrence.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
RseauConnecte Associe un lecteur un rpertoire rseau partag
RseauDconnecte Dconnecte un lecteur rseau
RseauNomDomaine Renvoie le nom du domaine auquel est associ le poste en cours
RseauNomRep Identifie le rpertoire associ un lecteur rseau
RseauUtilisateur Identifie le nom de l'utilisateur connect
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
SNMPChaneVersOID Convertit un OID de sa reprsentation textuelle vers sa reprsentation numrique.
SNMPChargeMIB Charge en mmoire et analyse un fichier MIB.
SNMPEcrit crit une ou plusieurs valeurs sur un agent SNMP pour lequel une session SNMP a
t ouverte.
SNMPFermeSession Ferme une session SNMP.
SNMPLit Lit une ou plusieurs valeurs d'un agent avec lequel une session SNMP a t
ouverte.
SNMPLitSuivant Lit la valeur suivant la dernire valeur rcupre d'un agent SNMP.
SNMPLiTableau Lit un tableau de valeurs SNMP.
SNMPOIDAccs Renvoie les modes d'accs autoriss d'un OID spcifique.
SNMPOIDDescription Renvoie la description d'un OID.
SNMPOIDEtat Renvoie l'tat d'un OID.
SNMPOIDType Renvoie le type de donnes contenu dans un OID.
SNMPOIDVersChane Convertit un OID de sa reprsentation numrique vers sa reprsentation textuelle.
SNMPOuvreSession Ouvre une session SNMP.
SNMPTrapActive Active l'interception d'une "trap" SNMP envoye par un agent.
SNMPTrapDsactive Dsactive l'interception d'une trap SNMP.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 194 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 195
9.24 Fonctions de gestion des projets
Ces fonctions permettent de manipuler facilement les lments dun projet :
9.25 Fonctions de gestion du planificateur
Les fonctions permettant de grer le planificateur Windows sont les suivantes :
ComposantCharge Charge en mmoire le composant spcifi. Ce composant sera charg en mmoire
jusqu' ce que l'application se termine.
ComposantInfo Renvoie des informations sur un composant.
ComposantListe Retourne la liste des composants (fichier ".WDK") utiliss par l'application en cours
ComposantLocalise Spcifie le chemin d'accs un composant du projet
EnModeComposant Identifie si le code est excut soit :
depuis une application WinDev, un site WebDev ou une page PHP,
depuis un composant
EnumreElment Permet d'numrer les lments du projet (fentres, pages, tats, requtes, ...)
EnumreSousEl-
ment
Permet d'numrer les sous-lments d'un lment du projet (fentres, tats,
requtes ...). Cette fonction peut tre excute mme si l'lment n'est pas ouvert
ListeDLL Retourne la liste des librairies (fichiers ".DLL") utilises par l'application en cours ou
installes sur le poste en cours
NombreFentre Calcule le nombre de fentres de l'application en cours actuellement ouvertes
ProjetInfo Renvoie une information spcifique sur le projet en cours d'excution (nom du projet,
cl de la base de registres associe, ...)
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
PlanificateurAjouteHoraire Cre un horaire pour une tche planifie
PlanificateurAjouteTche Cre une tche dans le planificateur de tches Windows
PlanificateurEtatTche Rcupre ou modifie l'tat d'une tche cre dans le planificateur
de tches Windows
PlanificateurListeTche Rcupre la liste des tches planifies
PlanificateurModifieHoraire Modifie les paramtres d'un horaire de tche planifie, c'est--dire
les paramtres qui vont dfinir l'excution d'une tche
PlanificateurModifieTche Modifie les paramtres d'une tche planifie
PlanificateurOuvrePropritsTche Ouvre la page de proprits d'une tche planifie
PlanificateurPropritsHoraire Lit les proprits d'un horaire de tche planifie et met jour la
structure HoraireTchePlanifie
PlanificateurPropritsTche Lit les proprits d'une tche planifie et met jour la structure
TchePlanifie
PlanificateurRAZ Remplit les structures TchePlanifie et HoraireTchePlanifie avec
les valeurs par dfaut
PlanificateurSupprimeHoraire Supprime un horaire d'une tche planifie
PlanificateurSupprimeTche Supprime une tche planifie
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WD
WLangage.book Page 195 Mardi, 23. avril 2013 1:59 13
196 Partie 4 : Fonctions standard
10. ACTIVATION DUNE APPLICATION
10.1 Prsentation
Lors de la diffusion d'une application, il peut tre
intressant de proposer la gestion d'une version
complte et d'une version limite :
La version limite est par exemple fournie par
dfaut.
La version complte (et payante par exemple)
ncessite l'obtention d'une cl d'activation.
WinDev, WebDev et WinDev Mobile permettent de
grer simplement cette fonctionnalit.
10.2 Comment le faire ?
10.2.1 Principe
Une cl initiale (un numro de srie par exemple)
est gnre la demande par l'application sur le
poste du client. Cette cl est unique : elle dpend
de paramtres propres au poste en cours et l'ins-
tant de la demande.
Le client peut alors effectuer une demande d'acti-
vation (par Internet par exemple) au fournisseur de
l'application en lui communiquant cette cl initiale.
Le fournisseur pourra gnrer la cl d'activation
partir de la cl initiale et la communiquer son
client.
Il suffira alors au client de saisir la cl initiale et la
cl d'activation correspondantes pour activer son
application.
10.2.2 Mise en place dans l'application
cliente
L'application qu'utilise le client doit prvoir les ta-
pes suivantes :
1. Gnration et communication de la cl initiale :
La gnration de la cl initiale est effectue
grce la fonction ClGnreClInitiale.
La communication de la cl initiale au fournis-
seur de l'application peut tre effectue par
exemple par l'envoi automatique d'un email ou
par l'intermdiaire d'un site WEB.
2. Rcupration de la cl d'activation et activation
de l'application :
La rcupration de la cl d'activation peut tre
ralise directement par l'application ou par la
saisie de la cl par l'utilisateur final.
La vrification de la conformit de la cl d'activa-
tion avec la cl initiale est ralise grce la
fonction ClCompareCl. En cas de succs, il est
alors possible par exemple d'activer certaines
fonctionnalits de l'application.
10.2.3 Mise en place dans l'application du
fournisseur
Il est ncessaire que le fournisseur de l'application
possde une application permettant de :
gnrer la cl d'activation partir d'une cl ini-
tiale (fonction ClCalculeClActivation).
transmettre la cl d'activation l'application
cliente. Il est possible par exemple d'envoyer un
email.
Ces manipulations peuvent tre par exemple propo-
ses par un site WebDev ou un Webservice permet-
tant une activation immdiate en ligne.
10.3 Fonctions de gestion des cls d'activation
Les fonctions de gestion des cls d'activation sont les suivantes :
ClCalculeClActivation Calcule la cl d'activation de l'application partir de la cl initiale.
ClCompareCl Compare une cl initiale avec une cl d'activation
ClGnreClInitiale Gnre la cl initiale (numro de licence unique) pour le systme d'activation de
l'application
ClRcupreIdentifiant Rcupre l'identifiant ayant servi gnrer une cl initiale
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
WLangage.book Page 196 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 197
11. MANIPULEZ VOS FICHIERS XLS
11.1 Prsentation
WinDev et WebDev mettre votre disposition deux
mthodes pour manipuler les fichiers Excel :
Mthode 1 : Manipulation dynamique des
feuilles XLS et XLSX.
Cette mthode utilise diffrents types de varia-
bles ainsi que des fonctions WLangage. Cette
mthode permet de grer les fichiers Excel
(fichiers XLS ou XLSX) en lecture et en criture.
Mthode 2 (conserve par compatibilit) : Utilisa-
tion de fonctions WLangage pour grer les fonc-
tions XLS.
Cette mthode permet de grer uniquement les
fichiers XLS en lecture.
11.2 Mthode 1 : Manipulation dynamique des fichiers XLS et XLSX
Pour manipuler les fichiers XLS et XLSX, le WLan-
gage met votre disposition :
diffrents types de variables. Ces types de varia-
bles permettent de manipuler un document XLS,
une ligne ou une colonne XLS, une cellule XLS.
diffrentes fonctions WLangage manipulant les
diffrents types de donnes.
Pour manipuler les fichiers XLS et XLSX :
1. Dclarez une variable de type xlsDocument. Ce
type de variable permet de dcrire et de modifier
un document Excel.
2. Ouvrez si ncessaire le fichier XLS (fonction
xlsOuvre) et associez-le la variable de type xlsDo-
cument).
3. Vous pouvez manipuler les diffrents lments
du document Excel :
soit avec les fonctions WLangage.
soit avec les proprits du type xlsDocument.
Exemple :
Remarque
Si le fichier Excel est ouvert en mode lecture/cri-
ture (constante xlsEcriture), le fichier est ouvert
et bloqu jusqu' sa fermeture. Pour sauvegarder
les modifications ralises, utilisez la fonction
xlsSauve.
Les fonctions XLS ne ncessitent pas l'installa-
tion du logiciel "Microsoft Excel" sur le poste des
utilisateurs.
Les fichiers XLS et les fichiers spcifiques
Office 2007 (fichiers .xlsx) sont grs.
WebDev WD
IdFicxls est un xlsDocument
MonFichier est une chane
MonFichier = fRepExe + ...
"\Suivi d'affaires1.xls"
IdFicxls = xlsOuvre(...
MonFichier, xlsEcriture)
SI ErreurDtecte = Faux ALORS
Azz est un entier
Azz = xlsFeuilleEnCours(IdFicxls)
Info("Feuille en cours dans"+ ...
"le fichier Excel : " + Azz)
// Changement de feuille
SI xlsFeuilleEnCours(...
IdFicxls,2) ALORS
Info("La feuille courante"+ ...
"a t modifie.")
// Lecture d'une cellule pour test
Info(xlsDonne(IdFicxls,11,2))
SINON
Erreur("Le fichier slectionn"+...
"ne comporte pas de seconde"+...
"feuille !")
FIN
SINON
Erreur("Attention ! le fichier"+...
"est dj ouvert sur un poste"+...
"de travail !")
FIN
WLangage.book Page 197 Mardi, 23. avril 2013 1:59 13
198 Partie 4 : Fonctions standard
11.3 Mthode 2 : Lecture des fichiers Excel (mthode conserve par com-
patibilit)
WinDev et WebDev mettent votre disposition des
fonctions pour grer vos fichiers de type ".XLS"
depuis vos applications WinDev et sites WebDev.
Grce ces fonctions, vous pouvez rcuprer
l'ensemble des donnes saisies sous Excel.
Pour manipuler un document XLS :
1. Utilisez la fonction xlsOuvre. Cette fonction ren-
voie l'identifiant du fichier XLS manipul.
2. Utilisez les fonctions XLS pour rcuprer les dif-
frentes informations voulues sur le fichier Excel et
ses donnes.
Remarques :
Les fonctions XLS ne ncessitent pas l'installa-
tion du logiciel "Microsoft Excel" sur le poste des
utilisateurs.
Seuls les fichiers XLS sont grs. Les fichiers
spcifiques Office 2007 (fichiers .xlsx) ne sont
pas grs.
Deux modes de fonctionnement des fonctions
XLS sont disponibles :
Mode de fonctionnement compatible avec les
versions prcdentes de WinDev et WebDev :
dans ce mode, seule la premire feuille du clas-
seur est accessible.
Nouveau mode de fonctionnement multi-
feuilles : dans ce mode, il est possible de slec-
tionner la feuille du classeur o les manipula-
tions sont effectues.
La fonction permettant de modifier le mode de
manipulation des fonctions XLS est la fonction
xlsOuvre.
11.4 Fonctions WLangage
Ces fonctions permettent de :
manipuler des fichiers ".XLS" : ouverture et fer-
meture.
obtenir des informations sur vos fichiers ".XLS" :
donne d'une cellule, nombre de lignes, nombre
de colonnes, type de colonne, titre de colonne
(voir schma).
connatre la version d'Excel utilise.
identifier les erreurs survenues lors des diffren-
tes manipulations sur un fichier ".XLS".
WLangage.book Page 198 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 199
11.5 Fonctions XLS
Les fonctions permettant de grer les fichiers Excel sont les suivantes :
Remarque : La fonction TableVersExcel permet de crer un fichier XLS avec les donnes d'une table.
xlsAjouteFeuille Ajoute ou insre une nouvelle feuille dans un document Excel.
xlsDonne Rcupre les donnes d'une cellule d'un fichier XLS
xlsFerme Ferme un fichier XLS
xlsFeuilleEnCours Permet de connatre ou de modifier la feuille courante dun fichier XLS
xlsMsgErreur Renvoie le libell de la dernire erreur due une fonction XLS
xlsNbColonne Renvoie le nombre de colonnes d'un fichier XLS
xlsNbFeuille Renvoie le nombre de feuilles dun fichier XLS
xlsNbLigne Renvoie le nombre de lignes d'un fichier XLS
xlsOuvre Ouvre un fichier XLS
xlsSauve Sauve un document Excel.
xlsSupprimefeuille Supprime une feuille dans un document Excel.
xlsTitreColonne Rcupre l'intitul d'une colonne d'un fichier XLS
xlsTypeColonne Renvoie le type des donnes saisies dans une colonne d'un fichier XLS
xlsVersion Renvoie la version d'Excel utilise
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 199 Mardi, 23. avril 2013 1:59 13
200 Partie 4 : Fonctions standard
12. LES ARCHIVES
12.1 Prsentation
Des fonctions WLangage permettent de compres-
ser et de regrouper vos fichiers sous forme d'archi-
ves.
Une archive est un fichier physique :
de type ".WDZ" pour une archive WinDev.
de type ".ZIP" pour une archive WinZip ou PKZip.
Ce fichier regroupe plusieurs fichiers de tout type
(".pdf", ".fic", ".mmo", etc.) automatiquement com-
presss.
Par exemple, les archives peuvent vous permettre
de :
sauvegarder rgulirement vos fichiers tout en
rduisant la taille de stockage,
faciliter la transmission de vos fichiers sur Inter-
net/Intranet,
crer des archives auto-extractibles,
etc.
Grce une compression optimise, vos fichiers
occupent moins d'espace disque et sont facilement
transmissibles sur diffrents supports (disquettes,
CD, Internet, etc.).
Deux types d'archives existent :
archive mono-partie : l'archive se prsente sous
la forme d'un seul fichier.
archive multi-parties : l'archive se prsente sous
la forme de plusieurs fichiers (ou sous-archives).
Remarque : WinDev gre galement les formats
standards de zip (WinZip et PKZip).
12.2 Manipulations des archives
Plus de 20 fonctions du WLangage permettent de
grer vos archives. Ces fonctions permettent de :
manipuler les archives (cration, ouverture, fer-
meture),
manipuler les fichiers de l'archive (ajout et com-
pression de fichiers (fichiers isols ou ensemble
de fichiers d'un rpertoire), extraction et dcom-
pression d'un fichier, suppression des fichiers
d'une archive),
obtenir diverses informations sur les archives et
sur les fichiers compresss (taille avant et aprs
compression, etc.),
dcouper et/ou regrouper des volumes d'archi-
ves,
crer des excutables auto-extractibles.
Exemple
Pour sauvegarder la base de donnes de votre
client, votre programme cre une archive de sauve-
garde. Les fichiers sauvegarder sont alors com-
presss dans l'archive.
WLangage.book Page 200 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 201
Pour stocker cette archive sur des disquettes :
cette archive est dcoupe en plusieurs parties. Il
est alors facile de transmettre cette archive !
Pour faciliter l'utilisation des fichiers de
sauvegarde : crez une archive auto-extractible. Il
suffira de lancer l'excution de l'archive pour
dcompresser automatiquement tous les fichiers.
12.3 Les archives mono-partie/multi-parties
12.3.1 Prsentation
Deux types d'archive existent :
archive mono-partie,
archive multi-parties.
Archive mono-partie
Une archive mono-partie se prsente sous la forme
d'un seul fichier de type ".WDZ" ou ".ZIP" : un fichier
archive regroupe tous les fichiers compresss.
L'archive occupe la place ncessaire pour contenir
tous les fichiers compresss.
Exemple : Votre programme ou votre site doit sau-
vegarder plusieurs fichiers de taille importante.
Votre programme ou votre site peut crer une
archive contenant l'ensemble des fichiers sauve-
garder. Cette archive augmentera l'espace disque
disponible.
Archive multi-parties
Une archive multi-parties se prsente sous la forme
de plusieurs fichiers (ou sous-archives) de taille
identique. La taille de chaque sous-archive est fixe
lors de la cration de l'archive multi-parties.
La premire sous-archive est un fichier de type
".WDZ" ou ".ZIP". Les sous-archives suivantes sont
des fichiers numrots de 1 N grce leur exten-
sion.
Pour les archives au format WinDev (WDZ), les
sous-parties ont pour extension : ".001", ".002", ...,
".NNN".
Pour les archives au format ZIP standard, les sous-
parties ont pour extension : ".Z01", ".Z02", ...,
".ZNN".
12.3.2 Principe d'utilisation
Pour crer une archive multi-parties :
1. Crez une archive (zipCre).
2. Ajoutez des fichiers cette archive. Les fichiers
ajouts sont automatiquement compresss (zipA-
jouteFichier, zipAjouteRpertoire).
3. Dcoupez cette archive en plusieurs sous-archi-
ves (zipDcoupe). Les sous-archives sont de taille
identique. Vous dcidez de la taille des sous-archi-
ves.
Vous pouvez stocker les sous-archives sur diff-
rents supports (disquettes, CD, ....).
Les sous-archives peuvent tre regroupes (fonc-
tion zipRegroupe) : l'archive redevient mono-partie.
Remarque : Toutes ces manipulations peuvent ga-
lement tre ralises grce WDZip (pour plus de
dtails, consultez laide en ligne).
Attention : Certaines fonctions d'archivage sont uti-
lisables uniquement sur des archives mono-partie
(ajout de fichiers, suppression de fichiers, cration
d'un excutable auto-extractible, etc.). Pour effec-
tuer ces oprations sur une archive multi-parties, il
suffit de regrouper les sous-archives (zipRegroupe)
pour obtenir une archive mono-partie.
A partir d'une archive multi-parties, il est unique-
ment possible de :
Regrouper les diffrentes parties (zipRegroupe),
Obtenir diverses informations sur l'archive et sur
les fichiers de l'archive (zipExtraitChemin, zipIn-
foFichier, zipListeFichier, etc.),
Extraire les fichiers (zipExtraitFichier, zipExtrait-
Tout).
WLangage.book Page 201 Mardi, 23. avril 2013 1:59 13
202 Partie 4 : Fonctions standard
12.3.3 Exemples
Votre programme WinDev doit stocker une
grande quantit d'informations sur disquette.
Votre programme peut crer une archive conte-
nant toutes les donnes voulues. Une fois cre,
cette archive peut tre dcoupe en plusieurs
parties. Ces volumes sont de la taille d'une dis-
quette (1,44 Mo). Il ne reste plus qu' copier ces
diffrentes parties sur des disquettes.
Votre site WebDev doit proposer en tlcharge-
ment un fichier dont la taille est importante. Pour
les Internautes possdant une connexion bas
dbit (ligne tlphonique par exemple), il est sou-
vent propos de tlcharger un fichier en plu-
sieurs parties. Votre site peut crer une archive
contenant toutes les donnes voulues. Une fois
cre, cette archive peut tre dcoupe en plu-
sieurs parties. Ces volumes peuvent tre d'une
taille correcte pour un tlchargement. Il ne reste
plus qu' fournir un lien pour chaque partie de
l'archive l'Internaute.
12.4 Fonctions d'archivage
Les fonctions permettant de grer les archives sont les suivantes :
zipAjouteFichier Ajoute et compresse automatiquement un fichier dans une archive
zipAjouteListeFichier Ajoute et compresse automatiquement une liste de fichiers dans une archive
zipAjouteRpertoire Ajoute la totalit des fichiers d'un rpertoire et de ses sous-rpertoires dans une
archive
zipChangeChemin Modifie le chemin d'un fichier prsent dans l'archive
zipChercheFichier Recherche un fichier dans une archive selon un chemin donn
zipCre Cre une nouvelle archive
zipCreExe Cre un excutable auto-extractible partir d'une archive
zipDcoupe Dcoupe une archive en plusieurs parties
zipEstMulti Renvoie le type de l'archive : archive mono-partie ou archive multi-parties
zipExiste Permet de savoir si une archive existe. Une archive existe si elle a t ouverte par la
fonction zipOuvre ou cre par la fonction zipCre.
zipExtraitChemin Renvoie le chemin original d'un fichier de l'archive
zipExtraitFichier Extrait et dcompresse un fichier d'une archive
zipExtraitListeFichier Extrait et dcompresse automatiquement une liste de fichiers prsents dans une
archive vers un emplacement physique.
zipExtraitTout Extrait et dcompresse la totalit des fichiers d'une archive
zipFerme Ferme une archive
zipFichierEnCours Renvoie le nom du fichier en cours de traitement par les fonctions d'ajout et
d'extraction de fichiers
zipInfoFichier Renvoie diverses informations sur un fichier ou une archive (chemin mmoris,
taille avant et aprs compression, etc.)
zipListeFichier Renvoie la liste des fichiers prsents dans l'archive
zipMotDePasse Dfinit le mot de passe utilis pour les oprations d'ajout et d'extraction de fichiers
dans l'archive spcifie
zipMsgErreur Renvoie le message associ un numro d'erreur d'un traitement d'archivage
zipNbFichier Renvoie le nombre de fichiers contenus dans une archive
zipNbPartie Renvoie le nombre de parties d'une archive
zipNbPartieNces-
saire
Renvoie le nombre de parties d'une taille donne ncessaires pour contenir
l'archive
zipNiveauCompres-
sion
Change le niveau de compression utilis dans la cration d'une archive au format
ZIP
zipOuvre Ouvre une archive existante
zipOuvreCAB Ouvre une archive CAB existante
zipOuvreRAR Ouvre une archive RAR existante
WLangage.book Page 202 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 203
zipRegroupe Regroupe les diffrentes parties d'une archive pour en faire une archive mono-par-
tie
zipSupprimeFichier Supprime un fichier d'une archive
zipSupprimeListeFi-
chier
Supprime un ensemble de fichiers contenu dans une archive
zipSupprimeTout Supprime la totalit des fichiers d'une archive
zipTaille Renvoie la taille totale de l'ensemble des fichiers d'une archive (avant ou aprs
compression)
zipTailleFichier Renvoie la taille d'un fichier d'une archive (avant ou aprs compression)
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 203 Mardi, 23. avril 2013 1:59 13
204 Partie 4 : Fonctions standard
13. GRAVER UN CD OU UN DVD
13.1 Prsentation
Plusieurs fonctions WLangage sont votre disposi-
tion pour graver des CD ou des DVD. Il est possible
de crer :
des CD / DVD de type donnes.
des CD de type audio.
Remarque : Il est possible uniquement de graver
des fichiers sur un CD ou un DVD. Il n'est pas possi-
ble de copier directement un CD ou un DVD.
En WinDev, les fonctions de gravure sont disponi-
bles uniquement sous Windows XP et suprieur.
En WebDev, la gravure sera ralise sur le serveur
Web. Ce serveur doit tre sous Windows XP ou
suprieur.
13.2 Gravure dun CD / DVD
Pour graver un CD :
1. Dterminez si ncessaire le graveur utiliser :
2. Ouvrez si ncessaire le tiroir du graveur en
cours, fonction GraveurEjecte.
3. Spcifiez si ncessaire le type du CD/DVD
crer :
4. Effacez si ncessaire les fichiers dj prsents
sur le CD /DVD (fonction GraveurEfface). Lors de
l'effacement, une procdure WLangage ("callback")
est appele rgulirement. Cette procdure permet
de grer les diffrents vnements rencontrs.
5. Indiquez si ncessaire le nom donner au CD /
DVD graver, fonction GraveurNomVolume.
6. Slectionnez les fichiers graver sur le CD /
DVD :
7. Rcuprez si ncessaire les caractristiques de
la compilation, fonction GraveurInfoCompilation.
8. Gravez les fichiers slectionns sur le CD / DVD
(fonction GraveurEnregistre). Lors de la gravure,
une procdure WLangage ("callback") est appele
rgulirement. Cette procdure permet de grer les
diffrents vnements rencontrs.
9. Annulez si ncessaire la gravure en cours (fonc-
tion GraveurAnnuleGravure).
WebDev WD
GraveurChemin Renvoie le chemin du graveur en
cours
GraveurEtat Renvoie l'tat actuel du graveur en
cours
GraveurListe Liste les graveurs installs sur le
poste en cours
GraveurProprit Permet de connatre ou de modi-
fier les proprits du graveur en
cours
GraveurSlectionne Permet de slectionner le graveur
utilis par dfaut
GraveurInfoMdia Rcupre les caractristiques du
CD /DVD prsent dans le graveur
en cours
GraveurTypeMdia Permet de connatre ou de modi-
fier le format du CD / DVD graver
GraveurAjouteFichier Ajoute un fichier la compilation
GraveurAjouteRper-
toire
Ajoute la totalit des fichiers d'un
rpertoire la compilation
WLangage.book Page 204 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 205
13.3 Fonctions de gravure
Les fonctions permettant de grer les archives sont les suivantes :
GraveurAjouteFichier Ajoute un fichier la compilation
GraveurAjouteRpertoire Ajoute la totalit des fichiers d'un rpertoire la compilation
GraveurAnnuleGravure Annule la gravure en cours de ralisation
GraveurChemin Renvoie le chemin du graveur en cours
GraveurEfface Efface les fichiers prsents sur un CD rinscriptible
GraveurEjecte Ouvre ou ferme le tiroir du graveur en cours
GraveurEnregistre Grave les fichiers prsents dans la compilation sur le CD
GraveurEtat Renvoie l'tat actuel du graveur en cours
GraveurInfoCompilation Rcupre les caractristiques de la compilation en cours
GraveurInfoMdia Rcupre les caractristiques du CD prsent dans le graveur en cours
GraveurListe Liste les graveurs installs sur le poste en cours
GraveurMdiaPrsent Permet de savoir si le graveur est plein ou vide.
GraveurNomVolume Permet de connatre ou de modifier le nom du CD graver
GraveurProprit Permet de connatre ou de modifier les proprits du graveur en cours
GraveurSlectionne Permet de slectionner le graveur utilis par dfaut
GraveurTypeMdia Permet de connatre ou de modifier le format du CD graver
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 205 Mardi, 23. avril 2013 1:59 13
206 Partie 4 : Fonctions standard
14. FONCTIONS DACCS AU POCKET PC
Ces fonctions permettent d'accder aux Pockets PC partir d'une application WinDev standard.
ceConnecte Connecte le poste en cours un Pocket PC
ceCopieFichier Copie un fichier prsent sur le poste en cours vers le Pocket PC connect; prsent
sur le Pocket PC connect vers le poste en cours; prsent sur le Pocket PC connect
vers un autre rpertoire dans le Pocket PC
ceCreRaccourci Cre un raccourci sur le Pocket PC connect au poste en cours
ceDateFichier Renvoie ou modifie les diffrentes dates d'un fichier (date de cration, modification
ou accs)
ceDconnecte Ferme la connexion entre le poste en cours et le Pocket PC
ceEtatAlimentation Renvoie des informations sur la batterie (principale ou de secours) du Pocket PC
ceEtatConnexion Permet de connatre l'tat de la connexion entre le poste en cours et un Pocket PC
ceFenEnumre Permet d'numrer les fentres Windows actuellement ouvertes sur le Pocket PC
ceFenTitre Renvoie le titre de la fentre Windows spcifie
ceFichierExiste Teste l'existence d'un fichier
ceHeureFichier Renvoie ou modifie les diffrentes heures d'un fichier (heure de cration, de modifi-
cation ou d'accs)
ceInfoOEM Renvoie les informations OEM du Pocket PC connect au poste en cours
ceLanceAppli Lance l'excution d'un programme (excutable par exemple) depuis l'application en
cours
ceListeFichier Liste les fichiers d'un rpertoire (et de ses sous-rpertoires) et retourne le nombre de
fichiers lists
ceNomMachine Renvoie le nom du Pocket PC connect au poste en cours
cePlateforme Renvoie le nom de la plateforme du Pocket PC connect au poste en cours
ceRegistreClSui-
vante
Identifie la cl suivant la cl spcifie dans la base de registres du Pocket PC
ceRegistreCreCl Cre une cl dans la base de registres du Pocket PC
ceRegistreEcrit crit une valeur dans un registre de la base de registres du Pocket PC
ceRegistreExiste Teste l'existence d'une cl de la base de registres du Pocket PC
ceRegistreListeVa-
leur
Renvoie le nom et ventuellement le type des valeurs d'une cl de la base de regis-
tres du Pocket PC
ceRegistreLit Lit la valeur d'un registre dans la base de registres du Pocket PC
ceRegistrePremire-
SousCl
Identifie la cl suivant la cl spcifie dans la base de registres du Pocket PC
ceRegistreSousCl Identifie le chemin de la Nime sous-cl spcifie dans la base de registres du Poc-
ket PC
ceRegistreSuppri-
meCl
Supprime une sous-cl dans la base de registres du Pocket PC
ceRegistreSuppri-
meValeur
Supprime une valeur dans la base de registres du Pocket PC
ceRep Recherche un fichier ou un rpertoire sur le Pocket PC connect au poste en cours
ceRepCre Cre un rpertoire sur le Pocket PC connect au poste en cours
ceRepSupprime Supprime un rpertoire prsent sur le Pocket PC connect au poste en cours
ceSupprimeFichier Supprime un fichier prsent sur le Pocket PC connect au poste en cours
ceSupprimeRac-
courci
Supprime un raccourci prcdemment cr avec la fonction ceCreRaccourci
WD
WLangage.book Page 206 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 207
ceSysRep Renvoie le chemin d'un rpertoire du systme du Pocket PC connect au poste en
cours
ceTailleFichier Renvoie la taille (en octets) d'un fichier prsent sur le Pocket PC connect au poste
en cours
ceTypeProcesseur Renvoie le type de processeur du Pocket PC connect au poste en cours
ceVersionWindows Renvoie des informations sur la version de Windows utilise sur le Pocket PC con-
nect au poste en cours
ceXRes Renvoie la rsolution horizontale de l'cran du Pocket PC connect au poste en cours
ceYRes Renvoie la rsolution verticale de l'cran du Pocket PC connect au poste en cours
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
WLangage.book Page 207 Mardi, 23. avril 2013 1:59 13
208 Partie 4 : Fonctions standard
15. FONCTIONS SPCIFIQUES WINDEV
MOBILE
15.1 WinDev Mobile et les cartes SIM
15.1.1 Prsentation
WinDev Mobile permet de manipuler les informa-
tions contenues dans la carte SIM d'un tlphone
portable grce aux fonctions WLangage SIM.
La carte SIM (Subscriber Identity Module) dsigne
la puce prsente dans un tlphone portable. Indis-
pensable pour accder au rseau tlphonique,
cette carte puce identifie personnellement le con-
sommateur et enregistre toutes les informations
relatives au rseau (SFR, Orange, ...) et la formule
choisie (numros de tlphone, type de contrat, ...).
La carte SIM contient galement un rpertoire per-
sonnel. Les fonctions SIM du WLangage permet-
tant de grer les informations contenues dans ce
rpertoire.
Remarque : Le rpertoire personnel prsent sur la
carte SIM contient uniquement le nom des person-
nes et leur numro de tlphone. Seules ces infor-
mations peuvent donc tre manipules.
15.1.2 Configuration ncessaire
Pour pouvoir utiliser les fonctions SIM, l'application
doit tre installe :
sur un Pocket PC disposant d'un accs tlphoni-
que (type GSM).
et/ou sur un smartphone.
15.1.3 Fonctionnement diffrent en mode
GO et en utilisation relle
En mode GO (simulation sur le poste de dveloppe-
ment), une erreur WLangage est gnre lors de
l'appel d'une fonction de gestion de la carte SIM.
15.1.4 Fonctions WLangage
Ces fonctions permettent de grer facilement les
informations contenues dans le rpertoire person-
nel prsent sur une carte SIM:
15.2 Clavier du Pocket
15.2.1 Prsentation
Pour permettre aux utilisateurs de vos applications
de saisir des informations, il est ncessaire d'utili-
ser le clavier du Pocket PC (appel galement SIP
pour Software Input Panel).
Ce clavier permet par exemple de :
afficher un clavier miniature sur la partie basse
de l'cran. L'utilisateur n'a plus qu' cliquer sur
ce clavier l'aide du stylet pour saisir des infor-
mations.
Par exemple :
SIMEcrit crit ou modifie une
entre dans le rpertoire
de la carte SIM
SIMLit Lit une entre dans le
rpertoire de la carte
SIM
SIMNbContact Renvoie le nombre
d'entres prsentes dans
le rpertoire de la carte
SIM
SIMSupprime Supprime une entre
dans le rpertoire de la
carte SIM
WLangage.book Page 208 Mardi, 23. avril 2013 1:59 13
Partie 4 : Fonctions standard 209
reconnatre automatiquement les diffrents mots
crits directement sur l'cran l'aide du stylet
(mthode appele "Transcriber").
Par exemple :
reconnatre automatiquement des lettres saisies
avec un certain alphabet (mthode appele
"Reconnaissance des lettres").
Par exemple :
reconnatre automatiquement des blocs de mots
saisis avec un certain alphabet (mthode appe-
le "Reconnaissance des blocs").
Par exemple :
WinDev Mobile permet de grer simplement ce cla-
vier grce aux fonctions WLangage.
Remarque : D'autres types de clavier peuvent ga-
lement tre disponibles.
15.2.2 Fonctions WLangage
Les fonctions permettant de manipuler le clavier
dun Pocket PC sont :
ClavierListe Renvoie la liste des types de cla-
viers disponibles sur le Pocket PC
ClavierMode Permet de connatre et/ou de
changer le clavier en cours d'utili-
sation
ClavierVisible Permet de savoir si le clavier en
cours est activ et de rendre le
clavier actif
WLangage.book Page 209 Mardi, 23. avril 2013 1:59 13
210 Partie 4 : Fonctions standard
WLangage.book Page 210 Mardi, 23. avril 2013 1:59 13
PARTIE 5
Fonctionnalits
spcifiques au Web
WLangage.book Page 211 Mardi, 23. avril 2013 1:59 13
WLangage.book Page 212 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 213
1. UPLOAD DE FICHIERS
1.1 Prsentation
L'upload est l'opration qui consiste sauvegarder
sur le serveur Web un fichier accessible sur le
poste de l'internaute. Le fichier du poste de l'inter-
naute est "upload" vers le serveur : il est charg et
enregistr sur le poste serveur.
L'upload de fichiers est possible pour tous les types
de fichiers.
Quelques exemples d'utilisation de l'upload de
fichiers :
Site de type annuaire : lors de l'ajout d'un nou-
veau contact dans l'annuaire, l'internaute peut
slectionner sur son poste la photo du contact.
Pour tre affiche quel que soit l'internaute,
l'image est "uploade" sur le serveur.
Site de type gestion documentaire : chaque
internaute peut mettre disposition de tous,
divers types de documents : texte, ... Ces docu-
ments sont slectionns sur le poste de l'inter-
naute et "uploads" sur le serveur afin d'tre
consultable par tous les internautes.
1.2 Mettre en place lupload dans un site WebDev
1.2.1 Elments mis disposition
Pour grer l'upload de fichiers, WebDev met votre
disposition :
un champ de saisie de type UPLOAD : Dans le
navigateur, un bouton "PARCOURIR" est automati-
quement ajout droite du champ de saisie de
type Upload. Ce bouton permet l'internaute de
slectionner le fichier "uploader".
Sous l'diteur, un bouton gris apparat. Ce bouton
n'est pas modifiable (style, libell, ...).

Attention : ce champ de saisie est un champ
spcifique : il est dconseill d'utiliser les pro-
prits de type Valeur sur ce champ. Pour obtenir
le nom du fichier upload, il est ncessaire d'utili-
ser la fonction UploadNomFichier.
deux fonctions serveur du WLangage :
un ensemble de fonctions navigateur du WLan-
gage permettant de manipuler le champ Upload :
UploadCopieFi-
chier
Enregistre un fichier "upload"
sur le serveur. Lors de cet enre-
gistrement, il est possible de
renommer le fichier enregistr
sur le serveur.
UploadNomFi-
chier
Renvoie le nom d'un fichier
"upload" (nom d'origine du
fichier, ou nom du fichier enregis-
tr sur le serveur).
UploadCopieFi-
chierEnCours
Indique le nom du fichier en
cours d'envoi par le champ
upload.
UploadLance Lance l'envoi des fichiers slec-
tionns dans un champ upload.
UploadSup-
prime
Supprime un fichier de la liste
des fichiers uploader : le fichier
ne sera pas upload sur le ser-
veur.
UploadSuppri-
meTout
Vide la liste des fichiers
uploader : aucun fichier ne sera
upload sur le serveur.
UploadTailleEn-
voyeFichie-
rEnCours
Renvoie la taille (en octets) dj
envoye du fichier en cours
d'upload via un champ Upload.
UploadTailleEn-
voye
Renvoie la taille totale (en octets)
des fichiers dj envoys par
l'upload en cours via un champ
Upload.
UploadTailleFi-
chierEnCours
Renvoie la taille totale (en octets)
du fichier en cours d'upload via
un champ Upload.
UploadTaille Renvoie la taille totale (en octets)
des fichiers de l'upload en cours
via un champ Upload.
WLangage.book Page 213 Mardi, 23. avril 2013 1:59 13
214 Partie 5 : Fonctionnalits spcifiques au Web
1.2.2 Uploader un fichier dans une page
Pour uploader un fichier dans une page :
1. Crez un champ de saisie de type UPLOAD (le
type du champ est dfini dans l'onglet "Gnral" du
champ).
Grce ce champ, l'internaute pourra slectionner
le fichier "uploader".
2. Ajoutez un bouton ou un lien.
Ce champ permettra de tlcharger le fichier sur le
serveur. Ce bouton ou lien doit tre de type "Sub-
mit". Lors de la validation de la page grce ce
bouton, le fichier est upload dans un rpertoire
temporaire du serveur. Ce fichier n'est donc pas
visible pour les autres internautes
3. Dans le code de clic serveur de ce bouton ou de
ce lien, vous pouvez utiliser :
UploadNomFichier (par exemple UploadNomFi-
chier(<Champ Upload>, Faux)) pour vrifier que le
fichier a t upload et rcuprer son nom. En
effet, lors de l'upload, le fichier est renomm
avec un nom de fichier temporaire.
UploadCopieFichier afin de copier et de renom-
mer le fichier upload sur le serveur. Vous pouvez
par exemple copier ce fichier dans le rpertoire
des ressources (_WEB) ou dans un rpertoire
accessible par un alias.
HAttacheMmo pour charger l'image dans une
rubrique mmo d'un fichier Hyper File.
Attention : L'utilisation directe du nom de fichier
sur le poste navigateur (lecture de la valeur par la
proprit ..Valeur en code serveur ou navigateur)
dans des fonctions de gestion de fichiers est une
GROSSE erreur. En effet, cette manipulation fonc-
tionne en mode dveloppement (car le serveur est
sur le mme poste que le navigateur) mais PAS en
dploiement. Dans ce cas, le serveur et le naviga-
teur sont machines diffrentes. Le serveur ne voit
pas les fichiers du navigateur. Pour obtenir les
noms de fichiers manipuler, utilisez UploadNom-
Fichier.
1.2.3 Afficher limage uploader
Pour afficher l'image slectionne dans un champ
upload (SAI_ChampUpLoad) dans un champ image
(IMG_ChampImage) :
1. Dans la fentre de description du champ image
"ChampImage" (onglet "Gnral"), dcochez loption
"Localiser limage dans le rpertoire _WEB en code
navigateur".
2. Dans le code de la page, ajoutez le code naviga-
teur optionnel "souris dplace" (OnMouseMove)".
3. Saisissez le code suivant dans ce code :
Note : Cette manipulation peut ne pas fonctionner
selon le navigateur utilis et le niveau de scurit
dfini.
Remarque : Taille maximale des fichiers
uploader :
Par dfaut, la taille des fichiers uploader est illi-
mite dans le moteur WebDev.
Cette taille peut tre limite :
par le serveur Web utilis. Pour plus de dtails,
consultez la documentation du serveur Web uti-
lis.
par le serveur d'application WebDev.
Si le fichier uploader dpasse la taille limite, le
fichier n'est pas upload.
Pour modifier la taille maximale des fichiers
uploader dans le serveur d'application WebDev, il
est ncessaire de modifier la base de registres sur
le serveur :
1. Pour modifier la taille des fichiers uploads pour
toutes les applications WebDev 18, slectionnez la
cl : HKEY_LOCAL_MACHINE\SOFTWARE\PC
SOFT\WEBDEV\18.0
2. Ajoutez la chane MAX_UPLOAD. Cette chane
aura pour valeur la taille maximale des fichiers
uploader (en Ko).
Dans le cas d'un transfert important (plusieurs cen-
taines de Mo), il est conseill d'utiliser le protocole
FTP et non pas l'upload. Il est possible d'effectuer
un transfert FTP depuis une page WEBDEV, grce
une applet Java cre avec WINDEV.
Limites en PHP :
La taille des fichiers uploads est limite par la
directive "upload_max_filesize" dans le fichier de
configuration de PHP (fichier php.ini).
L'upload de fichiers doit tre autoris par le serveur
PHP. Pour cela, la directive "file_uploads" doit tre
"on" dans le fichier de configuration de PHP (fichier
php.ini).
SI SAI_ChampUpLoad <> "" ALORS
SI IMG_ChampImage<>
SAI_ChampUpLoad ALORS
IMG_ChampImage =
SAI_ChampUpLoad
FIN
FIN
WLangage.book Page 214 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 215
2. DOWNLOAD DE FICHIERS
2.1 Prsentation
Le download (ou tlchargement) est l'opration
qui consiste enregistrer sur le poste de l'inter-
naute un fichier stock sur le serveur. Le fichier est
"download" ou "tlcharg" sur le poste de l'inter-
naute.
Quelques exemples :
Proposer le chargement de la bande-annonce
d'un film sur un site de location de DVD.
Tlcharger des documents dans une application
de gestion documentaire.
2.2 Mettre en place le tlchargement dun fichier dans un site WebDev
WebDev propose plusieurs mthodes pour effec-
tuer un tlchargement de fichier dans un site :
fentre de description du bouton ou lien permet-
tant d'effectuer le tlchargement.
programmation en WLangage.
2.2.1 Utilisation de la fentre de description
des champs (bouton, lien, ...)
Pour proposer un tlchargement :
1. Crez un champ de type "Lien", "Bouton", ...
2. Affichez la fentre de description de ce champ.
3. Cliquez sur le bouton "Autres actions".
4. Dans la fentre qui s'affiche, slectionnez
l'option "Autres actions : saisissez un lien".
5. Indiquez le chemin complet du fichier (rpertoire
+ Nom) prsent sur le serveur. Le fichier doit tre
prsent dans le rpertoire "_WEB" du site.
En excution, lors du clic sur ce champ :
si le type du fichier est connu, le fichier sera
directement ouvert dans le navigateur.
si le type du fichier est inconnu ou correspond
un excutable, une bote de dialogue permettra
de tlcharger ce fichier et/ou de l'excuter direc-
tement.
2.2.2 Programmation
Pour proposer le tlchargement d'un fichier par
programmation, il suffit d'utiliser la fonction Fichie-
rAffiche dans le code de clic serveur du bouton ou
du lien permettant de tlcharger le fichier.
Exemple :
En excution, lors du clic sur ce champ :
si le type du fichier est connu, le fichier sera
directement ouvert dans le navigateur.
si le type du fichier est inconnu ou correspond
un excutable, une bote de dialogue permettra
de tlcharger ce fichier et/ou de l'excuter direc-
tement.
2.2.3 Forcer le tlchargement du fichier
Pour ouvrir cette bote de dialogue quel que soit le
type du fichier tlcharger, saisissez la ligne de
code suivante :
Cependant, le nom du fichier propos en tlchar-
gement ne correspond pas un nom valide. Pour
proposer immdiatement le nom du fichier tl-
charger, il suffit de rajouter ce nom la suite des
paramtres de la fonction FichierAffiche :
// Affiche dans le navigateur
FichierAffiche(ComplteRep(...
fRepWeb()) + "NOTES.TXT", ..
"text/plain")
FichierAffiche(ComplteRep(...
fRepWeb()) + "NOTES.TXT", ...
"application/unknown")
FichierAffiche(Complte-
Rep(fRepWeb()) + "NOTES.TXT",...
"application/unknown", "Notes.TXT")
WLangage.book Page 215 Mardi, 23. avril 2013 1:59 13
216 Partie 5 : Fonctionnalits spcifiques au Web
3. COOKIES
3.1 Prsentation
Un cookie est un moyen simple de stocker tempo-
rairement une information chez un internaute.
Cette information pourra tre rcupre ultrieure-
ment.
Lorsque linternaute retourne sur un site quil a
dj consult, le site "reconnat" linternaute grce
aux cookies. Il est ainsi possible dviter de deman-
der des renseignements dj fournis lors dune pr-
cdente connexion, et de proposer des pages
personnalises.
Remarque : Un cookie possde une date dexpira-
tion (par dfaut 30 jours aprs la cration du coo-
kie). Il est automatiquement dtruit par le
navigateur de linternaute si sa dure de vie est
dpasse.
Exemple dutilisation des cookies
Un cookie permet par exemple de conserver sur le
poste de linternaute des informations telles que le
nom de linternaute, les pages consultes par
linternaute, la date de sa dernire connexion, la
sauvegarde de ses options, ...
Ces informations, enregistres sous forme de coo-
kies, pourront tre lues par le site lors de la pro-
chaine connexion de linternaute. Le site pourra
ainsi proposer des informations personnalises
linternaute :
bandeau de publicit correspondant aux sujets
consults lors de la dernire connexion,
personnalisation de la page daccueil avec le
nom de linternaute et la date de dernire con-
nexion,
affichage de promotions correspondant aux
recherches effectues lors de la dernire visite,
...
3.2 Que contient un cookie ?
Un cookie est un fichier texte conserv sur le poste
de linternaute (gnralement dans le "cache" Inter-
net du navigateur) pendant une dure spcifie. Le
cookie est cr par le navigateur ou par le serveur.
Chaque cookie contient les informations
suivantes :
Nom du cookie : permet au site d'identifier le
cookie.
Texte du cookie : renseignements inscrits par le
site (pages consultes, renseignements fournis
par l'internaute, ...).
Date d'expiration, au-del de laquelle le cookie
n'est plus valable.
Nom du domaine Internet qui a cr le cookie.
Rappel : Le domaine Internet est une partie sp-
cifique de l'adresse Internet : http://
machine.domaine.com/MesPages/Index.html.
3.3 WebDev et la gestion des cookies
3.3.1 Elments mis disposition
WebDev met votre disposition deux fonctions du
WLangage permettant de grer les cookies dans
vos sites :
CookieEcrit
Envoie un cookie au client lors de l'affichage de
la page HTML sous le navigateur de l'internaute.
CookieLit
Rcupre la valeur d'un cookie enregistr sur le
poste de l'internaute.
Ces fonctions peuvent tre aussi bien utilises
dans un code serveur que dans un code navigateur
du site WebDev.
WLangage.book Page 216 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 217
3.3.2 Ecrire un cookie sur le poste de linter-
naute
Pour crire un cookie sur le poste de l'internaute :
En code serveur :
Utilisez la fonction CookieEcrit, en prcisant le
nom du cookie, son contenu et la dure de vali-
dit.
Le cookie sera cr sur le poste de l'internaute
lors de l'affichage de la prochaine page.
Remarque : un cookie cr en code serveur
pourra tre relu par la fonction CookieLit :
immdiatement, si la fonction CookieLit est uti-
lise dans un code navigateur.
lors de la prochaine reconnexion de l'utilisateur,
si la fonction CookieLit est utilise dans un
code serveur.
En code navigateur :
Utilisez la fonction CookieEcrit, en prcisant le
nom du cookie, son contenu et la dure de vali-
dit.
Le cookie est immdiatement cr.
3.3.3 Lire un cookie sur le poste de linter-
naute (code serveur et code navigateur)
Pour lire un cookie sur le poste de l'internaute, utili-
sez la fonction CookieLit, en prcisant le nom du
cookie.
Remarques : Lors de la connexion au site Web, le
serveur lit automatiquement tous les cookies asso-
cis au domaine en cours. La fonction CookieLit
utilise :
en code serveur, permet de lire en mmoire et de
rcuprer le contenu du cookie spcifi.
en code navigateur, permet de lire directement le
contenu du cookie sur le poste de l'internaute.
3.4 Tester la gestion des cookies dans un site WebDev
La gestion des cookies dans votre site (sur le poste
de dveloppement) peut tre teste :
directement depuis la page de test de l'adminis-
trateur WebDev.
avec un simple test par un "GO" du projet depuis
l'diteur de pages de WebDev.
WLangage.book Page 217 Mardi, 23. avril 2013 1:59 13
218 Partie 5 : Fonctionnalits spcifiques au Web
4. VALIDIT DES PAGES DUN SITE
4.1 Prsentation
Lors de la cration d'une page, il est possible d'indi-
quer une date limite de validit pour cette page.
Par exemple, si une page concerne un vnement
particulier (un salon professionnel, une promotion),
il est ncessaire d'enlever cette page du site par-
tir d'une date donne.
Pour ne pas oublier de le faire :
WebDev prviendra le dveloppeur lors de
l'ouverture du projet avec une frquence param-
trable. Une erreur d'IHM sera automatiquement
affiche.
Le serveur d'application enverra un email une
adresse donne avec un message spcifique.
Les risques d'oublis sont limits.
4.2 Comment le faire ?
4.2.1 Dfinir la date limite de validit des
pages
Pour dfinir la date limite de validit d'une page :
1. Affichez la description de la page.
2. Dans l'onglet "Dtail" :
Indiquez la date limite de validit de la page.
Cliquez sur le bouton "Paramtrer les rappels".
Dans la fentre qui s'ouvre, indiquez :
l'adresse email du destinataire du rappel. Si le
serveur d'application WebDev est configur
pour chercher les pages primes, un message
de rappel sera automatiquement envoy
cette adresse.
le texte ajout au message de rappel.
la date d'envoi du rappel (par dfaut une
semaine et un jour avant). Cette date sera ga-
lement utilise pour afficher une erreur de com-
pilation d'IHM. Cette erreur de compilation
indiquera si la date limite de validit de la page
a t atteinte.
3. Validez
4.2.2 Supprimer la date limite de validit
Pour supprimer la date limite de validit d'une
page :
1. Affichez la description de la page.
2. Dans l'onglet "Dtail", supprimez la date limite
de validit de la page.
3. Validez
4.2.3 Configurer le serveur d'application
Windows pour grer la date limite de validit
Pour que le serveur d'application WebDev vrifie la
date limite de validit des pages (version 140025
minimale) :
1. Lancez si ncessaire l'administrateur WebDev.
2. Dans l'onglet "Avanc", cochez la case "Autoriser
la recherche des pages primes".
3. La fentre de paramtrage s'affiche automati-
quement.
4. Indiquez :
lheure de lancement de la recherche des pages
primes. A l'heure indique, le serveur d'appli-
cation effectuera une recherche des pages pri-
mes sur tous les sites WebDev dynamiques
grs par le serveur.
l'adresse email de l'expditeur de l'email d'alerte.
Les paramtres du destinataire de cet email ont
t dfinis dans la description de la page, sous
l'diteur.
l'adresse et le port du serveur SMTP utilis pour
l'envoi des emails. Il est galement possible
d'indiquer si le spooler de mails doit tre utilis.
les login et mot de passe de l'utilisateur du ser-
veur SMTP (pour les serveurs avec authentifica-
tion).
5. Validez.
WLangage.book Page 218 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 219
4.2.4 Configurer le serveur d'application
Linux pour grer la date limite de validit
Pour que le serveur d'application WebDev vrifie la
date limite de validit des pages (version 140025
minimale) :
1. Lancez si ncessaire l'administrateur WebDev
distant.
2. Dans les options de paramtrage, affichez les
"Paramtres avancs" et cliquez sur l'onglet "Pages
primes".
3. Cochez la case "Autoriser la recherche des
pages primes".
4. Indiquez :
l'heure de lancement de la recherche des pages
primes. A l'heure indique, le serveur d'appli-
cation effectuera une recherche des pages pri-
mes sur tous les sites WebDev dynamiques
grs par le serveur.
l'adresse email de l'expditeur de l'email d'alerte.
Les paramtres du destinataire de cet email ont
t dfinis dans la description de la page, sous
l'diteur.
l'adresse et le port du serveur SMTP utilis pour
l'envoi des emails. Il est galement possible
d'indiquer si le spooler de mails doit tre utilis.
les login et mot de passe de l'utilisateur du ser-
veur SMTP (pour les serveurs avec authentifica-
tion).
5. Validez grce au bouton "Appliquer".
WLangage.book Page 219 Mardi, 23. avril 2013 1:59 13
220 Partie 5 : Fonctionnalits spcifiques au Web
5. INCLURE DES FICHIERS JAVASCRIPT OU UNE
RESSOURCE WEB
5.1 Prsentation
WebDev offre la possibilit d'inclure des fichiers
Javascript ou des ressources externes dans un pro-
jet WebDev. Ces fichiers peuvent :
tre inclus au niveau du projet ou au niveau de la
page.
tre prsents dans le rpertoire _WEB du site ou
tre un fichier externe au site
tre dans un format spcifique (ISO, UTF8, ...).
5.2 Comment le faire ?
5.2.1 Intgration de fichiers Javascript (.js)
Il est possible d'inclure dans un site ou dans une
page un ou plusieurs fichiers Javascript (*.js). Ces
fichiers seront utiliss par la ou les pages HTML
gnres. Ces fichiers doivent tre prsents dans
le rpertoire "<NomProjet>_WEB" du site.
Pour inclure un fichier Javascript dans une page :
1. Affichez la description de la page. Pour cela,
sous le volet "Page", cliquez sur le bouton du
groupe "Edition".
2. Slectionnez l'onglet "Avanc".
3. Slectionnez l'onglet "Javascript".
4. Cliquez sur le bouton "Ajouter" et slectionnez le
chemin du fichier Javascript.
5. Si ncessaire slectionnez l'encodage voulu. Si
l'encodage correspond "<Non dfini>", la dtec-
tion de l'encodage est automatique.
6. Validez.
Pour inclure un fichier Javascript dans le projet :
1. Affichez la description du projet (sous le volet
"Projet", dans le groupe "Projet", slectionnez
loption "Description").
2. Slectionnez l'onglet "Avanc".
3. Cliquez sur le bouton "Fichiers Javascript (.js)
supplmentaires".
4. Cliquez sur le bouton "Ajouter" et slectionnez le
chemin du fichier Javascript.
5. Si ncessaire slectionnez l'encodage voulu. Si
l'encodage correspond "<Non dfini>", la dtec-
tion de l'encodage est automatique.
6. Validez.
5.2.2 Intgration de ressources externes au
site
L'intgration de ressources externes au site permet
d'intgrer les fichiers d'interface (interface de pro-
grammation) proposs par des services externes
(API Web) sur le WEB. Il est alors possible de s'inter-
facer avec ces services externes en code naviga-
teur.
Pour inclure une ressource externe dans une
page :
1. Affichez la description de la page. Pour cela,
sous le volet "Page", cliquez sur le bouton du
groupe "Edition".
2. Slectionnez l'onglet "Avanc".
3. Slectionnez l'onglet "Javascript".
4. Cliquez sur le bouton "Ajouter une ressource
Web" et indiquez l'adresse de la ressource Web
voulue.
5. Si ncessaire slectionnez l'encodage voulu. Si
l'encodage correspond "<Non dfini>", la dtec-
tion de l'encodage est automatique.
6. Validez.
Pour inclure une ressource externe dans le projet :
1. Affichez la description du projet (sous le volet
"Projet", dans le groupe "Projet", slectionnez
loption "Description").
2. Slectionnez l'onglet "Avanc".
3. Cliquez sur le bouton "Fichiers Javascript (.js)
supplmentaires".
4. Cliquez sur le bouton "Ajouter une ressource
Web" et indiquez l'adresse de la ressource Web
voulue.
WLangage.book Page 220 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 221
5. Si ncessaire slectionnez l'encodage voulu. Si
l'encodage correspond "<Non dfini>", la dtec-
tion de l'encodage est automatique.
6. Validez
5.2.3 Dtection automatique de l'encodage
Si l'encodage est <Non dfini>, une dtection auto-
matique de l'encodage est effectue :
cas d'une rfrence Web : le serveur est inter-
rog. L'encodage est fourni par le serveur.
cas d'une rfrence fichier : si le fichier est en
UTF8, l'encodage est automatiquement pass en
UTF8.
5.3 Manipulation d'objets Javascript externes depuis le WLangage
Le WLangage en mode "Navigateur" permet l'inter-
face avec les API Web telles que celles proposes
par Google ou Yahoo. L'interaction avec les compo-
sants externes proposs par ces sites est simpli-
fie.
Il est possible d'allouer des objets Javascript exter-
nes en code Navigateur crit en WLangage.
L'utilisation d'objets Javascript externes ne nces-
site plus obligatoirement l'usage du langage
Javascript : la programmation peut s'effectuer en
WLangage.
Exemple : pour rcuprer une liste de tches dans
un agenda Google :
1. Intgrez dans la page l'interface de programma-
tion de l'agenda Google.
Affichez l'onglet "Avanc" de la description de la
page.
Dans l'onglet "HTML", ajoutez la ligne de code sui-
vante dans le code HTML de l'en-tte de page :
<script type="text/javascript">goo-
gle.load("gdata", "1");</script>.
Ce code est fourni dans la documentation Goo-
gle.
Dans l'onglet "Javascript", cliquez sur le bouton
"Ajouter une ressource Web". Saisissez l'adresse
permettant d'inclure le service d'agenda : http://
www.google.com/
jsapi?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxx (le code de la cl correspond votre
code personnel).
2. Saisissez le code navigateur permettant de rcu-
prer la liste des tches.
MonServiceAgenda est ...
un objet dynamique
MonServiceAgenda = ...
allouer un objet ...
"google.gdata.calendar.CalendarSer-
vice"
MesTches est un tableau dynamique
MesTches = ...
MonServiceAgenda:feed:entry
// Parcours du tableau pour
// remplir la liste
POUR i = 1 A Dimension(MesTches)
ListeAjoute(LISTE_Choix_Tche,...
MesTches[i]:getTitle():getText())
FIN
WLangage.book Page 221 Mardi, 23. avril 2013 1:59 13
222 Partie 5 : Fonctionnalits spcifiques au Web
6. AJAX
6.1 Prsentation
La technologie AJAX est disponible nativement
dans WebDev, et dans les sites PHP dvelopps
avec WebDev.
Que signifie AJAX et quel est son intrt ?
AJAX (pour Asynchronous Javascript and XML) per-
met de rafrachir uniquement les donnes modi-
fies dans une page HTML sans rafficher la
totalit de la page. Par exemple, si certains l-
ments prsents dans une page affiche (le contenu
du panier, les caractristiques d'un produit, une
liste de villes, une carte gographique, ) doivent
tre modifis, seuls ces lments seront rafrachis.
Le serveur n'aura pas envoyer la page entire sur
le poste de l'internaute.
Cette technologie a de multiples avantages :
le serveur est moins sollicit. Il peut alors suppor-
ter un plus grand nombre de connexions simulta-
nes.
les informations qui circulent sont de taille
rduite.
la dure de transmission est plus courte.
l'affichage pour l'internaute est immdiat et sans
effet visuel.
AJAX peut tre utilis deux niveaux diffrents
dans un site WebDev :
AJAX automatique et immdiat : un simple clic
suffit pour accder aux avantages AJAX. Le code
reste le mme.
AJAX programm : utilisation des fonctions de
gestion AJAX pour les traitements complexes.
Remarque : Seuls les navigateurs rcents suppor-
tent la technologie AJAX (Internet Explorer 5.5 et
suprieur, FireFox 1.0 et suprieur, Netscape 7 et
suprieur, Opera 8 et suprieur, Safari 1.2 et sup-
rieur, ). La fonction AJAXDisponible permet de
savoir si le navigateur en cours supporte la techno-
logie AJAX. Si un traitement utilisant la technologie
AJAX est excut sur un navigateur ne supportant
pas cette technologie, le traitement s'excute
"comme si" il n'utilisait pas la technologie AJAX
(rafrachissement de la page entire par exemple).
6.2 AJAX automatique et immdiat
6.2.1 Prsentation
Le schma suivant prsente l'utilisation automati-
que et immdiate de AJAX dans un site WebDev :
Par exemple, une page d'un site permet de conna-
tre diffrentes caractristiques d'un pays (capitale,
devise, drapeau, situation, ). En fonction du pays
slectionn par l'internaute, les informations cor-
respondantes sont affiches.
Action de l'internaute. Dans notre exemple,
slection du pays dans la combo "Slection-
ner le pays souhait".
Envoi de la requte au serveur.
Excution de la requte : recherche des
caractristiques du pays slectionn.
Envoi du rsultat de la requte :
sans AJAX : toute la page est envoye.
avec AJAX : seules les caractristiques du
pays sont envoyes.
Affichage des caractristiques du pays :
sans AJAX : toute la page est raffiche.
avec AJAX : seuls les champs contenant
les caractristiques du pays sont rafra-
chis.
WLangage.book Page 222 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 223
Pour utiliser AJAX dans ce site, le traitement ser-
veur "A chaque modification" du champ "Slection-
ner le pays souhait" est pass en mode AJAX. Un
simple clic ! Le code reste le mme.
6.2.2 Traitements permettant dutiliser auto-
matiquement AJAX
Les traitements suivants peuvent passer en mode
AJAX automatique :
traitement serveur "Clic" d'un champ bouton,
d'un champ lien, d'un champ image clicable ou
d'un champ rglette.
traitement serveur "A chaque modification" d'un
champ liste, d'un champ combo, d'un champ
interrupteur ou d'un champ slecteur.
Pour passer un traitement en mode AJAX automati-
que, cliquez simplement sur le terme "AJAX" pr-
sent dans le bandeau du traitement :
Traitement n'utilisant pas la technologie AJAX
Traitement utilisant la technologie AJAX
Remarque : Si un traitement utilisant la technolo-
gie AJAX est excut sur un navigateur ne suppor-
tant pas cette technologie, le traitement s'excute
"comme si" il n'utilisait pas la technologie AJAX
(rafrachissement de la page entire par exemple).
6.2.3 lments et caractristiques pouvant tre manipuls automatiquement par AJAX
Grce AJAX et sans aucune programmation spci-
fique, il est possible de modifier les caractristi-
ques des lments suivants :
Valeur Couleur de la police Couleur de fond Visibilit
Champ de saisie X
(Texte saisi)
X
(Couleur du texte
saisi)
X
(Couleur de fond du
texte saisi)
X
Champ d'affichage
format
X
(Texte affich)
X
(Couleur du texte affi-
ch)
X
(Couleur de fond du
texte affich)
X
Table X
(Contenu des lignes)
X
(Couleur du contenu
des lignes)
X
(Couleur de fond des
lignes paires et impai-
res)
X
Zone rpte X
(Contenu des
champs)
X
(Couleur du contenu
des champs)
X
(Couleur de fond des
champs)
X
Liste X
(lments lists et
lments slection-
ns)
X
(Couleur des l-
ments lists)
X X
Combo X
(lments lists et
lments slection-
ns)
X
(Couleur des l-
ments lists)
X X
WLangage.book Page 223 Mardi, 23. avril 2013 1:59 13
224 Partie 5 : Fonctionnalits spcifiques au Web
Remarques :
Le nombre de caractristiques gres automati-
quement sera amen crotre rgulirement au
fil des versions.
Les lments non-prsents dans cette liste ne
peuvent pas tre manipuls automatiquement
par AJAX.
Pour modifier d'autres caractristiques, il est
ncessaire d'utiliser AJAX programm.
* L'utilisation du champ Rglette en mode AJAX est
spcifique. Pour plus de dtails, consultez le para-
graphe "Spcificit".
Jauge automatique AJAX
Une jauge d'attente automatique peut tre affiche
dans une page pendant qu'un traitement AJAX
s'effectue.
En effet, les traitements AJAX n'affichent pas la
jauge habituelle de chargement de page du
navigateur : il n'y a plus de chargement de page en
AJAX
Pour afficher une jauge automatique AJAX :
1. Ajoutez un champ cellule, image, libell ou
libell HTML la page.
2. Personnalisez ce champ. Ce champ peut conte-
nir du texte ("Chargement en cours..." par exemple)
et/ou une image anime.
3. Affichez l'onglet "Dtail" de la description de la
page (option "Description" du menu contextuel de
la page).
4. Dans la zone "Jauge automatique AJAX", slec-
tionnez le champ que vous avez ajout et dfinis-
sez sa position.
6.2.4 Spcificits
Spcificits du champ Rglette
Lorsqu'une table ou une zone rpte est mise
jour automatiquement en mode AJAX (lors du clic
d'un bouton excutant du code AJAX par exemple),
le contenu de la rglette associe cette table ou
cette zone rpte est galement mise jour auto-
matiquement.
Interrupteur X
(Options slection-
nes)
X
(Couleur des options)
X X
Slecteur X
(Option slectionne)
X
(Couleur des options)
X X
Image X
(Image)
X
Image clicable X
(Image)
X
Vignette X
(Image)
X
Graphe X
(Graphe)
X
Libell X X X X
Libell HTML X X X X
Bouton X
(Libell)
X
(Couleur du libell)
X X
Lien X
(Libell)
X
(Couleur du libell)
X X
Rglette * X
(Contenu)
Champ cellule X X
Page X
Arbre X X X X
WLangage.book Page 224 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 225
Remarque : Pour que les clics sur la rglette soient
galement en mode AJAX, il suffit :
soit de cocher l'option "Mode AJAX" dans la fen-
tre de description du champ rglette, onglet
"Gnral".
soit de passer le traitement de clic du champ
rglette en mode AJAX automatique (clic sur le
terme "AJAX" prsent dans le bandeau du traite-
ment).
Table / zone rpte et mode AJAX
Lorsqu'une table ou une zone rpte est en mode
AJAX (mode AJAX spcifi dans la description du
champ), la visualisation des lignes de la table et
des rptitions de la zone rpte ne se fait plus
l'aide d'une rglette mais l'aide de l'ascenseur
vertical.
Pour plus de dtails sur les tables AJAX, consultez
Les tables AJAX.
Remarque : Sous Mozilla Firefox version 1.7.8, les
ascenseurs ne sont pas disponibles
Caractres spciaux
Certains caractres spciaux sont automatique-
ment remplacs par une chane vide ("") en mode
AJAX. Ces caractres sont les caractres dont le
code ASCII est strictement infrieur 32, l'exclu-
sion des caractres 9, 10 et 13 (respectivement
TAB et RC).
Ces caractres spciaux sont gnralement inutili-
ss dans les chanes.
6.3 AJAX Programm
6.3.1 Prsentation
Le schma suivant prsente l'utilisation de "AJAX
programm" dans un site WebDev :
6.3.2 Fonctions de gestion AJAX
Pour grer les traitements plus complexes, WebDev
propose plusieurs fonctions AJAX (classes ici par
ordre d'intrt) :
Excution d'un traitement navigateur (fonc-
tion AJAXExcute ou AJAXExcuteAsyn-
chrone).
Demande d'excution d'une procdure ser-
veur.
Excution de la procdure serveur.
Gnration du rsultat. Le rsultat de la pro-
cdure sera exprim sous forme d'une
chane de caractres ou d'un document
XML.
Envoi du rsultat de la procdure (Mot-cl
RENVOYER).
Analyse du rsultat de la procdure.
Affichage des informations modifies. Seuls
les champs ncessaires sont rafrachis.
AJAXDisponi-
ble
Permet de savoir si la technologie
AJAX est utilisable dans le naviga-
teur en cours.
AJAXExcute Excute une procdure serveur
sans rafrachir la page. Cette
fonction est bloquante. Tant que
le rsultat de la procdure excu-
te n'est pas rcupr, aucun
autre traitement n'est excut.
AJAXExcuteA-
synchrone
Excute une procdure serveur
sans rafrachir la page. Cette
fonction n'est pas bloquante. Les
autres traitements continuent de
s'excuter normalement (que le
rsultat de la procdure excute
soit rcupr ou non).
AJAXAppelA-
synchroneEn-
Cours
Permet de savoir si une proc-
dure serveur appele par la fonc-
tion AJAXExcuteAsynchrone est
en cours d'excution
AJAXAnnuleAp-
pelAsynchrone
Annule l'excution automatique
de la procdure navigateur appe-
le par la fonction AJAXExcuteA-
synchrone.
WLangage.book Page 225 Mardi, 23. avril 2013 1:59 13
226 Partie 5 : Fonctionnalits spcifiques au Web
Grce ces fonctions, il est possible d'excuter une
procdure serveur partir d'un traitement naviga-
teur.
Attention : Il est ncessaire d'assurer la cohsion
des informations stockes sur le serveur et celles
affiches sur le poste des internautes. Par exem-
ple, si des donnes sont modifies, il est nces-
saire de modifier ces donnes la fois sur le
serveur et la fois sur la page affiche dans le
navigateur.
6.3.3 Procdures pouvant tre appeles par
AJAX
Par dfaut, pour scuriser les sites WebDev, les
procdures serveurs sont protges de tout appel
illgal (tentative de dtournement de session par
exemple). Pour excuter une procdure serveur
partir d'un traitement navigateur (fonction
AJAXExcute ou AJAXExcuteAsynchrone), il est
donc ncessaire d'autoriser l'appel de cette proc-
dure par AJAX.
Pour permettre l'appel d'une procdure serveur par
AJAX, cliquez simplement sur le terme "AJAX" pr-
sent dans le bandeau de la procdure :
Procdure ne pouvant pas tre appele par AJAX
Procdure pouvant tre appele par AJAX
6.3.4 Fonctions WLangage non utiles en
AJAX
Toutes les fonctions disponibles en WebDev ser-
veur sont utilisables en AJAX. Cependant, les fonc-
tions suivantes n'ont aucun intrt en AJAX. Ces
fonctions ne sont donc pas disponibles en AJAX.
Cette liste peut voluer. Il est conseill de consulter
la documentation de chaque fonction. Le sigle
"AJAX" indique si la fonction est disponible en AJAX
ou non.
ChaneAffiche Affiche une chane de carac-
tres (ou un buffer) dans le
navigateur
ContexteFerme Ferme un contexte de page
ContexteOuvre Ouvre un nouveau contexte
de page sans renvoyer les
informations vers le naviga-
teur
FichierAffiche Affiche un fichier sur le navi-
gateur de l'internaute
FramesetActualise Actualise un frameset affi-
ch dans le navigateur de
l'internaute partir du con-
texte prsent sur le serveur
FramesetAffiche Affiche un frameset WebDev
dans le navigateur de l'inter-
naute
FramesetUtilise Affiche un frameset WebDev
dans le navigateur de l'inter-
naute et ferme tous les con-
textes de pages et de
frameset en cours
InitFentre Remet zro (ou non) les
champs de la page en cours
et lance les traitements d'ini-
tialisation des champs
PageInitialisation Remet zro (ou non) les
champs de la page en cours
et lance les traitements d'ini-
tialisation des champs
PageUtilise Affiche une page WebDev
dans le navigateur de l'inter-
naute et ferme tous les con-
textes de pages en cours
ScriptAffiche Appelle un script externe
(par exemple .php, .asp,
.mhtml ou .mht) et renvoie la
page rsultat dans la fentre
en cours du navigateur
UploadCopieFichier Enregistre sur le serveur un
fichier "upload" par l'inter-
naute
UploadNomFichier Connatre le nom d'un fichier
"upload" par l'internaute
Utilise Affiche une page dans le
navigateur de l'internaute
WLangage.book Page 226 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 227
7. GADGETS VISTA
7.1 Prsentation
Windows Vista permet l'installation de "Gadgets"
sur le bureau. Ces gadgets sont en fait des pages
HTML, facilement crables avec WebDev.
WebDev permet de crer des gadgets Vista partir
de sites statiques ou de sites AWP.
Un gadget Vista peut tre constitu de trois types
de pages. Ces trois types de pages doivent respec-
ter des dimensions spcifiques :
Page principale : C'est la page qui apparat dans
le volet des gadgets.
Cette page doit avoir une largeur comprise entre
25 et 130 pixels, et une hauteur au minimum de
60 pixels.
Page de configuration : Cette page est option-
nelle. Cette page permet de configurer le gadget
et s'ouvre l'aide d'une icne spciale.
Cette page contient automatiquement 2 boutons
"OK" et "Annuler".
Cette page doit avoir une largeur de 278 pixels.
Page Flyout : Pages libres pouvant tre ouvertes
depuis la page principale ( l'aide d'un bouton,
d'un lien, ?).
La taille maximale pour ce type de page est de
400 pixels en hauteur et en largeur.
WebDev permet de crer ces trois types de pages,
et de gnrer le fichier ".gadget". Ce fichier pourra
tre fourni aux utilisateurs du gadget pour l'installer
sur leur poste (par exemple, gadgets disponibles en
tlchargement sur un site).
Remarque : Les caractristiques des trois types de
pages sont dtailles dans Programmation des
Gadgets Vista on page 228.
7.2 Cration du Gadget
7.2.1 Les tapes
Pour crer un gadget Vista :
1. Ouvrez ou crez un projet WebDev.
2. Crez une configuration spcifique pour le dve-
loppement de votre Gadget Vista. Pour cela, sous le
volet "Projet", dans le groupe "Configuration de pro-
jet", droulez "Nouvelle configuration" et slection-
nez loption "Gadget Vista".
3. Crez les pages de votre gadget Vista. Ces pages
peuvent tre des pages statiques ou des pages
dynamiques AWP.
4. Dans la description des pages du gadget (onglet
"Gnral"), indiquez le type de la page dans le
gadget : Page principale, page configuration ou
page Flyout.
5. Programmez le fonctionnement de vos pages.
Les pages de type "Gadget Vista" proposent des
traitements spcifiques.
6. Gnrez le gadget Vista. Il suffit de cliquer sur
"Gnrer" dans le volet "Accueil".
Gadget Vista en mode AWP :
Pour que les Gadgets Vista en mode AWP fonc-
tionnent, il est ncessaire d'utiliser un serveur
d'application WebDev version 120048 minimum.
Les codes serveur seront excuts en mode Ajax
automatique (si le code existe en mode Ajax).
Il est ncessaire de dployer le site AWP corres-
pondant au gadget sur un serveur d'application
WebDev.
Limitations
Les champs suivants ne peuvent pas tre utiliss
dans un gadget Vista : champ TreeView, champ
Java, champ Plan de site, champ Chemin de Navi-
gation.
Le champ image dans une zone rpte en mode
gnr ou en mode base de donnes (mmo) n'affi-
che pas d'image.
WLangage.book Page 227 Mardi, 23. avril 2013 1:59 13
228 Partie 5 : Fonctionnalits spcifiques au Web
7.2.2 Gnration du gadget
Pour gnrer un gadget Vista :
1. Affichez si ncessaire la configuration corres-
pondant au Gadget Vista (double-cliquez sur le nom
de la configuration dans lexplorateur de projet).
2. Dans le volet "Accueil", cliquez sur "Gnrer".
L'assistant se lance.
3. Indiquez les options de description du gadget :
Nom du gadget
Version du gadget (de la forme
wwww.xxxx.yyyy.zzzz)
Nom de l'auteur ou de la socit
URL et texte du lien
Logo de la socit
Copyright
Image du gadget. L'image de survol est affiche
lorsque le gadget est dplac.
Description du gadget.
4. Slectionnez les pages inclure dans le gadget.
La page principale est automatiquement slection-
ne.
5. Slectionnez les langues du gadget.
6. Si le gadget Vista utilise des pages AWP, indi-
quez les caractristiques du serveur (nom du ser-
veur, rpertoire virtuel, ...).
7. Validez. Le gadget est cr dans le sous-rper-
toire "EXE" du projet (dans le rpertoire correspon-
dant la configuration de projet). Le gadget est un
fichier d'extension ".gadget". Si le poste de dvelop-
pement est un poste sous Windows Vista, vous
avez la possibilit d'installer directement le gadget
pour le tester.
7.3 Programmation des Gadgets Vista
7.3.1 Prsentation
WebDev permet de crer simplement des gadgets
pour Windows Vista. Un gadget est un "mini site"
contenant des pages spcifiques.
Pour grer ces pages et pour exploiter toutes les
proprits des gadgets Vista, WebDev propose :
des traitements spcifiques associs aux diff-
rents types de pages d'un gadget Vista.
des fonctions WLangage spcifiques permettant
de grer certaines spcificits des gadgets Vista.
7.3.2 Les diffrents types de pages
Trois types de pages sont utilisables dans un
gadget :
Page de prsentation
Page de paramtrage
Page flyout
Ces trois types de pages possdent des traite-
ments spcifiques.
Remarque : si les pages du gadget Vista sont des
pages statiques, seuls des traitements navigateur
sont disponibles. Si les pages du gadget sont des
pages AWP, les traitements serveur classiques
s'ajoutent aux traitements navigateur.
Page de prsentation
La page de prsentation est la page affiche dans
le volet des gadgets sous Windows Vista. Cette
page doit avoir une largeur comprise entre 25 et
130 pixels, et une hauteur au minimum de 60
pixels.
Pour raliser un gadget dtour, spcifiez une
image de fond. Cette image doit grer le mode
transparent (image au format GIF ou PNG par
exemple).
Cette page peut permettre d'afficher des pages de
type "Flyout". Il suffit d'utiliser dans le code du bou-
ton concern l'appel la fonction GadgetAffiche-
Flyout.
Les codes navigateur associs cette page sont
les suivants :
Chargement (onload) de la page
Code navigateur excut lors de l'affichage de la
page dans le navigateur (ralis par exemple par
les fonctions PageAffiche ou PageActualise)
Dchargement (onunload) de la page
Code navigateur excut lors de l'affichage d'une
nouvelle page dans le navigateur.
Ancrage de la page dans le volet Windows
Code navigateur excut lorsque le gadget Vista
est "dock" au volet Windows des gadgets.
Sortie de la page du volet Windows
Code navigateur excut lorsque le gadget Vista
est "ddock" (sorti) du volet Windows des gad-
gets.
Aprs la fermeture de la fentre de configura-
tion
Code navigateur excut aprs la fermeture de la
page utilise pour configurer le gadget Vista.
Ouverture de la fentre de configuration
Code navigateur excut lors de l'ouverture de
page utilise pour configurer le gadget Vista.
Souris en dehors
Code navigateur excut lorsque le curseur de la
WLangage.book Page 228 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 229
souris est en dehors du gadget Vista.
Page de configuration
La page de configuration permet de paramtrer le
gadget Vista. Cette page est affiche par le bouton
de type configuration (icne outils) prsent dans le
gadget. Ce bouton apparat automatiquement si
une page de configuration est prsente. Ce bouton
n'est pas paramtrable.
Cette page doit avoir une largeur de 278 pixels.
La page de paramtrage contient automatique-
ment un bouton de validation et un bouton d'annu-
lation.
Dans la page de configuration, il est ncessaire de
spcifier une police dans les styles : si la police est
"non dfini", la police par dfaut sera utilise. Dans
ce cas, des diffrences de mise en page entre l'di-
tion et l'excution pourront tre observes.
La couleur de fond de la page de configuration est
le gris. Cette couleur ne peut pas tre modifie. Il
est possible d'utiliser une image de fond. Si cette
image de fond gre la transparence, il est conseill
de ne pas crire sur les zones transparentes.
Les codes navigateur associs cette page sont
les suivants :
Chargement (onload) de la page
Code navigateur excut lors de l'affichage de la
page dans le navigateur (ralis par exemple par
les fonctions PageAffiche ou PageActualise)
Dchargement (onunload) de la page
Code navigateur excut lors de l'affichage d'une
nouvelle page dans le navigateur.
Validation de la fentre de configuration
Code navigateur excut lors de l'appui sur le
bouton de validation.
Annulation de la fentre de configuration
Code navigateur excut lors de l'appui sur le
bouton d'annulation.
Remarque : Les fonctions GadgetChargeParam-
tre et GadgetSauveParamtre permettent de grer
la mmorisation des paramtres.
Page Flyout
Les pages flyout sont des pages standard. Ces
pages sont des pages libres pouvant tre ouvertes
depuis la page principale ( l'aide d'un bouton, d'un
lien, ...).
La taille maximale pour ce type de page est de 400
pixels en hauteur et en largeur. La couleur de fond
des pages flyout est le blanc. Cette couleur ne peut
pas tre modifie.
Dans les pages flyout, il est ncessaire de spcifier
une police dans les styles : si la police est "non
dfini", la police par dfaut sera utilise. Dans ce
cas, des diffrences de mise en page entre l'dition
et l'excution pourront tre observes.
Les pages flyout possdent les traitements
suivants :
Chargement (onload) de la page
Code navigateur excut lors de l'affichage de la
page dans le navigateur (ralis par exemple par
les fonctions PageAffiche ou PageActualise)
Dchargement (onunload) de la page
Code navigateur excut lors de l'affichage d'une
nouvelle page dans le navigateur.
Ces pages peuvent tre manipules grce aux fonc-
tions GadgetAfficheFlyout et GadgetFermeFlyout.
7.3.3 Les fonctions WLangage
Les fonctions Gadgets sont les suivantes :
GadgetAfficheFlyout Affiche dans une zone popup une page du gadget Vista.
GadgetChargeParamtre Charge une valeur persistante dans un gadget Vista. Cette valeur a t
prcdemment sauvegarde grce la fonction GadgetSauveParam-
tre.
GadgetFermeFlyout Ferme la zone popup dun gadget vista.
GadgetSauveParamtre Sauve une valeur persistante dans un gadget Vista. Cette valeur pourra
tre lue ensuite avec la fonction GadgetChargeParamtre.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 229 Mardi, 23. avril 2013 1:59 13
230 Partie 5 : Fonctionnalits spcifiques au Web
8. UTILISATION DE SITES DCONNECTS
8.1 Prsentation
WebDev permet dindiquer quun site ou un ensem-
ble de pages peuvent fonctionner en mode dcon-
nect (sans connexion Internet).
Si le site peut fonctionner en mode dconnect,
lensemble des ressources (pages, images, fichier
.js, fichier .css) utilises par le site ou les pages est
automatiquement mis en cache par le navigateur
sur le poste de linternaute.
Ainsi le site peut tre utilis sans se reconnecter
Internet.
La fonction navigateur NavigateurEstConnect per-
met de savoir si le navigateur est en mode con-
nect ou en mode dconnect et d'adapter le
comportement du site.
Cette fonctionnalit utilise la gestion des manifes-
tes disponible avec HTML 5. Certains navigateurs
(notamment Internet Explorer 8 ou des navigateurs
anciens) ne grent pas cette fonctionnalit.
Remarque : La mise en cache de site utilise est
spcifique HTML 5 :
Avant l'utilisation de HTML 5, seules les pages
visites pouvaient tre mises en cache.
Grce HTML 5, la mise en cache se fait la pre-
mire connexion un site. Un fichier manifeste
spcifique permet de lister toutes les ressources
mettre en cache.
8.2 Mise en place
8.2.1 Dfinition des ressources mettre en
cache
La dfinition des ressources mettre en cache est
ralise sous l'environnement de dveloppement.
Pour indiquer les pages disponibles en mode
dconnect :
1. Ouvrez si ncessaire le projet WebDev.
2. Sous le volet "Projet", dans le groupe "Web",
slectionnez l'option "Cache (mode dconnect").
3. Dans la fentre qui s'ouvre, slectionnez les
pages mettre en cache.
Attention : Seules les pages dynamiques AWP, PHP
et les pages statiques peuvent tre mises en
cache. Fermez la fentre.
A la prochaine recompilation du projet, le fichier
"<Nom_Projet>.manifest" est gnr automatique-
ment dans le sous-rpertoire de la langue prsent
dans le rpertoire _WEB du projet. Ce fichier va
contenir les pages spcifies et toutes leurs dpen-
dances (images, feuilles de styles CSS, fichiers
Javascript, ...).
8.2.2 Configuration du serveur
L'utilisation d'un manifeste ncessite une configu-
ration spcifique du serveur. Il est ncessaire de
configurer un type mime spcifique : ".manifest"
associ "text/cache-manifest".
Pour tester votre site, cette configuration doit tre
effectue sur le poste de dveloppement.
Remarques :
Dans cette version, la configuration du type
mime doit tre effectue manuellement. Dans
une prochaine version, cette configuration sera
automatique.
La configuration du type mime est automatique.
Ce type mime n'est pas encore configur chez
tous les hbergeurs.
8.2.3 Technique de programmation
Un site en cache peut tre utilis par exemple :
pour simuler une application iPhone (cration
d'une application Web qui fonctionne unique-
ment en mode hors connexion).
pour grer un site qui perdrait la connexion Inter-
net.
Voici quelques conseils de programmation :
Le principe est d'utiliser majoritairement du code
navigateur. En effet, hors connexion, seul ce code
peut tre excut. Il est cependant possible d'uti-
liser du code serveur via la fonction AjaxExcute
(qui permet d'excuter du code serveur dans un
traitement navigateur).
Les champs disponibles sont uniquement des
champs navigateur. Seuls les champs liste, bou-
ton, champ de saisie, libell, image, lien, menu,
WLangage.book Page 230 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 231
interrupteur et slecteur peuvent tre utiliss
dans des pages en mode dconnect.
Les boutons et liens ne doivent pas tre de type
"Submit". Il est cependant possible d'utiliser
l'action "Afficher la page XXX".
Si l'enregistrement de donnes est ncessaire en
mode dconnect, il est ncessaire d'utiliser une
base de donnes locale. La norme HTML 5 per-
met aux sites Internet d'utiliser une base de don-
nes locale gre par le navigateur. Pour plus de
dtails, consultez SQL Base de donnes locale
un navigateur.
Si le site doit pouvoir fonctionner en mode con-
nect et dconnect, il est possible d'utiliser la
fonction NavigateurEstConnect en code naviga-
teur pour savoir si un code serveur peut tre ou
non effectu. En cas de dconnexion, une proc-
dure ou un traitement spcifique peut tre lanc
pour ne pas effectuer le code serveur.
Utilisez les traitements optionnels de la page
"Passage en mode dconnect", "Passage en
mode connect" et "A chaque changement d'tat
du cache HTML" pour raliser les traitements
ncessaires au changement d'tat (rcupration
des donnes de la base de donnes locale par
exemple).
8.2.4 Test du site
Pour tester un site en cache :
1. Configurez si ncessaire le serveur du poste de
dveloppement.
2. Lancez le test du site (Go du site). Toutes les
pages ncessaires sont mises en cache.
3. Utilisez l'option "Travailler hors connexion" du
navigateur.
4. Testez votre site.
8.3 Accs en mode local une base de donnes (SQLite)
WebDev permet un site de crer et d'accder
une base de donnes cre par le navigateur sur le
poste de l'internaute en code navigateur.
Cette fonctionnalit permet par exemple de saisir
des donnes en mode dconnect pour les trans-
mettre au serveur ds que la connexion Internet
sera rtablie.
Attention : Cette fonctionnalit est disponible uni-
quement sous certains navigateurs :
Chrome,
Safari,
Opra 11, ...
8.3.1 Comment grer une base de donnes
locale ?
1. Utilisez la fonction SQLConnecte en code naviga-
teur pour vous connecter la base de donnes
locale.
Par exemple :
2. Utilisez la fonction SQLExec pour raliser des
requtes sur la base de donnes locale
Attention : Les requtes SQL sont excutes de
manire asynchrone. La syntaxe de la fonction
SQLExec utilise donc une procdure spcifique.
Cette procdure est lance la fin de l'excution
relle de la requte (quelque soit le rsultat de la
requte). Cette procdure navigateur permet de :
tester la bonne excution de la requte. La fonc-
tion SQLInfoGene est automatiquement excute
l'appel de la procdure. Les variables SQL sont
donc toutes positionnes. Si une erreur est sur-
venue, SQL.erreur sera diffrente de "00000". Le
message d'erreur pourra tre connu grce la
variable SQL.MesErreur.
parcourir le rsultat de la requte.
Si de nouvelles requtes sont excutes dans cette
procdure (par exemple pour ajouter des enregis-
trements), il est possible :
soit d'utiliser la mme procdure : le paramtre
de cette procdure permet de connatre la
requte en cours d'excution.
soit d'utiliser une procdure navigateur diffrente
pour tester le rsultat de ces nouvelles requtes.
Remarques :
Lors de la sortie de la procdure navigateur, les
valeurs renvoyes par la fonction SQLInfoGene
sont rtablies. Si ces valeurs ont t modifies
dans la procdure navigateur, elles sont cra-
ses.
Pour connatre les ordres SQL utilisables, consul-
tez la documentation des bases de donnes de
type "Web SQL database".
// Connexion une base navigateur
// nomme "BaseLocale"
// La base est cre si elle
// n'existe pas
SQLConnecte("BaseLocale",...
"","","","Web SQL database"))
WLangage.book Page 231 Mardi, 23. avril 2013 1:59 13
232 Partie 5 : Fonctionnalits spcifiques au Web
8.3.2 Les fonctions SQL
Les fonctions SQL disponibles en code Navigateur sont les suivantes :
8.3.3 Enregistrer en local les donnes d'un
site dconnect
WebDev permet la mise en place de sites dcon-
nects. Si ce type de site doit enregistrer des don-
nes pendant la dure de la dconnexion, il est
possible d'utiliser une base de donnes locale.
Les tapes sont les suivantes :
1. Connexion la base de donnes.
La connexion la base de donnes est ralise
grce la fonction SQLConnecte.
Par exemple :
2. Cration de la base de donnes locale.
Avant d'utiliser une base locale, il est ncessaire de
la crer. Pour cela, il suffit d'utiliser une requte de
type CREATE TABLE. Cette requte doit tre excu-
te via la fonction SQLExec.
Par exemple :
Lorsque la requte "REQ_CREATION" est termine,
la procdure _cbRequete est excute. Dans cet
exemple, cette procdure permet de grer toutes
les requtes excutes et deffectuer un traitement
appropri aprs la requte. La requte de cration
ne doit tre utilise quune seule fois, en dbut de
journe par exemple. Par exemple, la base peut
tre cre uniquement si un paramtre spcifique
(par exemple "First") n'est pas pass aux pages.
3. Accs aux donnes locales ou distantes.
Dans cet exemple, le site peut tre utilis en mode
connect ou dconnect. Il doit tre possible
d'accder la base locale (en mode dconnect)
SQLAvance Passe la ligne suivante (c'est--dire l'enregistrement suivant) du
rsultat de la requte.
SQLChangeConnexion Modifie la connexion en cours.
SQLColonne Renvoie les caractristiques de toutes les colonnes (ou rubriques) :
soit d'une table donne.
soit d'une requte donne.
SQLConnecte Connecte l'application en cours une base de donnes interroger par
SQL.
SQLDconnecte Ferme la connexion en cours et libre l'espace mmoire utilis par la
connexion
SQLExec Nomme et excute une requte SQL.
SQLFerme Dclare la fin d'excution d'une requte et libre les ressources
mmoire alloues lors de l'excution de la requte.
SQLInfoGene Initialise les diffrentes variables SQL avec les informations relatives
la dernire requte excute
SQLLitCol Rcupre le contenu de la colonne spcifie dans le rsultat de la
requte, pour la ligne en cours.
SQLReqExiste Teste l'existence d'une requte.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
SQLConnecte("","","", ...
"RDVClients", "Web SQL database")
sRequete est une chane
// Code de cration de la table
sRequete = [
CREATE TABLE IF NOT EXISTS ...
"RendezVous"
("IDRendezVous" INTEGER PRIMARY ...
KEY , "DateHeureDebut" ...
VARCHAR(16) ,
"Client" VARCHAR(100) , ...
"Adresse" VARCHAR(200) , ...
"Resume" LONGVARCHAR );
]
// Excution de la requte
SQLExec(sRequete,...
"REQ_CREATION",_cbRequete)
WLangage.book Page 232 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 233
ou la base distante (en mode connect).
Tous les accs (cration, modification,
suppression, ...) la base locale doivent tre effec-
tus via la procdure SQLExec.
Les accs la base distante peuvent toujours tre
effectus via les fonctions Hxxx. Il est cependant
ncessaire :
d'excuter ces fonctions dans un code naviga-
teur, donc en AJAX, via la fonction AJAXExcute.
d'tre sr que le navigateur est connect (fonc-
tion NavigateurEstConnect).
Par exemple :
Pour rcuprer des enregistrements de la base dis-
tante (serveur) dans la base locale (pour linitialiser
par exemple), il suffit de :
1. Parcourir les enregistrements et mmoriser les
rubriques sous forme de chanes, dans une proc-
dure Serveur.
2. Rcuprer cette liste en code navigateur :
3. Parcourir la chane et extraire les informations
laide de la fonction ExtraitChane. Les enregistre-
ments peuvent ainsi tre ajouts facilement avec
une requte dajout (INSERT).
De la mme manire, il est possible de rcuprer
les donnes de la base locale pour mettre jour la
base distante. Il suffit de :
1. Excuter une requte en locale pour rcuprer
les enregistrements. Par exemple, pour rcuprer
les rendez-vous de la journe :
2. Dans la procdure de vrification lance par la
fonction SQLExec, il suffit d'excuter une procdure
de mise jour de la base distante grce la fonc-
tion AjaxExcute. Dans notre exemple, la procdure
navigateur __SynchoniseBase est lance :
Remarque : La mise jour de la base de donnes
distante peut tre provoque lors de la re-con-
nexion au serveur. Lors de la reconnexion au ser-
veur, le traitement "Passage en mode connect" est
excut. Ce traitement est un traitement optionnel
de la page. Pour l'afficher sous l'diteur de code, il
suffit de :
Afficher le code de la page.
Cliquer sur les [...] de la barre de code.
Slectionner l'vnement "Passage en mode con-
nect".
Saisissez le code de mise jour de la base de
donnes distante.
sRequete est une chane
// Le navigateur est connect
SI NavigateurEstConnect()...
= Vrai ALORS
// Enregistre dans la base distante
//(serveur)
AJAXExecute(SauveDonnes,...
SAI_ID,SAI_RESUME)
FIN
sRequete = [
UPDATE RendezVous
SET Resume=%2
WHERE IDRendezVous=%1
]
// Dans tous les cas, enregistre
//dans la base locale
SQLExec(ChaneConstruit ...
(sRequete,gnIDRDVNav,...
SAI_RESUME),REQ_SAUVEGARDE,...
_cbRequete)
PROCEDURE RecupereEnreg()
POUR TOUT MonFichier
sListe += [RC]+ ...
MonFichier.Rubrique1 +TAB + ...
MonFichier.Rubrique2 +TAB+ ...
MonFichier.Rubrique3
FIN
RENVOYER sListe
// Rcupre la liste
sListe = AJAXExecute(RecupereEnreg)
// Excute la requte qui
// slectionne les rendez-vous
// de la journe
sRequete est une chane
sRequete = ChaneConstruit ...
("SELECT IDRendezVous,Resume ...
FROM RENDEZVOUS WHERE ...
DateHeureDebut LIKE '%1%' ORDER ...
BY DateHeureDebut ASC;",...
DateDuJour())
// Lance la requte
SQLExec(sRequete, ...
"REQ_SYNCHRONISERDV",_cbRequete)
PROCEDURE _SynchroniseBase ...
(sRequete)
// Tant qu'il existe des rendez-vous
// synchroniser
TANTQUE SQLAvance(sRequete) = 0
// Synchronise le rendez-vous
AJAXExecute(_Synchronise ...
UnRendezvousdistant,SQLLitCol ...
(sRequete,1), SQLLitCol...
(sRequete,2))
FIN
WLangage.book Page 233 Mardi, 23. avril 2013 1:59 13
234 Partie 5 : Fonctionnalits spcifiques au Web
9. STOCKAGE LOCAL
9.1 Prsentation
Dans un site Web, le stockage local permet de stoc-
ker et de rcuprer des valeurs en code navigateur.
Ces valeurs pourront tre :
partages par toutes les fentres et onglets d'un
mme navigateur d'une machine : il sera donc
possible de les retrouver aprs avoir ferm puis
r-ouvert le navigateur ou dans une autre fentre
du navigateur. Dans ce cas, le stockage local est
persistant.
propres une fentre ou un onglet du
navigateur : dans ce cas, les valeurs seront per-
dues lors de la fermeture de la fentre du naviga-
teur. Par contre, ces valeurs pourront tre lues
par les fentres du navigateur ouvertes depuis la
fentre o ont t stockes les valeurs. Dans ce
cas, le stockage local n'est pas persistant.
Remarques :
Le stockage de paramtres locaux n'est pas dis-
ponible par page.
Le stockage de paramtres locaux est disponible
uniquement sur les navigateurs rcents (suppor-
tant la norme HTML 5).
Mme dans le cas du stockage local persistant,
le stockage n'est pas partag par les diffrents
navigateurs (une valeur stocke sous Internet
Explorer ne pourra pas tre rcupre sous Fire-
Fox).
9.2 Les fonctions WLangage
Les fonctions permettant de raliser un stockage local sont les suivantes :
StockageLocalAjoute Ajoute une valeur au stockage local.
StockageLoalDisponible Indique si le stockage local est disponible ou non pour le navigateur en
cours.
StockageLocalNomValeur Renvoie le nom d'une valeur du stockage local.
StockageLocalOccurrence Renvoie le nombre de valeurs du stockage local.
StockageLocalRcupre Rcupre une valeur du stockage local.
StockageLocalSupprime Supprime une valeur du stockage local.
StockageLocalSupprimeTout Supprime toutes les valeurs du stockage local.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 234 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 235
10. SSL : TRANSACTIONS SCURISES
10.1 Prsentation
Par dfaut, lors de l'utilisation d'une application
Internet, les donnes circulant entre le poste de
l'internaute et le serveur Web ne sont pas
protges : les donnes sont accessibles par tout
internaute. La confidentialit des donnes chan-
ges n'est pas certifie.
Pour assurer la confidentialit des donnes chan-
ges, plusieurs systmes existent. Le plus courant
est l'utilisation du protocole SSL (Secure Socket
Layer).
SSL est un protocole de communication d'informa-
tions qui permet d'assurer l'authentification, la con-
fidentialit et l'intgrit des donnes changes.
Ce protocole utilise un moyen de cryptographie
reconnu : l'algorithme cl publique RSA. Une cl
RSA est le rsultat d'oprations entre nombres pre-
miers.
Pratiquement : qu'est-ce qui change lorsquune
transaction est scurise ?
une transaction scurise utilise une adresse
spcifique (https au lieu de http).
un cadenas apparat automatiquement dans la
barre d'tat du navigateur, indiquant au client
qu'une transaction scurise est en cours.
10.2 Mettre en place des transactions scurises avec le protocole SSL
Pour mettre en place des transactions scurises
utilisant le protocole SSL :
1. Sur le serveur Web, crez une cl, par exemple
avec le gestionnaire de cls de IIS, si votre serveur
Web est IIS.
2. Envoyez le fichier de demande de certificat de
cl un organisme de certification de cl (exemple
de socit : www.verisign.com).
3. L'organisme renvoie un certificat de cl (opra-
tion payante). Ce certificat doit tre install sur le
serveur grce au gestionnaire de cls.
4. Il est alors possible d'utiliser les transactions
scurises entre le serveur et le client (voir para-
graphe suivant).
Note : "Verisign" dlivre des certificats de test vala-
bles 14 jours, qui permettent de tester si la con-
nexion HTTPS est correcte. Ces cls de test
permettent de tester le bon fonctionnement des
transactions scurises.
La procdure complte suivre pour obtenir un cer-
tificat SSL est dtaille dans la suite de ce chapi-
tre.
10.3 Obtention dun certificat SSL pour IIS2 (2.0 ou +)
10.3.1 Etape 1 : Cration dun certificat
Pour crer un certificat :
1. Ouvrez le Gestionnaire des services Internet
(option "Dmarrer .. Excuter" : Inetmgr.exe).
2. Slectionnez le site Web sur lequel sappliquera
la scurisation (par exemple : "Site Web par
dfaut").
3. Faites un clic droit sur ce site, et slectionnez
loption "Proprits" du menu contextuel.
4. Slectionnez longlet "Scurit de rpertoire" :
Cliquez sur le bouton "Certificat de serveur ".
Un assistant se lance.
Choisissez l'option "Crer un certificat".
Sur le volet de lassistant "Nom usuel de votre
site" : laissez le nom de votre ordinateur.
Lassistant cre un fichier texte "certreq.txt" qui
permet de demander votre certificat.
5. Quittez les proprits du serveur Web.
WLangage.book Page 235 Mardi, 23. avril 2013 1:59 13
236 Partie 5 : Fonctionnalits spcifiques au Web
10.3.2 Etape 2 : Demande de certification
La demande de certification se fait un organisme
de certification de cl (exemple de socit :
www.verisign.com).
Cet exemple dcrit la procdure suivre avec
l'organisme Verisign. Les tapes sont sensiblement
les mmes pour chaque organisme.
1. Dans votre navigateur, tapez : "http://www.veri-
sign.com".
2. Cliquez sur "Free Trial". Cette option permet
d'obtenir un certificat valide 15 jours gratuitement.
3. Remplissez le petit questionnaire puis cliquez
sur "Submit".
4. Suivez pas pas lassistant de certification :
Step 1 of 5 : Generate CSR : Cliquez sur "Conti-
nue"
Step 2 of 5 : Submit CSR : Copiez le contenu du
fichier cr prcdemment "certreq.txt" dans la
zone de saisie prvue cet effet, puis cliquez sur
"Continue".
Step 3 of 5 : Complete Application : Le contenu
du certificat est list lcran, tapez vos coordon-
nes (Attention les accents ne sont pas accepts,
la plupart des informations doivent tre les
mmes que dans le contenu du certificat.
Exemple : la rgion, la socit ). Renseignez
bien votre adresse Email, cest cette adresse
que vous sera envoy le certificat. Cliquez sur
"Accept".
Dans lheure qui suit vous recevrez votre certificat.
10.3.3 Etape 3 : Certification du certificat sur
le serveur
1. Dans l'e-mail envoy par VeriSign, vous avez le
certificat.
Slectionnez la partie qui ressemble ceci.i
Copiez la partie slectionne dans un nouveau
fichier appel par exemple "Certif.cer".
2. Ouvrez le Gestionnaire des services Internet
(option "DmarrerExcuter": Inetmgr.exe).
3. Slectionnez le site Web sur lequel sappliquera
la scurisation (par exemple : "Site Web par
dfaut").
4. Faites un clic droit sur ce site, slectionnez
loption "Proprits".
5. Slectionnez longlet "Scurit de rpertoire" :
Cliquez sur le bouton "Certificat de serveur "
puis suivez lassistant.
Choisissez l'option "Traiter la demande en attente
et installer le certificat".
Slectionnez le fichier que vous venez de crer
(Certif.cer).
Terminez lassistant.
Note importante :
Si vous avez dj fait un certificat de test pour cette
machine :
Enlevez le certificat qui a expir (Dans lassistant
de ltape 1, choisir l'option "Supprimer le certifi-
cat").
Changez le nom de votre machine (car 2 certifi-
cats de tests ne peuvent pas tre dlivrs pour la
mme machine = mme nom).
Recommencez partir de ltape 1.
-----BEGIN CERTIFICATE-----
MIICBzCCA-
bECEFi+J6vFjN+EkkfCKLgi6uUwDQYJKoZIhvc
NAQEEBQAwgakxFjAUBgNVBAoTDVZlcmlTaWduLCB
JbmMxRzBFBgNVBAsTPnd3dy52ZXJpc2lnbi5jb20v
cmVwb3NpdG9yeS9UZXN0Q1BTIEluY29ycC4gQnk
gUmVmLiBMaWFiLiBMVEQuMUYwRAYDVQQLEz1G
b3IgVmVyaVNpZ24gYXV0aG9yaXplZCB0ZXN0aW5
nIG9ubHkuIE5vIGFzc3VyYW
5jZXMgKEMpVlMxOTk3MB4XDTAwMDkwMTAwMD
AwMFoXDTAwMDkxNTIzNTk1OVowZDELMAkGA1U
EBhMCRlIxEjAQBgNVBAgTCUxBTkdVRURPQzEUMB
IGA1UEBxQLTU9OVFBFTExJRVIxDDAKBgNVBAoUA
1BDUzEPMA0GA1UECxQGV0VCREVWMQwwCgYDV
QQDFANtcjIwXDANBgkqhkiG9w0BAQEFAANLADBIA
kEAmqKCTidFBZEwI0Q7WPTBlQzlacQi5nwjNndrW.
U2tjGMElrY0IxoduwTgRX+DY42IuptGERQApb5NCx
/4/3iBrQIDAQABMA0GCSqGSIb3DQEBBAUAA0
EABT7REV9bLiq3EFiug+a/
irlbYI7aNiuITsdSVO7j34baFtx
aa2jTE4JoGrNhrWTQZgBl1GOMpuMef/
MuwXHO1A==
-----END CERTIFICATE-----
WLangage.book Page 236 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 237
10.4 Insrer des transactions scurises par SSL dans un site WebDev
Dans un site Internet / Intranet, toutes les transac-
tions ne contiennent pas obligatoirement des don-
nes sensibles : il suffit de scuriser uniquement le
transfert de donnes sensibles (transfert du
numro de carte bancaire par exemple).
Attention : la mise en place d'une transaction scu-
rise dans un site WebDev suppose que toutes les
formalits lies au protocole SSL ont t effec-
tues.
10.4.1 Principe
La mise en place d'un mode scuris est ralise
lors de l'ouverture d'une nouvelle page par un bou-
ton ou un lien, grce la fonction SSLActive du
WLangage. Ds l'ouverture de la page scurise,
toutes les actions et ouvertures de pages suivantes
seront faites en mode scuris, quels que soient
les lments utiliss (lien, table, zone de clicage).
La fin du mode scuris est effectue lors de l'utili-
sation de la fonction SSLActive dans le code d'un
bouton ou dun lien permettant d'ouvrir une nou-
velle page.
10.4.2 Mise en place
Pour ouvrir une page en mode scuris :
1. Crez un bouton permettant d'ouvrir une page.
Cette page peut tre ouverte soit par une action
dfinie dans la description du bouton, soit par pro-
grammation en code serveur. Les caractristiques
de ce bouton sont :
Type : "Envoyer la valeur au serveur" ou
"Aucune".
Action : "Afficher la page XXX" (ou "Aucune" si
l'ouverture de page se fait par programmation).
Destination :
"Navigateur en cours" pour ouvrir la page
dans le navigateur en cours.
"Nouveau navigateur" pour ouvrir la page
dans un nouveau navigateur.
2. Dans le code navigateur de clic sur le bouton,
saisissez le code suivant :
3. Si ncessaire (action non dfinie dans la des-
cription du bouton), dans le code de clic serveur,
utilisez la fonction PageAffiche pour afficher la
page voulue en mode scuris.
4. La page ouverte par le bouton sera en mode
scuris. Ce mode scuris sera conserv jusqu'au
passage explicite en mode normal.
10.4.3 Revenir en mode normal (transaction
non scurise) dans le navigateur en cours
Pour revenir en mode normal (transaction non
scurise) dans le navigateur en cours :
1. Crez un bouton permettant d'ouvrir une page.
Cette page peut tre ouverte soit par une action
dfinie dans la description du bouton, soit par pro-
grammation en code serveur. Les caractristiques
de ce bouton sont :
Type : "Envoyer la valeur au serveur" ou
"Aucune".
Action : "Afficher la page XXX" (ou "Aucune" si
l'ouverture de page se fait par programmation).
Destination :
"Navigateur en cours" pour ouvrir la page
dans le navigateur en cours.
"Nouveau navigateur" pour ouvrir la page
dans un nouveau navigateur.
2. Dans le code navigateur de clic sur le bouton,
saisissez le code suivant :
3. Si ncessaire (action non dfinie dans la des-
cription du bouton), dans le code de clic serveur,
utilisez la fonction PageAffiche pour afficher la
page voulue en mode non scuris.
4. La page ouverte par le bouton sera en mode non
scuris. Ce mode non scuris sera conserv
jusqu'au passage explicite en mode scuris.
Cas particulier : Ouverture d'une page en mode
scuris avec la fonction NavigateurOuvre :
1. Crez une variable globale (adrPage par exem-
ple) dans la page de dpart (non scurise).
2. Initialisez cette variable avec l'adresse scurise
de la page :
3. Dans le code voulu, utilisez la fonction :
SSLActive(Vrai)
SSLActive(Faux)
adrPage = PageAdresse(...
<NomPageDpart>, paScurise)
NavigateurOuvre(AdrPage)
WLangage.book Page 237 Mardi, 23. avril 2013 1:59 13
238 Partie 5 : Fonctionnalits spcifiques au Web
11. JSON
11.1 Prsentation
JSON (JavaScript Object Notation Notation Objet
issue de JavaScript) est un format lger d'change
de donnes. Bas sur le JavaScript, JSON est un
format texte indpendant de tout autre langage.
JSON se base sur deux structures :
une collection de couples nom / valeur, interpr-
te en WLangage par des structures.
une liste de valeurs ordonnes, interprte en
WLangage par des tableaux.
JSON et WebDev
WebDev permet :
d'obtenir des informations au format JSON dans
un site WebDev.
de crer des pages WebDev renvoyant des infor-
mations au format JSON. Il est par exemple possi-
ble de crer un site fournisseur de services JSON
(par exemple service de suivi de colis).
11.2 Obtenir des informations au format JSON
11.2.1 Fonctionnement
Pour obtenir des informations au format JSON,
WebDev permet d'excuter une page renvoyant des
informations au format JSON. Deux fonctions
WLangage sont disponibles :
JSONExcute : Appelle une URL serveur du
mme domaine qui retourne des donnes au for-
mat JSON (JavaScript Object Notation).
JSONExcuteExterne : Appelle une URL serveur
externe qui retourne des donnes au format
JSON (JavaScript Object Notation). Les donnes
sont traites dans une procdure spcifique.
11.2.2 Exemple dutilisation de la fonction
JSONExcute
Le code suivant permet d'excuter une page AWP
pour obtenir la liste des contacts au format JSON.
Les tapes sont les suivantes :
1. Dclaration d'un objet dynamique. Cet objet
dynamique contiendra le rsultat au format JSON.
2. Appel de la fonction JSONExcute :
3. Traitement des donnes JSON obtenues : Ce
traitement est effectu en code navigateur.
Prenons un exemple simple : les donnes JSON
sont renvoyes sous la forme :
Il est possible par exemple de :
Rcuprer la valeur dun membre de lobjet dyna-
mique. Par exemple :
Rcuprer les diffrents lments dune liste de
valeurs. Par exemple :
11.2.3 Exemple dutilisation de la fonction
JSONEXcuteExterne
Le principe d'utilisation de la fonction JSONExcu-
teExterne est le mme que pour la fonction JSO-
NExcute.
Dans ce cas, la page permettant de rcuprer les
donnes JSON n'est pas dans le mme domaine.
Les rgles de scurit Internet imposent d'utiliser
une fonction de rappel pour traiter le rsultat de
manire asynchrone. La fonction JSONExcuteEx-
terne permet donc d'indiquer le nom de la proc-
dure excute pour traiter les donnes JSON.
MesContacts est un objet dynamique
MesContacts = JSONExcute(...
RpertoireWeb()+ ...
"FR/PAGE_Objet.awp?id=12")
{id: 12,
liste: [
{nom: "smith", prnom: "john"},
{nom: "dupond", prnom: "marie"},
{nom: "martin", prnom: "laura"}]
}
MesContacts:id
POUR i=1 _A_ Dimension(...
MesContacts:liste)
Listejoute(LISTE_Liste_contacts,...
MesContacts:liste[i]:nom+" "+ ...
MesContacts:liste[i]:prnom)
FIN
WLangage.book Page 238 Mardi, 23. avril 2013 1:59 13
Partie 5 : Fonctionnalits spcifiques au Web 239
Exemple : Dans cet exemple, une page AWP est
appele et le traitement des donnes est ralis
dans la procdure RponseFonction :
11.3 Crer des pages renvoyant des donnes JSON
WebDev offre la possibilit de crer un site fournis-
seur de services JSON.
Les pages permettant d'obtenir les donnes JSON
doivent renvoyer une chane de caractres d'un for-
mat spcifique. Ces pages peuvent tre des pages
AWP ou PHP.
11.3.1 Cas d'une page appele par la fonc-
tion JSONExcute
Le code suivant permet de renvoyer un identifiant
et une liste de valeurs :
La fonction ChaneAffiche permet de renvoyer les
informations JSON. La fonction ChaneVersUTF8
permet de renvoyer une chane au format UTF8.
Cette dernire fonction est obligatoire pour obtenir
un format valide.
11.3.2 Cas d'une page appele par la fonc-
tion JSONExcuteExterne
En plus du code permettant de grer les lments
JSON renvoyer, il est ncessaire de prciser dans
les donnes renvoyes, le nom de la procdure
devant traiter des donnes. Le nom de cette proc-
dure est indiqu en paramtre sur l'URL de la page.
L'exemple suivant permet de grer l'appel avec JSO-
NExcute et JSONExcuteExterne. Pour le cas d'un
appel externe, il est ncessaire de vrifier la pr-
sence d'un paramtre spcifique prsent sur l'URL.
Ce paramtre a t fourni l'utilisateur du service
JSON.
Pour que les utilisateurs de sites WebDev puissent
utiliser les services JSON, il suffit donc de leur indi-
quer le ou les paramtres spcifier dans
l'adresse de la page lancer.
Remarque : Pour plus de dtails sur les syntaxes
pouvant tre utilises dans les donnes renvoyes
au format JSON, nous vous conseillons de consul-
ter une documentation spcifique.
JSONExcuteExterne(...
"http://MonSite/MonSite_WEB/FR/
PAGE_Objet.awp?id=12",...
"JsonCallback",RponseFonction)
sObjet est une chane = [
{id: 12,
liste: [
{nom: "smith", prnom: "john"},
{nom: "dupond", prnom: "marie"},
{nom: "martin", prnom: "laura"}]
}
]
// ChaneVersUTF8 permet de grer
// les accents
ChaneAffiche(ChaneVersUTF8(sOb-
jet))
sObjet est une chane = [
{id: 12,
liste: [
{nom: "smith", prnom: "john"},
{nom: "dupond", prnom: "marie"},
{nom: "martin", prnom: "laura"}]
}
]
// Gestion d'un appel externe.
// Vrifie la prsence d'un nom de
// procdure sur l'URL
SI PageParamtre(...
"JsonCallback") <> "" ALORS
sObjet = PageParamtre(...
"JsonCallback") + "("+ ...
sObjet + ");"
FIN
// ChaneVersUTF8 permet de grer
// les accents
ChaneAffiche(ChaneVersUTF8(sOb-
jet))
WLangage.book Page 239 Mardi, 23. avril 2013 1:59 13
240 Partie 5 : Fonctionnalits spcifiques au Web
WLangage.book Page 240 Mardi, 23. avril 2013 1:59 13
PARTIE 6
Communication
WLangage.book Page 241 Mardi, 23. avril 2013 1:59 13
WLangage.book Page 242 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 243
1. LA COMMUNICATION
1.1 Communication avec WinDev / WebDev
Le WLangage offre de nombreuses possibilits de communication.
Moyen de
communication
Possibilits offertes par WinDev/WebDev Pour plus de dtails ...
emails Envoi et rception demails. Consultez Communiquez par
emails, page 245.
Lotus Notes Accs aux diffrentes donnes manipu-
les par Lotus Notes.
Consultez Accder Lotus Notes et
Outlook, page 253
Outlook Accs aux diffrentes donnes manipu-
les par Outlook.
Consultez Accder Lotus Notes et
Outlook, page 253
tlphone Informatisation de la manipulation du tl-
phone.
Consultez WinDev et la tlphonie,
page 271.
fax Envoi et rception de fax. Consultez Envoyer des fax,
page 278.
Internet Rcupration de pages HTML grce aux
fonctions HTTP.
Consultez Rcuprer des pages
HTML, page 281.
transfert de donnes Envoi et rception de donnes grce aux
fonctions FTP/RPC WinDev.
Consultez Gestion de fichiers sur
Internet, page 282.
transfert de fichiers Manipulation de fichiers sur un serveur
FTP.
Consultez Communiquer avec un
serveur FTP, page 285.
sockets Communication dapplications et de sites
au travers du rseau grce aux fonctions
Socket.
Consultez Gestion des sockets,
page 287.
Bluetooh et OBEX Communication entre un PC et un Mobile. Consultez Gestion des cls blue-
tooth on page 292.
gestion du multit-
che
Excution en parallle de diverses tches
dans une mme application ou dans un
mme site.
Consultez Gestion des threads,
page 294.
serveur SOAP Cration dapplications clientes et serveur
SOAP.
Consultez SOAP, page 302.
procdures sur un
serveur de services
Web .Net
Gestion de l'excution de procdures sur
un serveur de services Web .Net.
Consultez Webservices XML,
page 306.
services Web XML Importation et/ou gnration des services
Web XML de type .Net et J2EE.
Consultez Webservices XML,
page 306.
fichiers XML Gestion des fichiers au format XML. Consultez XML, page 312.
assemblages .NET Cration et utilisation dassemblages
.NET.
Consultez Assemblages .NET,
page 316.
WLangage.book Page 243 Mardi, 23. avril 2013 1:59 13
244 Partie 6 : Communication
1.2 Communication avec WinDev Mobile
WinDev Mobile permet de faire communiquer deux
Pockets PC entre eux, un Pocket PC avec un Smart-
phone, un Pocket PC avec un PC, ...
Ces "dialogues" se font par infrarouge, par Wi-Fi,
par GPRS.
Le tableau ci-dessous prsente les diffrents
modes de communication disponibles pour chaque
fonctionnalit propose par WinDev Mobile :
Accs dis-
tant (RPC sur
HyperFi-
leSQL)
Email FTP HTTP Tlpho-
nie
SOAP
J2EE
.NET
Socket SMS
ActiveSync X X X X X X
Carte rseau X X X X X X
GPRS X X X X X X
Infrarouge X
Smartphone
ou accs
tlphoni-
que (type
GSM)
X X
Wi-Fi X X X X X X
WLangage.book Page 244 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 245
2. COMMUNIQUEZ PAR EMAILS
2.1 Prsentation
WinDev et WebDev permettent de grer directe-
ment les emails depuis vos applications. Envoi et
rception d'emails sont simplifis grce :
de nombreuses fonctions du WLangage,
une structure email permettant de stocker et de
connatre toutes les caractristiques de l'email
manipul. Il est galement possible de manipuler
le contenu des emails sans les envoyer (fonctions
EmailConstruitSource et EmailImporteSouce).
la gestion de types avancs permettant de mani-
puler plusieurs connexions des serveurs et un
grand nombre de messages aisment :
Les types Email et EmailAttache permettent de
grer les messages et leurs pices jointes.
Les types EmailSessionPOP3, EmailSessionS-
MTP, EmailSessionNotes, EmailSessionOutlook
et EmailSessionIMAP permettent de grer les
connexions aux serveurs de messagerie.
2.2 La gestion des emails
Plusieurs mthodes sont votre disposition pour
grer les emails :
Le protocole POP3/SMTP (mthode la plus
courante) : Ce protocole est un protocole de ges-
tion des emails reconnu par tous les fournisseurs
de service. Ce protocole vous permet de dialo-
guer directement avec le serveur, disponible chez
votre fournisseur daccs.
L'API "Simple Mail API (appel aussi SMAPI ou
Simple MAPI)" : Ce mode de gestion des emails
est utilis par la plupart des applications Micro-
soft, et principalement MS Exchange 4.
Le logiciel de messagerie Lotus Notes ou
Outlook : grce ces logiciels, il est possible
d'envoyer et de recevoir des emails.
le protocole IMAP : ce protocole est maintenant
disponible grce au nouveau type EmailSessionI-
MAP.
2.3 Mode synchrone / asynchrone (WebDev uniquement)
Par dfaut, les fonctions Email sont bloquantes.
Cela signifie que pendant leur excution, aucun
autre code ne peut tre excut. Le programme
continuera de s'excuter uniquement lorsque l'ex-
cution des fonctions Email sera termine.
WebDev offre dsormais la possibilit de grer les
emails en mode asynchrone. Ce mode permet
vos sites d'envoyer des emails sans bloquer l'excu-
tion des diffrents traitements.
Pour utiliser le mode asynchrone, il faut :
1. Dcocher l'option "Dsactiver le spooler de mail"
dans l'administrateur WebDev (onglet "Configura-
tion).
2. Activer le mode asynchrone l'ouverture de la
session SMTP (avec la fonction EmailOuvreSes-
sionSMTP ou EmailOuvreSession).
3. Tous les emails envoyer seront transmis un
"spooler". Les emails sont ainsi mis en file d'attente
avant d'tre envoys.
L'excution des fonctions Email n'est alors plus blo-
quante pour le reste du programme. La fonction
EmailEtat permet de connatre l'tat d'un email.
Remarque :
Si l'administrateur WebDev est ferm, le spooler
d'emails est vid : les emails en attente ne sont pas
envoys et sont enlevs du spooler.
Si vous cochez l'option "Dsactiver le spooler de
mail" alors que des emails sont en attente, ces
emails ne seront pas perdus : l'administrateur con-
tinue de les envoyer, mais aucun nouveau mail ne
sera accept par le spooler.
Attention : Le mode asynchrone est utilisable uni-
quement lors de l'ouverture d'une session sur un
serveur SMTP (fonction EmailOuvreSessionMTP
pour l'envoi d'emails). Le mode asynchrone est
ignor dans tous les autres cas.
WLangage.book Page 245 Mardi, 23. avril 2013 1:59 13
246 Partie 6 : Communication
2.4 Grez les emails avec les protocoles POP 3/SMTP
2.4.1 Prsentation des protocoles POP3 /
SMTP
Les protocoles POP3 et SMTP sont des protocoles
de gestion des emails reconnus par tous les four-
nisseurs de service. Ces protocoles vous permet-
tent de dialoguer directement avec le serveur
d'emails, disponible chez votre fournisseur daccs.
Le protocole POP3 permet de recevoir des
emails.
Le protocole SMTP permet d'envoyer des emails
Remarque : la rception des emails peut gale-
ment tre prise en charge en utilisant le protocole
IMAP.
2.4.2 Principe d'utilisation
Envoi de messages en utilisant le protocole SMTP.
Pour envoyer des messages en utilisant le proto-
cole SMTP, il faut :
1. Ouvrir une session SMTP :
soit en utilisant une variable de type EmailSes-
sionSMTP et la fonction EmailOuvreSession.
soit en utilisant la fonction EmailOuvreSessionS-
MTP.
2. Construire le message envoyer dans une varia-
ble de type Email ou dans la structure Email.
3. Envoyer le message avec la fonction EmailEn-
voieMessage.
4. Fermer la session SMTP avec la fonction Email-
FermeSession.
Rception de messages en utilisant le protocole
POP3.
Pour recevoir des emails en utilisant le protocole
POP3, il faut :
1. Ouvrir une session POP3 :
soit en utilisant une variable de type
EmailSessionPOP3 et la fonction EmailOuvreSes-
sion
soit en utilisant la fonction
EmailOuvreSessionPOP3.
Exemple d'ouverture de session en utilisant une
variable de type EmailSessionPOP3 :
2. Lire les messages sur le serveur de messagerie :
avec la fonction EmailRcupreTout,
avec une boucle de la forme :
ou avec une boucle de la forme :
3. Fermer la session POP3 avec la fonction Email-
FermeSession.
Remarque : Il est possible d'ouvrir simultanment
une session POP3 et une session SMTP avec la
fonction EmailOuvreSession.
// Ouverture de la session
// de messagerie
MaSession est un EmailSessionPOP3
MaSession.AdresseServeur = ...
"pop.masociete.fr"
MaSession.Nom = "utilisateur"
MaSession.MotDePasse = "secret"
EmailOuvreSession(MaSession)
Exemple utilisant une variable de
type Email :
MonMessage est un Email
EmailLitPremier(MaSession,...
MonMessage)
TANTQUE PAS MonMessage.EnDehors
// Placer ici le traitement
// du message lu
...
EmailLitSuivant(MaSession,...
MonMessage)
FIN
Exemple utilisant la structure
Email :
EmailLitPremier(MaSession)
TANTQUE PAS Email.EnDehors
// Placer ici le traitement
// du message lu
...
EmailLitSuivant(MaSession)
FIN
MonMessage est un Email
POUR TOUT MonMessage DE MaSession
// Placer ici le traitement
// du message lu
...
FIN
WLangage.book Page 246 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 247
Principe d'utilisation et particularits en WinDev
Principe pour un site WebDev :
Principe pour une application Mobile :
WLangage.book Page 247 Mardi, 23. avril 2013 1:59 13
248 Partie 6 : Communication
2.5 Grez les emails avec le protocole IMAP
2.5.1 Prsentation du protocole IMAP
Le protocole IMAP est un protocole standard de
gestion des emails. Au contraire du protocole
POP3, le principe d'utilisation de IMAP consiste
laisser les messages sur le serveur de messagerie
afin de pouvoir les consulter depuis plusieurs
clients. Le protocole IMAP intgre dans ce but un
indicateur particulier pour savoir si un message a
t lu. Un grand nombre de serveurs de message-
rie supportent la fois le protocole IMAP et le proto-
cole POP3.
2.5.2 Utilisation du protocole IMAP
Pour recevoir des emails en utilisant le protocole
IMAP :
1. Ouvrez une session IMAP en utilisant une varia-
ble de type EmailSessionIMAP et la fonction
EmailOuvreSession.
Exemple d'ouverture de session en utilisant une
variable de type EmailSessionIMAP :.
2. Lisez les messages sur le serveur de
messagerie :
avec la fonction EmailRcupreTout,
avec une boucle de la forme :.
ou avec une boucle de la forme (les mots-cls
"NON LU" sont optionnels et permettent de par-
courir uniquement les messages non lus ou bien
tous les messages) :.
3. Fermez la session IMAP avec la fonction Email-
FermeSession.
2.6 Grez les emails avec "Simple MAPI" (WinDev et WebDev)
Simple MAPI (appel aussi "Simple Mail API") est
une API de gestion des emails utilise par les appli-
cations Microsoft, et principalement MS Exchange
4.
Simple MAPI permet de simplifier la gestion des
emails reus chez l'hbergeur. Lorsqu'un email est
lu, il est automatiquement charg dans la bote de
messages locale et supprim du serveur (chez
l'hbergeur).
Toutes les caractristiques ncessaires la gestion
des emails (protocole POP3, protocole SMTP, accs
distant, etc.) sont regroupes dans le "Profil utilisa-
teur".
Grce aux fonctions email du WLangage, une appli-
cation ou un site peut manipuler directement les
emails grs dans une application ou un site utili-
sant "Simple MAPI".
2.6.1 Principe d'utilisation
Pour envoyer ou lire des messages grce Simple
MAPI, il faut :
1. Dcrire un profil utilisateur. Ce profil utilisateur
doit tre cr directement dans l'application Micro-
soft de gestion des emails (MS Exchange par exem-
ple).
2. Se connecter depuis l'application ou le site
// Ouverture de la session ...
// de messagerie
MaSession est un EmailSessionIMAP
MaSession.AdresseServeur = ...
"pop.masociete.fr"
MaSession.Nom = "utilisateur"
MaSession.MotDePasse = "secret"
EmailOuvreSession(MaSession)
Exemple utilisant une variable de
type Email :
MonMessage est un Email
EmailLitPremier(MaSession, ...
MonMessage)
TANTQUE PAS MonMessage.EnDehors
// Placer ici le traitement
// du message lu...
...
EmailLitSuivant(MaSession, ...
MonMessage)
FIN
Exemple utilisant la structure
Email :
EmailLitPremier(MaSession)
TANTQUE PAS Email.EnDehors
// Placer ici le traitement
// du message lu
...
EmailLitSuivant(MaSession)
FIN
MonMessage est un Email
POUR TOUT MonMessage NON LU DE ...
MaSession
// Placer ici le traitement
// du message lu
...
FIN
WLangage.book Page 248 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 249
l'application de gestion des emails (MS Exchange 4
par exemple) grce la fonction EmailOuvreSes-
sion.
3. Envoyer et lire les messages.
4. Fermer la session avec l'application de gestion
des emails (MS Exchange 4 par exemple) grce la
fonction EmailFermeSession.
2.6.2 tape 1 : Crer un profil utilisateur
Le profil utilisateur permet de configurer l'applica-
tion de gestion des emails (MS Exchange 4 par
exemple).
Dans le profil utilisateur sont dfinis :
le protocole SMTP utilis,
le protocole POP3 utilis,
les diffrents services de communication utili-
ss. Pour utiliser les fonctions "email" du WLan-
gage, le profile utilisateur doit utiliser le service
de communication Microsoft Exchange Server.
Remarque : Il est ncessaire de crer autant de
profils sur le poste qu'il y a d'utilisateurs ou de
comptes emails diffrents. Le nom du profil sera
ensuite utilis pour ouvrir la session de messagerie
grce la fonction EmailOuvreSession.
Pour crer un profil :
1. Ouvrez le panneau de configuration.
2. Double-cliquez sur l'option "Courrier".
3. Cliquez sur le bouton "Afficher les profils".
4. Dans la fentre "Choix d'un profil", cliquez sur le
bouton "Ajouter".
5. Donnez un nom au profil. Ce nom sera utilis
dans les programmes WinDev.
6. Slectionnez l'option "Ajouter un nouveau
compte de messagerie".
7. Slectionnez le service "Microsoft Exchange Ser-
ver".
8. Donnez le nom du serveur Microsoft Exchange.
2.6.3 tape 2 : Ouverture d'une session de
messages
L'ouverture dune session de messages est rali-
se grce la fonction EmailOuvreSession. Cette
fonction doit tre la premire fonction "email" utili-
se dans votre application WinDev (ou votre site
WebDev).
La fonction EmailOuvreSession renvoie l'identifiant
de la session. Cet identifiant sera utilis dans tou-
tes les fonctions de gestion des emails du WLan-
gage.
Exemple : La procdure suivante permet d'ouvrir
une session de messagerie partir d'un profil. En
cas d'erreur, la variable Email.Erreur permet d'iden-
tifier l'erreur survenue.
2.6.4 tape 3 : Envoi d'emails
L'envoi d'emails par Simple MAPI est ralis grce
aux fonctions :
EmailEnvoieMessage : cette fonction permet de
placer le message dans la bote d'envoi de l'appli-
cation de gestion des emails (bote d'envoi de MS
Exchange 4 par exemple).
Fonction OuvertureSession(Profil)
NumSession est un entier
NumSession = EmailOuvreSession(...
Profil)
SI NumSession = 0 ALORS
Erreur("La session n'a pas"+...
"pu tre ouverte. Erreur : "+...
Email.Erreur)
FIN
RENVOYER NumSession
WLangage.book Page 249 Mardi, 23. avril 2013 1:59 13
250 Partie 6 : Communication
EmailMiseAJour : cette fonction permet de syn-
chroniser le serveur d'emails et l'application de
gestion des emails : les nouveaux emails reus
sont automatiquement transfrs dans la bote
de rception, les emails prsents dans la bote
d'envoi sont envoys.
Exemple : Le code suivant permet d'envoyer tous
les emails prsents dans une table mmoire (table
"AENVOYER") par l'intermdiaire de MS Exchange 4.
Chaque ligne de la table correspond un email.
Pour chaque email, les informations prsentes
dans la table mmoire sont transfres dans la
structure email, et l'email est envoy. Le serveur
d'emails est ensuite mis jour.
2.6.5 tape 3bis : Lecture des emails
La lecture d'emails par Simple MAPI est ralise
grce :
la fonction EmailMiseAJour : cette fonction per-
met de synchroniser le serveur d'emails et le logi-
ciel de gestion d'emails utilis : les nouveaux
emails reus sont automatiquement transfrs
dans la bote de rception, les emails prsents
dans la bote d'envoi sont envoys.
aux fonctions de lecture des emails (EmailLitPre-
mier, EmailLitSuivant, etc.) : ces fonctions per-
mettent d'initialiser la structure email du
WLangage avec les caractristiques de l'email en
cours de lecture (auteur de l'email, sujet, etc.).
Exemple : Le code suivant permet de lire des
emails. Les emails reus sont stocks dans une
table mmoire (table "Messages"). La variable
NumSession correspond l'identifiant de la ses-
sion.
Dans cet exemple, les messages reus sont suppri-
ms de la bote de rception et du serveur d'emails
par la fonction EmailSupprimeMessage.
I est un entier
POUR I = 1 TableOccurrence(...
("AENVOYER")
// Le courrier n'est envoy
// qu' une seule personne
Email.NbDestinataire = 1
Email.destinataire[1] = ...
ExtraitChane(AENVOYER[I], 1)
// Sujet et message
Email.Sujet = ...
ExtraitChane(AENVOYER[I], 2)
Email.Message = ...
ExtraitChane(AENVOYER[I], 3)
// Pas de fichier attach
Email.NbAttache = 0
// Envoi du message
// MS Exchange 4
EmailEnvoieMessage ...
(NumSession, Faux)
FIN
// Envoi des messages depuis
// MS Exchange 4
// vers le serveur d'email
SI PAS ...
EmailMiseAjour(NumSession)
ALORS
Erreur("Problme. Erreur"+...
Email.Erreur)
FIN
// Reoit les messages en attente
// qui sont sur le serveur d'email
SI PAS ...
EmailMiseAjour(NumSession) ALORS
Erreur("Problme. Erreur"+ ...
Email.Erreur)
FIN
// Lecture du premier message non lu
SI PAS EmailLitPremier(...
NumSession,"Non lus") ALORS
Erreur("Erreur lors de la "+...
"lecture du premier message")
FIN
// Parcours des messages non lus
// avec affichage dans
// une table mmoire
TableSupprimeTout("Messages")
TANTQUE PAS Email.EnDehors
// La date de rception,
// l'adresse de l'expditeur
// et le message sont
// affects dans la table
TableAjoute("Messages",...
Email.DateRception + TAB +...
Email.AdresseExpditeur + ...
TAB +Email.Message)
// Suppression du message
SI PAS EmailSupprimeMessage(...
NumSession) ALORS
Erreur("Erreur : le message"+...
"n'a pas t supprim")
FIN
// Lecture du message suivant non lu
SI PAS EmailLitSuivant(...
NumSession,"Non lus") ALORS
Erreur("Erreur lors de la"+...
" lecture du message suivant")
FIN
FIN
WLangage.book Page 250 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 251
2.6.6 tape 4 : Fermeture de la session de
messages
Lorsque la gestion des emails reus et/ou envoys
est termine, la fermeture de la session est rali-
se avec la fonction EmailFermeSession. Cette
fonction doit tre la dernire fonction "email" utili-
se.
Exemple : Le code suivant est une procdure per-
mettant de fermer une session de messagerie.
Dans ce code, la variable NumSession correspond
l'identifiant de session renvoy par la fonction
EmailOuvreSession..
2.7 Grer les emails avec CEMapi (WinDev Mobile uniquement)
CEMAPI est une API de gestion des emails utilise
par la plupart des applications Pocket pour envoyer
et recevoir des emails (Pocket Outlook gnrale-
ment).
CEMAPI permet de simplifier la gestion des emails
reus chez l'hbergeur. Lorsqu'un email est lu, il est
automatiquement charg dans la bote de messa-
ges locale et supprim du serveur (chez l'hber-
geur).
Toutes les caractristiques ncessaires la gestion
des emails (protocole POP3, protocole SMTP, accs
distant, etc.) sont regroupes dans le "Compte utili-
sateur".
Grce aux fonctions email du WLangage, une appli-
cation WinDev peut manipuler directement les
emails grs dans une application utilisant
"CEMAPI".
Pour plus de dtails, consultez laide en ligne.
2.8 Lire et crire un email
La lecture et lcriture demails peuvent tre rali-
ses :
soit via la structure email (conserve par compa-
tibilit)
soit via les variables de type EmailXXX.
Pour plus de dtails, consultez laide en ligne.
2.9 Fonctions de gestion des emails
Les fonctions permettant de grer les emails sont les suivantes :
Procedure FermetureSession(...
NumSession)
// Fermeture de la session
EmailFermeSession(NumSession)
EmailChangeEtat Change l'tat d'un email sur un serveur de messagerie.
EmailChangeTimeOut Change la valeur du "timeout" de connexion aux serveurs de messagerie SMTP et
POP3
EmailChargefichierAtta-
ch
Ajoute un fichier en attachement d'un email.
EmailCherchePremierNo-
tes
Recherche un ou plusieurs emails selon des critres spcifis, dans une base
locale ou distante Lotus Notes ou Domino.
EmailConstruitSource Gnre le code source de lemail envoyer partir des variables actuellement
prsentes dans la structure email.
EmailCopie Copie un email prsent dans un rpertoire vers un autre rpertoire d'un serveur
IMAP.
EmailEnvoie Envoie un message par le protocole POP3 en contrlant entirement le buffer de
lemail
EmailEnvoieMessage Envoie un message
EmailEtat Permet de connatre l'tat d'un email envoy lors d'une session SMTP ouverte en
mode asynchrone
WLangage.book Page 251 Mardi, 23. avril 2013 1:59 13
252 Partie 6 : Communication
EmailFermeSession Ferme la session POP3
EmailImporteHTML Permet d'envoyer simplement un mail au format HTML avec des images inclues
EmailImporteSource Replit les diffrentes variables de la structure email partir du contenu de la
variable Email.Source.
EmailJauge Gre une jauge de progression pour l'envoi et la rception d'emails
EmailLanceAppli Lance l'application native d'envoi d'emails de l'appareil Android
EmailLitDernier Lit le dernier message en attente sur le serveur
EmailLitEntteDernier Lit len-tte du dernier message en attente sur le serveur (protocole POP3 unique-
ment)
EmailLitEntteMessage Lit len-tte dun message identifi par son numro (protocole POP3 uniquement)
EmailLitEnttePrcdent Lit len-tte du message prcdent en attente (protocole POP3 uniquement)
EmailLitEnttePremier Lit len-tte du premier message (protocole POP3 uniquement)
EmailLitEntteSuivant Lit len-tte du message suivant (protocole POP3 uniquement)
EmailLitMessage Lit un message identifi par son numro
EmailLitPrcdent Lit le message prcdent en attente
EmailLitPremier Lit le premier message
EmailLitSuivant Lit le message suivant
EmailLitTimeOut Lit la valeur du "timeout" de connexion aux serveurs de messagerie SMTP et POP3
EmailMiseAJour Envoie les messages vers le serveur d'email Internet et reoit les messages en
attente sur le serveur Internet
EmailMsgErreur Retourne le message correspondant l'identifiant de l'erreur
EmailNbMessage Permet de connatre le nombre de messages actuellement sur le serveur
EmailOuvreMessagerie Ouvre le logiciel de messagerie par dfaut de l'internaute sur le poste navigateur
EmailOuvreSession Ouvre une session de gestion des emails
EmailOuvreSessionPOP3 Ouvre une session de lecture demails avec le protocole POP3
EmailOuvreSessionSMTP Ouvre une session denvoi demails avec le protocole SMTP
EmailRaz Re-initialise les variables de la structure email
EmailSauveFichierAtta-
ch
Copie les fichiers attachs au mail sur le poste local
EmailSupprimeMessage Supprime un message
EmailTailleMessage Permet de connatre la taille d'un message (email) avant de le charger
EmailVrifieAdresse Vrifie la validit dune adresse email
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 252 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 253
3. ACCDER LOTUS NOTES ET OUTLOOK
3.1 Accder Lotus Notes
3.1.1 Prsentation
WinDev et WinDev permettent dsormais d'accder
facilement aux diffrentes donnes manipules
par Lotus Notes (base Domino). Il est ainsi possible
de rcuprer, modifier, ajouter ou manipuler vos
contacts, vos rendez-vous, vos tches, vos emails,
vos bases de donnes, ...
L'ensemble des donnes gres par Lotus Notes
est organis ainsi :
Une base par utilisateur contenant les emails, les
tches et les rendez-vous de cet utilisateur.
Une base commune tous les utilisateurs conte-
nant les contacts et les groupes de contacts.
Plusieurs bases de donnes contenant des docu-
ments.
Pour accder Lotus Notes, le client Lotus Notes
doit tre install sur le poste des utilisateurs finals.
L'accs Lotus Notes est possible uniquement
sous Lotus Notes version 6.5 ou suprieure.
3.1.2 Mthode daccs Lotus Notes
1. tablissement de la connexion avec le serveur
Domino : fonction NotesOuvreConnexion.
2. Ouverture d'une session d'accs aux emails,
tches, rendez-vous, contacts et/ou groupes de
contacts : fonction EmailOuvreSessionNotes (en
indiquant l'identifiant de la connexion et la base
locale ou distante Lotus Notes utiliser, syntaxe 2).
3. Ouverture d'une session d'accs aux
documents : fonction NotesOuvreBase (en indi-
quant l'identifiant de la connexion et la base locale
ou distante Lotus Notes utiliser).
4. Changement de la base Lotus Notes utiliser :
fonctions NotesFermeBase et NotesOuvreBase.
5. Fermeture de la connexion avec le serveur
Domino : fonction FermeSession ou EmailFerme-
Session.
3.1.3 Mthode d'accs concise si vous ne
voulez pas accder aux documents
Si vous voulez accder uniquement aux emails,
tches, rendez-vous, contacts et/ou groupes de
contacts, il est possible d'tablir la connexion avec
le serveur Domino et d'ouvrir une session d'accs
la base Lotus Notes en utilisant directement la
fonction EmailOuvreSessionNotes (syntaxe 1), sans
appeler la fonction NotesOuvreConnexion.
3.1.4 Manipulation des donnes
Aprs avoir tabli la connexion avec le serveur
Domino et indiqu la base Lotus Notes utiliser,
vous pouvez manipuler :
les emails grce aux fonctions Email (voir
page 254)
les tches grce aux fonctions Tche (voir
page 256)
les rendez-vous grce aux fonctions RendezVous
(voir page 256)
les contacts grce aux fonctions Contact (voir
page 257)
les groupes de contacts grce aux fonctions
Groupe (voir page 257)
les documents grce aux fonctions Notes (voir
page 258)
3.2 Accder Outlook
3.2.1 Prsentation
WinDev et WinDev permettent dsormais d'accder
facilement aux diffrentes donnes manipules
par Outlook. Il est ainsi possible de rcuprer,
modifier, ajouter ou manipuler vos contacts, vos
rendez-vous, vos tches, vos emails, ...
3.2.2 Mthode daccs Outlook
1. Ouverture d'une session d'accs aux emails,
tches, rendez-vous, contacts et/ou groupes de
contacts : fonction EmailOuvreSessionOutlook ou
OutlookOuvreSession.
2. Fermeture de la session : fonction FermeSes-
sion ou EmailFermeSession.
WLangage.book Page 253 Mardi, 23. avril 2013 1:59 13
254 Partie 6 : Communication
3.2.3 Envoi et rception des emails
Pour envoyer et recevoir les emails, il est nces-
saire que Outlook soit lanc sur le poste en cours.
Pour rendre l'envoi et la rception d'emails
effectifs :
Envoi et rception automatique : Slectionnez
les options suivantes dans les options de
Outlook :
"Envoyer les messages immdiatement lors de
la connexion"
"Vrifier l'arrive de nouveaux messages toutes
les X minutes" et spcifiez le nombre de minu-
tes voulu.
Envoi et rception manuels : Cliquez sur le bou-
ton "Envoyer / Recevoir".
3.2.4 Version de Outlook
L'accs Outlook est possible uniquement sous
Outlook version 97 ou suprieure.
Remarque : Les groupes de contacts ne sont pas
grs par Outlook version 97. Il n'est donc pas pos-
sible d'y accder dans cette version de Outlook.
Attention : Sous Outlook Express, il est possible
uniquement d'accder aux emails. Dans ce cas, uti-
lisez la fonction EmailOuvreSession pour ouvrir la
session d'accs aux emails.
L'accs Outlook est compatible avec les serveurs
MS Exchange.
3.2.5 Manipulation des donnes
Aprs avoir tabli la connexion avec le serveur
Domino et indiqu la base Lotus Notes utiliser,
vous pouvez manipuler :
les emails grce aux fonctions Email (voir
page 255)
les tches grce aux fonctions Tche (voir
page 256)
les rendez-vous grce aux fonctions RendezVous
(voir page 256)
les contacts grce aux fonctions Contact (voir
page 257)
les groupes de contacts grce aux fonctions
Groupe (voir page 257)
les documents grce aux fonctions Notes (voir
page 258)
3.3 Fonctions Lotus Notes et Outlook
3.3.1 Fonctions emails pour Lotus Notes
EmailCherchePremierNo-
tes
Recherche un ou plusieurs emails selon des critres spcifis, dans une base
locale ou distante Lotus Notes ou Domino.
EmailConstruitSource
Gnre le code source de l'email envoyer partir des variables actuellement
prsentes dans la structure email. Le code source est gnr dans la variable
Email.Source.
EmailEnvoieMessage
Permet d'envoyer un message.
EmailFermeSession
Ferme la session.
EmailImporteSource
Remplit les diffrentes variables de la structure email partir du contenu de la
variable Email.Source.
EmailJauge
Gre une jauge de progression pour l'envoi et la rception d'emails.
EmailLitDernier
Lit le dernier email reu.
EmailLitEntteDernier
Lit l'en-tte du dernier email reu.
EmailLitEntteMessage
Lit l'en-tte d'un email reu.
EmailLitEnttePrcdent
Lit l'en-tte de l'email prcdant l'email en cours.
EmailLitEnttePremier
Lit l'en-tte du premier email reu.
EmailLitEntteSuivant
Lit l'email reu suivant l'email en cours.
EmailLitMessage
Lit un email reu.
EmailLitPrcdent
Lit l'email prcdent l'email en cours.
EmailLitPremier
Lit le premier message.
EmailLitSuivant
Lit le message suivant.
WLangage.book Page 254 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 255
3.3.2 Fonctions emails pour Outlook
EmailOuvreSessionNotes
Permet d'accder aux diffrentes donnes manipules par le logiciel de message-
rie Lotus Notes (emails, contacts, groupes de contacts, tches, rendez-vous).
EmailRaz
Rinitialise les variables de la structure email.
EmailSupprimeMessage
Supprime un message.
FermeSession
Ferme la session.
EmailVrifieAdresse
Vrifie la validit d'une adresse email.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
EmailAjouteDossier
Ajoute un dossier dans le logiciel de messagerie Outlook
EmailChangeDossier
Modifie le dossier en cours dans le logiciel de messagerie Outlook
EmailCherchePremier
Recherche un ou plusieurs emails selon des critres spcifis dans le logiciel de
messagerie Outlook
EmailConstruitSource
Gnre le code source de l'email envoyer partir des variables actuellement
prsentes dans la structure email. Le code source est gnr dans la variable
Email.Source.
EmailDossierCourant
Renvoie le nom du dossier en cours dans le logiciel de messagerie Outlook
EmailEnvoieMessage
Permet d'envoyer un message
EmailFermeSession
Ferme la session
EmailImporteSource
Remplit les diffrentes variables de la structure email partir du contenu de la
variable Email.Source.
EmailImporteHTML
Permet d'envoyer simplement un mail au format HTML avec des images inclues
EmailListeDossier
Renvoie la liste des dossiers prsents dans le logiciel de messagerie Outlook
EmailLitDernier
Lit le dernier email reu
EmailLitEntteDernier
Lit l'en-tte du dernier email reu
EmailLitEntteMessage
Lit l'en-tte d'un email reu
EmailLitEnttePrcdent
Lit l'en-tte de l'email prcdant l'email en cours
EmailLitEnttePremier
Lit l'en-tte du premier email reu
EmailLitEntteSuivant
Lit l'en-tte de l'email suivant l'email en cours
EmailLitMessage
Lit un email reu
EmailLitPrcdent
Lit l'email prcdent l'email en cours
EmailLitPremier
Lit le premier email reu
EmailLitSuivant
Lit l'email reu suivant l'email en cours
EmailNbMessage
Renvoie le nombre de messages reus actuellement prsents
EmailOuvreSessionOut-
look
Permet d'accder aux diffrentes donnes manipules par le logiciel de messa-
gerie Outlook
EmailSauveFichierAttach
Copie les fichiers attachs au mail sur le poste local
EmailSupprimeDossier
Supprime un dossier dans le logiciel de messagerie Outlook
EmailSupprimeMessage
Supprime un message
EmailVrifieAdresse
Vrifie la validit d'une adresse email.
FermeSession
Ferme la session
OutlookListeProfil
Liste les profils Outlook disponibles.
WLangage.book Page 255 Mardi, 23. avril 2013 1:59 13
256 Partie 6 : Communication
3.3.3 Fonctions Tche
Les fonctions de gestion des tches prsentes dans la liste des tches d'une messagerie Lotus Notes ou Out-
look sont les suivantes :
3.3.4 Fonctions Rendezvous
Les fonctions de gestion des rendez-vous prsents dans l'agenda d'une messagerie Lotus Notes ou Outlook
sont les suivantes :
OutlookOuvreSession
Permet d'accder aux diffrentes donnes manipules par le logiciel de messa-
gerie Outlook (emails, contacts, groupes de contacts, tches, rendez-vous et dos-
siers).
OutlookProfilDfaut
Rcupre le profil dfini par dfaut dans Outlook
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
TcheAjoute Ajoute une tche dans la liste des tches d'une messagerie Lotus Notes ou Outlook
TcheDernier Lit la dernire tche de la liste des tches d'une messagerie Lotus Notes ou Outlook
TcheLit Lit une tche prcdemment lue dans la liste des tches d'une messagerie Lotus Notes
ou Outlook
TcheModifie Modifie la tche en cours dans la liste des tches d'une messagerie Lotus Notes ou Out-
look
TchePrcdent Lit la tche prcdant la tche en cours dans la liste des tches d'une messagerie Lotus
Notes ou Outlook
TchePremier Lit la premire tche de la liste des tches d'une messagerie Lotus Notes ou Outlook
TcheRAZ Rinitialise la structure Tche.
TcheSuivant Lit la tche suivant la tche en cours dans la liste des tches d'une messagerie Lotus
Notes ou Outlook
TcheSupprime Supprime la tche en cours de la liste des tches d'une messagerie Lotus Notes ou Out-
look
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
RendezVousAjoute
Ajoute un rendez-vous dans l'agenda d'une messagerie Lotus Notes ou Outlook
RendezVousDernier
Lit le dernier rendez-vous prsent dans l'agenda d'une messagerie Lotus Notes ou
Outlook
RendezVousLit
Lit un rendez-vous prsent dans l'agenda d'une messagerie Lotus Notes ou Outlook
RendezVousModifie
Modifie le rendez-vous en cours dans l'agenda d'une messagerie Lotus Notes ou Out-
look
RendezVousPrcdent
Lit le rendez-vous prcdent le rendez-vous en cours, dans l'agenda d'une message-
rie Lotus Notes ou Outlook
RendezVousPremier
Lit le premier rendez-vous prsent dans l'agenda d'une messagerie Lotus Notes ou
Outlook
RendezVousRAZ
Rinitialise la structure RendezVous
RendezVousSuivant
Lit le rendez-vous suivant le rendez-vous en cours, dans l'agenda d'une messagerie
Lotus Notes ou Outlook
RendezVousSupprime
Supprime le rendez-vous en cours de l'agenda d'une messagerie Lotus Notes ou Out-
look
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 256 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 257
3.3.5 Fonctions Contact
Les fonctions de gestion des contacts prsents dans le carnet d'adresses d'une messagerie Lotus Notes ou
Outlook sont les suivantes :
3.3.6 Fonctions Groupe
Les fonctions de gestion des groupes de contacts prsents dans le carnet d'adresses d'une messagerie
Lotus Notes, Domino ou Outlook sont les suivantes :
ContactAffiche
Ouvre la fiche d'un contact dans l'application native de gestion des contacts de l'appa-
reil (tlphone Android).
ContactAjoute
Ajoute un contact dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook
ContactCherche
Recherche un contact dans le carnet d'adresses d'une messagerie Lotus Notes ou Out-
look
ContactCre
Affiche la fentre de cration de contact de l'application native de gestion des contacts
de l'appareil (tlphone Android)
ContactDernier
Lit le dernier contact prsent dans le carnet d'adresses d'une messagerie Lotus Notes
ou Outlook
ContactEdite
Ouvre en dition la fiche d'un contact en cours dans l'application native de gestion des
contacts de l'appareil (tlphone Android)
ContactLit
Lit un contact prcdemment lu, prsent dans le carnet d'adresses d'une messagerie
Lotus Notes ou Outlook
ContactModifie
Modifie le contact en cours dans le carnet d'adresses d'une messagerie Lotus Notes ou
Outlook
ContactPrcdent
Lit le contact prcdent le contact en cours, dans le carnet d'adresses d'une message-
rie Lotus Notes ou Outlook
ContactPremier
Lit le premier contact prsent dans le carnet d'adresses d'une messagerie Lotus Notes
ou Outlook
ContactRAZ
Rinitialise la structure Contact
ContactSlectionne
Affiche la liste des contacts de l'appareil (tlphone Android)
ContactSuivant
Lit le contact suivant du contact en cours, dans le carnet d'adresses d'une messagerie
Lotus Notes ou Outlook
ContactSupprime
Supprime le contact en cours du carnet d'adresses d'une messagerie Lotus Notes ou
Outlook
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
GroupeAjoute
Ajoute un groupe de contacts dans le carnet d'adresses d'une messagerie Lotus Notes
ou Outlook
GroupeDernier
Lit le dernier groupe de contacts prsent dans le carnet d'adresses d'une messagerie
Lotus Notes ou Outlook
GroupeLit
Lit un groupe de contacts prcdemment lu, prsent dans le carnet d'adresses d'une
messagerie Lotus Notes ou Outlook
GroupeModifie
Modifie le groupe de contacts en cours dans le carnet d'adresses d'une messagerie
Lotus Notes ou Outlook
GroupePrcdent
Lit le groupe de contacts prcdant le groupe en cours, dans le carnet d'adresses d'une
messagerie Lotus Notes ou Outlook
GroupePremier
Lit le premier groupe de contacts prsent dans le carnet d'adresses d'une messagerie
Lotus Notes ou Outlook
GroupeRAZ
Rinitialise la structure Groupe
WLangage.book Page 257 Mardi, 23. avril 2013 1:59 13
258 Partie 6 : Communication
3.3.7 Fonctions Notes
Les fonctions de gestion des documents Notes prsents dans Lotus Notes sont les suivantes :
GroupeSuivant
Lit le groupe de contacts suivant le groupe en cours, dans le carnet d'adresses d'une
messagerie Lotus Notes ou Outlook
GroupeSupprime
Supprime le groupe de contacts en cours du carnet d'adresses d'une messagerie Lotus
Notes ou Outlook
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
NotesActiveVue
Indique la vue manipuler dans Lotus Notes
NotesAjouteFichierAttach
Attache un fichier un champ du document en cours dans Lotus Notes
NotesChamp
Renvoie la valeur des champs du document en cours dans Lotus Notes
NotesDsactiveVue
Dsactive la vue en cours de manipulation dans Lotus Notes
NotesDimensionChamp
Renvoie la dimension d'un champ du document en cours dans Lotus Notes
NotesDocumentCherche
Recherche un document dans Lotus Notes
NotesDocumentDernier
Positionne sur le dernier document prsent dans Lotus Notes
NotesDocumentPrcdent
Positionne sur le document prcdant le document en cours dans Lotus Notes
NotesDocumentPremier
Positionne sur le premier document prsent dans Lotus Notes
NotesDocumentSuivant
Positionne sur le document suivant le document en cours dans Lotus Notes
NotesDocumentSupprime
Supprime le document en cours de la base Lotus Notes
NotesEnDehors
Permet de savoir s'il y a un document en cours dans Lotus Notes
NotesEnregistre
Enregistre le document en cours dans Lotus Notes
NotesExtraitFichierAttach
Extrait un fichier attach un champ du document en cours dans Lotus Notes
NotesFermeBase
Ferme la base locale ou distante Lotus Notes ou Domino utilise
NotesListeChamp
Renvoie la liste des champs du document en cours dans Lotus Notes
NotesListeFichierAttach
Renvoie la liste des fichiers attachs un champ du document en cours dans
Lotus Notes
NotesListeVue
Renvoie la liste des vues prsentes dans la base Lotus Notes en cours
NotesModifieChamp
Modifie le champ spcifi du document en cours dans Lotus Notes
NotesModifieFichierAttach
Modifie un fichier attach un champ du document en cours dans Lotus
Notes
NotesNbFichierAttach
Renvoie le nombre de fichiers attachs un champ du document en cours
dans Lotus Notes
NotesOuvreBase
Permet d'accder aux documents grs par Lotus Notes
NotesOuvreConnexion
Ouvre une connexion avec une base locale ou distante Lotus Notes ou Domino
NotesRAZ
Cre un document vide dans Lotus Notes
NotesSupprimeChamp
Supprime le champ spcifi du document en cours dans Lotus Notes
NotesSupprimeFichierAtta-
ch
Supprime un fichier attach d'un champ du document en cours dans Lotus
Notes
NotesVueChercheDernier
Recherche le dernier document prsent dans la vue en cours dans Lotus
Notes
NotesVueCherchePremier
Recherche le premier document prsent dans la vue en cours dans Lotus
Notes
NotesVueListeColonne
Liste les colonnes prsentes dans la vue en cours dans Lotus Notes
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 258 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 259
4.GOOGLE
4.1 Gestion des contacts Google
4.1.1 Prsentation
Le service Google Contact permet de grer des con-
tacts sur Internet. WinDev et WebDev permettent
par exemple de raliser une application qui syn-
chronise les contacts d'un applicatif existant avec
les contacts de Google Contact.
Avertissement : Avant d'utiliser une fonctionnalit
relie des services Google, nous vous conseillons
vivement de vous reporter la licence d'utilisation
de ce service. Certaines restrictions peuvent
s'appliquer. Le contenu des licences peut varier
avec le temps.
PC SOFT dgage toute responsabilit de l'usage qui
peut tre fait des fonctions d'accs natif. Il vous
appartient de vrifier que l'usage que vous faites
respecte la licence du fournisseur du service.
4.1.2 Comment grer les contacts Google ?
Pour grer les contacts Google :
1. Crez si ncessaire un compte Google. La cra-
tion de ce compte peut tre ralise grce
l'adresse suivante : http://code.google.com/intl/fr/
apis/maps/signup.html.
Attention : l'adresse de cette page peut tre modi-
fie depuis la date de rdaction de cette page.
Le compte Google est identifi par une adresse
email et le mot de passe associ.
2. Dans le code de votre application, crez une
variable de type gglConnexion. Cette variable con-
tient les caractristiques de la connexion votre
compte Google.
Pour crer un contact Google :
Un contact Google peut tre cr soit par l'interface
de Google, soit par programmation l'aide des
fonctions WLangage.
Pour crer un contact Google grce aux fonctions
WLangage :
1. Crez une variable de type gglContact.
2. Dfinissez les caractristiques du contact grce
aux proprits du type gglContact.
3. Validez la cration du contact grce la fonction
GglEcrit.
Remarque :
Si vous utilisez un proxy pour accder Internet, il
est ncessaire de configurer le proxy (fonction
Proxy) pour utiliser les fonctions Google.
4.1.3 Comment rcuprer un contact
Google ?
Pour rcuprer un contact Google :
1. Dclarez un tableau de variables de type ggl-
Contact.
2. Utilisez la fonction GglListeContact. Cette fonc-
tion permet de lister les contacts. Les contacts
trouvs sont affects au tableau de variables de
type gglContact.
Exemple :
4.1.4 Comment modifier ou supprimer des
contacts Google ?
Principe :
Le principe est simple : Il est ncessaire de recher-
cher et de se positionner sur le contact modifier
ou supprimer avant de raliser l'opration voulue.
Pour modifier un contact :
1. Rcuprez la liste des contacts.
2. Recherchez le contact modifier.
3. Modifiez les caractristiques du contact.
4. Validez les modifications grce la fonction
GglEcrit.
// Rcupre tous les contacts
TabContacts est un tableau de ...
0 gglContact
TabContacts = GglListeContact(Cnx)
// Parcours des contacts
UnContact est un gglContact
POUR TOUT UnContact DE TabContacts
Trace(UnContact..Nom)
FIN
WLangage.book Page 259 Mardi, 23. avril 2013 1:59 13
260 Partie 6 : Communication
Exemple : Pour supprimer un contact :
1. Rcuprez la liste des contacts.
2. Recherchez le contact supprimer.
3. Supprimez le contact grce la fonction GglSup-
prime.
Exemple :
4.1.5 Fonctions de gestion des contacts Google
Les fonctions suivantes permettent de grer des
contacts par le service "Google Contacts" :
4.2 Gestion des agendas Google
4.2.1 Prsentation
Le service Agenda Google Calendar est une appli-
cation Internet fournie par Google qui permet de
grer un agenda sur Internet.
WinDev et WebDev permettent par exemple de ra-
liser une application de synchronisation de plan-
ning avec un applicatif dj en place : utilisation
d'une salle de runion, d'un vhicule, ...
Ces fonctions WLangage permettent galement de
raliser des interfaces spcifiques (adaptes au
mtier, plus conviviales, ...) et de rajouter des traite-
ments particuliers (impressions, ...).
Exemples de traitements ralisables nativement en
WLangage :
Rcupration de la liste des agendas avec leurs
dtails (agendas professionnels, personnels, ...).
Rcupration de la liste des rendez-vous d'un
agenda.
Recherche dans les rendez-vous d'un agenda.
Ajout, modification, suppression de rendez-vous.
Avertissement : Avant d'utiliser une fonctionnalit
relie des services Google, nous vous conseillons
vivement de vous reporter la licence d'utilisation
de ce service. Certaines restrictions peuvent
s'appliquer. Le contenu des licences peut varier
avec le temps.
PC SOFT dgage toute responsabilit de l'usage qui
peut tre fait des fonctions d'accs natif. Il vous
appartient de vrifier que l'usage que vous faites
respecte la licence du fournisseur du service.
// Rcupre tous les contacts
TabContacts est un tableau de ...
0 gglContact
TabContacts = GglListeContact(Cnx)
// Parcours des contacts
UnContact est un gglContact
POUR TOUT UnContact DE TabContacts
SI UnContact..Nom = "MOULAIN" ALORS
UnContact..AdressePostale[1]
..Adresse = "34080 Montpellier"
// Mise jour effective des
// changements sur le serveur
GglEcrit(Cnx, UnContact)
FIN
FIN
// Rcupre tous les contacts
TabContacts est un tableau de ...
0 gglContact
TabContacts = GglListeContact(Cnx)
// Parcours des contacts
UnContact est un gglContact
POUR TOUT UnContact DE TabContacts
SI UnContact..Nom = "MOULAIN" ALORS
// Suppression
GglSupprime(Cnx, UnContact)
FIN
FIN
GglEcrit
Cre ou met jour un contact ou un groupe de contacts.
GglListeContact
Rcupre la liste des contacts associs au compte Google spcifi.
GglListeContactParRe-
qute
Rcupre une liste de contacts partir de paramtres personnaliss.
GglListeGroupeContact
Rcupre la liste des groupes de contacts associs au compte Google spcifi.
GglRequte
Effectue une requte de communication (requte HTTP) un service Google.
GglSupprime
Supprime un contact ou un groupe de contacts.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 260 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 261
4.2.2 Comment grer un agenda Google ?
Pour grer un agenda Google :
1. Crez si ncessaire un compte Google. La cra-
tion de ce compte peut tre ralise grce
l'adresse suivante : http://code.google.com/intl/fr/
apis/maps/signup.html. Attention : l'adresse de
cette page peut tre modifie depuis la date de
rdaction de cette page.
Le compte Google est identifi par une adresse
email et le mot de passe associ.
2. Dans le code de votre application, crez une
variable de type gglConnexion. Cette variable con-
tient les caractristiques de la connexion votre
compte Google.
Pour crer un agenda Google :
Un agenda Google peut tre cr soit par l'interface
de Google, soit par programmation l'aide des
fonctions WLangage.
Pour crer un agenda Google grce aux fonctions
WLangage :
1. Crez une variable de type gglAgenda.
2. Dfinissez les caractristiques de l'agenda
grce aux proprits du type gglAgenda.
3. Dfinissez si ncessaire les vnements lis
l'agenda (variable de type gglEvnement).
4. Validez la cration de l'agenda grce la fonc-
tion GglEcrit.
Remarque : si vous utilisez un proxy pour accder
Internet, il est ncessaire de configurer le proxy
(fonction Proxy) pour utiliser les fonctions Google.
4.2.3 Comment rcuprer un agenda Goo-
gle et ses lments ?
1re mthode : rcupration de la liste des agen-
das puis de leurs vnements.
Pour rcuprer un agenda Google partir de la
liste des agendas :
1. Dclarez un tableau de variables de type gglA-
genda (pour rcuprer plusieurs agendas).
2. Utilisez la fonction GglListeAgenda. Cette fonc-
tion permet de lister les agendas disponibles. Les
agendas trouvs sont affects au tableau de varia-
bles de type gglAgenda.
3. Utilisez la fonction GglRemplitAgenda pour
rcuprer les vnements. Il est possible de rcu-
prer les vnements d'un seul ou de plusieurs
agendas. Il est possible de filtrer les vnements
rcuprer (par exemple entre deux dates).
Exemple :
2me mthode : rcupration d'un agenda spcifi-
que.
Pour rcuprer un agenda Google spcifique et ses
vnements :
1. Dclarez une variable de type gglAgenda.
2. Utilisez la fonction GglRcupreAgenda. Cette
fonction permet de rcuprer l'agenda Google (et
ses vnements) correspondant au titre spcifi.
Exemple :
4.2.4 Comment ajouter, modifier ou suppri-
mer des vnements dans un agenda
Google ?
Principe :
Le principe de la modification des vnements est
simple : l'agenda est rcupr en local, les modifi-
cations sont effectues en local, puis l'agenda est
mis jour sur le serveur.
Remarque : Dans le cas d'agendas partags, il est
conseill de mettre jour rgulirement les agen-
das sur le serveur
TabAgendas est un tableau de ...
0 gglAgenda
TabAgendas = GglListeAgenda(Cnx)
// Premier agenda
Agenda est un gglAgenda
Agenda = TabAgendas[1]
// Rcupre les vnements entre
// le 01/01/2008 et le 01/01/2009
// inclus
GglRemplitAgenda(Cnx, Agenda, ...
"20080101", "20090102")
// Parcours des vnements dun
// agenda
Evt est un gglEvnement
POUR TOUT Evt DE Agenda
Trace(Evt..Titre)
FIN
// Rcupration de l'agenda
// nomm "Travail"
Agenda est un gglAgenda
Agenda = GglRcupreAgenda(Cnx,...
"Travail")
// Parcours des vnements de
// l'agenda
SI PAS ErreurDtecte ALORS
Evt est un gglEvnement
POUR TOUT Evt de gglAgenda
Trace(Evt..Titre)
FIN
FIN
WLangage.book Page 261 Mardi, 23. avril 2013 1:59 13
262 Partie 6 : Communication
Pour ajouter des vnements un agenda :
1. Rcuprez l'agenda voulu (et si ncessaire ses
vnements).
2. Dclarez une variable de type gglEvnement.
3. Dfinissez les caractristiques de l'vnement
grce aux proprits de la variable.
4. Utilisez la fonction GglEcrit pour mettre jour
l'agenda sur le serveur
Exemple :
Pour supprimer un vnement d'un agenda :
1. Rcuprez l'agenda voulu et ses vnements.
2. Recherchez l'vnement supprimer.
3. Supprimez l'vnement.
4. Validez les modifications grce la fonction
GglEcrit.
Remarque : Il est possible d'effectuer plusieurs
suppressions avant d'utiliser la fonction GglEcrit.
Exemple :
4.2.5 Fonctions de gestion des agendas Google
Les fonctions suivantes permettent de grer des
agendas par le service Agenda Google Calendar :
// Rcupration de l'agenda
// nomm "Travail"
Agenda est un gglAgenda = ...
GglRcupreAgenda(Cnx,"Travail")
// Cration d'un vnement
MonEvnement est un gglEvnement
MonEvnement.DateDbut = ...
"20081201085000"
MonEvnement.DateFin = ...
"20081201093000"
MonEvnement.Titre = "Rendez-vous"
MonEvnement.Contenu = ...
"Rendez-vous concernant"+ ...
"le bilan du mois de novembre"
// Ajout de l'vnement dans
// l'agenda
Ajoute(Agenda.Evnement, ...
MonEvnement)
// Mise jour de l'agenda sur
// le serveur
GglEcrit(Cnx, Agenda)TabAgendas ...
est un tableau de 0 gglAgenda
TabAgendas = GglListeAgenda(Cnx)
// Rcupre les vnements
// futurs du premier agenda
GglRemplitAgenda(Cnx, ...
TabAgendas[1])
// Cration d'un vnement
MonEvnement est un gglEvnement
MonEvnement.DateDbut = ...
"20081201085000"
MonEvnement.DateFin = ...
"20081201093000"
MonEvnement.Titre = "Rendez-vous"
MonEvnement.Contenu = ...
"Rendez-vous concernant le"+...
"bilan du mois de novembre"
// Ajout de l'vnement dans
// l'agenda
Ajoute(TabAgendas[1].Evnement,...
MonEvnement)
// Mise jour de l'agenda
// sur le serveur
GglEcrit(Cnx, TabAgendas[1])
// Rcupration de l'agenda
// nomm "Travail"
Agenda est un gglAgenda = ...
GglRcupreAgenda(Cnx, "Travail")
// Suppression du deuxime
// vnement de l'agenda
Supprime(Agenda.Evnement, 2)
// Mise jour effective
// des changements sur le serveur
GglEcrit(Cnx, Agenda)
GglEcrit
Cre ou met jour un agenda.
GglListeAgenda
Rcupre la liste des agendas Google associs au compte Google spcifi.
GglRcupreAgenda
Rcupre un agenda Google et ses vnements partir de son titre ou identifiant.
GglRemplitAgenda
Remplit un agenda prcdemment rcupr : les vnements correspondant
l'agenda sont rcuprs (ventuellement en utilisant certains critres).
GglRemplitAgenda-
ParRequte
Remplit un agenda prcdemment rcupr : les vnements correspondant
l'agenda sont rcuprs partir d'une requte personnalise.
GglRequte
Effectue une requte de communication (requte HTTP) un service Google.
GglSupprime
Supprime un agenda.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 262 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 263
4.3 Utiliser le service de gestion d'album photo Google Picasa
4.3.1 Prsentation
Picasa Albums Web est une application de gestion
d'images et de photos en ligne propose par Goo-
gle.
Exemples de traitements pouvant tre raliss en
WLangage :
Rcuprer la liste des albums et tous leurs
dtails.
Rcuprer la liste des photos d'un album, les
tags d'une photo, ...
Envoyer des photos, rcuprer des photos, ...
Rcuprer et intgrer des photos de comptes
Google Picasa.
Avertissement : Avant d'utiliser une fonctionnalit
relie des services Google, nous vous conseillons
vivement de vous reporter la licence d'utilisation
de ce service. Certaines restrictions peuvent
s'appliquer. Le contenu des licences peut varier
avec le temps.
PC SOFT dgage toute responsabilit de l'usage qui
peut tre fait des fonctions d'accs natif. Il vous
appartient de vrifier que l'usage que vous faites
respecte la licence du fournisseur du service.
4.3.2 Comment le faire ?
1. Crez une variable de type gglAlbum. Cette
variable contient les caractristiques de l'album.
2. Pour chaque photo intgrer dans l'album, utili-
sez une variable de type gglPhoto pour dcrire les
caractristiques de la photo. Il est galement possi-
ble de dcrire les tags et les commentaires asso-
cis la photo.
3. Ajoutez la photo l'album (chaque photo est un
lment du tableau DonnesPhoto prsent dans la
variable gglAlbum).
4. Utilisez la fonction GglEcrit pour crer l'album
photo sur le serveur Google
Exemple :
MonAlbum est un gglAlbum
UnTag est un gglTag
UnePhoto est un gglPhoto
UnCommentaire est un gglCommentaire
// Cration de l'album
MonAlbum.Titre = "Vacances d't"
MonAlbum.Description = ...
"Vacances d't passes ...
en Allemagne en famille"
MonAlbum.Timestamp = ...
"Date et heure UTC"
MonAlbum.CommentaireActiv =
// Photo 1
UnePhoto.CommentaireActiv = ...
VraiUnePhoto.NomFichier = "Test"
UnePhoto.Image = ComplteRep(...
fRepExe()) + CST_RpImage + ...
"US.jpg"
UnePhoto.Lgende = ...
"Tours prs du fleuve inconnu."
// Ajout de tags
UnTag.Texte = "tour"
Ajoute(UnePhoto.Tag, UnTag)
UnTag.Texte = "Etats-Unis"
Ajoute(UnePhoto.Tag, UnTag)
UnTag.Texte = "By night"
Ajoute(UnePhoto.Tag, UnTag)
// Ajout de commentaires
UnCommentaire.Texte = ...
"Superbe photo !
Ajoute(UnePhoto.Commentaire, ...
UnCommentaire)...
UnCommentaire.Texte = ...
"Photo retouche !!! ...
"Ajoute(UnePhoto.Commentaire, ...
UnCommentaire)
UnCommentaire.Texte = ...
"Comment as-tu fait ?"
Ajoute(UnePhoto.Commentaire, ...
UnCommentaire)
// Ajout de la photo 1 dans l'album
Ajoute(MonAlbum.DonnesPhoto, ...
UnePhoto)
// Photo 2
UnePhoto = allouer un gglPhoto ..
// Permet de rinitialiser
UnePhoto.Image = ComplteRep(...
fRepExe()) + CST_RpImage+ ...
"puzzle.png"
Ajoute(MonAlbum.DonnesPhoto, ...
UnePhoto)
// Photo 3
UnePhoto = allouer un gglPhoto
UnePhoto.CommentaireActiv = Faux
UnePhoto.NomFichier = ...
"Poisson combattant"
UnePhoto.Image = ComplteRep( ...
fRepExe()) + CST_RpImage + ...
"combattant.jpg"
Ajoute(MonAlbum.DonnesPhoto, ...
UnePhoto)
// Photo 4
UnePhoto = allouer un gglPhoto
UnePhoto.NomFichier = "Dessin"
dDbutDessin(IMG_Map)
dCercle(20,20,50,50,VertPastel,...
RougeClair)
WLangage.book Page 263 Mardi, 23. avril 2013 1:59 13
264 Partie 6 : Communication
Pour rcuprer et modifier un album Picasa :
1. Rcuprez l'album Picasa voulu. Il est possible
par exemple d'utiliser :
la fonction GglListeAlbum pour rcuprer la liste
des albums disponibles.
la fonction GglRcupreAlbum pour rcuprer un
album spcifique. Diffrentes options permettent
d'indiquer quels seront les lments rcuprs
(vignettes, tags, couvertures, ?). Les images des
photos ne seront pas rcupres.
la fonction GglRemplitAlbum pour rcuprer les
caractristiques d'un album (par exemple un
album list par la fonction GlListeAlbum). Diff-
rentes options permettent d'indiquer quels
seront les lments rcuprs (vignettes, tags,
couvertures). Les images des photos ne seront
pas rcupres.
2. Pour rcuprer les photos de l'album, parcourez
les photos de l'album (proprit ..DonnesPhoto de
la variable gglAlbum) et utilisez la fonction GglRem-
plitPhoto. Diffrentes options permettent de spci-
fier les lments rcuprer.
3. Pour ajouter une photo dans l'album:
dcrivez la photo grce une variable gglPhoto.
ajoutez la photo l'album (chaque photo est un
lment du tableau DonnesPhoto prsent dans
la variable gglAlbum).
utilisez la fonction GglEcrit sur la variable de type
gglAlbum pour mettre jour l'album sur le ser-
veur Google.
4. Pour modifier une photo de l'album:
modifiez les caractristiques de la photo dans
l'album (grce une variable gglPhoto si nces-
saire).
utilisez la fonction GglEcrit sur la variable de type
gglPhoto correspondant la photo modifier
pour mettre jour l'album sur le serveur Google
Limitations
Il n'est pas possible d'ajouter une image au for-
mat PNG depuis une application WinDev Mobile.
Les fonctions Google Picasa utilisent les API four-
nies par Google. Certaines fonctionnalits peu-
vent fonctionner sur le service en ligne et tre
temporairement bloques via les API par Google.
4.3.3 Fonctions de gestion des albums Picasa
Les fonctions suivantes permettent de grer des
albums de photos Google Picasa :
UnePhoto.Image = ...
dSauveImageJPEG(IMG_Map,...
enMmoire)
IMG_Map = ""
Ajoute(MonAlbum.DonnesPhoto, ...
UnePhoto)
// Cration de l'album
SI PAS GglEcrit(sConnexion,...
MonAlbum) ALORS
Erreur("Erreur la cration"+...
"de l'album : " + ErreurInfo)
FIN
GglEcrit
Cre ou met jour un album ou une photo Google Picasa.
GglListealbum
Rcupre la liste des albums "Google Picasa" disponibles pour l'utilisateur.
GglListeCommentaire
Rcupre :
la liste des commentaires enregistrs pour le compte client Google.
la liste des commentaires associs une photo d'un album Google Picasa.
GglListePhoto
Liste les photos des albums Google Picasa correspondant certains critres.
GglListeTag
Rcupre :
la liste des tags associs un compte client Google.
la liste des tags associs un album Google Picasa
la liste des tags associs une photo d'un album Google Picasa
GglRcupreAlbum
Rcupre un album Google Picasa.
GglRemplitAlbum
Rcupre dans un album Google Picasa, les donnes correspondantes aux options
demandes.
GglRemplitPhoto
Rcupre dans un album Google Picasa, les donnes sur les photos correspondan-
tes aux options demandes.
GglSupprimer
Supprime un album ou une photo Google Picasa.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 264 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 265
4.4 Gestion des documents Google
4.4.1 Prsentation
Google Docs et Google Spreadsheet sont respecti-
vement le traitement de texte et le tableur en ligne
proposs par Google.
WinDev et WebDev permettent de grer directe-
ment ces documents grce plusieurs fonctions
WLangage. Il est possible de :
Uploader des documents sur le serveur Google.
Traduire des documents automatiquement lors
de lupload.
Supprimer des documents.
Lister les documents et faire une recherche dans
les documents.
Rcuprer des documents.
Avertissement : Avant d'utiliser une fonctionnalit
relie des services Google, nous vous conseillons
vivement de vous reporter la licence d'utilisation
de ce service. Certaines restrictions peuvent
s'appliquer. Le contenu des licences peut varier
avec le temps.
PC SOFT dgage toute responsabilit de l'usage qui
peut tre fait des fonctions d'accs natif. Il vous
appartient de vrifier que l'usage que vous faites
respecte la licence du fournisseur du service.
4.4.2 Comment grer les documents
Google ?
Pour grer les documents Google prsents sur un
serveur Google :
1. Crez si ncessaire un compte Google. La cra-
tion de ce compte peut tre ralise grce
l'adresse suivante : http://code.google.com/intl/fr/
apis/maps/signup.html.
Attention : l'adresse de cette page peut tre modi-
fie depuis la date de rdaction de cette page.
Le compte Google est identifi par une adresse
email et le mot de passe associ.
2. Dans le code de votre application, crez une
variable de type gglConnexion. Cette variable con-
tient les caractristiques de la connexion votre
compte Google.
3. Pour grer les documents prsents sur le ser-
veur Google, utilisez une des fonctions suivantes :
Si vous utilisez un proxy pour accder Internet, il
est ncessaire de configurer le proxy (fonction
Proxy) pour utiliser les fonctions Google.
Pour connatre la disponibilit de ces fonctions
dans les diffrents produits (WinDev, WebDev, Win-
Dev Mobile), consultez laide en ligne.
4.5 Utiliser le service de cartographie Google Maps
4.5.1 Prsentation
Le service de cartographie Google Maps est un logi-
ciel de cartographie Internet propos par Google. Il
permet d'afficher un plan en offrant de nombreu-
ses possibilits de visualisation.
Remarque : Le service de cartographie propos est
Google Static Maps.
Exemples de traitements pouvant tre raliss en
WLangage :
Rcuprer une carte, l'afficher dans un champ
d'une fentre ou d'un tat et l'envoyer par email.
Dfinir la zone de la carte et taille de l'image
rcuprer en dfinissant la latitude, la longitude,
le taux de zoom, ...
Dessiner un itinraire sur la carte (point par
point) : un chemin peut par exemple tre rcu-
pr lors d'un parcours avec un GPS qui enregis-
tre le parcours effectu.
Avertissement : Avant d'utiliser une fonctionnalit
relie des services Google, nous vous conseillons
vivement de vous reporter la licence d'utilisation
de ce service. Certaines restrictions peuvent
s'appliquer. Le contenu des licences peut varier
avec le temps.
PC SOFT dgage toute responsabilit de l'usage qui
peut tre fait des fonctions d'accs natif. Il vous
appartient de vrifier que l'usage que vous faites
respecte la licence du fournisseur du service.
GglEnvoieDocument
Envoie un document sur le
serveur Google.
GglListeDocument
Rcupre la liste des docu-
ments disponibles sur le
serveur Google pour l'utilisa-
teur en cours
GglRcupreDocu-
ment
Tlcharge un document
depuis le service Google
Docs.
GglSupprime
Supprime un document
Google du serveur
WLangage.book Page 265 Mardi, 23. avril 2013 1:59 13
266 Partie 6 : Communication
4.5.2 Comment le faire ?
Rcuprer une carte dans vos
applications ou sites
Pour intgrer une carte utilisant le service de carto-
graphie Google Maps dans vos applications ou
sites :
1. Gnrez une cl Google. Cette cl est fournie
par Google. La gnration de cette cl peut tre
ralise grce l'adresse suivante : http://
code.google.com/intl/fr/apis/maps/signup.html.
Attention : l'adresse de cette page peut tre modi-
fie depuis la date de rdaction de cette page.
2. Dans votre projet WinDev ou WebDev, crez un
champ Image. Ce champ va afficher la carte vou-
lue.
3. Dans le code permettant de rcuprer la carte,
affectez le rsultat de la fonction GglRcupre-
Carte au champ Image. Cette fonction attend les
paramtres suivants :
la cl Google
la latitude et la longitude du point central de la
carte
le zoom effectu
la taille de l'image rcuprer. La taille maximale
est 640 x 640. Cette limite est dfinie par le ser-
vice de cartographie Google Maps la date de la
rdaction de cette page.
le type de carte voulu (plan, satellite, ...).
Par dfaut, cette carte n'a pas de cadre, est au for-
mat GIF et n'a pas de marqueurs. La langue affi-
che sur la carte correspond la langue du pays
affich.
Rcuprer une carte avec
paramtrage avanc (marqueurs, ...)
Pour intgrer une carte avance utilisant le service
de cartographie Google Maps dans vos applica-
tions ou sites :
1. Gnrez une cl Google. Cette cl est fournie
par Google. La gnration de cette cl peut tre
ralise grce l'adresse suivante : http://
code.google.com/intl/fr/apis/maps/signup.html.
2. Dans votre projet WinDev ou WebDev, crez un
champ Image. Ce champ va afficher la carte vou-
lue.
3. Dans le code permettant de rcuprer la carte :
Crez une variable de type gglParamtreCarte.
Cette variable va permettre de dfinir toutes les
caractristiques de la carte : prsence d'un
cadre, affichage d'un chemin, format de l'image
reue, marqueurs, ... Indiquez uniquement les
caractristiques voulues.
Affectez le rsultat de la fonction GglRcupre-
Carte au champ Image. Dans le paramtre <Para-
mtres avancs>, indiquez le nom de la variable
gglParamtreCarte contenant les options vou-
lues.
Remarques :
En cas de dpassement des limites fixes par
Google (nombre de points d'un chemin, nombre
de marqueurs, taille de l'image, ...), aucune
image n'est renvoye. Dans ce cas, il est con-
seill de modifier les paramtres de la carte en
diminuant le nombre d'lments afficher.
Si vous utilisez un proxy pour accder Internet,
il est ncessaire de configurer le proxy (fonction
Proxy) pour utiliser les fonctions Google.
4.5.3 Autres Services
Le service Google Maps permet galement d'obte-
nir les coordonnes d'une adresse. Vous pouvez
utiliser cette fonctionnalit grce la fonction
WLangage GglAdresseVersCoordonnes.
Cette fonction renvoie la latitude et la longitude de
l'adresse indique dans une variable de type ggl-
Coordonne.
4.5.4 Fonctions de gestion des cartes Goo-
gle
Les fonctions suivantes permettent de grer des
cartes par le service de cartographie "Google
Maps" :
GglAdresseVers-
Coordones
Rcupre les coordonnes (cou-
ple latitude/longitude) d'une
adresse.
GglRcupre-
Carte
Rcupre la carte d'un lieu prcis
par le service de cartographie
Google Maps.
GglRequte
Effectue une requte de commu-
nication (requte HTTP) un ser-
vice Google.
Pour connatre la disponibilit de ces fonctions
dans les diffrents produits (WinDev, WebDev, Win-
Dev Mobile), consultez laide en ligne.
WLangage.book Page 266 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 267
5. SALESFORCE
5.1 Utiliser le service Salesforce
5.1.1 Prsentation
Salesforce est un logiciel de CRM trs populaire
travers le monde. Il est commercialis sous forme
de Saas (Software as a Service), c'est--dire que
l'application et les donnes sont hberges sur des
fermes de serveurs par Salesforce.
Mais il arrive souvent que des besoins trs particu-
liers naissent autour de logiciels de ce type. Le
dveloppement de modules complmentaires est
un atout fort dans l'utilisation et la personnalisation
avance de ce type de logiciel.
Grce aux fonctions WLangage Salesforce, vos
applications peuvent s'interfacer de manire native
avec Salesforce.
Avertissement : Avant d'utiliser une fonctionnalit
relie des services Salesforce, nous vous con-
seillons vivement de vous reporter la licence d'uti-
lisation de ce service. Certaines restrictions
peuvent s'appliquer. Le contenu des licences peut
varier avec le temps.
PC SOFT dgage toute responsabilit de l'usage qui
peut tre fait des fonctions d'accs natif. Il vous
appartient de vrifier que l'usage que vous faites
respecte la licence du fournisseur du service.
5.1.2 Comment le faire ?
Se connecter Salesforce
Avant de pouvoir utiliser une fonction WLangage
Salesforce, il est ncessaire de se connecter la
plate-forme Salesforce. Cette connexion est rali-
se grce la fonction SFConnecte et une varia-
ble de type sfConnexion.
Utiliser les fonctionnalits Salesforce.
Les fonctions WLangage Salesforce permettent de :
lire, modifier et ajouter des enregistrements dans
les fichiers des bases de donnes Salesforce. Ces
fichiers peuvent tre des fichiers pr-dfinis ou des
fichiers personnaliss.
Utiliser les fonctionnalits Salesforce.
Les fonctions WLangage Salesforce permettent de :
lire, modifier et ajouter des enregistrements dans
les fichiers des bases de donnes Salesforce.
Ces fichiers peuvent tre des fichiers prdfinis
ou des fichiers personnaliss.
fusionner des enregistrements.
Convertir des pistes ou "Lead" en compte, con-
tact ou opportunit.
demander l'excution d'un traitement spcifique.
Il est possible de soumettre des enregistrements
au processus d'approbation ou d'effectuer une
action d'approbation.
5.2 Fonctions Salesforce
Les fonctions de gestion des bases de donnes Salesforce sont les suivantes :
SFAjoute
Cre un enregistrement dans un fichier d'une base de donnes Salesforce.
SFAvanceRequte
Continue d'excuter une requte SOQL (Salesforce Object Query Language) sur les
enregistrements d'une base de donnes Salesforce
SFConnecte
Permet de s'authentifier auprs de la plate-forme Salesforce.
SFConvertitPiste
Convertit des pistes (galement appeles LEAD). Ces pistes peuvent tre converties
en compte, en contact ou en opportunit.
SFDconnecte
Dconnecte la plate-forme Salesforce, la session Salesforce en cours ou les ses-
sions Salesforce spcifies.
SFExcuteRequte
Excute une requte SOQL (Salesforce Object Query Language) sur une base de
donnes Salesforce.
WLangage.book Page 267 Mardi, 23. avril 2013 1:59 13
268 Partie 6 : Communication
SFExcuteTraiement
Demande l'excution d'un traitement spcifique. Il est possible de soumettre des
enregistrements au processus d'approbation ou d'effectuer une action d'approba-
tion.
SFFusionne
Fusionne des enregistrements Salesforce (appels galement objets Salesforce).
SFLit
Rcupre des enregistrements Salesforce partir de leurs identifiants.
SFModifie
Modifie les enregistrements d'un fichier dfini dans Salesforce.
SFRecherche
Effectue une recherche parmi les enregistrements d'une base de donnes Sales-
force. La recherche est effectue grce au langage SOSL (Salesforce Object Search
Language).
SFRechercheModifi
Recherche et rcupre les enregistrements (objets Salesforce) modifis pendant la
priode spcifie.
SFRechercheSup-
prim
Recherche et rcupre les enregistrements (objets Salesforce) supprims pendant
la priode spcifie.
SFRestaure
Restaure des enregistrements Salesforce prcdemment supprims.
SFSupprime
Supprime des enregistrements d'une base de donnes Salesforce.
SFVideCorbeille
Vide les enregistrements spcifis de la corbeille Salesforce.
WLangage.book Page 268 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 269
6. FLUX RSS
6.1 Prsentation
WinDev, WebDev et WinDev Mobile permettent de
produire et/ou de consommer un flux RSS (Rapid
Simple Syndication).
Un flux RSS permet de mettre disposition (pro-
duire) un flux de donnes dans un format standard.
Ce flux de donnes pourra tre lu (consomm) par
une application.
Un lecteur de flux RSS permet d'afficher un ou plu-
sieurs flux RSS. WinDev est livr en standard avec
un exemple de lecteur de flux RSS : WD Lecteur
RSS.
6.2 Comment le faire ?
Pour lire un flux RSS :
1. Dclarez une variable de type rssFlux. Cette
variable contiendra toutes les informations concer-
nant le flux RSS manipuler.
2. Chargez le flux RSS grce la fonction rssInitia-
lise. La variable de type flux RSS est initialise avec
le flux spcifi.
3. Vrifiez que le canal du flux est valide et le char-
ger. Par exemple :
4. Le contenu du flux RSS peut tre directement
affich dans une table lie par databinding la
variable de type rssCanal contenant les entres du
flux (dans notre exemple, MonCanal.Entre).
Remarque : Il est conseill d'utiliser :
soit des boucles de type POUR TOUT par exemple
pour lire les entres d'un canal associ un flux.
soit des boucles manuelles utilisant la proprit
..Occurrence (utilisable sur le type rssCanal pour
connatre le nombre de canaux et sur le type
rssEntre pour connatre le nombre d'entres).
Databinding et flux RSS
Le Databinding est disponible sur les variables de
type rssXXX ce qui permet d'afficher des informa-
tions RSS sans programmation.
6.3 Fonctions de gestion des flux RSS
Les fonctions de gestion des flux RSS sont les
suivantes :
MonRSS est un rssFlux
MonRSS = rssInitialise(...
"http://blogs.webdev.info/
rss.awp?blog=supporttechnique",...
depuisURL)
SI MonRSS.Canal..Occurrence >= 1
ALORS
MonCanal est un rssCanal
MonCanal = MonFluxRSS.Canal[1]
...
rssAffiche
Construit un flux RSS et affiche directement le rsultat sur le navigateur de l'inter-
naute.
rssConstruitChane
Construit le flux RSS et renvoie le rsultat au format XML dans une chane de caract-
res.
rssInitialise
Charge en mmoire un flux RSS.
rssSauve
Construit le flux RSS et sauvegarde le flux RSS dans un fichier XML.
WLangage.book Page 269 Mardi, 23. avril 2013 1:59 13
270 Partie 6 : Communication
7. SERVEUR LDAP
7.1 Prsentation
Le protocole LDAP (Lightweight Directory Access
Protocol) est de plus en plus utilis dans les entre-
prises.
Ce protocole permet de grer des annuaires en
rseau. Ce protocole dfinit les oprations daccs
et de recherche dans les donnes, ce qui permet
de rendre compatibles des systmes qui ne le
seraient pas forcment.
Selon les informations stockes dans lannuaire
LDAP, vous pouvez par exemple utiliser un annuaire
LDAP pour identifier un utilisateur lors de sa con-
nexion une application, vrifier les droits de lutili-
sateur sur lapplication, ...Fonctions de gestion dun
serveur LDAP
Les fonctions LDAP disponibles sont les suivantes :
LDAPAjouteAttribut Ajoute un attribut ou ajoute une nouvelle valeur un attribut existant.
LDAPConnecte Permet de se connecter un serveur LDAP
LDAPDbutAjout Initialise l'ajout d'un nouvel objet dans un serveur LDAP.
LDAPDbutModification Initialise la modification d'un objet existant dans un serveur LDAP.
LDAPDconnecte Permet de se dconnecter d'un serveur LDAP.
LDAPListeAttribut Liste les attributs d'un objet d'un serveur LDAP.
LDAPListeFils Liste les fils d'un objet d'un serveur LDAP.
LDAPMode Modifie le mode de fonctionnement d'une session LDAP
LDAPNbValeur Renvoie le nombre de valeurs d'un attribut.
LDAPRAZ R-initialise la structure LDAPSession utilise par la fonction LDAPConnecte.
LDAPRecherche Lance une recherche dans un serveur LDAP. La recherche effectue est tou-
jours rcursive.
LDAPRemplaceAttribut Remplace toutes les valeurs d'un attribut par une valeur donne.
LDAPRemplaceValeurAttri-
but
Remplace une valeur donne d'un attribut par une nouvelle valeur donne.
LDAPRenommeAttribut Renomme un attribut. Lors de ce renommage, la valeur des attributs est con-
serve.
LDAPSupprime Supprime un objet du serveur LDAP. Pour des raisons de scurit, l'objet est
supprim uniquement s'il n'a pas de fils.
LDAPSupprimeAttribut Supprime un attribut et toutes ses valeurs.
LDAPSupprimeValeurAttribut Supprime une valeur d'un attribut spcifi.
LDAPValeur Renvoie la valeur correspondant l'indice pass en paramtre pour l'attribut
spcifi.
LDAPValideAjout Valide l'ajout d'un nouvel objet dans un serveur LDAP.
LDAPValideModification Valide la modification d'un objet existant dans un serveur LDAP.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
WLangage.book Page 270 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 271
8. WINDEV ET LA TLPHONIE
8.1 Prsentation
WinDev permet de grer simplement les appels
tlphoniques entrants et sortants grce aux fonc-
tions WLangage de tlphonie. Ces fonctions per-
mettent par exemple de grer une bote vocale, un
rpondeur, ... directement dans une application
WinDev.
Configuration ncessaire WinDev
Pour pouvoir utiliser les fonctionnalits de la tl-
phonie, il est ncessaire de possder :
un modem.
Pour enregistrer et jouer des enregistrements, ce
modem doit grer la voix.
Pour avoir les caractristiques de la personne qui
appelle, le modem doit possder l'option "Notifica-
tion du numro appelant" (caller Id).
le protocole Tapi 2.0. Cette technologie est utili-
sable sur tous les systmes, cependant, il est
ncessaire :
si le systme utilis est Windows NT4, d'instal-
ler le service pack 4 minimum
si le systme est Windows 95, de mettre jour
le systme (mise jour disponible l'adresse
ftp://ftp.microsoft.com/developr/tapi/
tapi2195.zip).
Adresse valide lors de la ralisation de cette
documentation.
Vrifier la configuration
Pour vrifier la configuration de votre poste, il est
conseill de lancer WDTelDiagno.exe livr avec
WinDev. Cet outil permet de lister les lignes TAPI
disponibles, et prcise la ligne qui sera utilise par
dfaut lors de l'utilisation des fonctions de tlpho-
nie. Il est ainsi possible de dtecter rapidement les
conflits pouvant exister entre les diffrentes lignes
TAPI.
Remarque : Les lignes TAPI sont diffrentes des
lignes tlphoniques classiques disponibles.
Avant d'utiliser les fonctions de tlphonie, il est
possible de dterminer par programmation le pri-
phrique TAPI sur lequel la dtection d'appels ou la
composition d'appels doit tre effectue. Utilisez
les fonctions :
Configuration ncessaire WinDev Mobile
Pour pouvoir utiliser les fonctions de tlphonie,
l'application doit tre installe :
sur un Pocket PC disposant d'un accs tlphoni-
que (type GSM).
et/ou sur un smartphone.
8.2 Grer les appels entrants
La gestion des appels entrants est ralise dans un
"Thread" spcifique. Lorsquun appel entrant est
dtect, la procdure associe au thread est excu-
te. C'est dans cette procdure que la gestion de
l'appel est ralise.
8.2.1 Les diffrentes tapes
Pour grer les appels entrants dans une applica-
tion WinDev :
1. Dterminez si ncessaire le priphrique TAPI
sur lequel la dtection d'appels doit tre effectue.
Utilisez les fonctions :
WD WDMobile
telCapacit Permet de connatre les possibili-
ts d'un priphrique TAPI
telListePriph-
rique
Permet de connatre la liste des
priphriques compatibles TAPI 2
telPriphrique Permet de slectionner le pri-
phrique utiliser dans les fonc-
tions TAPI.
telCapacit Permet de connatre les possibili-
ts d'un priphrique TAPI
telListePriph-
rique
Permet de connatre la liste des
priphriques compatibles TAPI 2
telPriphrique Permet de slectionner le pri-
phrique utiliser dans les fonc-
tions TAPI.
WLangage.book Page 271 Mardi, 23. avril 2013 1:59 13
272 Partie 6 : Communication
2. Dmarrez la dtection d'appels entrants grce
la fonction telDmarreDtectionAppel. Cette fonc-
tion excute une procdure WLangage spcifique.
Cette procdure sera automatiquement excute
lorsquun appel entrant sera dtect.
3. Dans cette procdure, vous pouvez :
connatre l'tat de l'appel grce aux constantes
suivantes :
grer compltement l'appel grce aux fonctions
suivantes :
obtenir les caractristiques de l'appel entrant :
effectuer des oprations spcifiques :
Attention :
Cette procdure WLangage tant excute dans un
thread, toutes les contraintes des threads doivent
tre respectes (ouverture de fentre impossible,
pas de gestion des timers, pas de gestion des v-
nements, ...). Pour plus de dtails, consultez laide
en ligne.
Il est conseill de limiter les traitements raliss
dans cette procdure. En effet, pendant la dure
de l'appel, la dtection d'autres appels (ainsi que
tous les vnements de tlphonie) est gele. Si
des traitements longs doivent tre raliss, il est
conseill de traiter l'appel dans le thread principal
de l'application (voir exemple ci-dessous).
4. Pour terminer la session de dtection d'appels
entrants, utilisez la fonction TelFinDtectionAppel.
8.2.2 Exemple
Cet exemple permet de grer les appels entrants
dans le thread principal.
Code de dclaration des globales de la fentre
ralisant la dtection d'appels. Dans ce code
sont dclars les diffrents vnements permet-
tant de grer les appels dans le thread principal
de l'application.
telLigneOccupe La ligne est actuellement
occupe
telLigneDcroche La ligne est connecte
telLigneNumrote Numrotation en cours
telLigneTonalit La ligne reoit la tonalit
telLigneRaccroche Le correspondant a raccro-
ch
telLigneAttendR-
ponse
L'appel est compos : recher-
che du correspondant
telLigneSonnerie Sonnerie en cours chez le
correspondant
telNouvelAppel Nouvel appel dtect en
attente de rponse ou de
rejet.
telInformationAppel Les informations supplmen-
taires (prsentation du
numro) sont disponibles.
Ces informations ne sont
gnralement disponibles
qu'aprs la premire sonne-
rie.
telAppelDbut Renvoie la date et heure du
dbut d'appel
telAppelEstTermin Permet de savoir si l'appel
est termin
telAppelFin Renvoie la date et heure de
la fin de l'appel
telDureAppel Renvoie la dure de l'appel
telNumroAppelant Renvoie le numro de tl-
phone appelant
telArrte Force l'arrt de la lecture d'un
message pr-enregistr (fonc-
tion TelJoue)
telEnregistre Enregistre la communication
en cours sous forme d'un
fichier .WAV.
telJoue Joue un fichier sonore (.WAV)
pour la ligne spcifie. Il est
par exemple possible de jouer
ainsi le message du rpon-
deur.
telNumrote Permet de simuler l'utilisation
des touches du clavier tl-
phonique.
telRpondAppel Rpond un appel entrant
(pralablement dtect)
telToucheEnfonce Permet de connatre l'histori-
que des touches enfonces
sur le clavier tlphonique.
GLOBAL
gnIdEvenement est un entier
//Evnement pour grer
//les appels entrant en popup
WLangage.book Page 272 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 273
Code d'initialisation de la fentre : ce code per-
met de dmarrer la procdure de dtection
d'appels.
Procdure de dtection d'appels : Cette proc-
dure permet de dtecter les appels entrants.
Pour chaque appel entrant, les caractristiques
de l'appel sont transmises au thread principal
grce la fonction PostMessage.
Attention : Les traitements raliss dans cette
procdure sont appels partir d'un thread. La
gestion de l'affichage doit tre ralise partir
du thread principal (d'o l'utilisation de PostMes-
sage).
Pour dboguer ce type de traitement, vous devez
utiliser la fonction Trace.
8.3 Grer les appels sortants
8.3.1 Les diffrentes tapes
Pour grer les appels sortants dans une application
WinDev :
1. Dterminez si ncessaire le priphrique TAPI
sur lequel la composition des appels doit tre effec-
tue. Utilisez les fonctions :
2. Composez le numro de tlphone l'aide du
modem (fonction telCompose).
3. Cette fonction appelle une procdure WLangage
spcifique permettant de grer la progression de
SI Evnement("Appeltect","*.*",...
"AppelTel")=0 ALORS
Erreur("Impossible de grer "+...
"la popup de dtection d'appel",...
ErreurInfo())
FIN
SI Evnement("FinAppelDetect",...
"*.*","AppelTelFin")=0
ALORS
Erreur("Impossible de grer "+...
"la popup de dtection d'appel",...
ErreurInfo())
FIN
SI Evnement(...
"IdentifiantAppelDetect",...
"*.*","AppelTelInfo")=0
ALORS
Erreur("Impossible de grer "+...
"la popup de dtection d'appel",...
ErreurInfo())
FIN
// Service de dtection des appels
SI telDmarreDtectionAppel(...
"AppelEntrant", ...
telOptionTypeFax,...
"DetectionAppel") ALORS
// Le service de dtection des
// appels a dmarr
Message("Dtection des"+ ...
"appels "+" activs")
SINON
// Le service de dtection des
// appels n'a pas dmarr
Erreur("Impossible de "+...
"dmarrer"+...
"la dtection des appels"+RC+...
"Dtail de l'erreur :"+RC+...
ErreurInfo(errMessage))
FIN
PROCEDURE DetectionAppel(...
nIdService,nIdAppel,nStatut)
// Dtection des appels entrants
SELON nStatut
// Dtection d'un nouvel appel :
// Note : On ne disposera
// d'informations supplmentaires
// qu'aprs au moins une sonnerie
CAS telNouvelAppel :
// Signale l'arrive d'un nouvel
// appel la fentre principale
// pour ouvrir une Popup
PostMessage(Handle(Fen_Appel),...
"AppelTel",nIdAppel,nStatut)
// Informations sur l'appel
CAS telInformationAppel :
// Signale l'arrive
// d'un nouvel appel
// la fentre principale
// pour ouvrir une Popup
PostMessage(Handle(Fen_Appel),...
"AppelTelInfo",nIdAppel,nStatut)
// La ligne a t raccroche
CAS telLigneRaccroche:
// Signale l'arrive d'un
// nouvel appel la fentre
// principale pour ouvrir une Popup
PostMessage(Handle(Fen_Appel),...
"AppelTelFin",nIdAppel,nStatut)
FIN
telCapacit Permet de connatre les possibili-
ts d'un priphrique TAPI
telListePriph-
rique
Permet de connatre la liste des
priphriques compatibles TAPI 2
telPriphrique Permet de slectionner le pri-
phrique utiliser dans les fonc-
tions TAPI.
WLangage.book Page 273 Mardi, 23. avril 2013 1:59 13
274 Partie 6 : Communication
l'appel. Dans cette procdure, il est possible de
connatre l'tat de la ligne grce aux variables :
4. Dcrochez le combin du tlphone pour com-
muniquer.
5. Pendant la communication, il est possible d'utili-
ser les fonctions WLangage permettant de manipu-
ler l'appel (voir ci-dessous). Il n'est pas ncessaire
de prciser d'identifiant d'appel car l'appel trait
sera l'appel en cours c'est--dire l'appel sortant.
6. A la fin de l'appel, fermez la ligne avec la fonction
TelRaccroche.
7. Raccrochez le combin tlphonique.
8.3.2 Manipuler un appel sortant
Les manipulations pouvant tre ralises sur les
appels sortants sont les suivantes :
obtenir les caractristiques de l'appel sortant :
effectuer des oprations spcifiques :
8.4 Fonctions de tlphonie
Ces fonctions permettent de manipuler facilement toutes les fonctions de tlphonie d'un modem depuis
une application WinDev :
telLigneOccupe La ligne est actuellement
occupe
telLigneDcroche La ligne est connecte
telLigneNumrote Numrotation en cours
telLigneTonalit La ligne reoit la tonalit
telLigneRaccroche Le correspondant a raccro-
ch
telLigneAttendR-
ponse
L'appel est compos : recher-
che du correspondant
telLigneSonnerie Sonnerie en cours chez le
correspondant
telAppelDbut Renvoie la date et heure du
dbut d'appel
telAppelEstTermin Permet de savoir si l'appel
est termin
telAppelEstOccup Permet de savoir si le
numro appel est occup
telAppelFin Renvoie la date et heure de
la fin de l'appel
telDureAppel Renvoie la dure de l'appel
telAppelPasDeR-
ponse
Permet de savoir si une
rponse a t donne
l'appel
telNumroAppelant Renvoie le numro de tl-
phone appelant
telNumroAppel Renvoie le numro de tl-
phone appel
telArrte Force l'arrt de la lecture d'un
message pr-enregistr (fonc-
tion telJoue)
telEnregistre Enregistre la communication
en cours sous forme d'un
fichier .WAV.
telJoue Joue un fichier sonore (.WAV)
pour la ligne spcifie.
telNumrote Permet de simuler l'utilisation
des touches du clavier tl-
phonique.
telToucheEnfonce Permet de connatre l'histori-
que des touches enfonces
sur le clavier tlphonique.
telAppelDbut Renvoie la date et heure du dbut d'appel
telAppelEnAttente Permet de savoir si l'appel est en attente
telAppelEstOccup Permet de savoir si le numro appel est occup
telAppelEstTermin Permet de savoir si l'appel est termin
telAppelFin Renvoie la date et heure de la fin de l'appel
telAppelPasDeRponse Permet de savoir si une rponse a t donne l'appel
telArrte Force l'arrt de la lecture d'un message pr-enregistr (fonction telJoue)
telCapacit Permet de connatre les capacits du priphrique TAPI slectionn
telCompose Compose un numro de tlphone pour une prise de ligne vocale.
WLangage.book Page 274 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 275
telComposeLigne Compose un numro de tlphone pour une prise de ligne vocale, en choisis-
sant le priphrique utiliser
telDmarreDtectionAppel Dmarre un service de dtection d'appel
TelDialerAffiche Ouvre lapplication de tlphonie (dialer) par dfaut et affiche le numro spci-
fi. Aucun appel nest dclench
TelDialerCompose Ouvre lapplication de tlphonie (dialer) par dfaut du tlphone et compose le
numro spcifi
telDureAppel Renvoie la dure de l'appel
telEnregistre Enregistre la communication en cours sous forme d'un fichier .WAV.
telErreur Indique si la dernire fonction Telxxx a renvoy une erreur dans le module TAPI
telExcuteTransfert Effectue un transfert d'appel avec possibilit de reprise de l'appel
telFinDtectionAppel Termine la dtection d'appel spcifie.
telJoue Joue un fichier sonore (.WAV) pour la ligne spcifie. Il est par exemple possible
de jouer ainsi le message du rpondeur.
telListePriphrique Liste les priphriques TAPI installs sur le poste
telMetAppelEnAttente Met un appel en attente
telNumroAppelant Renvoie le numro de tlphone appelant
telNumroAppel Renvoie le numro de tlphone appel
telNumrote Permet de simuler l'utilisation des touches du clavier tlphonique.
telOrigine Permet de connatre l'origine d'un appel
telPriphrique Slectionne le priphrique TAPI utiliser par dfaut
telRaccroche Raccroche une ligne tlphonique ouverte avec la fonction telCompose
telRpondAppel Rpond un appel entrant (pralablement dtect)
telReprendAppelEnAttente Reprend un appel en attente
telToucheEnfonce Permet de connatre la touche actuellement enfonce.
telTransfertDirect Effectue un transfert d'appel "en aveugle"
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
WLangage.book Page 275 Mardi, 23. avril 2013 1:59 13
276 Partie 6 : Communication
9. GESTION DES SMS
9.1 Prsentation
WinDev Mobile permet de :
envoyer simplement des SMS.
parcourir les SMS reus.
supprimer un ou plusieurs SMS reus.
Un SMS (Short Message Service, appel galement
Textos, Mini messages, Tlmessages, ...) corres-
pond un message texte (160 caractres maxi-
mum) envoy sur un tlphone portable.
Configuration ncessaire
Pour pouvoir utiliser les fonctions SMS, l'applica-
tion doit tre installe :
sur un Pocket PC disposant d'un accs tlphoni-
que (type GSM).
et/ou sur un smartphone.
WinDev pour Pocket PC permet uniquement
d'envoyer des SMS. La rception des SMS se fait de
manire standard par l'appareil utilis (Pocket PC,
smartphone, tlphone portable, ...).
9.2 La structure SMS
9.2.1 Prsentation
La structure SMS est une structure prdfinie du
WLangage (aucune dclaration n'est ncessaire).
Cette structure permet de crer un SMS.
Remarque : Pour remettre zro toutes les varia-
bles de la structure SMS, utilisez la fonction SMS-
RAZ.
9.2.2 Les diffrentes variables de la struc-
ture SMS
La structure est compose des membres suivants :
WDMobile
DateR-
ception
Date et heure de rception du
SMS
Remarque : Sur Pocket PC 2002,
ce membre contient la date et
lheure de lecture du SMS.
Essai Boolen (Vrai par dfaut)
Indique si le message doit tre
rgulirement envoy en cas de
non-rception.
Indice Entier correspondant lindice du
SMS reu.
Message Chane de caractres contenant le
message envoyer ou reu (160
caractres maximum).
Numro Chane de caractres contenant le
numro du correspondant ou de
lexpditeur.
Prfixe-
National
Chane de caractres contenant le
prfixe national (33 par dfaut cor-
respondant au prfixe pour la
France).
Si le numro du correspondant
commence par "0" et qu'un prfixe
national est spcifi, le "0" sera
remplac par ce prfixe.
Si le prfixe national n'est pas sp-
cifi, utilisez directement un
numro au format international.
Par exemple, 33612345678.
TypeNu-
mro
Indique le type de numro utilis :
smsNumroInternational
(valeur par dfaut) : ces num-
ros sont accessibles de par-
tout et sont de la forme
06.xx.xx.xx.xx.
smsNumroNational : numro
court, accessible uniquement
depuis le territoire national.
WLangage.book Page 276 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 277
9.2.3 Lecture et suppression de SMS sur un
Smartphone
Pour lire et/ou supprimer les SMS sur un Smart-
phone (fonctions SMSNbMessage, SMSPremier,
SMSSuivant ou SMSSupprime), l'excutable de
l'application WinDev Mobile et son framework
(librairies WinDev Mobile) doivent tre signs lec-
troniquement. Pour raliser cette opration, il est
ncessaire d'acqurir un certificat.
Remarque : L'utilisation des fonctions SMSEnvoie
et SMSRaz ne ncessite aucune signature spcifi-
que.
9.2.4 Diffrents types de numros
Deux types de numros peuvent tre utiliss pour
envoyer des SMS :
Les numros courts (galement appels "Natio-
naux"). Ces numros sont accessibles unique-
ment depuis le territoire national.
Les numros classiques (galement appels
"Internationaux", de la forme 06.xx.xx.xx.xx). Ces
numros sont accessibles depuis n'importe quel
endroit.
9.2.5 Fonctionnement diffrent en mode GO
et en utilisation relle
En mode GO (simulation sur le poste de dveloppe-
ment), une erreur WLangage est gnre lors de
l'utilisation d'une des variables de la structure
SMS.
9.3 Fonctions WLangage
Ces fonctions permettent d'envoyer facilement des
SMS :
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
SMSEnvoie Envoie un SMS
SMSNbMessage Renvoie le nombre de SMS reus ou le nombre maximal de SMS pouvant tre reus
SMSPremier Positionne sur le premier SMS reu
SMSRAZ R-initialise toutes les variables de la structure SMS
SMSSuivant Positionne sur le suivant SMS reu
SMSSupprime Supprime le SMS spcifi
WLangage.book Page 277 Mardi, 23. avril 2013 1:59 13
278 Partie 6 : Communication
10. ENVOYER DES FAX
10.1 Prsentation
De nombreuses fonctions WLangage permettent
d'envoyer des fax par l'intermdiaire du serveur de
fax systme disponible sous Windows XP et Win-
dows 2000.
Comment envoyer des fax ?
Pour envoyer des fax depuis une application ou un
site, il faut :
1. Configurer le poste partir duquel les fax doi-
vent tre envoys.
2. Crer l'application ou le site d'envoi de fax.
3. Configurer si ncessaire par programmation les
diffrentes options de configuration du serveur de
fax.
Remarques :
La fonction iAperu / iDestination permet gale-
ment denvoyer une impression sur un fax.
Sous Windows Vista, la gestion des fax est dispo-
nible uniquement avec Windows Vista Profession-
nel et Windows Vista Edition Intgrale.
10.2 Configurer le poste "serveur de fax"
10.2.1 Configuration du poste en cours
Les lments ncessaires pour envoyer un fax :
Windows XP ou 2000,
un modem configur sur le poste,
le service de fax standard Windows doit tre
dmarr.
1. Vrifier la configuration du modem
Ouvrez le panneau de configuration de Windows
(option "Dmarrer .. Paramtres .. Panneau de con-
figuration") et slectionnez l'option "Modem et tl-
phonie".
2. Installer un serveur de fax standard
Windows version XP et 2000 est livr avec un ser-
veur de fax.
Pour installer ce serveur de fax, utilisez l'option
"Ajout / Suppression de programmes" du panneau
de configuration de Windows (option "Dmarrer ..
Paramtres .. Panneau de configuration").
3. Vrifier que le service de fax standard de Win-
dows est en mode rception.
10.2.2 Configuration du serveur de fax sous
Windows 2000
Sous Windows 2000, le serveur de fax est appel
"Tlcopieur". Pour configurer le serveur de fax :
1. Ouvrez le panneau de configuration de Windows
(option "Dmarrer .. Paramtre .. Panneau de confi-
guration").
2. Double-cliquez sur l'option "Tlcopieur". Si cette
option n'apparat pas, installez le serveur de fax de
Windows 2000 (voir ci-dessus).
3. Slectionnez l'onglet "Options avances" et cli-
quez sur le bouton "Ouvrir la console de gestion du
service de tlcopie".
4. L'option "Priphrique" liste les modems et fax
installs sur le poste.
5. Double-cliquez sur votre modem/fax.
6. Dans l'onglet "Gnral", activez l'envoi de fax
pour pouvoir envoyer des fax depuis une applica-
tion ou un site.
7. Validez.
Remarque : Pour crer un fichier de couverture
(.Cov), utilisez l'onglet "Page de garde".
10.2.3 Configuration du serveur de fax sous
Windows XP
Pour configurer le serveur de fax :
1. Slectionnez l'option "Dmarrer .. Impression et
Fax".
2. Double-cliquez sur l'option "Fax". Le moniteur de
fax s'ouvre.
3. Slectionnez l'option "Outils .. Configuration".
4. Validez les paramtres par dfaut, jusqu'au plan
"Configuration de rception et d'envoi des fax".
5. Activez l'envoi de fax pour pouvoir envoyer des
fax depuis une application ou un site.
6. Validez. Le serveur de fax est dmarr.
Remarque : Pour crer un fichier de couverture
(.Cov), utilisez l'option "Outil .. Page de couverture
personnelle".
WD WebDev
WB Attention : Les manipulations suivan-
tes ne s'appliquent que sur le poste ser-
veur utilis pour envoyer des fax (et non
sur les postes des navigateurs).
WLangage.book Page 278 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 279
10.3 Application ou site d'envoi de fax
10.3.1 Envoyer un fax depuis une application
ou un site
Pour envoyer un fax depuis une application ou un
site, il faut :
1. Prparer le fax, c'est--dire le fichier qui va tre
envoy. Il est possible galement d'associer une
premire page spcifique au fax (appele "Couver-
ture"). Cette premire page est un fichier de type
".Cov" et peut tre cre partir du serveur de fax.
2. Utiliser la fonction FaxConnecte. Cette fonction
permet de connecter l'application ou le site au ser-
veur de fax install sur le poste en cours.
3. Envoyer le fax :
soit avec la fonction FaxEnvoie. Lors de cet envoi,
il est possible de prciser le nom d'une proc-
dure WLangage. Cette procdure sera appele
chaque modification de l'tat du fax dans le ser-
veur de fax. L'tat du fax peut tre connu par la
fonction FaxEtat.
soit avec la fonction iAperu / iDestination et les
fonctions d'impression. Cette solution permet
d'imprimer directement un tat ralis avec l'di-
teur d'tats. Dans ce cas, il est possible de don-
ner un nom au fax envoy. L'tat du fax pourra
ensuite tre connu avec la fonction FaxEtat.
Remarque : Il n'est possible d'envoyer qu'un seul
fax la fois. Il est cependant possible d'excuter
plusieurs fonctions FaxEnvoie la suite : les diff-
rents fax seront mis dans la chane d'attente
denvoi des fax. La procdure WLangage combine
la fonction FaxEtat permettra de connatre le fax
en cours de traitement.
4. Lorsque le ou les diffrents fax sont envoys, il
suffit de dconnecter l'application ou le site du ser-
veur de fax avec la fonction FaxDconnecte.
10.3.2 Envoyer un fax cr avec lditeur
dtats
Pour envoyer un fax cr avec l'diteur d'tats :
Il est possible :
soit d'utiliser uniquement la fonction iAperu /
iDestination (syntaxe 3). L'tat imprim par la
fonction iImprimeEtat sera directement envoy
au numro de fax spcifi. Dans ce cas, aucune
gestion de suivi du fax n'est possible.
soit d'utiliser les fonctions Fax et la fonction
iAperu / iDestination (syntaxe 4). La fonction
iAperu / iDestination effectue si ncessaire une
connexion au serveur de fax et renvoie l'identi-
fiant de cette connexion. Cet identifiant peut tre
utilis avec les fonctions Fax pour suivre l'volu-
tion de l'envoi du fax.
10.4 Configurer le serveur de fax par programmation
10.4.1 Options du serveur de fax
Le serveur de fax standard de Windows propose
plusieurs options, configurables directement
depuis l'interface du serveur de fax. Ces diffrentes
options peuvent tre configures directement par
programmation, en manipulant la base de regis-
tres.
Il est possible de paramtrer et d'obtenir :
des informations concernant l'envoi de fax (Win-
dows 2000). La cl de registre correspondante
est HKEY_LOCAL_MACHINE\ SOFTWARE\
Microsoft\Fax
// Envoie l'tat "FactureCli"
// par fax
iDestination(iFax,"0006050402")
iImprimeEtat(FactureCli)
// Envoie l'tat "FactureCli"
// par fax
IdConnect est un entier
IdConnect = FaxConnecte()
IdConnect = iDestination(...
iFax,"0006050402",...
"MonFax",IdConnect)
...
iImprimeEtat(FactureCli)
Nombre d'essais Retries
Nombre de minutes entre
deux tentatives
Retry Delay
Nombre de jours avant
suppression des tlco-
pies non envoyes
Dirty Days
Archiver les tlcopies
sortantes
ArchiveOutgoingFax
Rpertoire des tlcopies
sortantes
ArchiveDirectory
WLangage.book Page 279 Mardi, 23. avril 2013 1:59 13
280 Partie 6 : Communication
des informations concernant l'expditeur du fax
(Windows 2000) :
La cl de registres correspondante est
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\F
ax\UserInfo :
10.4.2 Astuces
Pour raliser un serveur de fax et grer les rexp-
ditions de fax, il est prfrable d'indiquer au niveau
du gestionnaire de fax les options suivantes :
Pas de re-tentative d'expdition des fax :
RegistreEcrit("HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\Fax","Retries",0)
Dlai de 0 mn entre deux tentatives :
RegistreEcrit("HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\Fax","Retry Delay",0)
0 jour de conservation des fax non envoys :
RegistreEcrit("HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\Fax","Dirty Days",0)
Il est possible de considrer qu'un fax pass par
l'tat FaxEtatInit OU FaxEtatAppel et qui revient
dans l'tat FaxEtatInactif est un fax qui a tent
d'tre expdi une fois. Ce fax peut ensuite tre
rexpdi (il ne sera pas rexpdi automatique-
ment car l'option "Pas de re-tentative d'expdition
des fax" est vrai).
10.5 Fonctions de gestion des fax
Ces fonctions permettent d'envoyer des fax depuis une application ou un site :
Remarque : La fonction iAperu / iDestination permet galement denvoyer une impression sur un fax.
Impression de la ban-
nire du haut
Branding
Interdire les pages de
garde personnel
ServerCoverPageOnly
Heure de dbut de la
priode de tarif rduit
StartCheapTime
Heure de fin de la priode
de tarif rduit
StopCheapTime
Numro de fax expditeur FaxNumber
Adresse Messagerie Mailbox
Socit Company
Titre Title
Nom complet FullName
Service Department
Adresse professionnelle Office
Tlphone personnel HomePhone
Tlphone professionnel OfficePhone
Affiche le moniteur d'tat
en envoi ET rception
VisualNotification
Moniteur d'tat toujours
Dessus
AlwaysOnTop
Avertissement sonore SoundNotification
Code de facturation BillingCode
FaxBoteEnvoi numre les fax en attente ou en cours d'envoi
FaxBoteRception numre les fax en attente ou en cours de rception
FaxConnecte Ouvre une connexion un serveur de fax
FaxDeconnecte Ferme la connexion un serveur de fax
FaxEnvoie Envoie un fax
FaxEtat Renvoie l'tat du fax spcifi
FaxRinitialise Redmarre un fax dans la file d'attente
FaxReprend R-active un fax mis en pause dans la file d'attente
FaxSupprime Supprime un fax de la file d'attente et annule son envoi
FaxSuspend Met en pause un fax dans la file d'attente
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 280 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 281
11. RCUPRER DES PAGES HTML
11.1 Prsentation
Il est possible de rcuprer des pages au format
HTML. Pour rcuprer des pages HTML, il suffit de :
1. Excuter une requte sur le serveur Web grce
la fonction HTTPRequte.
Cette requte peut tre de type GET ou POST.
Cette requte peut tre excute sur une URL clas-
sique ou sur une URL protge.
2. Rcuprer le rsultat de la requte avec la fonc-
tion HTTPDonneRsultat.
Grce ces fonctions, il est possible de rcuprer :
le contenu complet dune page HTML,
des fichiers de donnes,
des images, ...
11.2 Fonctions HTTP
Les fonctions permettant de grer les requtes HTTP sont les suivantes :
HTTPAjouteFichier Ajoute un fichier dans un formulaire HTTP.
HTTPAjouteParamtre Ajoute un paramtre dans un formulaire HTTP.
HTTPAnnuleFormu-
laire
Annule une dclaration de formulaire HTTP et libre toutes ses ressources.
HTTPCertificat Modifie le certificat client utilis par dfaut pour s'identifier sur un serveur.
HTTPCookieEcrit Ajoute ou modifie un cookie.
HTTPCookieGre Active/dsactive la gestion des cookies lors des appels de la fonction HTTPRequete
HTTPCookieLit Retourne la valeur d'un cookie reu suite une requte HTTP.
HTTPCookieRAZ Supprime l'ensemble des cookies (globalement ou pour un domaine) stocks par les
appels la fonction HTTPRequte.
HTTPCookieRcupre Rcupre les cookies lus par un appel HTTPRequte pour un domaine HTTP.
HTTPCookieRemplace Remplace l'ensemble des cookies stocks pour un domaine pour la fonction HTT-
PRequte.
HTTPCreFormulaire Cre un formulaire HTTP.
HTTPDestination Indique le fichier de sauvegarde du rsultat de la prochaine requte HTTP, excute
dans le mme thread.
HTTPDonneRsultat Rcupre le rsultat ou l'en-tte de la dernire requte HTTP lance (cette requte a
t lance par la fonction HTTPRequte)
HTTPEnvoieFormu-
laire
Envoie un formulaire HTTP.
HTTPJauge Gre une jauge lors de la rception d'une requte HTTP
HTTPListeCertificat Liste les certificats client prsents sur la machine pour s'authentifier sur un serveur.
HTTPParamtre Permet de paramtrer les fonctions utilisant le protocole HTTP.
HTTPRAZFormulaire Vide un formulaire HTTP en cours d'dition.
HTTPRequte Lance une requte HTTP sur un serveur
HTTPTimeOut Rgle le Time out pour les fonctions WLangage utilisant le protocole HTTP
InternetConnect Dtermine si une connexion Internet (par ADSL ou par modem) est active sur le
poste en cours
Proxy Indique que les fonctions de communication utilisant le protocole HTTP (fonctions
HTTP, DotNet, J2EE et SOAP) passeront par un proxy pour excuter leurs requtes
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 281 Mardi, 23. avril 2013 1:59 13
282 Partie 6 : Communication
12. GESTION DE FICHIERS SUR INTERNET
12.1 Prsentation
Pour envoyer et recevoir des fichiers par Internet,
WinDev propose plusieurs possibilits :
Le FTP ou le RPC WinDev. Ces protocoles ncessi-
tent l'utilisation d'un serveur FTP / RPC spcifi-
que ralis avec WinDev
le FTP standard. Ce protocole ncessite l'utilisa-
tion d'un serveur FTP standard. Pour plus de
dtails, consultez le paragraphe Communiquer
avec un serveur FTP, page 285.
Remarque :
RPC : Remote Procedure Call
FTP : File Transfert Protocol
12.1.1 Envoyer et recevoir des fichiers par FTP
ou RPC WinDev : les rgles suivre
Pour envoyer et recevoir des fichiers, il faut respec-
ter les rgles ci-dessous :
1. Se connecter un serveur FTP WinDev par la
fonction NetConnecte. Cette fonction tablit une
connexion entre WinDev et le serveur et fournit un
identifiant de connexion.
2. Transmettre, rcuprer des fichiers.
3. Fermer la connexion avec le serveur avec la
fonction NetDconnecte.
Attention :
Le protocole de communication TCP/IP doit tre
install, et une adresse I.P doit tre dfinie.
Un serveur FTP ou RPC WinDev ne fonctionne qu'en
mode 32 bits.
12.1.2 Autres fonctionnalits
Il est galement possible de :
Obtenir le nom et l'adresse IP d'une machine.
Excuter un programme sur un serveur FTP ou
RPC WinDev.
Dclencher un vnement Windows sur le ser-
veur FTP ou RPC WinDev.
Transmettre une chane de caractres un ser-
veur FTP ou RPC WinDev.
12.2 Utilisation dtaille du FTP / RPC WinDev
12.2.1 tape 1 : Etablissement d'une con-
nexion avec un serveur RPC / FTP WinDev
Pour transfrer des fichiers, il est ncessaire d'ta-
blir une connexion avec un serveur RPC ou FTP
WinDev. L'tablissement de la connexion est ra-
lis avec la fonction NetConnecte. Le code d'ta-
blissement d'une connexion doit se trouver avant la
premire fonction "Net". La valeur retourne par
NetConnecte doit tre conserve car celle-ci sera
utilise par les autres fonctions "RPC" et "FTP".
Le code pour se connecter un serveur RPC est
par exemple le suivant :
12.2.2 tape 2 : Transmission d'un fichier
un serveur FTP WinDev
Dans l'exemple suivant un fichier est transmis au
serveur FTP WinDev (fonction NetEnvoieFichier).
Une jauge de progression permet de suivre la pro-
gression du transfert.
WD
Fonction ConnexionRPC (Adresse,...
Utilisateur, Motdepasse)
//Connexion un serveur RPC
NumConnexion est un entier
NumConnexion = NetConnecte(...
Adresse, ServeurRPC, ...
Utilisateur, Motdepasse)
Renvoyer NumConnexion
- - Code d'initialisation de la
- - fentre "ClientRPC"
GLOBAL
Transfert_Termin est un boolen
Transfert_Termin = Faux
Transfert_EnCours est un boolen
Transfert_EnCours = Faux
Evnement("Jauge_Transfert",...
"ClientRPC", "EnvoieFichier")
....
hConnect est un entier
hConnect = NetConnecte(...
"148.61.125.245", ServeurFTP,...
"GUEST", "")
- - Bouton d'envoi du transfert
SI Transfert_EnCours = Vrai ALORS
...
WLangage.book Page 282 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 283
12.2.3 tape 3 : Rcupration d'un fichier
depuis un serveur FTP WinDev
La fonction NetRcupreFichier permet de rcup-
rer un fichier prsent sur le serveur FTP / RPC
WinDev.
Remarque : il est possible de connatre facilement
la liste des rpertoires et fichiers sur un serveur
FTP WinDev. Vous pourrez trouver un exemple dans
la description d'utilisation de la fonction NetListe-
Rep.
12.2.4 Etape 4 : Fermeture d'une connexion
avec un serveur RPC / FTP WinDev
Aprs avoir transfr des fichiers, il est ncessaire
de rompre la connexion avec le serveur RPC ou FTP
WinDev. La dconnexion est ralise avec la fonc-
tion NetDeconncete. Le code de dconnexion doit
se trouver aprs la dernire instruction "Net". La
variable "NumConnexion", ncessaire la dcon-
nexion, contient la valeur retourne par NetCon-
necte.
Le code pour se dconnecter d'un serveur RPC
WinDev est le suivant :
Erreur("Un transfert de "+...
"fichiers est actuellement "+...
"en cours")
SINON
Transfert_Termin = Faux
Transfert_EnCours = Vrai
SI NetEnvoieFichier(hConnect,...
"C:\autoexec.bat", ...
"C:\autoexec.cli", ...
"EnvoieFichier", 10) = Faux
ALORS
Info("chec du transfert")
FIN
...
FIN
- - Procdure Jauge_Transfert :
- - gestion du transfert en cours
Procdure Jauge_Transfert
Message("Transfert en cours")
Jauge(_EVE.wParam, _EVE.lParam)
SI _EVE.wParam = _EVE.lParam ALORS
Transfert_EnCours = Faux
Transfert_Termin = Vrai
Message("Transfert termin")
Info("Transfert termin")
FIN
-- Code d'ouverture de la fentre
// Demande d'un message disponible
// Windows
GLOBAL
WM_MYMESSAGE est un entier
lpString est une chane fixe ...
sur 20 lpString = "Jauge_Main" ...
hConnect est un entier
// Connexion
hConnect = ...
NetConnecte("148.61.125.245",...
ServeurFTP, "GUEST", "")
WM_MYMESSAGE = ...
AppelDLL32("USER32", ...
"RegisterWindowMessageA" lpString)
// Branchement de la procdure Jauge
// sur ce message
Evnement("MAJJauge", "MAIN",...
WM_MYMESSAGE)
-- Code du bouton de rcupration
-- de fichier
Sablier(Vrai)
SI PAS NetRcupreFichier(...
hConnect,...
"C:\autoexec.bat", ...
"C:\autoexec.cli", ...
WM_MYMESSAGE, 10) ALORS
Erreur("Erreur dans le "+...
"transfert de fichiers")
FIN
Sablier(Faux)
- - Procdure MAJJauge()
Procdure MAJJauge()
// Affichage de la jauge
// Si tout le fichier est
// transfr,
// on rinitialise la jauge
SI _EVE.wparam = _EVE.lparam ALORS
// Transfert termin
Jauge()
SINON
// Transfert en cours
Jauge(_EVE.wparam,...
_EVE.lparam, ...
"Transfert en cours")
FIN
//Dconnexion un serveur
//RPC WinDev
//NumConnexion contient la valeur
//retourne par NetConnecte
NetDeconnecte(NumConnexion)
WLangage.book Page 283 Mardi, 23. avril 2013 1:59 13
284 Partie 6 : Communication
12.3 Fonctions Net
Les fonctions permettant de grer les communications FTP/RPC WinDev sont les suivantes :
NetAdresseIP Renvoie l'adresse IP (Internet Protocol) d'un poste
NetAdresseMAC Renvoie l'adresse MAC de l'une des cartes rseau de la machine.
NetConnecte Connecte un serveur FTP (File Transfer Protocol) ou RPC (Remote Procedure Call)
ralis avec WinDev
NetDconnecte Dconnecte d'un serveur FTP (File TRansfert Protocol) ou RPC (Remote Procdure
Call) ralis avec WinDev
NetDmarreServeur Lance un serveur FTP (File Transfer Protocol) ou RPC (Remote Procedure Call) ra-
lis avec WinDev
NetEnvoieBuffer Transmet une chane de caractres un serveur FTP (File Transfer Protocol) ou
RPC (Remote Procedure Call) ralis avec WinDev
NetEnvoieFichier Transmet un fichier un serveur FTP (File Transfer Protocol) ralis avec WinDev
NetEnvoieMessage Dclenche un vnement Windows sur le systme d'un poste serveur FTP (File
Transfer Protocol) ou RPC (Remote Procedure Call) ralis avec WinDev
NetEnvoieMessageClient Envoie un message du poste serveur vers tous les postes clients connects
NetExcute Excute un programme spcifique sur un serveur FTP (File Transfert Protocol) ou
RPC (Remote Procdure Call) ralis avec WinDev
NetFermeAccsDistant Ferme la ligne prcdemment ouverte par la fonction NetOuvreAccsDistant
NetFinServeur Arrte un serveur FTP (File TRansfert Protocol) ou RPC (Remote Procdure Call)
ralis avec WinDev et prcdemment lanc avec la fonction NetDmarreServeur
NetInfoAccsDistant Renvoie des informations, statistiques sur l'tat d'une connexion
NetIPVersMAC Renvoie l'adresse MAC correspondant l'adresse IP fournie.
NetListeAccsDistant Renvoie la liste des accs distants disponibles
NetListeAdresseIP Renvoie la liste des adresses IP (Internet Protocol) d'une machine.
NetListeDisque Liste les disques disponibles
NetListeRep Liste les rpertoires et les fichiers
NetMACVersIP Renvoie l'adresse IP correspondant une adresse MAC
NetMessageBoxClient Affiche une bote de dialogue sur chaque poste client connect au serveur
NetMessageBoxDistant Affiche une bote de dialogue sur l'cran du poste serveur FTP (File Transfer Proto-
col) ou RPC (Remote Procedure Call) ralis avec WinDev
NetMsgErreur Renvoie le message d'erreur correspondant au numro d'erreur retourn par les
fonctions NetOuvreAccsDistant et NetFermeAccsDistant
NetNomMachine Renvoie le nom de la machine locale
NetOptionServeur Gre les droits des clients sur le poste serveur (serveur FTP (File Transfer Protocol)
ou RPC (Remote Procedure Call) ralis avec WinDev)
NetOuvreAccsDistant tablit une connexion distante avec un modem
NetRcupreFichier Rcupre un fichier existant sur un serveur FTP (File Transfer Protocol) ralis
avec WinDev
NetRenommeFichier Renomme (ou dplace) un fichier prsent sur le serveur FTP (File Transfer Proto-
col) ou RPC (Remote Procedure Call) ralis avec WinDev
NetSupprimeFichier Supprime un fichier prsent sur le serveur FTP (File Transfer Protocol) ou RPC
(Remote Procedure Call) ralis avec WinDev
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
WLangage.book Page 284 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 285
13. COMMUNIQUER AVEC UN SERVEUR FTP
13.1 Manipuler des fichiers sur un serveur RPC
13.1.1 Prsentation
Le FTP (File Transfer Protocol) est un protocole de
transfert de fichiers d'un site vers un autre site dis-
tant. Ce protocole permet d'changer des fichiers
par TCP/IP, Wi-Fi ou Internet.
Sur Internet, plusieurs milliers de serveurs de
fichiers sont accessibles par FTP. Ces serveurs pro-
posent des logiciels shareware ou freeware, acces-
sibles au public.
Des fonctions WLangage vous permettent de grer
des fichiers sur un serveur FTP depuis vos applica-
tions ou depuis vos sites.
13.1.2 Le FTP
Convention d'utilisation
En thorie, il n'est pas possible de se connecter
un site par FTP sans un compte FTP et un mot de
passe. Seul un utilisateur possdant un compte
et un mot de passe peut se connecter sur ce site.
En pratique, tous les serveurs prsents sur Inter-
net ont un compte Anonymous. Le mot de passe
de ce compte n'est pas mis en place, mais il est
demand de saisir son adresse email.
Pour rapatrier uniquement des fichiers prsents
sur un serveur FTP, il suffit de se connecter en "uti-
lisateur anonyme".
Pour envoyer des fichiers sur un serveur FTP (par
exemple pour envoyer des pages HTML sur votre
site Web), il est ncessaire d'avoir un compte non-
anonyme et un mot de passe.
13.1.3 Principe d'utilisation
Pour manipuler des fichiers sur un serveur FTP
depuis une application ou un site, il est ncessaire
de suivre les rgles suivantes :
1. Connexion un serveur FTP (fonction FTPCon-
necte).
2. Transmission et rcupration des fichiers (selon
le mode de connexion tabli). En cas de connexion
passive, l'application ou le site doit demander
l'autorisation au serveur FTP avant chaque manipu-
lation de fichiers sur le serveur. Il est galement
possible de :
obtenir les caractristiques sur des fichiers pr-
sents sur un serveur FTP : attributs, taille, ...
manipuler des fichiers prsents sur un serveur
FTP : cration, suppression, ...
lister les fichiers d'un rpertoire prsent sur un
serveur FTP en lanant une procdure effectuant
un traitement pour chaque fichier trouv.
3. Fermeture de la connexion avec le serveur (fonc-
tion FTPDconnecte).
13.1.4 Chemin relatif / chemin absolu
Les notions de chemin relatif et de chemin absolu
sont trs importantes dans une application FTP.
Un chemin commenant par un slash est consi-
dr comme un chemin absolu : il s'agit du che-
min par rapport la racine du serveur FTP
(paramtre propre au serveur).
ex: /pub/user/FLO
Si le chemin ne commence pas par un slash, il
est considr comme un chemin relatif, c'est--
dire le chemin par rapport au rpertoire en cours.
WLangage.book Page 285 Mardi, 23. avril 2013 1:59 13
286 Partie 6 : Communication
Ce rpertoire en cours peut-tre connu ou modi-
fi avec la fonction FTPRepEnCours.
Lors de la connexion un site FTP, le rpertoire ini-
tial (le "home directory" de l'utilisateur) n'est pas
forcment la racine du serveur FTP. Il est donc con-
seill d'utiliser des chemins relatifs.
13.1.5 Exemple
Un exemple complet est livr avec WinDev : WD
FTP.
Cet exemple permet de se connecter et de se
dconnecter d'un serveur FTP.
Lorsque la connexion est tablie, l'ensemble des
fichiers prsents sur le serveur et sur le poste en
cours sont lists.
Il est possible de :
transfrer les fichiers du poste local sur ce ser-
veur FTP, et de rcuprer les fichiers prsents sur
le serveur FTP sur le poste local.
crer, renommer et supprimer des fichiers et/ou
des rpertoires prsents sur le serveur FTP.
obtenir les caractristiques des fichiers prsents
sur ce serveur FTP (taille et attributs des fichiers,
...).
13.2 Fonctions FTP
Les fonctions permettant de grer le FTP (File Transfer Protocol) sont les suivantes :
FTPAttribut Identifie les attributs d'un fichier prsent sur un serveur FTP (File Transfer Protocol)
FTPCommande Envoie une commande FTP spcifique un serveur
FTPConnecte Connecte le poste en cours un serveur FTP (File Transfer Protocol)
FTPDate Renvoie les diffrentes dates (cration, modification ou accs) d'un fichier prsent
sur un serveur FTP (File Transfer Protocol)
FTPDconnecte Dconnecte le poste en cours du serveur FTP (File Transfer Protocol)
FTPEnvoie Transfre un fichier ou un rpertoire sur un serveur FTP (File Transfer Protocol)
FTPHeure Renvoie les diffrentes heures (cration, modification ou accs) d'un fichier prsent
sur un serveur FTP (File Transfer Protocol)
FTPListeFichier Liste les fichiers d'un rpertoire d'un serveur FTP et retourne le nombre de fichiers
lists
FTPNom Renvoie le nom du dernier fichier accd par une fonction FTP (File Transfer Proto-
col)
FTPProxy Spcifie si les fonctions de communication utilisant le protocole FTP doivent ou non
passer par un proxy pour excuter leurs requtes
FTPRcupre Transfre un fichier ou un rpertoire d'un serveur FTP (File Transfer Protocol) sur le
poste en cours
FTPRenommeFichier Renomme ou dplace un fichier prsent sur un serveur FTP (File Transfer Protocol)
FTPRepCre Cre un rpertoire sur un serveur FTP (File Transfer Protocol)
FTPRepEnCours Identifie ou modifie le rpertoire en cours sur un serveur FTP (File Transfer Protocol)
FTPRepSupprime Supprime un rpertoire et son contenu (fichiers et sous-rpertoires) d'un serveur FTP
(File Transfer Protocol)
FTPSupprimeFichier Supprime un fichier d'un serveur FTP (File Transfer Protocol)
FTPTaille Renvoie la taille (en octets) d'un fichier prsent sur un serveur FTP (File Transfer Pro-
tocol)
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 286 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 287
14. GESTION DES SOCKETS
14.1 Prsentation
Des fonctions WLangage permettent de raliser
une gestion avance des sockets.
Une socket est une ressource de communication
utilise par les applications pour communiquer
d'une 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.
Avec un Pocket PC, l'change de donnes entre
deux machines peut tre effectu :
soit par Wi-Fi.
soit par ActiveSync.
soit par GPRS (attention : tous les abonnements
tlphoniques ne permettent pas de connecter
deux machines).
soit par carte rseau.
WinDev, WebDev et WinDev Mobile permettent de
grer :
Les sockets standard
Les sockets UDP
Les sockets par infrarouge
Les sockets SSL
Quelques exemples d'utilisation des sockets :
gestion d'une messagerie en temps rel,
accs un serveur de news (forum).
14.1.1 Diffrentes possibilits
Une application WinDev peut grer les sockets
selon diffrents modes :
Application WinDev Cliente : l'application se con-
necte un serveur quelconque et change des
donnes par une socket. Pour plus de dtails,
consultez le paragraphe Application WinDev
Cliente / Site WebDev Client, page 287.
Application WinDev "Serveur simplifi" : l'applica-
tion 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). Pour plus de dtails,
consultez le paragraphe Application WinDev
"Serveur simplifi", page 288.
Application WinDev "Serveur standard" : l'applica-
tion WinDev est un serveur, changeant des
informations par sockets avec plusieurs postes
client quelconques. Pour plus de dtails, consul-
tez le paragraphe Serveur de socket standard,
page 289.
14.1.2 Exemple
WinDev est livr en standard avec un exemple de
gestion des sockets : WD Messagerie instantane.
14.2 Application WinDev Cliente / Site WebDev Client
Une application cliente d'un serveur de sockets se
connecte un serveur quelconque pour changer
des informations par l'intermdiaire d'une socket.
Exemple : Une application WinDev cliente ou un
site WebDev client peut se connecter un serveur
de news standard sur Internet.
14.2.1 Principe dune application cliente ou
dun site client
Etape 1 : Connexion au serveur
Pour se connecter une socket du serveur, il suffit
d'utiliser la fonction SocketConnecte. Cette fonc-
tion permet d'effectuer une demande de connexion
au serveur.
La socket est identifie par son port et par une
adresse.
Etape 2 : change de donnes
Lorsque deux postes ont connect leur socket, un
flux de communication s'tablit entre ces deux pos-
tes. Il est alors possible pour ces deux postes de
lire et d'crire des chanes de caractres sur la soc-
ket.
WLangage.book Page 287 Mardi, 23. avril 2013 1:59 13
288 Partie 6 : Communication
Remarque : Pour ne pas bloquer les applications
ou les sites, la gestion de la rception des messa-
ges est souvent gre par un thread spcifique
(pour plus de dtails sur les threads, consultez
Gestion des threads, page 294).
Pour lire et crire sur la socket du poste serveur,
l'application cliente WinDev ou le site client Web-
Dev doit utiliser les fonctions SocketLit et Socke-
tEcrit.
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 dans la
socket.
3. Si une rponse au message est ncessaire, le
poste serveur envoie une rponse au poste client.
Etape 3 : Fin de la communication
Pour terminer la communication, il suffit 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.
14.2.2 Mode de transmission des informa-
tions
Le mode de transmission du message dfinit le
mode utilis pour dterminer la longueur du mes-
sage.
Plusieurs mthodes sont disponibles pour dtermi-
ner la longueur du message lors de la communica-
tion entre sockets.
Mthode 1 : Mode WinDev / WebDev : Par dfaut,
le nombre de caractres du message est indiqu
au dbut du message. Ce mode de transmission
est conseill lors d'une communication par sockets
entre deux applications WinDev, ou entre un site
WebDev et une application WebDev serveur.
Le message est de la forme : "11\r\nHelloWord"
Mthode 2 : Mode standard : La fin du message
est signale par un caractre spcifique, dtermin
par avance. Ce mode de transmission est conseill
lors d'une communication par sockets entre une
application WinDev et une autre application, ou
entre un site WebDev et un autre site. Dans ce cas,
il sera ncessaire d'inclure un caractre spcifique
dans le message afin d'indiquer que le message
est termin.
Le message est de la forme :"Hello world<EOF>"
Mthode 3 : Mode standard avec buffer : Corres-
pond au mode standard optimis pour les protoco-
les les plus utiliss sur Internet.
La fonction SocketChangeModeTransmission per-
met de modifier le mode de transmission utilis.
14.3 Application WinDev "Serveur simplifi"
WinDev offre la possibilit de crer un serveur de
socket simplifi. Ce serveur permet de communi-
quer avec un seul poste client simultanment. Ce
type d'application est trs utile lorsque deux appli-
cations distantes ont besoin de communiquer.
Remarque : WinDev offre galement la possibilit
de crer un serveur de sockets plus labor (ser-
veur de sockets standard), grant la connexion de
plusieurs postes client simultanment. Pour plus
de dtails, consultez le paragraphe Serveur de
socket standard, page 289.
14.3.1 Le serveur simplifi
Etape 1 : Cration de la socket
Pour crer la socket, le poste serveur utilise la fonc-
tion SocketCre. Une socket est associe un port
spcifique. Pour simplifier 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 soc-
ket pour changer des donnes. La connexion
entre les deux postes sera effectivement ralise
au premier change de donnes entre les deux
postes (c'est--dire la premire lecture d'informa-
tions par le poste serveur).
WD WDMobile
WLangage.book Page 288 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 289
La connexion est tablie au premier succs de la
fonction SocketLit sur le serveur.
Etape 2 : change de donnes
Lorsque deux postes utilisent la mme socket, un
flux de communication s'tablit entre ces deux pos-
tes. Il est alors possible pour ces deux postes de
lire et d'crire des chanes de caractres sur la soc-
ket.
Remarque : Pour ne pas bloquer les applications, la
gestion de la rception des messages est souvent
gre par un thread spcifique (pour plus de
dtails sur les threads, consultez Gestion des
threads, page 294).
Pour lire et crire sur la socket, l'application serveur
WinDev doit utiliser les fonctions SocketLit et Soc-
ketEcrit.
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 soc-
ket dans un thread. Ds qu'un message est reu, le
message est trait par le poste serveur.
3. Si une rponse au message est ncessaire, le
poste serveur identifie le poste client (fonction Soc-
ketClientInfo), et lui envoie une rponse.
Etape 3 : 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.
14.3.2 Mode de transmission des informa-
tions
Le mode de transmission du message dfinit le
mode utilis pour dterminer la longueur du mes-
sage.
WinDev propose plusieurs mthodes pour dtermi-
ner la longueur du message lors de la communica-
tion entre sockets.
Mthode 1 : mode WinDev : Par dfaut, le nombre
de caractres du message est indiqu au dbut du
message. Ce mode de transmission est conseill
lors d'une communication par sockets entre deux
applications WinDev.
Le message est de la forme : "11\r\nHelloWord"
Mthode 2 : mode standard : La fin du message
est signale par un caractre spcifique, dtermin
par avance. Ce mode de transmission est conseill
lors d'une communication par sockets entre une
application WinDev et une autre application. Dans
ce cas, il sera ncessaire d'inclure un caractre
spcifique dans le message afin d'indiquer que le
message est termin.
Le message est de la forme :"Hello world<EOF>"
Mthode 3 : mode standard avec buffer : Corres-
pond au mode standard optimis pour les protoco-
les les plus utiliss sur Internet.
La fonction SocketChangeModeTransmission per-
met de modifier le mode de transmission utilis.
14.4 Serveur de socket standard
WinDev offre la possibilit de crer un serveur de
sockets standard. Ce serveur permet de grer la
connexion de plusieurs postes client sur une mme
socket. Ce principe est utilis par exemple pour
crer un serveur de news.
14.4.1 Le serveur de socket standard
Etape 1 : Cration de la socket
Pour crer la socket, le poste serveur utilise la fonc-
tion SocketCre. Une socket est associe un port
spcifique. Il est possible de crer plusieurs soc-
kets, chaque socket utilisant un numro de port
spcifique. A chaque socket est associ un nom
(permettant de manipuler la socket par program-
mation) et un numro de port.
WD
WLangage.book Page 289 Mardi, 23. avril 2013 1:59 13
290 Partie 6 : Communication
Etape 2 : Attente de connexion sur la socket
Tous les postes souhaitant communiquer avec le
poste serveur peuvent se connecter sur la socket :
ce sont des postes clients. Le poste serveur gre
les diffrentes demandes de connexion des postes
clients grce la fonction SocketAttendConnexion.
Cette fonction permet de savoir si une demande de
connexion est ralise sur une socket spcifique.
Il est conseill d'utiliser la fonction SocketAttend-
Connexion dans un thread spcifique. Cette fonc-
tion est ainsi excute en tche de fond.
Lorsquune demande de connexion est dtecte, il
est possible :
soit d'accepter la connexion (fonction
SocketAccepte) : dans ce cas, un canal de com-
munication spcifique est cr. Pour ne pas blo-
quer les applications, la gestion de la rception
des messages est souvent gre par un thread
spcifique (pour plus de dtails sur les threads,
consultez Gestion des threads, page 294).
soit de refuser la connexion (fonction SocketRe-
fuse).
Exemple
L'exemple suivant permet de crer une socket sur
le poste serveur, et de grer les connexions des
postes clients dans un thread. Si la connexion est
accepte, la gestion de cette connexion est rali-
se dans un thread spcifique.
Il y a un thread excut par connexion. Chaque
thread utilise la mme fonction de service "Proc-
dureGestion". Pour autoriser l'excution de la pro-
cdure par diffrents threads simultanment, il est
ncessaire de changer le mode de synchronisation
des threads : utilisez la fonction ThreadMode avec
le paramtre ThreadSectionCritique dans le code
d'initialisation du projet. La synchronisation entre
threads doit tre effectue manuellement (pour
plus de dtails, consultez Gestion des threads,
page 294).
Pour diffrencier les threads, leur nom correspond
celui du canal de communication (nom unique).
Etape 3 : change de donnes
Lorsque deux postes utilisent la mme socket, un
canal de communication s'tablit entre ces deux
postes. Il est alors possible pour ces deux postes
de lire et d'crire des chanes de caractres sur la
socket.
Pour lire et crire sur la socket, l'application serveur
WinDev doit utiliser les fonctions SocketLit et Soc-
ketEcrit.
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 dans la
socket dans un thread. Ds qu'un message est
reu, le message est trait par le poste serveur.
3. Si une rponse au message est ncessaire, le
poste serveur identifie le poste client, et lui envoie
une rponse.
Etape 4 : Pour terminer la communication, il suffit
de fermer la socket avec la fonction SocketFerme.
14.4.2 Mode de transmission des informa-
tions
Le mode de transmission du message dfinit le
mode utilis pour dterminer la longueur du mes-
sage.
WinDev propose plusieurs mthodes pour dtermi-
ner la longueur du message lors de la communica-
tion entre sockets.
Mthode 1 : mode WinDev : Par dfaut, le nombre
de caractres du message est indiqu au dbut du
message. Ce mode de transmission est conseill
lors d'une communication par sockets entre deux
applications WinDev.
Le message est de la forme : "11\r\nHelloWord"
Mthode 2 : mode standard : La fin du message
est signale par un caractre spcifique, dtermin
par avance.
SI PAS SocketCre("serveur", ...
8000) ALORS
Erreur("erreur cration " +...
ErreurInfo(errMessage))
SINON
ThreadExcute("Thread1", ...
threadNormal,...
ProcdureAttente)
FIN
Procdure ProcdureAttente()
BOUCLE
SI SocketAttendConnexion(...
"Serveur")
Alors
Canal est une chane
Canal = SocketAccepte ...
("Serveur")
ThreadExcute(Canal, ...
threadNormal,...
ProcdureGestion, canal)
FIN
FIN
WLangage.book Page 290 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 291
Ce mode de transmission est conseill lors d'une
communication par sockets entre une application
WinDev et une autre application. Dans ce cas, il
sera ncessaire d'inclure un caractre spcifique
dans le message afin d'indiquer que le message
est termin.
Le message est de la forme :"Hello world<EOF>"
Mthode 3 : mode standard avec buffer : Corres-
pond au mode standard optimis pour les protoco-
les les plus utiliss sur Internet.
La fonction SocketChangeModeTransmission per-
met de modifier le mode de transmission utilis.
14.5 Fonctions Socket
Les fonctions permettant de grer les sockets sont les suivantes :
SocketAccepte Accepte la connexion d'un poste client sur le poste serveur
SocketAttendConnexion Teste si une demande de connexion a t effectue par un poste client
SocketChangeModeTransmission Change le mode de transmission utilis sur une socket
SocketClientInfo Permet un poste serveur de rcuprer des informations concernant
une socket connecte sur un poste client
SocketConnecte Permet de se connecter une socket donne
SocketConnecteBluetooth Connecte un poste client une socket Bluetooth spcifique.
SocketConnecteInfraRouge Connecte un poste client une socket donne, via le port infrarouge
SocketConnecteSSL Connecte un poste client un serveur SSL.
SocketCre Cr une socket
SocketCreBluetooth Cre une socket Bluetooth.
SocketCreInfraRouge Cre une socket utilisant le port infrarouge
SocketCreSSL Cre une socket SSL.
SocketCreUDP Cre une socket utilisant le protocole UDP
SocketEcrit Transmet un message entre deux sockets
SocketExiste Teste l'existence d'une socket
SocketFerme Ferme une socket ou ferme une connexion une socket sur le poste ser-
veur
SocketLit Rcupre un message envoy par une socket
SocketRefuse Refuse la connexion demande par un poste client
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 291 Mardi, 23. avril 2013 1:59 13
292 Partie 6 : Communication
15. GESTION DES CLS BLUETOOTH
15.1 Prsentation
Crez facilement un nouveau type d'applications !
Sans contact entre le PC et l'appareil mobile, de
nombreux traitements peuvent tre excuts sur le
PC en utilisant les donnes du Mobile.
Quelques exemples :
Une application sur PC (ou Mobile) peut piloter
des services sur un priphrique supportant la
norme bluetooth.
Une application peut automatiquement rcup-
rer des photos prsentes sur un tlphone qui
passe porte.
Une application peut lire la liste des contacts
d'un tlphone.
Un PC peut imprimer les donnes prsentes sur
un PDA.
15.2 Comment le faire ?
Pour communiquer par bluetooth, plusieurs
familles de fonctions sont votre disposition :
Les fonctions Bluetooth (BTxxx) : Ces fonctions
permettent de grer les appareils Bluetooth. Il est
par exemple possible de lister les services d'un
priphrique, de les activer ou dsactiver. Il est
galement possible de se faire authentifier
auprs d'un priphrique Bluetooth, et d'obtenir
diverses informations sur le priphrique.
Les fonctions OBEXxxx : Ces fonctions permet-
tent de grer les changes de fichiers par le pro-
tocole OBEX.
Les fonctions SocketConnecteBluetooth et Soc-
ketCreBluetooth qui permettent de grer des
sockets utilisant des priphriques Bluetooth.
15.3 Quelles cls utiliser ?
Les fonctions permettant de manipuler les cls
Bluetooth fonctionnement actuellement avec les
cls utilisant une pile de protocoles de technologie
Microsoft ou Bluesoleil. Pour connatre la pile utili-
se, utilisez la fonction BTPile.
Certaines fonctions WLangage ne peuvent tre utili-
ses qu'avec certains types de piles. Ces informa-
tions sont dtailles dans chaque fonction
WLangage concerne.
Parmi les cls USB compatibles, les cls suivantes
utilisent une pile Microsoft (donc sans installer le
pilote livr avec les cls) :
D-Link DBT-120,
Broadcom Bluetooth 2.0 EDR USB,
EMTEC Dongle Bluetooth 2.0 EDR - EKCOB110,
HAMA Nano Bluetooth Adaptater 2.0 EDR - 10m,
Conceptronic Dongle Bluetooth 2.0 EDR -
CBT200U2A,
Kensington Bluetooth USB Micro Adapter (Blue-
tooth 2.0 - USB 2.0),
(*) Belkin adaptateur Bluetooth 2.0 - F8T013FR1
- Porte 10 mtres (USB 2.0),
(*) Belkin adaptateur Bluetooth 2.0 - F8T012FR1
- Porte 100 mtres (USB 2.0),
TrendNet TBW-104UB - Adaptateur USB Blue-
tooth 2.0,
(*) TrendNet TBW-102UB - Adaptateur Bluetooth
Class 2 (Bluetooth 1.1), ...
Cette liste non exhaustive sera actualise rgulire-
ment.
(*) Certaines cls ne fonctionnent pas directement
avec Windows, il faut installer un driver avec le
mode opratoire suivant :
1. S'il a t install, dsinstaller le pilote fourni
avec la cl par "Ajout/Suppression de programmes"
du Panneau de Configuration,
2. Insrer le CD livr avec la cl dans le lecteur, NE
PAS lancer son excution automatique,
3. Connecter la cl,
4. Indiquer Windows de rechercher le driver sur le
CD.
Cette mthode permet d'avoir une cl reconnue par
Windows, et donc d'utiliser une pile de protocoles
Microsoft.
WLangage.book Page 292 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 293
15.4 Les fonctions Bluetooth et OBEX
15.4.1 Fonctions Bluetooth
Les fonctions permettant de grer les appareils Bluetooth sont les suivantes :
15.4.2 Fonctions OBEX
Les fonctions permettant de grer les changes de fichiers par le protocole OBEX sont les suivantes :
BTAccepteConnexion Permet de savoir si une radio Bluetooth accepte ou non les demandes de
connexion en provenance des priphriques de son entourage.
BTActive Active ou dsactive la gestion du Bluetooth sur l'appareil
BTActiveService Active un service offert par un priphrique Bluetooth.
BTChangeConnectivit Permet de paramtrer une radio Bluetooth pour accepter ou non les
demandes de connexion provenant des priphriques de son entourage.
BTChangeVisibilit Change la visibilit d'une radio Bluetooth.
BTConnectePriphrique Permet de se faire authentifier auprs d'un priphrique Bluetooth.
BTDconnectePriphrique Annule l'authentification auprs d'un priphrique Bluetooth.
BTDsactiveService Dsactive un service sur un priphrique Bluetooth.
BTEstVisible Permet de savoir si une radio Bluetooth est visible.
BTEtat Renvoie l'tat actuel d'activation du Bluetooth sur l'appareil ou demande
tre notifi des changements d'tat d'activation
BTInfoPriphrique Renvoie des informations spcifiques sur un priphrique Bluetooth.
BTInfoRadio Renvoie des informations spcifiques sur une radio Bluetooth connecte
la machine.
BTListePriphrique Liste les priphriques Bluetooth accessibles.
BTListeRadio Liste les radios Bluetooth connectes la machine.
BTListeService Liste les services offerts par un priphrique Bluetooth.
BTOuvrePropritsPriphrique Ouvre la fentre des proprits d'un priphrique Bluetooth.
BTPile Renvoie la pile Bluetooth en cours d'utilisation.
BTSlecteurPriphrique Ouvre une fentre systme pour slectionner un priphrique Bluetooth.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
OBEXConnecte Permet de se connecter un priphrique supportant le protocole OBEX.
OBEXDconnecte Permet de se dconnecter d'un priphrique supportant le protocole OBEX.
OBEXEnvoieFichier Envoie un fichier sur un priphrique grant le protocole OBEX.
OBEXEnvoieVCard Envoie un fichier VCard (carte de visite virtuelle) un priphrique grant le proto-
cole OBEX.
OBEXListeFichier Liste les fichiers partags par un priphrique utilisant le protocole OBEX.
OBEXRcupreFichier Rcupre un fichier sur un priphrique grant le protocole OBEX.
OBEXRcupreVCard Rcupre une VCard sur un priphrique grant le protocole OBEX.
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 293 Mardi, 23. avril 2013 1:59 13
294 Partie 6 : Communication
16. GESTION DES THREADS
16.1 Prsentation
Des fonctions WLangage permettent de raliser
une gestion avance des threads.
Les threads permettent d'excuter du code (ou des
traitements) en parallle de l'application principale.
Il est ainsi possible d'excuter plusieurs traite-
ments diffrents en tche de fond, sans bloquer
l'application principale.
Les threads remplacent certains types de timer.
Un thread efficace est un thread qui attend un v-
nement, par exemple, une action de l'utilisateur, la
rception d'un email, la rception d'un appel tl-
phonique, ...
Quelques exemples d'utilisation des threads :
Rcupration d'emails en tche de fond, pendant
la saisie d'un nouvel email par exemple.
Application ou site de communication : gestion
des appels tlphoniques, communication par
socket, ...
16.1.1 D'une gestion simple des threads vers
une gestion avance
Il existe plusieurs possibilits de gestion des
threads :
Excuter des threads.
Grer les smaphores dans les threads, c'est--
dire limiter l'excution simultane d'un code par
un ou plusieurs threads un instant donn.
Grer les signaux afin d'effectuer une synchroni-
sation entre plusieurs threads.
16.1.2 Exemple
WinDev est livr en standard avec un exemple de
gestion des threads : WD Pool de threads.
16.2 Principe dutilisation des threads
Une application ou un site est en cours d'excution.
Cette application ou ce site s'excute dans un
thread principal.
A tout moment, cette application ou ce site peut
lancer un thread secondaire : ce thread s'excute
en parallle de l'application ou du site. Ce thread
correspond une procdure (locale ou globale) de
l'application ou du site.
Ce thread secondaire va s'excuter en parallle de
l'application ou du site principal. Il est possible de
raliser dans ce thread tous les traitements ralisa-
bles en tche de fond : rception des emails, ...
Remarque : un thread efficace est un thread qui
attend un vnement spcifique, par exemple une
action de l'utilisateur, la rception d'un appel tl-
phonique ou d'un email, ...
16.2.1 Gestion simple des threads
Un thread secondaire est cr avec la fonction
ThreadExcute.
Un thread secondaire est automatiquement arrt
lorsque :
la procdure correspondant au thread est termi-
ne,
l'objet l'origine du thread est ferm.
Il est galement possible de forcer l'arrt d'un
thread grce la fonction ThreadArrte.
Attention : si une fonction WLangage est en cours
d'excution lors de l'arrt d'un thread, l'arrt ne
sera effectif qu'aprs l'excution de la fonction.
Fonctions WLangage
Les fonctions suivantes permettent une gestion
simple des threads :
ThreadArrte Arrte un "thread" secondaire.
ThreadExcute Lance l'excution d'un "thread"
secondaire. Ce "thread" est non
bloquant.
ThreadMode Change le mode de gestion des
threads.
WLangage.book Page 294 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 295
16.2.2 Caractristiques des threads
En WLangage, un thread secondaire peut tre asso-
ci :
une procdure locale la fentre ou la page en
cours,
une procdure globale au projet,
une mthode de classe,
une mthode globale de classe
16.2.3 Accs aux lments existants et con-
texte HyperFileSQL
Lors de la cration d'un thread, toutes les dclara-
tions, objets, lments, ... existants sont
communs :
au nouveau thread secondaire
au thread dans lequel le thread secondaire a t
cr (dans la plupart des cas, correspond au
thread principal).
Ces threads peuvent ainsi accder aux variables,
procdures, ... Toutes les variables cres aprs le
lancement d'un thread sont accessibles unique-
ment dans le thread o elles sont cres.
De mme, lors de la cration d'un thread, le con-
texte HyperFileSQL est automatiquement dupliqu.
Chaque thread manipule un contexte HyperFileSQL
spcifique. Il y a autant de contextes HyperFileSQL
que de threads en cours d'excution. La totalit du
contexte HyperFileSQL est recopie (filtre, condition
de recherche, ...). Dans chaque thread, le contexte
HyperFileSQL volue indpendamment.
Il est ainsi possible par exemple de raliser deux
parcours diffrents sur le mme fichier dans deux
threads diffrents.
Exemple : Un filtre est cr sur le fichier Client. La
fonction ThreadExcute est appele pour crer le
thread CTX2. Dans chaque thread, le fichier client
est filtr. Si le filtre est dsactiv dans le thread
principal, le filtre sera toujours actif dans le thread
CTX2.
Attention : Ecritures et affectations dans un
thread : Si des critures ou des affectations sont
effectues dans un thread, les autres threads en
cours d'excution ne partagent pas ces informa-
tions. Certaines incohrences peuvent apparatre.
Exemple :
Ces deux threads partagent les variables mais ne
grent pas l'accs aux ressources communes. Si le
thread 1 est excut avant le thread 2, i vaudra 1
au lieu de 2.
Remarque : Pour partager une affectation entre
plusieurs threads, il est ncessaire d'utiliser des
smaphores.
16.2.4 Limites des traitements raliss par le
thread
Traitements interdits
Attention : Il n'est pas possible d'excuter les traite-
ments suivants dans les threads :
Ouverture de fentres WinDev avec les fonctions
WLangage telles que Ouvre, Utilise, Ferme, ... Si
des fentres doivent tre manipules dans des
threads (cas rare), une gestion spcifique doit
tre mise en place. Pour plus de dtails, consul-
tez Ouverture d'une fentre partir d'un thread
secondaire, page 300.
Affichage de pages WebDev (ou de contextes de
page) avec les fonctions WLangage telles que
ContexteOuvre, FramesetAffiche, PageAffiche,
PageUtilise, ...
Gestion d'vnement.
Gestion de timer.
Traitements d'une application WinDev / site
WebDev
Par dfaut, tout traitement WinDev / WebDev (code
de clic d'un bouton par exemple), toutes les proc-
dures, les mthodes des classes ne peuvent tre
excuts que par un seul thread un moment
donn.
Pour permettre plusieurs threads d'excuter ces
traitements en mme temps, il est ncessaire de :
1. Changer le mode de gestion par dfaut des
threads (fonction ThreadMode).
2. Grer dans le code de l'application ou du site les
sections critiques et les smaphores.
Code Thread 1 Code Thread 2
a=i
a++
i=a
b=i
b++
i=b
WLangage.book Page 295 Mardi, 23. avril 2013 1:59 13
296 Partie 6 : Communication
16.3 Grer les smaphores dans les threads
Les smaphores permettent de limiter l'excution
simultane d'un code (procdure, ligne de code, ...)
un ou plusieurs threads un instant donn.
Par exemple : Deux threads spcifiques sont utili-
ss dans une application bancaire :
un thread pour crditer les comptes,
un thread pour dbiter les comptes.
A un instant donn, il ne peut y avoir qu'un crdit
de compte ou un dbit de compte.
16.3.1 Principe
Le smaphore a t cr avec la fonction Sma-
phoreCre.
1. Le thread n1 excute la fonction
SmaphoreDbut : aucun thread n'est actuelle-
ment prsent dans le smaphore.
2. Le thread n1 excute la partie de code prot-
ge par le smaphore.
3. Pendant que le thread n1 excute le code pro-
tg par le smaphore, un thread n2 excute la
fonction SmaphoreDbut : le code protg par le
smaphore tant dj en cours d'excution par le
thread n1, le thread n2 attend le dblocage du
smaphore.
4. Le thread n1 excute la fonction
SmaphoreFin : plus aucun thread n'excute le
code du smaphore.
5. Le thread n2 peut excuter le code protg par
le smaphore.
6. Le thread n2 excute la fonction
SmaphoreFin : plus aucun thread n'excute le
code du smaphore.
16.3.2 Mettre en place un smaphore
Les diffrentes tapes de la mise en place d'un
smaphore sont les suivantes :
1. Cration d'un smaphore avec la fonction Sma-
phoreCre. Le smaphore est associ un nom.
2. Appel de la fonction SmaphoreDbut avant la
portion de code protger.
3. Appel de la fonction SmaphoreFin pour dlimi-
ter la portion de code protger. Les lignes de
codes situes aprs la fonction SmaphoreFin ne
seront plus protges.
4. Destruction du smaphore avec la fonction
SmaphoreDtruit.
Remarques :
Les parties de code protges par un smaphore
doivent tre les plus courtes possibles et concer-
ner uniquement des traitements "critiques".
WLangage.book Page 296 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 297
Un smaphore de mme nom peut tre utilis
pour protger plusieurs zones de code diffren-
tes. Un seul thread pourra tre un instant
donn dans une des zones protges par le
smaphore.
Lorsqu'un thread est en attente, les ressources
du processeur ne sont pas utilises.
Les smaphores s'appliquent aussi bien au
thread principal qu'aux threads secondaires
(crs avec la fonction ThreadExcute). Il est
ncessaire d'viter le blocage du thread principal.
En effet, si le thread principal est bloqu (en
attente), l'application ou le site ne peut plus
s'excuter.
Les fonctions SmaphoreDbut et Smaphore-
Fin doivent tre utilises dans le mme traite-
ment (par exemple dans une procdure).
Les fonctions de gestion des smaphores
Les fonctions du WLangage spcifiques la gestion
des smaphores sont les suivantes :
Exemple : Pour raliser une affectation partage
par plusieurs threads, il est ncessaire d'encapsu-
ler dans un smaphore aussi bien l'affectation des
variables que la lecture de ces variables.
16.3.3 Un smaphore limit : la section criti-
que
Une section critique est un smaphore limit un
seul thread sur une seule portion de code (traite-
ment, procdure, ...).
Au contraire des smaphores, une section critique
ne peut tre utilise qu'une seule fois.
Par exemple, il est possible d'utiliser une section
critique pour protger une procdure de mise jour
des champs d'une fentre ou dune page.
Les fonctions de gestion des sections critiques
Les fonctions du WLangage spcifiques la gestion
des sections critiques sont les suivantes :
16.4 Grer les mutex dans les threads
Les mutex permettent de limiter l'excution simul-
tane d'un code (procdure, ligne de code, ...) un
thread un instant donn. Un mutex peut tre par-
tag par plusieurs applications.
Remarque : D'autres systmes permettent gale-
ment de protger une partie de code :
les smaphores permettent de limiter l'excution
simultane d'un code (procdure, ligne de code,
...) un ou plusieurs threads un instant donn.
Un smaphore peut tre partag par plusieurs
applications.
les sections critiques permettent de limiter l'ex-
cution simultane d'un code (procdure, ligne de
code, ...) un thread un instant donn dans
une seule application.
16.4.1 Principe
Le mutex a t cr avec la fonction MutexCre.
1. Le thread n1 excute la fonction MutexDbut :
aucun thread n'est actuellement prsent dans le
mutex.
2. Le thread n1 excute la partie de code prot-
ge par le mutex.
3. Pendant que le thread n1 excute le code pro-
tg par le smaphore, un thread n2 excute la
fonction MutexDbut : le code protg par le mutex
tant dj en cours d'excution par le thread n1,
le thread n2 attend le dblocage du mutex.
4. Le thread n1 excute la fonction MutexFin :
plus aucun thread n'excute le code du mutex.
5. Le thread n2 peut excuter le code protg par
SmaphoreCre Cre un smaphore
SmaphoreDbut Bloque le thread en cours en
attendant que le smaphore
soit ouvert (c'est--dire qu'une
place "libre" soit disponible
dans la zone protge)
SmaphoreD-
truit
Dtruit explicitement un
smaphore
SmaphoreFin Autorise un ou plusieurs
threads de sortir de la zone
protge par le smaphore
SectionCritiqueD-
but
Signale le dbut d'une section
critique : aucun autre thread
ne pourra excuter le code
tant que le thread courant ne
sera pas sorti de la section
critique
SectionCritiqueFin Signale la fin d'une section
critique : un autre thread
pourra excuter le code
WLangage.book Page 297 Mardi, 23. avril 2013 1:59 13
298 Partie 6 : Communication
le mutex.
6. Le thread n2 excute la fonction MutexFin :
plus aucun thread n'excute le code du mutex.
16.4.2 Comment mettre en place un
mutex ?
Les tapes : les diffrentes tapes de la mise en
place d'un mutex sont les suivantes :
Les diffrentes tapes de la mise en place d'un
mutex sont les suivantes :
1. Cration d'un mutex avec la fonction MutexCre.
Le mutex est associ un nom.
2. Appel de la fonction MutexDbut avant la por-
tion de code protger.
3. Appel de la fonction MutexFin pour dlimiter la
portion de code protger. Les lignes de code
situes aprs la fonction MutexFin ne seront plus
protges.
4. Destruction du mutex avec la fonction MutexD-
truit.
Remarques :
Les parties de code protges par un mutex doi-
vent tre les plus courtes possibles et concerner
uniquement des traitements "critiques".
Lorsqu'un thread est en attente, les ressources
du processeur ne sont pas utilises.
Les mutex s'appliquent aussi bien au thread prin-
cipal qu'aux threads secondaires (crs avec la
fonction ThreadExcute). Il est ncessaire d'vi-
ter le blocage du thread principal. En effet, si le
thread principal est bloqu (en attente), l'applica-
tion ne peut plus s'excuter.
Les fonctions MutexDbut et MutexFin doivent
tre utilises dans le mme traitement (par
exemple dans une procdure).
Les mutex peuvent tre partags ou non entre
les diffrentes applications excutes sur le
poste. Il suffit d'indiquer le mode de partage des
mutex lors de leur cration (fonction MutexCre).
16.4.3 Les fonctions de gestion des mutex
16.5 Synchroniser des threads laide de signaux
Les signaux permettent de synchroniser les diff-
rents threads d'une application. Un thread peut
ainsi attendre l'excution d'un autre thread.
Le WLangage propose deux modes de gestion des
signaux :
gestion simple : synchronisation entre deux
threads
gestion avance : synchronisation entre plus de
deux threads
16.5.1 Gestion simple des signaux
Deux threads s'excutent en parallle (un thread
principal et un thread secondaire par exemple). Un
des threads attend une action spcifique du
second thread pour pouvoir s'excuter.
Exemple : Application ou site grant un correcteur
d'orthographe
Lorsque l'utilisateur saisit le caractre ESPACE
dans un champ de saisie, le correcteur orthographi-
que est automatiquement lanc sur le mot prc-
dent.
Dans ce cas, la correction orthographique est
gre dans un thread secondaire.
MutexCre Cre explicitement un mutex
MutexDbut Bloque le thread courant en
attendant que le mutex soit libre
MutexDtruit Dtruit explicitement un mutex.
MutexFin Signale que le thread libre le
mutex
WLangage.book Page 298 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 299
A chaque appui sur la touche ESPACE, le thread
principal envoie un signal au thread secondaire
afin de lancer le correcteur d'orthographe.
Le code est le suivant :
Code du thread principal :
Code du thread secondaire (ThreadCorrection) :
Fonctions du WLangage
Les fonctions suivantes permettent de raliser une
gestion simple des signaux :
16.5.2 Gestion avance des signaux
Une gestion avance des signaux consiste com-
muniquer entre plusieurs threads (plus de 2
threads). Certains threads sont en attente d'une
tche ralise par le thread principal. Lorsque le
thread principal ralise cette tche, il envoie un
signal tous les threads secondaires.
Mise en place
Pour mettre en place une gestion des signaux avan-
ce, les diffrentes tapes sont les suivantes :
1. Cration d'un signal (fonction SignalCre). Par
dfaut, ce signal est ferm.
2. Attente du signal (fonction SignalAttend).
3. Synchronisation des threads grce la fonction
SignalModifie : le signal est ouvert. Tous les
threads en attente sont dbloqus et le signal est
automatiquement referm (fonctionnement par
dfaut).
4. Destruction du signal (fonction SignalDtruit).
Les fonctions de gestion des signaux avancs
Les fonctions du WLangage spcifiques la gestion
des signaux avancs sont les suivantes :
16.6 Grer louverture dune fentre WinDev dans un thread secondaire
Un thread secondaire ne peut pas ouvrir directe-
ment une fentre avec les fonctions classiques du
WLangage telles que : Ouvre, Utilise, ...
Or il peut tre utile d'afficher une fentre partir
d'un thread secondaire. Par exemple, si un thread
est utilis pour grer la rception des appels tl-
phonique, lorsqu'un appel entrant est dtect ce
thread peut afficher une fentre avec les caract-
ristiques de l'appelant.
La solution consiste faire ouvrir la fentre par le
thread principal.
SI Droite(Saisie1, 1) = " " ALORS
ThreadEnvoieSignal(...
"ThreadCorrection")
FIN
BOUCLE
SI ThreadAttendSignal() = Vrai
ALORS LanceCorrection()
FIN
FIN
ThreadAttend-
Signal
Le "thread" en cours est bloqu
tant qu'il n'a pas reu un signal
d'un autre "Thread"
ThreadEnvoie-
Signal
Le "thread" en cours envoie un
signal au "thread" spcifi pour
le dbloquer
SignalAttend Bloque le thread en cours en
attendant que le signal spcifi
soit ouvert
SignalCre Cre un signal
SignalDtruit Dtruit explicitement un signal
SignalModifie Modifie l'tat d'un signal
WLangage.book Page 299 Mardi, 23. avril 2013 1:59 13
300 Partie 6 : Communication
16.6.1 Ouverture d'une fentre partir d'un
thread secondaire
Pour ouvrir une fentre partir d'un thread
secondaire :
1. Lorsque le thread secondaire veut ouvrir une
fentre, il envoie un message au thread principal
grce la fonction PostMessage.
Ce message indique au thread principal la fentre
ouvrir et les paramtres ncessaires l'ouverture
de la fentre.
2. Le thread principal gre un vnement spcifi-
que, correspondant la demande d'ouverture de
fentre. Lorsque cet vnement survient, la proc-
dure WLangage lance ouvre la fentre spcifie
(avec la fonction Ouvre par exemple) avec si nces-
saire les paramtres indiqus.
16.6.2 Exemple
La mthode dcrite ci-dessus est utilise dans
l'exemple WD Messagerie instantane.
Le code d'ouverture de la fentre principale permet
de :
mettre en place un vnement pour grer l'ouver-
ture de la fentre dans le thread principal.
dclencher les threads secondaires.
.
L'ouverture de la fentre est ralise par exemple
dans le code de la procdure EcouteRequteDe-
butMessage. Cette procdure est excute dans
un thread. Le code utilis pour ouvrir la fentre
depuis le thread est le suivant :
Le message "DbutChat" est envoy la fentre
principale (identifie par son Handle). Ce message
contient les diffrents paramtres passer la
fentre. Le message est trait par l'vnement
dfini dans le code d'ouverture de la fentre. Lors-
que le message survient, la procdure Ouverture-
Chat est automatiquement excute. C'est cette
procdure qui ouvre la fentre.
Le code de cette procdure est le suivant :
// Mise en place d'un vnement pour
// grer l'ouverture de la fentre
// de "chat"
gnIdEvenement = Evnement(...
"OuvertureChat","*.*", ...
"DebutChat")
SI gnIdEvenement = 0 ALORS
// Erreur lors de la mise en place
// de l'vnement de gestion de la
// fentre de "chat"
Erreur("Impossible de grer"+...
"la fentre d'ouverture"+ ...
"de chat",ErreurInfo())
// L'application ne peut pas
// fonctionner sans cet vnement
FinProgramme()
FIN
// Ecoute des requtes de
// connexion
// et de tests de prsence
ThreadExcute("ThreadPresence",...
threadNormal,...
"EcouteDemandePresence")
ThreadExcute("ThreadRequete",...
threadNormal,...
"EcouteDemandeConnexion")
// Demande d'ouverture de
// la fentre de "chat"
PostMessage(...
Handle(Fentre_Principale),...
"DebutChat",CONTACT.IDCONTACT,...
CONTACT.IDCONTACT)
PROCEDURE OuvertureChat(nParam,...
nContact)
OuvreSoeur(Fentre_Message, ...
nContact)
WLangage.book Page 300 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 301
16.7 Fonctions de gestions des threads
Les fonctions permettant de grer les threads sont les suivantes :
ExcuteThreadPrinci-
pal
Dclenche l'excution de la procdure spcifie par le thread principal de l'applica-
tion.
MutexCre Cre explicitement un mutex
MutexDbut Bloque le thread courant en attendant que le mutex soit libre
MutexDtruit Dtruit explicitement un mutex
MutexFin Signale que le thread libre le mutex
SectionCritiqueDbut Signale le dbut d'une section critique : aucun autre thread ne pourra excuter le
code tant que le thread courant ne sera pas sorti de la section critique
SectionCritiqueFin Signale la fin d'une section critique : un autre thread pourra excuter le code
SmaphoreCre Cre un smaphore
SmaphoreDbut Bloque le thread en cours en attendant que le smaphore soit ouvert (c'est--dire
qu'une place "libre" soit disponible dans la zone protge)
SmaphoreDtruit Dtruit explicitement un smaphore
SmaphoreFin Autorise un ou plusieurs threads de sortir de la sortie de la zone protge par le
smaphore
SignalAttend Bloque le thread en cours en attendant que le signal spcifi soit ouvert
SignalCre Cre un signal
SignalDtruit Dtruit explicitement un signal
SignalModifie Modifie l'tat d'un signal
ThreadArrte Arrte un "thread" secondaire
ThreadAttend Attend la fin de l'excution du "thread" dsign. Un temps maximum d'attente peut
tre prcis
ThreadAttendSignal Le "thread" en cours est bloqu tant qu'il n'a pas reu un signal d'un autre "Thread"
ThreadCourant Renvoie le nom du thread en cours d'excution
ThreadEnvoieSignal Le "thread" en cours envoie un signal au "thread" spcifi pour le dbloquer
ThreadEtat Renvoie l'tat actuel d'un thread
ThreadExcute Lance l'excution d'un "thread" secondaire. Ce "thread" est non bloquant
ThreadMode Change le mode de gestion des threads
ThreadPause Temporise le thread en cours pour la dure indique
ThreadPriorit Renvoie ou modifie le niveau de priorit d'un thread
ThreadReprend Relance l'excution d'un "thread" prcdemment suspendu par la fonction Thread-
Suspend
ThreadSuspend Suspend temporairement l'excution du "thread" dsign. Le traitement en cours
n'est pas bloqu
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 301 Mardi, 23. avril 2013 1:59 13
302 Partie 6 : Communication
17. SOAP
17.1 Prsentation
Le "SOAP" (Simple Objet Access Protocol) est un
protocole de communication qui permet d'excuter
des procdures sur un serveur distant.
Ce protocole s'appuie principalement sur les proto-
coles HTTP et XML. Il peut galement s'utiliser avec
le protocole SMTP.
Les donnes sont transmises entre le poste local et
le serveur SOAP sous forme de texte structur au
format XML (Extensible Markup Language).
Avantage du protocole SOAP
Le principal avantage du protocole SOAP vient du
fait qu'il repose sur deux protocoles standard :
XML pour la structure des messages,
HTTP pour le transport des donnes.
De ce fait, le protocole SOAP est indpendant des
systmes d'exploitation et des langages de pro-
grammation. Le protocole SOAP permet l'inter-op-
rabilit.
De plus, l'utilisation du protocole HTTP (pour le
transfert des donnes) permet au protocole SOAP
de franchir les "firewalls" (barrires de scurit)
sans problme.
17.1.1 WinDev / WebDev et le protocole
SOAP
WinDev et WebDev permettent de crer une appli-
cation cliente SOAP. Cette application utilise les
fonctions SOAP du WLangage pour faire excuter
des procdures au serveur SOAP et rcuprer leur
rsultat.
De plus, winDev permet de crer une application
serveur SOAP. Cette application est compose de
procdures qui seront lances par l'application
cliente.
17.1.2 Exemple
WinDev est livr en standard avec un exemple utili-
sant les fonctions SOAP : WD Utilisation SOAP.
17.2 Excuter des procdures sur un serveur SOAP
Un ensemble de fonctions SOAP vous permet de
grer l'excution de procdures sur un serveur
SOAP depuis vos applications WinDev ou depuis
vos sites WebDev.
17.2.1 Principe d'utilisation
L'ensemble des paramtres ncessaires l'excu-
tion d'une procdure SOAP est fourni dans la docu-
mentation du serveur SOAP et de ses procdures.
Pour excuter une procdure sur un serveur SOAP :
1. Initialisez la structure des paramtres de la pro-
cdure excuter (consultez "La structure d'une
procdure SOAP").
Remarque (WinDev uniquement) : Pour effectuer
des vrifications supplmentaires sur le serveur
SOAP, ajoutez un en-tte de procdure (fonction
SOAPAjouteEntte).
2. Excutez la procdure (fonction SOAPExcute ou
SOAPExcuteXML). Les oprations suivantes sont
automatiquement ralises :
connexion entre le poste en cours et le serveur
SOAP,
transmission des paramtres de la procdure au
serveur SOAP,
vrification de l'en-tte si ncessaire,
excution de la procdure,
envoi du rsultat ou de l'erreur de la procdure
au poste en cours.
3. Testez le rsultat de la procdure.
Le rsultat des fonctions SOAPExcute ou SOA-
PExcuteXML permet de savoir si la connexion a
bien t tablie.
Si la connexion n'a pas t tablie, utilisez la fonc-
tion ErreurInfo pour connatre les causes de
l'erreur.
WLangage.book Page 302 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 303
Si la connexion a t tablie, testez le rsultat de la
fonction SOAPDonneRsultat :
Si le rsultat est diffrent d'une chane vide (""),
la procdure a t excute avec succs.
Si le rsultat correspond une chane vide (""), la
procdure n'a pas t excute et/ou a retourn
une erreur. Pour connatre l'erreur de la proc-
dure, utilisez la fonction SOAPErreur.
Remarque :Actuellement, les transferts ne sont
pas scuriss (pas de cryptage des donnes trans-
fres). Il est recommand de ne pas utiliser le pro-
tocole SOAP pour transfrer des donnes
sensibles.
17.2.2 La structure SOAP
La structure suivante est utilise pour passer des
paramtres une procdure excute sur un ser-
veur SOAP :
Cette structure doit tre utilise pour chaque para-
mtre. Par exemple :
SOAP.Valeur[1] = 94010
SOAP.Nom[1] = "CodePostal"
SOAP.Type[1] = SOAPTypeChane
Cette structure est quivalente :
SOAP.ParamXML[1] = <CodePostal
xsi:type="xsd:string">94010</CodePostal>
17.3 Crer et installer une application serveur SOAP WinDev
L'application serveur SOAP est une application con-
tenant toutes les procdures excuter. Ces proc-
dures sont excutes par l'application cliente SOAP.
17.3.1 Principe
Variable Type Dtail
SOAP.NameSpace Chane de caractres
optionnelle
Espace de nommage (appel "NameSpace") du paramtre
SOAP.Nom Chane de caractres Nom du paramtre
SOAP.ParamXML Chane de caractres
optionnelle
Ensemble sous forme XML des structures d'un paramtre. Si
ce paramtre est spcifi, les autres paramtres (Valeur,
Nom, Type, NameSpace et StyleEncodage) sont ignors.
SOAP.StyleEncodage Chane de caractres
optionnelle
Style d'encodage (appel "EncodingStyle") du paramtre
SOAP.Type Constante Type du paramtre
SOAP.Valeur Tout type Valeur du paramtre
WLangage.book Page 303 Mardi, 23. avril 2013 1:59 13
304 Partie 6 : Communication
17.3.2 Comment crer une application
Serveur SOAP
Pour crer une application Serveur SOAP :
1. Crez un projet WinDev de type "Bibliothque".
2. Crez des procdures globales. Chaque proc-
dure globale pourra tre excute par le poste
Client SOAP. Attention : l'application serveur ne doit
pas avoir dinterface (pas de fentres, d'tats, de
fentre de trace ou de botes de dialogue). Cette
application est galement limite par les droits
dfinis pour le serveur Web.
3. Saisissez si ncessaire le code d'initialisation et
de fermeture du projet. Ces deux codes seront res-
pectivement excuts au chargement et au dchar-
gement de la bibliothque sur le serveur.
4. Gnrez la bibliothque de votre projet (fichier
.WDL). Ce fichier contient toutes les procdures du
projet.
Remarque : Dans l'application Cliente SOAP, pour
prciser le nom de la bibliothque utilise (WDL), il
suffit de prciser ce nom dans le NameSpace
(fonction SoapExcute).
Attention : Actuellement, les transferts ne sont pas
scuriss (pas de cryptage des donnes transf-
res). Il est recommand de ne pas utiliser le proto-
cole SOAP pour transfrer des donnes sensibles.
Pour tester votre application serveur SOAP sur le
poste de dveloppement :
1. Gnrez la bibliothque (Fichier .WDL) de votre
application Serveur (sous le volet "Projet", dans le
groupe "Gnration", cliquez sur "Gnrer").
2. Configurez le serveur Internet install sur votre
poste pour votre application WinDev (configuration
pour Apache, IIS5 ou Netscape iPlanet 4.1). Pour
plus de dtails, consultez laide en ligne.
3. Configurez l'administrateur SOAP (application
WDSOAPConfig.EXE dans le rpertoire "Donnes"
de WinDev). Pour plus de dtails, consultez "Confi-
gurer ladministrateur".
4. Redmarrez votre serveur Web.
5. Lancez le test de votre application cliente SOAP.
Pour installer votre application sur un poste serveur
SOAP :
1. Gnrez la bibliothque (Fichier .WDL) de votre
application Serveur (sous le volet "Projet", dans le
groupe "Gnration", cliquez sur "Gnrer").
Attention : Il ne faut pas renommer les DLL Win-
Dev.
2. Crez la procdure dinstallation de votre appli-
cation. Sous le volet "Projet", dans le groupe "Gn-
ration", droulez "Procdure dinstallation" et
slectionnez "Crer la procdure dinstallation".
3. Les fichiers devant tre slectionns pour l'ins-
tallation sont les suivants :
application WDSOAPConfig.EXE prsente dans le
rpertoire "Donnes" du rpertoire d'installation
de WinDev.
les DLL WinDev ncessaires l'excution de
votre application. Vrifiez que les DLL suivantes
sont slectionnes : WD180IMG.DLL,
WD180OBJ.DLL, WD180STD.DLL et
WD180VM.DLL.
les DLL WinDev spcifiques au serveur HTTP
utilis : WD180SAPA.DLL pour Apache,
WD180SIIS pour IIS, etc.
4. Installez l'application sur le poste serveur.
5. Configurez le serveur Internet pour votre applica-
tion WinDev (configuration pour Apache, IIS5 ou
Netscape iPlanet 4.1). Pour plus de dtails, consul-
tez laide en ligne.
6. Configurez ladministrateur SOAP. Pour plus de
dtails, consultez laide en ligne.
7. Pour que le client soap puisse contacter le ser-
veur, l'adresse du serveur utilise dans la fonction
SoapExcute doit tre de la forme :
Remarque : Si plusieurs applications serveur soap
sont installes sur le mme poste, il est obligatoire
d'installer :
toutes les bibliothques (WDL) dans le mme
rpertoire,
toutes les DLL WinDev utilises dans le mme
rpertoire.
Un seul administrateur SOAP sera install et utilis.
<Adresse IP du serveur>\ ...
Serveur.soap
WLangage.book Page 304 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 305
17.4 Fonctions SOAP
Les fonctions permettant de grer les procdures SOAP sont les suivantes :
SOAPAjouteEntte Ajoute un en-tte la prochaine procdure SOAP excuter
SOAPDonneRsultat Renvoie le rsultat de la dernire procdure SOAP excute avec succs
SOAPEncodeRsultat Permet de paramtrer le format de la valeur retourne par le serveur SOAP WinDev
au programme client SOAP
SOAPErreur Renvoie l'erreur de la dernire procdure SOAP ayant chou
SOAPExcute Excute une procdure sur un serveur SOAP
SOAPExcuteXML Excute une procdure sur un serveur SOAP
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 305 Mardi, 23. avril 2013 1:59 13
306 Partie 6 : Communication
18. WEBSERVICES XML
WinDev et WebDev permettent dimporter directe-
ment des services Web XML de type .Net et J2EE
dans vos applications WinDev et dans vos sites
WebDev.
De plus, WinDev permet de gnrer directement
des services Web XML utilisant la technologie SOAP
partir de vos applications WinDev.
18.1 Importer des Webservices XML
18.1.1 Prsentation
WinDev, WebDev et WinDev Mobile permettent
d'importer directement des Webservices dans vos
applications.
Un Webservice est un ensemble de points
d'entres mis la disposition des utilisateurs afin
d'effectuer diffrents traitements. Par exemple, un
service d'accs distant met votre disposition les
traitements d'accs aux donnes. Les changes
d'informations avec un Webservice se font au for-
mat XML et utilisent les protocoles SOAP (Simple
Object Access Protocol) et HTTP.
A partir de la description au format WSDL (Web Ser-
vices Description Language) de ce service, WinDev,
WebDev ou WinDev Mobile va gnrer automati-
quement des types et des fonctions WLangage cor-
respondants l'interface de programmation du
Webservice.
Remarque : Par compatibilit avec les versions pr-
cdentes, il est galement possible de demander la
gnration d'une collection de procdures ou d'une
classe dont les mthodes correspondent aux op-
rations du Webservice. Il est nanmoins recom-
mand d'utiliser le nouveau mcanisme de
gnration automatique de types natifs.
Pour utiliser le Webservice, il suffit d'utiliser les
fonctions gnres au moment de l'import.
18.1.2 Importer un Webservice dans un
projet
Pour importer un Webservice :
1. Sous le volet "Projet", dans le groupe "Projet",
droulez "Importer" et slectionnez loption "Impor-
ter un Webservice (SOAP, .Net, J2EE)". L'assistant
d'importation d'un Webservice se lance.
2. Slectionnez la description WSDL du service
importer. Cette description peut tre charge :
soit partir d'une adresse Internet,
soit depuis un fichier XML prsent sur le poste en
cours.
3. Validez lassistant, le Webservice est automati-
quement ajout dans l'explorateur de projet (dans
la branche "Webservices") et prt tre utilis.
18.1.3 Mettre jour la description d'un
Webservice
Lorsquun Webservice volue (corrections, nouvel-
les versions, etc.), sa description peut galement
tre amene voluer.
Pour mettre jour le type dans votre projet, il faut :
1. Slectionner le Webservice dans lexplorateur
de projet.
2. Slectionner l'option "Mettre jour" du menu
contextuel.
Remarque : les Webservices imports en utilisant
le mcanisme de compatibilit avec les versions
prcdentes ne peuvent pas tre mis jour.
18.1.4 Proprits d'un Webservice
Proprits d'un Webservice
modifiables dans l'diteur
Pour modifier les proprits d'un Webservice dans
l'diteur :
1. Slectionnez le Webservice dans l'explorateur
de projet.
2. Choisissez l'option "Description" du menu con-
textuel.
3. La fentre des proprits souvre. Dans cette
fentre, il est possible de modifier les proprits
suivantes :
L'adresse d'import du Webservice : il s'agit de
l'URL permettant d'atteindre le WSDL dcrivant le
Webservice.
Le nom d'utilisateur et le mot de passe utiliss
pour importer le WSDL.
Remarque : Les proprits modifiables dans l'di-
teur et les proprits modifiables par programma-
tion n'ont pas de lien
WLangage.book Page 306 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 307
Proprits d'un Webservice modifia-
bles par programmation
Pour adresser un Webservice par programmation, il
suffit d'utiliser le nom du Webservice tel qu'il est
prsent dans l'explorateur de projet.
Remarque : il est possible de faire un glisser-dpo-
ser directement depuis l'explorateur de projet dans
l'diteur de code pour insrer le nom du Webser-
vice.
Les proprits modifiables par programmation
sont :
Remarque : Si un nom d'utilisateur et un mot de
passe sont spcifis, l'authentification des requ-
tes HTTP se fera en utilisant le schma d'authentifi-
cation "Basic", dans lequel les paramtres sont en
clair dans la requte HTTP. Il est prfrable d'utili-
ser des requtes HTTPS si l'authentification est
ncessaire.
18.1.5 Utiliser un Webservice import dans le
projet
Pour utiliser la collection de procdures du Webser-
vice, il suffit d'appeler les fonctions gnres auto-
matiquement par l'import.
Les types de variables dclars automatiquement
lors de l'import du WSDL offrent un certain nombre
de proprits :
Manipulation avance du flux XML
du Webservice
Dans certains cas, il est ncessaire de manipuler
prcisment le flux de donnes XML chang avec
le Webservice. Certains Webservices demandent
par exemple d'ajouter des enttes dans leur flux
XML pour permettre l'authentification ou retour-
nent des meta informations dans les enttes de la
rponse.
Pour rpondre ces demandes particulires, les
fonctions suivantes peuvent tre utilises :
SOAPPrpare : Cette fonction construit la
requte au Webservice pour une fonction et des
paramtres donns mais ne l'envoie pas.
Nom Effet
Adresse Cette proprit permet de rempla-
cer l'adresse d'appel du Webser-
vice dcrite dans le WSDL par une
autre URL..
Cette proprit est de la forme :
"http://serveur:port/
chemin_du_webservice".
Par exemple, dans le cas d'un
Webservice gnr avec WinDev
et dploy sur un Serveur d'Appli-
cation WebDev, il s'agit de l'URL
du fichier d'extension "awws".
Remarques :
La modification de cette pro-
prit remplace toutes les URL
dcrites dans le WSDL.
Si cette proprit reoit une
chane vide, les URL dcrites
dans le WSDL seront de nou-
veaux utilises.
Utilisateur Cette chane de caractres sera
utilise comme nom d'utilisateur
pour raliser l'authentification lors
des requtes HTTP au Webservice.
MotDePasse Cette chane de caractres sera
utilise comme mot de passe pour
raliser l'authentification lors des
requtes HTTP au Webservice.
Nom Effet
Existe Vrai si le type de variable existe
dans la rponse du Webservice.
Faux sinon.
Occurrence Nombre d'lments de ce type
dans la rponse du Webservice.
Un Webservice peut retourner des
tableaux de variables.
La proprit ..Occurrence permet
de connatre la taille du tableau
renvoye et l'oprateur [ ] permet
d'accder aux lments du tableau.
Type Nom du type de la variable. Cette
proprit est utilise lorsquun
Webservice est susceptible de
retourner des rponses de diff-
rents types.
Valeur Valeur de la variable.
Cette proprit est accde par
dfaut lorsque seul le nom de la
variable est utilis, par exemple :
monWebservice.Variable-
Requete = SAI_Valeur
est quivalent :
monWebservice.Variable-
Requete..Valeur =
SAI_Valeur
WLangage.book Page 307 Mardi, 23. avril 2013 1:59 13
308 Partie 6 : Communication
SOAPAjouteEntte : Cette fonction permet d'ajou-
ter des enttes personnalises dans un appel de
Webservice.
SOAPRcupreEntte : Cette fonction permet de
relire les informations prsentes dans l'entte de
la rponse d'un Webservice.
SOAPAjouteAttribut : Cette fonction permet de
dclarer des attributs supplmentaires (non pr-
sent dans le WSDL) sur une variable de Webser-
vice gnre automatiquement. Elle est utilise
en programmation avance dans les cas o le
WSDL renvoy par le Webservice ne correspond
pas compltement au type attendu.
Cas particulier : le Webservice ren-
voie un rsultat dans un type non
reconnu par WinDev/WebDev/Win-
Dev Mobile
Les types de variables disponibles dans WinDev et
ceux disponibles dans un Webservice de type SOAP
peuvent tre diffrents.
Les types simples (boolen, entier, etc.) et comple-
xes (dateheure, dure, structures, tableaux de
types simples et de structures, structures imbri-
ques, etc.), utiliss dans le Webservice sont auto-
matiquement convertis au format du WLangage (et
inversement) lors de l'importation du service dans
un projet. Les types Tableaux sont galement
grs.
Les types plus volus (classes, types avancs du
WLangage, etc.) sont traits en tant que chane de
caractres dans le code WLangage. Ces chanes de
caractres contiennent le code XML correspondant
au type de variable renvoy par le Webservice et
son contenu.
Ainsi, si un Webservice renvoie un rsultat sous
forme d'instance de classe, ce rsultat sera trait
dans la procdure comme une chane de caract-
res au format XML. Il sera ensuite ncessaire de
traiter cette chane de caractres (en WLangage)
pour en extraire les informations voulues. Pour plus
de dtails, consultez les fonctions XML.
Remarque : Dans le cas o le Webservice retourne
une structure, le nom des membres de la structure
de retour est sensible la casse.
18.1.6 Distribuer une application WinDev qui
utilise un Webservice
Pour distribuer une application qui utilise un Web-
service, il suffit d'intgrer le fichier dcrivant le
Webservice (fichier .wdsdl) dans la bibliothque de
l'application.
Pour que l'application puisse excuter le Webser-
vice, le poste des utilisateurs finaux doit disposer
d'un accs Internet.
Remarque : Avant de distribuer une application qui
utilise un Webservice, il est conseill de vrifier la
licence d'utilisation et les droits d'utilisation de ce
service (cas des services payants).
18.2 Gnrer un service Web XML
18.2.1 Prsentation
WinDev et WebDev permettent de gnrer directe-
ment des Webservices utilisant la technologie
SOAP. Ces Webservices peuvent ensuite tre utili-
ss dans des projets WinDev, WebDev, WinDev
Mobile ou dans n'importe quel autre langage sup-
portant le protocole SOAP.
A partir du projet WinDev/WebDev correspondant
au Webservice, WinDev/WebDev va crer
automatiquement :
Une bibliothque (fichier .AWWS). Cette biblioth-
que va contenir toutes les procdures de votre
Webservice. Ces procdures seront utilisables
par n'importe quelle application utilisant votre
Webservice.
Un fichier .WSDL. Ce fichier contient la descrip-
tion au format WSDL (Web Services Description
Language) du Webservice. Ce fichier XML con-
tient la description des mthodes et des structu-
res du Webservice.
Pour mettre disposition votre Webservice, ces
fichiers doivent tre installs sur un Serveur
d'Application WebDev.
Rappel : Un Webservice est un ensemble de points
d'entres mis la disposition des utilisateurs afin
d'effectuer diffrents traitements. Par exemple, un
service d'accs distant met votre disposition les
traitements d'accs aux donnes. En gnral, les
changes d'informations avec un Webservice se
font au format XML et utilisent le protocole HTTP
Remarque : par compatibilit, les services Web
XML des versions prcdentes ont t conservs. Il
est toutefois fortement recommand d'utiliser le
nouveau modle de Webservice.
WLangage.book Page 308 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 309
Les diffrences entre les anciens services Web
XML et les Webservices sont les suivantes :
Remarque : Dans le cas de la conversion d'un Ser-
veur SOAP gnr par WinDev 14 (ou une version
antrieure) vers le nouveau modle de Webservice,
il est ncessaire de remplacer les appels la fonc-
tion SOAPExcute gnrs par l'importation du
Webservice dans les projets WinDev par des appels
la nouvelle convention. Pour plus de dtails, con-
sultez laide en ligne.
18.2.2 Comment mettre disposition un
Webservice ?
Pour mettre disposition un Webservice, il suffit
de :
1. Gnrer un Webservice.
2. Tester le Webservice.
3. Dployer le Webservice sur un Serveur d'Applica-
tion WebDev.
18.2.3 Gnrer un Webservice
Pour gnrer un Webservice :
1. Crez un projet WinDev de type Webservice ou
une configuration de type Webservice dans un pro-
jet dj existant.
2. Crez des procdures globales. Chaque proc-
dure globale pourra tre excute par le Serveur
d'Application WebDev.
Attention : Le Webservice ne doit pas avoir d'IHM
(pas de fentre, d'tat, de fentre de trace ou de
bote de dialogue). Il est galement limit par les
droits dfinis sur le serveur web (compte "Invit
Internet" gnralement sous Windows).
3. Saisissez si ncessaire le code d'initialisation et
de fermeture du projet. Ces deux codes seront res-
pectivement excuts au chargement et au dchar-
gement de la bibliothque du Webservice.
4. Sous le volet "Projet", dans le groupe "Gnra-
tion", cliquez sur "Gnrer". L'assistant de gnra-
tion de Webservice se lance.
5. Slectionnez "Dploiement sur un Serveur
d'Application WebDev". Par compatibilit, vous pou-
vez choisir "Dploiement en mode ISAPI". Pour plus
de dtails sur les Webservices en mode ISAPI,
reportez-vous la documentation de WinDev 14.
6. L'cran suivant permet de slectionner les l-
ments intgrer dans la bibliothque. La biblioth-
que aura pour nom le nom du projet en cours. Vous
pouvez :
Ajouter des lments
Tout type de fichier peut tre ajout la liste des
lments insrs dans la bibliothque : images,
fichiers texte, ...
Supprimer des lments
Les fichiers correspondants et leur dpendance
ne seront pas pris en compte dans la biblioth-
que.
Crer la bibliothque partir d'une description
de bibliothque existante (fichier *.WDU)
Lors de la cration d'une bibliothque WinDev, un
fichier ".WDU" du mme nom est automatique-
ment cr. Ce fichier contient toutes les rfren-
ces des lments intgrs la bibliothque.
7. Terminez l'assistant pour gnrer le Webservice.
L'assistant de dploiement est automatiquement
lanc la suite.
Anciens services Web
XML
Webservices
Dploys sur Apache
ou IIS avec un module
ISAPI.
Dploys sur un Serveur
d'Application WebDev
(compatible avec tous
les serveurs Web).
Ne peuvent tre
dploys qu'avec une
installation par mdia
physique directement
sur le serveur.
Peuvent tre dploys
par mdia physique ou
distance (par FTP).
Ne peuvent tre
dploys qu'avec une
installation par mdia
physique directement
sur le serveur.
Autorise une monte en
charge importante.
Limits aux versions
de Windows 32 bits.
Fonctionnent sur toutes
les versions de Windows
(32 et 64 bits) ainsi que
sous Linux.
WLangage.book Page 309 Mardi, 23. avril 2013 1:59 13
310 Partie 6 : Communication
18.2.4 Dployer un Webservice
Pour tre utilisable, un Webservice doit tre
dploy sur un Serveur d'Application WebDev.Ce
dploiement peut se faire :
Directement depuis le poste de dveloppement.
Depuis un poste d'administration (diffrent du
poste de dveloppement)
Sur le Serveur d'Application WebDev, en utilisant
une installation par mdia physique
Afin de dployer le Webservice de faon autonome
sur une machine, l'installation par mdia physique
peut galement tre gnre dans un mode
contenant :
Le Webservice,
Une version limite 10 connexions du Serveur
d'Application WebDev,
Le serveur web Apache.
Dploiement depuis le poste de
dveloppement
Pour dployer directement le Webservice depuis le
poste de dveloppement :
1. Suivez les tapes de l'assistant de gnration
du Webservice dcrites ci-dessus.
2. Dans l'assistant d'installation, slectionnez
"Dployer le Webservice sur un Serveur d'Applica-
tion WebDev distant".
3. Saisissez les paramtres de connexion au Ser-
veur d'Application : adresse, nom d'utilisateur et
mot de passe (ces informations vous sont fournies
par l'administrateur du Serveur d'Application).
4. Indiquez les paramtres de dploiement du
Webservice :
Le nom de dploiement : par dfaut, il est gal
au nom du projet, vous pouvez le changer pour
permettre de dployer plusieurs instances d'un
projet sur le mme serveur, plusieurs projets de
mme nom ou si le nom du projet ne correspond
pas au nom que vous souhaitez pour le Webser-
vice.
Le nom du sous-rpertoire qui contiendra les
fichiers de donnes HyperFileSQL Classic du
Webservice : par dfaut, il est gal au nom du
projet, vous pouvez le changer pour que deux
Webservices partagent les mmes fichiers de
donnes
L'adresse publique du Webservice : par dfaut,
cette adresse est construite avec l'adresse du
Serveur d'Application
5. L'installeur interroge alors le Serveur d'Applica-
tion et affiche la liste des fichiers dployer (s'il a
dtect une version prcdente du Webservice, il
ne propose que les fichiers mettre jour). Utilisez
les interrupteurs dans la premire colonne de la
table des fichiers pour modifier la liste des fichiers
dployer si ncessaire.
6. Paramtrez la modification automatique des
donnes du Webservice.
7. Indiquez les paramtres d'exploitation du Web-
service tels que :
Nombre maximum de connexions simultanes.
Nombre maximum de connexions simultanes
depuis une adresse IP donne.
Dure maximum d'une requte au Webservice.
Vous pouvez galement indiquer que le dploie-
ment sera fait en diffr.
8. Indiquez si le Serveur d'Application doit gnrer
des statistiques lors des accs au Webservice et le
rpertoire de gnration des statistiques. Les sta-
tistiques peuvent tre consultes l'aide de l'outil
WDStatistique.
9. Terminez l'assistant pour lancer l'installation.
Une fentre affiche l'avancement de l'opration et
les ventuels messages d'erreur.
Dploiement depuis un poste
d'administration
Pour dployer directement le Webservice depuis un
poste d'administration diffrent du poste de dve-
loppement, il faut gnrer un package d'installation
avec l'assistant de cration d'installation et le
dployer en utilisant l'outil WDDeploie.
Pour effectuer le dploiement :
1. Suivez les tapes de l'assistant de gnration
du Webservice dcrites plus haut.
2. Dans l'assistant d'installation, slectionnez
"Crer un package de dploiement distant".
3. Vous pouvez choisir un profil de dploiement ou
laisser ce choix l'utilisateur de l'outil WDDeploie.
Un profil de dploiement regroupe les informations
sur le Serveur d'Application utiliser : adresse du
serveur, information d'authentification, etc.
4. Si vous avez choisi d'utiliser un profil, saisissez
ou modifiez les paramtres de connexion au Ser-
veur d'Application : adresse, nom d'utilisateur et
mot de passe (ces informations vous sont fournies
par l'administrateur du Serveur d'Application).
5. Indiquez les paramtres de dploiement du
Webservice :
Le nom de dploiement : par dfaut, il est gal
au nom du projet, vous pouvez le changer pour
permettre de dployer plusieurs instances d'un
projet sur le mme serveur, plusieurs projets de
mme nom ou si le nom du projet ne correspond
pas au nom que vous souhaitez pour le Webser-
vice.
WLangage.book Page 310 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 311
Le nom du sous rpertoire qui contiendra les
fichiers de donnes HyperFileSQL Classic du
Webservice : par dfaut, il est gal au nom du
projet, vous pouvez le changer pour que deux
Webservice partagent les mmes fichiers de don-
nes.
L'adresse publique du Webservice : par dfaut,
cette adresse est construite avec l'adresse du
Serveur d'Application.
6. L'assistant affiche les fichiers qui seront
dploys. Il est possible d'ajouter des fichiers sup-
plmentaires ou d'en retirer.
7. Paramtrez la modification automatique des
donnes du Webservice.
8. Indiquez les paramtres d'exploitation du Web-
service tels que :
Nombre maximum de connexions simultanes.
Nombre maximum de connexions simultanes
depuis une adresse IP donne.
Dure maximum d'une requte au Webservice.
Vous pouvez galement indiquer que le dploie-
ment sera fait en diffr.
9. Indiquez si le Serveur d'Application doit gnrer
des statistiques lors des accs au Webservice et le
rpertoire de gnration des statistiques. Les sta-
tistiques peuvent tre consultes l'aide de l'outil
WDStatistique.
10. Choisissez enfin le rpertoire dans lequel le
package d'installation du Webservice sera gnr
ainsi que le nom du fichier.
Pour installer le Webservice :
1. Lancez l'outil WDDeploie depuis un poste
d'administration.
2. Chargez le package de dploiement du Webser-
vice.
3. Saisissez ou modifiez les paramtres du Serveur
d'Application et les paramtres de dploiement du
Webservice.
4. Cliquez sur le bouton "Dployer" pour dclencher
le dploiement du Webservice. Une fentre affiche
l'avancement de l'opration et les ventuels messa-
ges d'erreur
Dploiement par mdia physique
Pour gnrer une installation par mdia physique
du Webservice :
1. Suivez les tapes de l'assistant de gnration
dcrites ci-dessus.
2. Dans l'assistant d'installation, slectionnez :
"Crer une installation par mdia physique du
Webservice" pour pouvoir installer le Webservice
sur un Serveur d'Application WebDev dj exis-
tant.
"Crer une installation par mdia physique auto-
nome du Webservice" pour pouvoir inclure dans
l'installation le Serveur d'Application WebDev (en
version limite 10 connexions) et le serveur
web
3. L'assistant affiche les fichiers qui seront
dploys. Il est possible d'ajouter des fichiers sup-
plmentaires ou d'en retirer.
4. Paramtrez la modification automatique des
donnes du Webservice.
5. Dans le cas d'une installation autonome, il est
possible de choisir le serveur web qui sera inclus
dans l'installation.
6. L'assistant affiche un plan permettant de slec-
tionner l'installeur utiliser. L'installeur par dfaut
(WBSetup) est livr avec ses sources et peut tre
personnalis.
7. Vous pouvez choisir les rpertoires dans les-
quels seront dploys les fichiers du Webservice
ainsi que les fichiers de donnes (dans le cas d'une
base de donnes au format HyperFileSQL Classic).
Par dfaut, ces lments seront associs un
compte du Serveur d'Application WebDev.
8. Slectionnez la ou les langues proposes pour
raliser l'installation. L'outil d'installation WBSetup
est livr par dfaut en franais et en anglais. Pour
raliser des installations dans d'autres langues, il
suffit de le traduire l'aide de l'utilitaire WDMsg
(vendu sparment).
9. Choisissez enfin le rpertoire dans lequel l'ins-
tallation du Webservice sera gnre.
Pour installer le Webservice
1. Copiez le rpertoire gnr par l'assistant de
cration d'installation sur le Serveur d'Application
WebDev (ou sur n'importe quelle machine dans le
cas d'une installation autonome).
2. Lancer le programme d'installation :
INSTALL.EXE.
WLangage.book Page 311 Mardi, 23. avril 2013 1:59 13
312 Partie 6 : Communication
19. XML
19.1 Gestion des documents XML
19.1.1 Prsentation
WinDev met votre disposition des fonctions per-
mettant de manipuler du code XML. Le code XML
manipul doit tre strictement conforme la norme
XML. Pour plus de dtails, consultez une documen-
tation spcifique sur XML.
Rappel : XML est la fois une norme et un langage
driv du HTML (Pages Web, Internet, ...) qui per-
met de structurer un document contenant des don-
nes.
Le code XML est utilis par exemple :
dans les systmes d'information (Intranet, ...).
dans les dialogues avec les services Web. Pour
plus de dtails sur la gestion des services Web
XML, consultez Webservices XML, page 306.
19.1.2 Dfinition
XML est un langage comportant des balises et des
attributs (appels "lments" dans cette aide).
La structure d'un code XML correspond une
arborescence : les informations sont ordonnes
selon une hirarchie.
Un code (ou contenu) XML correspond :
soit au contenu d'un fichier XML.
soit une rponse d'un service Web XML.
Grce aux fonctions XML de WinDev, il est possible
de :
Lire, rechercher, analyser le contenu d'un fichier
XML.
Examiner les rponses reues des services Web
XML.
Importer des donnes (fonction HImporteXML).
19.1.3 Principe dutilisation
Deux mthodes peuvent tre utilises pour mani-
puler un document XML :
1. Utilisation d'une variable de type chane pour
stocker le document XML. Le document XML peut
tre ensuite manipul grce aux diffrentes fonc-
tions XML.
2. Utilisation d'une variable de type xmlDocument.
Cette mthode permet d'utiliser un fichier de type
XSD.
19.1.4 Utilisation d'une variable de type
chane
Pour manipuler un code XML :
1. Stockez dans une variable de type chane le
code XML manipuler. Ce code peut provenir d'un
fichier XML ou d'une rponse d'un service Web
XML.
2. Crez un document XML (fonction XMLDocu-
ment). Ce document est stock en mmoire et con-
tient l'ensemble du code XML manipuler.
3. Manipulez votre document XML grce aux fonc-
tions WLangage. Il est possible de :
Parcourir le code XML (fonctions XMLPremier,
XMLSuivant, XMLDernier, XMLPrcdent, XML-
Parent, XMLFils, XMLRacine).
Effectuer des recherches (fonctions XMLRecher-
che, XMLAnnuleRecherche, XMLExtraitChane).
Rcuprer des informations sur les lments
(balises ou attributs) du document. (fonctions
XMLTypeElment, XMLNomElment, XMLNom-
Parent, XMLDonne).
Modifier le document XML (fonctions XMLAjou-
teAttribut, XMLAjouteFils, XMLInsreDocument,
XMLInsreElment, XMLModifie, XMLRe-
nomme, XMLSupprime).
Excuter une requte XPATH dans un document
XML (fonctions XMLExcuteXPath, XMLPosition,
XMLRsultat).
Convertir une chane de caractres au format
ANSI en une chane de caractres au format XML
et inversement (fonctions TexteVersXML ou XML-
VersTexte).
4. Enregistrez si ncessaire les modifications effec-
tues (fonctions XMLConstruitChane et fSauve-
Texte).
5. Fermez le document XML (fonction XMLTer-
mine).
Remarque : Il est galement possible de crer un
document XML :
avec les donnes d'une table (fonction TableVer-
sXML).
partir d'une partie d'un document XML existant
(fonction XMLExtraitDocument).
WLangage.book Page 312 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 313
19.1.5 Utilisation d'une variable de type xml-
Document
Les variables de type xmlDocument peuvent tre
dclares en indiquant un document exemple (un
fichier XML) ou un document modle (un fichier
XSD). La structure de ce document sera lue par
WinDev/WebDev et permettra de disposer de la
compltion automatique sur les noms des noeuds
directement dans l'diteur de code.
Pour dclarer une variable de type xmlDocument
avec un document exemple :
1. Ajoutez le document XML dans le projet :
soit via la liste des lments du projet.
Pour afficher cette liste, sous le menu "Projet",
dans le groupe "Projet", cliquez sur licne .
Dans la fentre qui saffiche, utilisez le bouton
"Ajouter".
soit par un Drag and Drop du fichier vers la bran-
che "Description XML" du volet "Explorateur de
projet".
soit directement depuis le volet "Explorateur de
projet" (slectionnez la branche "Description
XML", puis l'option "Importer un fichier de des-
cription XML" du menu contextuel).
2. Le document XML apparat dans la branche
"Descriptions XML" de l'explorateur de projet. Il est
possible de visualiser sa structure.
3. Dclarez la variable de la faon suivante :
<Nom du document> peut correspondre au nom du
document exemple (avec ou sans son extension) ou
au nom du document modle (avec ou sant exten-
sion).
Remarques :
Cette dclaration peut tre obtenue automati-
quement en "droppant" le nom du document XML
directement depuis l'explorateur de projet.
Dans le cas de l'utilisation d'un document exem-
ple, il est galement possible d'utiliser la syntaxe
suivante :
4. 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 l'diteur
de code.
Remarque : La fonction XMLSauve permet de sau-
vegarder le document XML. Si un fichier XSD a t
utilis, il sera automatiquement pris en compte.
19.2 Gestion du XSD
19.2.1 Prsentation
WinDev, WinDev Mobile et WebDev mettent votre
disposition des fonctions permettant de manipuler
du code XML. Le code XML manipul doit tre stric-
tement conforme la norme XML. Pour plus de
dtails, consultez une documentation spcifique
sur XML. Pour plus de dtails consultez la page
d'aide XML.
WinDev, WebDev et WinDev Mobile permettent
d'importer des fichiers au format XSD.
Un fichier XSD contient la description du fichier
XML de mme nom. En effet, la connaissance de la
structure d'un document XML permet notamment
de vrifier la validit de ce document. Le langage
de description de contenu d'un document XSD est
aussi au format XML.
Un exemple de fichier XSD :
<Nom de la variable> est ...
un xmlDocument , description ...
= <Nom du document>
<Nom de la variable> est ...
un xmlDocument
<Nom de la variable> = ...
xmlOuvre(<Nom du document>)
<?xml version="1.0" ...
encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://
www.w3.org/2001/XMLSchema">
<xsd:element name="personne"
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom"
type="xsd:string"/>
<xsd:element name="prenom"
type="xsd:string"/>
<xsd:element name="date_naissance"
type="xsd:date"/>
<xsd:element name="email "
type="xsd: string" minOccurs=0
maxOccurs= unbounded />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
WLangage.book Page 313 Mardi, 23. avril 2013 1:59 13
314 Partie 6 : Communication
Suivi d'un fichier XML valide :
19.2.2 Importer un fichier XSD dans un
projet
Pour importer un fichier XSD dans un projet :
1. Dans le volet "Explorateur de projet", slection-
nez "Description XML".
2. Faites un clic droit et slectionnez l'option
"Importer un fichier de description XML".
3. Slectionnez le fichier XSD de la description
importer.
4. Validez. Le XSD est automatiquement ajout
dans l'explorateur de projet (dans la branche "Des-
cription XML"). Il est prt tre utilis.
19.2.3 Utiliser une description importe
dans le projet
Pour utiliser la description du document XML, il suf-
fit d'utiliser les variables gnres automatique-
ment par l'importation.
1. Dclarez un document XML au format de la des-
cription qui a t importe. Par exemple, si la des-
cription importe se nomme 'personne':
2. Initialisez les diffrentes variables composant la
description du document XML. Par exemple, si le
document est compos du nom et du prnom de la
personne.
Remarques :
Chaque lment est spar par un point ..
Une assistance est propose lors de la saisie des
noms des variables.
3. Enregistrez le contenu du document XML l'aide
de la fonction XMLSauve.
19.3 Fonctions de gestion des documents XML
Les fonctions permettant de grer les documents XML sont les suivantes :
<?xml version="1.0" ...
encoding="UTF-8"?>
<personne xmlns:xsi="http:
//www.w3.org/2001/XMLSchema- ...
instance" xsi:noNamespace...
SchemaLocation="personne.xsd">
<nom>de Latour</nom>
<prenom>Jean</prenom>
<date_naissance>1967-08-13</
date_naissance>
<email>test@free.fr</email>
</personne>
</code WL>
cMonDoc est un xmlDocument ...
<description="personne">
cMonDoc.personne.nom="DUPONT"
cMonDoc.personne.prenom="JEAN"
XMLSauve(cMonDoc, ...
"ListePersonnes.xml"
TexteVersXML Convertit une chane de caractres au format ANSI en une chane de caractres
au format XML
TableVersXML Cre un fichier XML avec les donnes d'une table (table fichier ou table mmoire)
XMLAjouteAttribut Ajoute un attribut dans un document XML
XMLAjouteFils Ajoute une balise fille dans un document XML
XMLAnnuleRecherche Annule la recherche lance par la fonction XMLRecherche
XMLChercheNamespa-
ceParNom
Rechercher un namespace (espace de nommage) XML partir de son nom dans
un noeud XML et dans les parents de ce noeud
XMLChercheNamespa-
ceParURI
Recherche un namespace (espace de nommage) XML partir de son URI (Univer-
sal Resource Identifier) dans un noeud et dans les parents de ce noeud
XMLConstruitChane Rcupre et met en forme le contenu dun document XML (cr avec la fonction
XMLDocument) et modifi grce aux fonctions XML
XMLDernier Se positionne sur le dernier lment du niveau en cours de l'arborescence ou sur
la dernire balise de la hirarchie
XMLDocument Cre ou dfinit un nouveau document XML
XMLDocumentValide Valide un document XML partir dun schma XSD
XMLDonne Renvoie la valeur de l'lment en cours ou dune balise
XMLEcrit Ecrit la valeur d'un lment XML, ou la valeur de l'attribut d'un lment XML
XMLEnDehors Permet de savoir si la position courante est valide ou si la balise sur laquelle on
veut se positionner est en dehors du fichier
XMLExcuteXPath Excute une requte XPATH dans un document XML
WLangage.book Page 314 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 315
XMLExtraitChane Extrait des donnes dans un code XML
XMLExtraitDocument Cre un nouveau document XML partir dune partie dun document XML exis-
tant
XMLFils Se positionne sur le premier lment fils de l'lment en cours ou sur la premire
balise fille de la balise en cours
XMLFilsExiste Indique si la balise courante a des fils correspondant au type recherch (balise,
attribut)
XMLInsreDocument Insre un document XML dans un autre document XML
XMLInsreElment Insre un lment (balise ou attribut) XML dans un document XML
XMLLit Renvoie la valeur d'un lment XML, ou la valeur de l'attribut d'un lment XML.
XMLModifie Modifie le contenu de llment courant dans un document XML
XMLNameSpace Renvoie le prfixe de l'espace de nommage utilis pour la balise courante dans
un document XML
XMLNameSpaceURI Renvoie l'URI de dfinition de l'espace de nommage utilis pour la balise cou-
rante dans un document XML
XMLNoeudValide Valide un noeud XML, ses fils et ses attributs partir de sa description dans le
schma XSD li au document XML.
XMLNomElment Renvoie le nom de l'lment ou de la balise en cours
XMLNomParent Renvoie le nom de l'lment parent de l'lment en cours ou de la balise parente
de la balise en cours
XMLOuvre Charge un document XML partir d'un fichier, d'une URL ou d'une chane dans
une variable de type xmlDocument
XMLParent Se positionne sur l'lment parent de l'lment en cours ou sur la balise parente
de la balise en cours
XMLPosition Renvoie la position en cours dans le document sous la forme XPATH
XMLPrcdent Se positionne sur l'lment prcdent dans le niveau en cours de l'arborescence
ou sur la balise prcdente
XMLPremier Se positionne sur le premier lment du niveau en cours de l'arborescence ou sur
la premire balise rencontre
XMLRacine Se positionne sur la balise racine du document XML
XMLRecherche Lance une recherche dans un document XML
XMLRenomme Modifie le nom de llment courant (balise ou attribut) dans un document XML
XMLRsultat Donne le rsultat dune requte XPATH de calcul. Cette requte a t excute
avec la fonction XMLExcutePath
XMLRetourPosition Restaure le contexte prcdemment sauvegard dun document XML (fonction
XMLSauvePosition). Le filtre en cours lors de la sauvegarde de la position peut
tre restaur.
XMLSauve Sauvegarde un document XML dans un fichier.
XMLSauvePosition Mmorise la position en cours dans un document XML.
XMLSuivant Se positionne sur l'lment suivant dans le niveau en cours de l'arborescence ou
sur la balise suivante de mme niveau
XMLSupprime Supprime llment suivant dans le niveau en cours de larborescence
XMLTermine Ferme un document XML cr avec XMLDocument
XMLTrouve Permet de savoir si un lment a t trouv dans le parcours
XMLTypeElment Renvoie le type de l'lment en cours ou le type de la valeur de la balise en cours
XMLVersTexte Convertit une chane de caractres XML en une chane de caractre au format
ANSI
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 315 Mardi, 23. avril 2013 1:59 13
316 Partie 6 : Communication
20. ASSEMBLAGES .NET
20.1 Prsentation
20.1.1 Dfinition
La technologie .NET correspond la nouvelle plate-
forme de dveloppement logiciel de Microsoft.
Cette plate-forme .NET permet de faciliter norm-
ment le dveloppement dapplications objets dis-
tribus dont les modules communiquent via
Internet.
Ce chapitre ne fait que prsenter de manire glo-
bale lutilisation de la technologie .NET dans Win-
Dev. Pour plus de dtails sur la technologie .NET,
nous vous conseillons de consulter des ouvrages
spcifiques.
20.1.2 WinDev et .NET
Il est possible de crer des programmes .NET (ou
assemblages .NET) depuis une application WinDev.
Ces assemblages .NET sont directement raliss
partir des classes WinDev (avec tous les avantages
de lditeur de code, de lditeur de dossier, ...).
Il est galement possible dutiliser des assembla-
ges .NET (non crs avec WinDev) dans une appli-
cation WinDev, WinDev Mobile ou dans un site
WebDev :
dans une nouvelle application : il suffit de spci-
fier lutilisation des assemblages .NET directe-
ment dans lassistant de cration.
dans une application existante : il suffit de slec-
tionner le ou les assemblages .NET utiliser.
Ce chapitre prsente :
les conditions ncessaires la manipulation dun
assemblage .NET.
la cration dun assemblage .NET.
la cration du programme dinstallation dun
assemblage .NET.
lutilisation dun assemblage .NET dans une
application WinDev.
Pour plus de dtails sur les assemblages .NET, con-
sultez laide en ligne (mots-cls : "Assemblage
.NET").
20.2 Conditions ncessaires la manipulation dun assemblage .NET
Pour crer et utiliser un assemblage .NET sous Win-
Dev, il est ncessaire de :
installer le Framework .NET sur le poste en cours.
rgler le niveau de scurit .NET.
rendre accessibles les DLLs ncessaires lex-
cution de lassemblage .NET.
20.2.1 Installer le Framework .NET
Pour installer le Framework .NET sur le poste en
cours :
Mthode 1 : Utilisation de Windows Update
1. Ouvrez le panneau de configuration de Windows
(option "Dmarrer .. Paramtres .. Panneau de con-
figuration") et slectionnez loption "Ajout / Sup-
pression de programmes".
2. Cliquez sur le bouton "Ajouter de nouveaux pro-
grammes".
3. Cliquez sur le bouton "Windows Update".
4. Recherchez linstallation du Framework .NET.
5. Installez le Framework .NET.
Mthode 2 : Tlchargement depuis le site Inter-
net de Microsoft
1. Consultez le site de Microsoft.
2. Dans la partie "Microsoft Download Center",
recherchez linstallation du Framework .NET.
3. Installez le Framework .NET.
20.2.2 Rgler le niveau de scurit .NET
Pour rgler le niveau de scurit .NET :
1. Ouvrez le panneau de configuration de Windows
(option "Dmarrer .. Paramtres .. Panneau de con-
figuration") et slectionnez loption "Outils dadmi-
nistration".
2. Slectionnez loption "Assistants Microsoft .NET
Framework". La fentre dassistant .NET saffiche.
3. Cliquez sur licne "Ajuster la scurit .NET".
4. Slectionnez loption "Apporter les modifications
cet ordinateur" et cliquez sur "Suivant".
5. Slectionnez licne "Poste de travail" et rglez
la scurit sur "Confiance totale".
WLangage.book Page 316 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 317
Remarque : Pour excuter un programme .NET dis-
ponible sur le rseau local, slectionnez licne
"Intranet local" et rglez la scurit sur "Confiance
totale".
20.2.3 Rendre accessibles les DLLs nces-
saires lexcution de lassemblage .NET
Pour rendre les DLLs ncessaires lexcution de
lassemblage .NET accessibles :
1. Copiez si ncessaire la librairie
"WD180NET.DLL" :
soit dans le rpertoire de cration de lassem-
blage .NET.
soit dans le sous-rpertoire "Assembly" du rper-
toire dinstallation de Windows.
2. Copiez si ncessaire les librairies WinDev :
soit dans le rpertoire de cration de lassem-
blage .NET.
soit dans le PATH.
Rappel : Le PATH liste les rpertoires dans les-
quels les excutables (fichiers ".EXE") et les librai-
ries (fichiers ".DLL") sont recherchs en priorit.
20.3 Crer un assemblage .NET depuis WinDev
Avant de crer un assemblage .NET, tous les l-
ments ncessaires cet assemblage doivent avoir
t dvelopps dans un projet WinDev.
Pour crer un assemblage .NET :
1. Ouvrez le projet WinDev partir duquel lassem-
blage .NET doit tre cr.
2. Crez si ncessaire une configuration de projet
de type "DLL dassemblage .NET" contenant tout
les lments ncessaires.
3. Sous le volet "Projet", dans le groupe "Gnra-
tion", cliquez sur "Gnrer". Lassistant de cration
dun assemblage .NET se lance.
4. Slectionnez les diffrents lments WinDev
(projet, fentres, classes, ...) intgrer dans
lassemblage .NET.
Le bouton "Ajouter" permet dajouter un lment
lassemblage .NET : images, fichiers texte, ...
Le bouton "Enlever" permet de supprimer un l-
ment de lassemblage .NET. Les fichiers correspon-
dants et leurs dpendances ne seront pas intgrs
dans lassemblage .NET.
Le bouton "WDU" permet dafficher les lments
prsents dans une bibliothque prcdemment
cre.
Remarque : Si le projet WinDev (fichier ".WDP") est
slectionn :
lanalyse du projet sera associe lassemblage
.NET.
le traitement dinitialisation du projet sera ex-
cut linitialisation de lassemblage .NET.
le traitement de terminaison du projet sera ex-
cut la fermeture de lassemblage .NET.
5. Slectionnez les classes WinDev (fichiers
".WDC") rendre accessibles.
Ces classes pourront tre manipules depuis
lapplication qui utilisera lassemblage .NET.
6. Paramtrez si ncessaire le message derreur.
Ce message sera affich en cas derreur lors de
lutilisation de lassemblage .NET.
Le bouton "Dfaut" permet de paramtrer un mes-
sage derreur par dfaut.
7. Indiquez si ncessaire les informations de
lassemblage .NET : description, version,
copyright, ...
Le bouton "Avanc" permet de dfinir des propri-
ts supplmentaires spcifiques lassemblage
.NET.
8. Saisissez le nom de lassemblage .NET.
Les boutons "Options de compilation" et "Proprits
avances" permettent daccder des options
avances de lassemblage .NET. Pour plus de
dtails, consultez le paragraphe "Options avan-
ces".
9. Validez.
Limites : Il nest pas possible de :
renommer un assemblage .NET existant.
intgrer des classes dun composant dans un
assemblage .NET.
Options avances
Le bouton "Options de compilation" permet de
slectionner un compilateur C# spcifique et dindi-
quer des options de compilations supplmentaires.
Le bouton "Proprits avances" permet de dfinir
si lassemblage .NET doit tre accessible par un
programme utilisant la technologie COM. Dans ce
cas, il est ncessaire de :
slectionner les diffrentes classes accessibles
depuis ce programme.
crer un assemblage .NET nom fort. Lassem-
blage sera ainsi authentifi et il sera possible de
vrifier sa provenance.
WLangage.book Page 317 Mardi, 23. avril 2013 1:59 13
318 Partie 6 : Communication
spcifier le fichier ".SNK" utiliser. Ce fichier con-
tient les cls de cryptage utilises pour authenti-
fier lassemblage .NET.
indiquer si le mcanisme de signature retarde
doit tre utilis. Ce mcanisme permet de ne pas
authentifier lassemblage .NET lors de son dve-
loppement.
20.4 Crer un assemblage .NET accessible par COM
20.4.1 Prsentation
Avant de crer un assemblage .NET, tous les l-
ments ncessaires cet assemblage doivent avoir
t dvelopps dans un projet WinDev.
20.4.2 Crer un assemblage .NET accessible
par COM partir d'un projet WinDev
Pour crer un assemblage .NET accessible par
COM, il faut :
1. Crer un fichier ".snk".
Le fichier snk contient le couple "cl publique/cl
priv" utilis pour signer numriquement les
assemblages crs par une entreprise. Gnrale-
ment, le mme fichier snk est utilis pour signer
tous les produits d'une entreprise.
Ce fichier doit videmment tre gard secret pour
viter qu'une tierce personne ne puisse signer ses
propres assemblages avec la mme signature.
Pour gnrer un fichier ".snk", il est ncessaire
d'utiliser le gnrateur livr avec le SDK .NET
(fichier sn.exe). La ligne de commande utiliser
pour gnrer un fichier snk est la suivante :
"sn.exe -k MonFichierSNK.snk"
Un fichier exemple est fourni avec WinDev, dans le
rpertoire "Programmes\Donnees\Exemple.snk"
du rpertoire d'installation de WinDev. Ce fichier
permet de tester la gnration d'assemblage
nom fort.
Remarque : ce fichier tant diffus avec WinDev, il
ne permet pas d'identifier de manire unique les
assemblages que vous gnrerez.
2. Modifier le code des classes du projet WinDev
La classe doit avoir un constructeur sans argu-
ments (c'est le seul constructeur utilisable par
COM),
Les membres statiques ne seront pas accessi-
bles par COM,
Les mthodes surcharges sont renommes
dans COM.
3. Dans l'assistant de gnration d'assemblage
.NET, slectionner les options suivantes :
Cocher "Accessible par COM",
Spcifier l'emplacement du fichier snk prc-
demment cr.
4. Copier l'assemblage gnr dans le rpertoire
des assemblages partags de Windows :
Copier l'assemblage dans le rpertoire c:\Win-
dows\Assembly,
Copier la librairie WD180NET.dll dans le rper-
toire c:\Windows\Assembly (sinon l'instanciation
de l'objet COM chouera avec l'erreur "fichier
introuvable l'emplacement spcifi"),
Vrifier que la WD180VM.dll se trouve dans un
rpertoire du PATH.
Pour utiliser un assemblage dans un programme
C++
Ces oprations doivent tre renouveles chaque
changement de GUID des interfaces :
1. Importer l'assemblage : "regasm MonAssem-
blage.DLL /tlb:MonAssemblage.tlb".
2. Utiliser le fichier tlb gnr dans le projet C++.
3. Recompiler le projet C++.
20.5 Crer le programme dinstallation dun assemblage .NET
La cration du programme dinstallation dun
assemblage .NET est identique la cration du pro-
gramme dinstallation dune application WinDev
classique.
Pour plus de dtails, consultez laide en ligne
(mots-cls : "Installation dune application
WinDev").
WLangage.book Page 318 Mardi, 23. avril 2013 1:59 13
Partie 6 : Communication 319
20.6 Utiliser des assemblages .NET dans une application WinDev
Pour intgrer des assemblages .NET dans lapplica-
tion en cours :
1. Sous le volet "Projet", dans le groupe "Projet",
droulez "Importer" et slectionnez loption "Impor-
ter un assemblage .NET".
2. Slectionnez les diffrents assemblages .NET
intgrer dans lapplication en cours.
3. Validez.
Lutilisation dun assemblage .NET est identique
lutilisation dune classe WinDev.
Rappel : Les classes sont visibles dans le volet
"Explorateur de projet".
WLangage.book Page 319 Mardi, 23. avril 2013 1:59 13
320 Partie 6 : Communication
WLangage.book Page 320 Mardi, 23. avril 2013 1:59 13
PARTIE 7
Gestion des
fichiers de donnes
WLangage.book Page 321 Mardi, 23. avril 2013 1:59 13
WLangage.book Page 322 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 323
1. LA GESTION DES FICHIERS DE DONNES
WinDev, WinDev Mobile et WebDev permettent de
grer des fichiers de donnes au format HyperFi-
leSQL (format "WinDev / WebDev"), au format
xBase et toute base de donnes accessible par un
driver OLE DB.
Ce chapitre prsente les concepts de la gestion des
fichiers de donnes ayant des formats reconnus
par WinDev / WebDev.
Pour simplifier la lecture et l'approche de ces con-
cepts, nous vous conseillons de lire uniquement les
chapitres qui vous intressent. Vous pourrez relire
les autres chapitres ultrieurement lorsque vous
utiliserez l'une ou l'autre des fonctionnalits.
Il est parfois fait rfrence des fonctions de pro-
grammation. Ces fonctions sont dtailles dans
l'aide en ligne.
1.1 La gestion des fichiers de donnes HyperFileSQL
Cette partie explique le mcanisme de gestion des
fichiers de donnes HyperFileSQL :
cration d'un fichier de donnes,
ouverture et fermeture automatique des fichiers
de donnes,
gestion des cls,
accs aux enregistrements.
La gestion des fichiers de donnes au format
xBase n'est pas traite dans ce chapitre, elle est
l'objet du chapitre Les fichiers de donnes au for-
mat xBase FoxPro, page 334.
Les noms longs :
Les noms longs sont grs : il est possible de crer
des fichiers de donnes avec des noms longs.
Pour crer des fichiers de donnes avec des noms
longs, il faut que les noms longs soient supports
par l'environnement dans lequel va s'excuter le
programme (ou par lenvironnement du serveur
Web sur lequel va sexcuter le programme) et le
disque sur lequel vont tre crs les fichiers de
donnes.
Par exemple, les noms longs ne peuvent pas tre
utiliss avec certains rseaux qui ne supportent
pas les noms longs mais ils peuvent tre utiliss
sous Windows XP, 7, ...
1.1.1 Cration d'un fichier de donnes
Pour pouvoir accder un fichier de donnes,
celui-ci doit exister sur le disque. Si ce n'est pas le
cas, il faut le crer. Le fichier de donnes physique
est cr :
par programmation.
si loption "Crer automatiquement les fichiers de
donnes si non prsents leur ouverture" est
coche dans longlet "Fichiers" de la description
du projet. Rappel : Pour afficher la description du
projet, sous le volet "Projet", dans le groupe "Pro-
jet", cliquez sur "Description").
Remarque : Le fichier physique nest cr ni par la
gnration d'analyse, ni par la procdure d'installa-
tion.
Deux fonctions permettent de crer un fichier de
donnes :
HCration pour crer le fichier de donnes vide
(et ventuellement les fichiers d'index et de
mmo). Si le fichier de donnes existait dj, il
est cras par un fichier de donnes vide (il est
recr).
HCrationSiInexistant pour crer le fichier de
donnes si celui-ci n'existe pas ou d'ouvrir le
fichier de donnes si celui-ci existe.
Le fichier de donnes et ventuellement les
fichiers d'index et "mmo" sont crs vide.
Le fichier de donnes est cr :
Sous le nom (appel "Nom sur disque") dfini
dans l'analyse (sauf si la fonction HChangeNom a
t appele avant la fonction HCration).
Dans le rpertoire qui a t dfini dans l'analyse,
sauf si la fonction HSubstRep ou HChangeRep a
t appele avant la fonction HCration ou
HCrationSiInexistant.
Lorsque le fichier de donnes vient d'tre cr, il
est vide : il ne contient qu'un en-tte. Cet en-tte
contient des informations propres au fichier de
donnes. Son utilisation est rserve la gestion
interne par WinDev/WebDev.
1.1.2 Ouverture et fermeture des fichiers de
donnes
Les fichiers de donnes sont ouverts et ferms
automatiquement. Ce mcanisme est indiqu ici
pour information.
WLangage.book Page 323 Mardi, 23. avril 2013 1:59 13
324 Partie 7 : Gestion des fichiers de donnes
WinDev / WebDev gre la liste des fichiers de don-
nes utiliss un moment donn par le pro-
gramme.
Lorsquune fonction opre sur un fichier de don-
nes, si celui-ci n'est pas dans la liste des fichiers
utiliss, le fichier de donnes est ouvert automati-
quement.
Un nombre illimit de fichiers de donnes peut tre
ouvert simultanment.
Si le fichier de donnes ferm est rutilis ultrieu-
rement dans le programme, il sera alors ouvert
automatiquement, suivant le mme procd.
Il en sera de mme pour tout nouveau fichier de
donnes utilis.
1.1.3 Gestion des fichiers de donnes Hyper-
FileSQL de plus de 2 Go
Par dfaut, le moteur HyperFileSQL permet de
grer des fichiers de donnes d'une taille trs
importante (jusqu' 2 Giga).
Les fichiers de donnes de plus de 2 Giga ncessi-
tent une configuration spcifique au niveau de
l'diteur d'analyses mais galement au niveau
matriel.
En effet, pour grer les fichiers de donnes de plus
de 2 Giga, il est ncessaire d'utiliser :
Un systme d'exploitation grant les fichiers de
plus de 4 Giga. Les systmes suivants ne grent
pas les fichiers de plus de 4 Giga : Windows 95,
Windows 98, Windows Me.
Un systme de fichiers grant les fichiers de plus
de 4 Giga (par exemple NTFS sous Windows)
WinDev : Cette configuration est ncessaire aussi
bien sur le poste o les fichiers de donnes sont
installs que sur les postes accdant ces fichiers
de donnes. Ainsi, un poste sous Windows 98 ne
pourra pas accder un fichier de donnes sup-
rieur 2 Giga install sous Windows 2000.
WebDev : Cette configuration est ncessaire aussi
bien sur le serveur Web que sur le serveur de don-
nes.
WinDev Mobile : La capacit mmoire tant limite
sur un Pocket PC, cette option nest pas gre.
Configurer les fichiers de donnes
Pour grer des fichiers de donnes de plus de 2
Giga :
1. Affichez la description du fichier de donnes
voulu (option "Description du fichier de donnes"
du menu contextuel).
2. Dans l'onglet "Dtail", cochez l'option "Gestion
des fichiers de plus de 2Go".
Attention : Ces fichiers de donnes ne seront utili-
sables qu' partir dun poste utilisant un systme
d'exploitation grant les fichiers de plus de 4 Giga.
Utiliser des fichiers de donnes de
plus de 2 Go
Description dynamique de fichiers de donnes
Lors de la description dynamique d'un fichier de
donnes (utilisation des proprits HyperFileSQL et
de la fonction HDcritFichier), il est possible de
configurer la gestion de la taille du fichier de don-
nes grce la proprit ..GrosFichier.
Attention : La rindexation de fichiers de donnes
de plus de 2 Giga peut tre relativement longue.
1.1.4 Gestion des cls
Une rubrique peut tre dfinie comme cl unique,
cl multiple ou non cl lors de la description du
fichier de donnes.
Si la rubrique est dcrite comme cl (unique ou
multiple), la rubrique pourra tre utilise comme
critre de recherche dans le fichier de donnes.
Selon le type de la rubrique, la cl peut tre une cl
texte ou une cl numrique.
Dfinitions gnrales
Les rubriques de type texte, date et heure,
lorsqu'elles sont dfinies comme cl, sont appe-
les cl texte.
Les rubriques de type entier (long, court, etc.), de
type rel (simple, double, etc.), de type slecteur,
combo et liste, et de type montaire WinDev,
lorsqu'elles sont dfinies comme cl, sont appe-
les cl numrique.
Une cl compose est une cl compose de
rubriques de type texte et / ou numrique.
Remarque : une cl compose peut tre compo-
se de l'identifiant du fichier de donnes.
Cls uniques et cl doublons
Dfinitions
Une cl est unique lorsque la valeur de la rubrique
est unique pour chaque enregistrement du fichier
de donnes.
Une cl est avec doublons lorsque la valeur de la
rubrique peut exister pour plusieurs enregistre-
ments du fichier de donnes.
WLangage.book Page 324 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 325
Vrification de l'unicit d'une cl
Lorsque la fonction HGreDoublon est active :
Vrification automatique de lunicit des cls
(WinDev uniquement). Lorsquune cl avec dou-
blon apparat aprs lajout ou la modification
dun enregistrement, un message apparat auto-
matiquement et propose lutilisateur de modi-
fier la rubrique posant problme. Cette gestion
automatique peut tre personnalise. Pour plus
de dtails, consultez laide en ligne.
Vrification par programmation. Il suffit de tester
la fonction HErreurDoublon aprs toute fonction
pouvant provoquer lapparition de doublons.
Remarque : Si la cl modifie ou ajoute nest pas
unique, les fonctions pouvant provoquer lappari-
tion de doublons sont les suivantes : HAjoute, HMo-
difie ou TableEnregistre.
Si la fonction HErreurDoublon n'est pas appele,
l'erreur 10 (erreur de doublons) sera automatique-
ment gnre lors du prochain appel une fonc-
tion de gestion de fichiers. Cette erreur ne pourra
pas tre ignore : tous les fichiers de donnes sont
ferms et l'excution du programme est abandon-
ne.
Par dfaut, la gestion des doublons est active.
Si la gestion des doublons est rendue inactive, le
contrle de l'unicit d'une cl n'est pas gr.
Si la vrification automatique de l'intgrit rfren-
tielle est active (fonction HGreIntegrit), la gestion
des doublons est automatiquement active.
Identifiant : WinDev / WebDev propose la gestion
automatique d'un identifiant de fichier (cl unique).
La gestion d'un identifiant est dtaille au chapitre
Gestion d'un identifiant, page 343.
Recherche sur des cls de type texte
Dfinitions
Le critre de recherche est le nom de la cl (rubri-
que) servant la recherche.
L'argument de la recherche est la valeur recher-
che pour cette cl.
L'argument peut tre :
Une valeur complte, on parle alors de recher-
che lidentique.
Une valeur partielle, on parle alors de recher-
che gnrique.
Exemple
Lors d'une recherche gnrique de la chane
"Martin" pour la rubrique NOM, tous les enregistre-
ments dont la rubrique NOM commence par
"Martin" correspondront la recherche. Ainsi,
l'enregistrement contenant "Martinez" correspon-
dra la recherche (la fonction HTrouve renvoie
Vrai).
Lors d'une recherche l'identique sur la chane
"Martin" pour la rubrique NOM, la fonction HTrouve
renvoie Vrai uniquement pour les enregistrements
dont la rubrique vaut exactement "Martin".
// Ajout d'un enregistrement
// (WinDev)
FichierVersEcran
HAjoute(CLIENT)
SI HErreurDoublon() ALORS
Info("Un enregistrement existe"+...
"dj","Il n'est pas ajout")
FIN
// Ajout d'un enregistrement
//(WebDev)
FichierVersPage
HAjoute(CLIENT)
SI HErreurDoublon() ALORS
Info("Un enregistrement existe"+...
"dj","Il n'est pas ajout")
FIN
WLangage.book Page 325 Mardi, 23. avril 2013 1:59 13
326 Partie 7 : Gestion des fichiers de donnes
Remarque : Il est possible de dfinir des critres
particuliers de recherche lors de la description de
la cl sous lditeur danalyses. En effet, il est pos-
sible de dfinir si la rubrique cl sera :
Sensible la casse (majuscules / minuscules) :
Par exemple, PC SOFT sera diffrent de PC Soft.
Sensible laccentuation : Par exemple, "t"
sera diffrent de "ete".
Sensible la ponctuation (virgule, points, ...) : Par
exemple, "S.A.R.L." sera diffrent de "SARL".
Ces diffrents critres seront automatiquement
pris en compte lorsquune recherche sera effec-
tue sur la rubrique cl.
Recherche sur des cls numriques
Codage des cls numriques
Les rubriques numriques (entier, entier long, rel,
...) sont mmorises dans les fichiers de donnes
selon le format binaire spcifique au langage uti-
lis.
Cependant, dans le fichier d'index, les cls numri-
ques sont codes diffremment (pour simplifier et
acclrer les recherches).
Exemple : Si le codage d'un entier est celui du lan-
gage, la valeur ngative est "lexicographiquement"
suprieure la valeur positive (le premier bit, bit de
signe, est "1"). Dans le fichier d'index, le codage
permet de rtablir l'ordre, c'est--dire que le code
d'une valeur ngative sera "lexicographiquement"
infrieur au code d'une valeur positive.
Gestion des cls numriques
Important : Une recherche effectue sur une cl
numrique est forcment effectue lidentique,
c'est--dire que la recherche s'effectue sur la taille
totale de la rubrique.
Exemple : Le code postal peut tre une rubrique de
type texte ou une rubrique de type entier long. La
cl sera donc soit de type texte, soit de type
numrique.
Dans le cas d'une cl de type texte, la recherche
sur les deux premiers caractres permettra une
recherche sur le dpartement. Cette recherche ne
sera pas possible dans le cas d'une cl numrique.
Conseils
Les cls de type texte sont plus simples mani-
puler que les cls numriques mais occupent
plus de place dans le fichier de donnes et dans
le fichier d'index.
Les cls numriques de type rel doivent tre vi-
tes. Les arrondis spcifiques aux codages des
rels dans les langages risquent de perturber la
recherche.
1.1.5 Gestion des cls composes
Une cl compose est une rubrique cl compose
de plusieurs autres rubriques. Ces rubriques peu-
vent tre des rubriques de type texte ou numrique.
Une cl compose permet de simplifier les recher-
ches effectues simultanment sur plusieurs crit-
res.
Les cls composes sont des rubriques binaires.
Leur valeur ne peut pas tre affiche directement
(dans une trace ou dans un champ).
Crer une cl compose
La cration d'une cl compose est ralise direc-
tement sous l'diteur d'analyses.
Pour crer une cl compose dans une description
de fichier :
1. Affichez la description des rubriques du fichier
de donnes (option "Description des rubriques" du
menu contextuel).
2. Cliquez sur l'icne . Un cran permettant de
construire la cl compose apparat.
3. Dans le tableau de gauche, la liste des rubriques
prsentes dans le fichier de donnes apparat.
Double-cliquez sur les rubriques devant participer
la cl compose. Ces rubriques apparaissent dans
Valeur
recherche
Options Enreg en
cours
HTrouve
renvoie
Explications
Durand 1 Vrai Durand existe.
Dupuis 1 Faux Dupuis n'existe pas. Positionne sur la premire
valeur suprieure (Dupont).
Dupon HGnrique 8 Vrai Dupon n'existe pas mais la recherche est gnri-
que et il existe un Dupond343
entre autres).
Dupon 8 Faux Dupon n'existe pas.
Martin 4 Vrai Martin existe.
WLangage.book Page 326 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 327
le tableau de droite.
4. Rorganisez si ncessaire les rubriques compo-
sant la cl compose. Attention : l'ordre des rubri-
ques est trs important car il dtermine l'ordre de
tri. Ainsi, la cl compose "Nom + Dpartement"
sera trie sur le nom puis sur le dpartement.
5. Spcifiez le sens de parcours et les paramtres
de recherche pour chaque composante de la cl.
6. Validez. La cl compose apparat dans la liste
des rubriques du fichier de donnes.
Cl compose et liaison
Il est possible d'utiliser des cls composes dans
des liaisons entre fichiers. Lors de la description de
l'analyse, la cl compose prsente dans le fichier
li apparat alors non plus comme une cl compo-
se mais comme une cl binaire. Il ne sera pas
possible d'accder aux diffrentes composantes de
la cl compose dans le fichier reli.
Remarque : La gestion de l'intgrit rfrentielle
est gre sur une cl de liaison de type cl compo-
se.
Valeur dune cl compose
Une cl compose est stocke sous forme de
chane binaire. Sa valeur ne peut pas tre affiche
(ni dans un champ, ni sous le dbogueur, ...).
Ajout d'un enregistrement contenant une cl com-
pose
Lors de l'ajout ou de la modification d'un enregistre-
ment contenant une cl compose, la valeur de la
cl compose est automatiquement dfinie en
fonction des valeurs des diffrentes composantes
de la cl. Aucune programmation spcifique n'est
ncessaire.
Ajout d'un enregistrement contenant une cl com-
pose dans un fichier reli
Lors de l'ajout d'un enregistrement contenant une
cl compose dans un fichier reli, il est ncessaire
de construire la valeur de la cl. En effet, dans le
fichier reli, la cl compose n'est pas considre
comme une cl compose, mais comme une cl
binaire. Il est donc ncessaire de lui affecter une
valeur.
Cette valeur peut tre affecte :
soit directement. Par exemple, un enregistrement
a t ajout dans le fichier Client. Pour ajouter la
valeur de la cl dans le fichier reli, il suffit de
raliser une affectation directe :
Liaison.NomDate = Client.NomDate
soit l'aide de la fonction HConstruitValCl.
Cette fonction permet de construire la valeur de
la cl compose partir de ses composantes.
Construire la valeur d'une cl compose pour rali-
ser une recherche ou un filtre
Lors de la ralisation d'un filtre ou d'une recherche
sur une cl compose, il est ncessaire de dfinir
la valeur de la cl compose (par exemple pour
dfinir les bornes minimales et maximales du fil-
tre).
Pour construire la valeur d'une cl compose, plu-
sieurs solutions sont possibles :
Utilisation de la fonction HConstruitValCl
Utilisation dun tableau de valeurs
Utilisation de la fonction HConstruitValCl
Il suffit de prciser dans la fonction HConstruitVal-
Cl le fichier concern, le nom de la cl et les
valeurs des composantes.
Exemple : Pour construire la valeur de la cl com-
pose "NOMDATE" correspondant "NOM-
CLIENT+DATE_ENTREE" du fichier Client, il suffit
d'utiliser la ligne de code :
Utilisation dun tableau de valeurs
Il suffit de prciser directement les valeurs de la cl
compose lors de la recherche ou du filtre.
Exemple : Pour faire un filtre sur le fichier "Client",
sur une cl compose du nom et de la date, il suffit
dcrire :
Proprits de gestion des cls com-
poses
Les principales proprits permettant de manipuler
les cls composes par programmation sont les
suivantes :
HConstruitValCl(Client,...
NOMDATE,"MOULIN","03/11/85")
HFiltre(Client, NOMDATE, ...
("MOULIN","03/11/85"))
Binaire Identifie une rubrique de type
binaire (cl compose, chane
binaire, mmo binaire)
ClCompose Teste si la rubrique spcifie est
une cl compose
Composante Renvoie le nom de la nime com-
posante d'une cl compose
FormuleCl Renvoie la formule d'une cl
compose
WLangage.book Page 327 Mardi, 23. avril 2013 1:59 13
328 Partie 7 : Gestion des fichiers de donnes
Les cls composes peuvent tre utilises pour
raliser :
des recherches lidentique,
des recherches gnriques,
des filtres.
Pour plus de dtails, consultez laide en ligne.
1.1.6 Accs aux enregistrements des fichiers
de donnes
Enregistrement et variable de fichier
Un enregistrement est compos des rubriques. Les
rubriques sont dfinies lors de la description du
fichier de donnes.
Dans les programmes, chaque rubrique est mani-
pule par une variable (appele variable de fichier)
ayant un nom et un type dfinis.
La syntaxe de cette variable est forme du nom
logique du fichier de donnes et du nom de la rubri-
que
<NomFichier>.<NomRubrique>
Exemple : la variable de la rubrique "NOMCLI" (nom
client) du fichier "CLIENT" a pour
variable CLIENT.NOMCLI
Remarque : Il ne faut pas dclarer les variables de
fichiers. Toutes les variables de l'enregistrement
sont automatiquement dcrites et dclares par
WinDev / WebDev.
Cas des cls composes
Une cl compose peut directement tre lue, sans
passer par les rubriques qui la composent. Il suffit
de lire la variable comme pour une rubrique.
Cette manipulation est dconseille.
Par exemple, NOMDATE est une cl compose des
rubriques NOM et DATE.
Remarque : La tentative d'criture dans une cl
compose n'a aucune action. En effet, les cls
composes sont reconstruites chaque criture.
Enregistrement point et enregistre-
ment charg en mmoire
Les notions d'enregistrement charg en mmoire et
d'enregistrement point sont fondamentales. Il est
important de les connatre pour bien utiliser les
fonctions de gestion des fichiers de donnes.
L'enregistrement point correspond au dernier
enregistrement lu selon la cl spcifie. La notion
d'enregistrement point est relative une cl.
L'enregistrement charg en mmoire correspond
l'enregistrement du fichier de donnes dont les
valeurs sont actuellement charges dans les varia-
bles du programme.
A un instant donn, il ne peut y avoir qu'un seul
enregistrement charg en mmoire pour un fichier
de donnes et un seul enregistrement point pour
ce mme fichier de donnes.
L'enregistrement point par l'index et l'enregistre-
ment charg en mmoire peuvent cependant tre
diffrents.
Cas particulier : lorsque la gestion des contextes
est active dans les fentres ou dans les pages,
chaque contexte permet de manipuler des enregis-
trements diffrents du mme fichier de donnes. Il
ny a quun seul enregistrement charg en mmoire
par contexte.
La lecture d'un enregistrement, effectue automati-
quement ou la demande, initialise les diffrentes
variables du fichier avec l'enregistrement charg en
mmoire.
L'criture d'un enregistrement correspond l'cri-
ture des variables du fichier dans le fichier de don-
nes lors de la sauvegarde de l'enregistrement
charg en mmoire.
Remarque : Le tableau ci-aprs indique l'enregistre-
ment sur lequel oprent les fonctions qui position-
nent un enregistrement : l'enregistrement charg
en mmoire ou l'enregistrement point.
Les fonctions non prsentes dans le tableau n'utili-
sent pas un enregistrement.
NbComposante Renvoie le nombre de compo-
santes d'une cl compose
Info (FACTURE.NOMDATE)
// Affiche la valeur cl compose
WLangage.book Page 328 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 329
Lecture d'un enregistrement
1. Fonctions de lecture
Les fonctions HLitRecherche, HLitRecherchePre-
mier, HLitRechercheDernier HLitPremier, HLitDer-
nier permettent de lire un enregistrement. D'une
part elles chargent un enregistrement en mmoire,
d'autre part elles pointent un enregistrement dans
l'index.
La fonction HLit permet de lire un enregistrement
sans pointer l'enregistrement dans l'index.
Les fonctions HLitSuivant et HLitPrcdent permet-
tent de lire un enregistrement si un enregistrement
a t point par HLitRecherche, HLitPremier ou
HLitDernier.
Important : La fonction HLit permet de lire un enre-
gistrement selon son numro d'enregistrement,
l'enregistrement point n'est pas initialis. Ainsi,
les fonctions HLitSuivant et HLitPrcdent ne peu-
vent pas tre appeles immdiatement aprs la
fonction HLit.
Cependant, il est possible d'initialiser l'enregistre-
ment point avec la fonction HChangeCl aprs la
fonction HLit : les fonctions HLitSuivant et HLitPr-
cdent peuvent alors tre utilises pour parcourir
le fichier de donnes sur la cl positionne par la
fonction HChangeCl.
2. Lecture selon une cl
Les fonctions HLitRecherche, HLitRecherchePre-
mier, HLitRechercheDernier, HLitPrcdent, HLit-
Suivant, HLitPremier, HLitDernier lisent un
enregistrement selon la cl qui a t spcifie en
paramtre. Un mme fichier de donnes peut tre
lu selon plusieurs cls.
Recherche d'un enregistrement
Les fonctions HLitRecherche, HLitRecherchePre-
mier, HLitRechercheSuivant, HLitPrcdent, HLit-
Suivant, HRecherche, HRecherchePremier,
HRechercheDernier, HPrcdent, HSuivant permet-
tent de rechercher un enregistrement :
La fonction HLitRechercheXX (ou HRechercheXX)
amorce la recherche.
Les fonctions HLitSuivant, HLitPrcdent (ou
HSuivant, HPrcdent) accdent l'enregistre-
ment suivant ou prcdent.
Fonctions positionnant
un enregistrement
Enregistrement charg en
mmoire
Enregistrement
point
HAjoute x
HChangeCle x
HDernier x
HEcrit x
HLit x
HLitDernier x x
HLitPrcdent x x
HLitPremier x x
HLitRecherche x x
HLitRechercheDernier x x
HLitRecherchePremier x x
HLitSuivant x x
HModifie x
HPrcdent x
HPremier x
HRecherche x
HRechercheDernier x
HRecherchePremier x
HRaye x
HRetourPosition x
HSauvePosition x
HSuivant x
HSupprime x
WLangage.book Page 329 Mardi, 23. avril 2013 1:59 13
330 Partie 7 : Gestion des fichiers de donnes
Si l'enregistrement correspondant la recherche
est trouv, la fonction HTrouve renvoie Vrai. Dans le
cas contraire, elle renvoie Faux.
Lors de la recherche d'un enregistrement selon une
cl, il faut tester la fonction HTrouve.
Parcours de fichiers de donnes
1. Principe
Les notions d'enregistrement suivant et d'enregis-
trement prcdent sont relatives l'enregistrement
point pour une cl donne.
Pour pouvoir lire un enregistrement suivant ou pr-
cdent, il faut imprativement initialiser l'enregis-
trement point. Si ce n'est pas le cas, l'erreur 19
sera gnre.
Les fonctions qui initialisent l'enregistrement
point sont : HLitRecherche, HLitRecherchePre-
mier, HLitRechercheDernier, HLitPremier, HLitDer-
nier, HRecherche, HRecherchePremier,
HRechercheDernier, HDernier, HPremier, HChan-
geCl.
Les fichiers de donnes sont accessibles partir
des valeurs des cls tries dans l'ordre croissant. Il
est toutefois possible de parcourir un fichier de
donnes dans les deux sens (croissant ou dcrois-
sant).
Mcanisme de lecture des fichiers
Pour illustrer le mcanisme de lecture des fichiers selon une cl, tudions l'exemple suivant.
Le fichier "PERSONNE" est constitu de deux rubriques cls :
"CODE" : numro du client.
"PRENOM" : prnom du client.
"PERSONNE" contient les 8 enregistrements suivants :
Pour ce fichier, l'volution de l'enregistrement charg en mmoire et de l'enregistrement point, pen-
dant le droulement d'un programme est la suivante :
Numro denregistre-
ment
CODE PRENOM
1 17 Fabien
2 12 Etienne
3 18 Chantal
4 05 Louis
5 01 Jean
6 20 Lara
7 09 Franoise
8 14 Marie
Fonctions Enregistre-
ment point
sur CODE
Enregistre-
ment point
sur PRENOM
Enregistre-
ment en
mmoire
Dbut du programme ? ? ?
HLitPremier(PERSONNE,CODE) enr.5 ? enr.5
HLitPremier(PERSONNE,NOM) enr.5 enr.3 enr.3
HLitSuivant(PERSONNE,CODE) enr.4 enr.3 enr.4
HLitSuivant(PERSONNE,CODE) enr.7 enr.3 enr.7
HLitSuivant(PERSONNE,NOM) enr.7 enr.2 enr.2
HLitSuivant(PERSONNE,NOM) enr.7 enr.1 enr.1
HLitSuivant(PERSONNE,NOM) enr.7 enr.7 enr.7
HLitSuivant(PERSONNE,CODE) enr.2 enr.7 enr.2
Etc. ... ... ...
WLangage.book Page 330 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 331
Attention : Le sens de tri des cls ainsi que les
caractristiques de recherche (accentuation, casse
et ponctuation) spcifies dans lanalyse sont pris
en compte.
Le premier enregistrement d'un fichier de donnes
par rapport une cl est celui (ou l'un de ceux) cor-
respondant la plus petite valeur de la cl. Il est
atteint par les fonctions HPremier ou HLitPremier.
Le dernier enregistrement d'un fichier de donnes
par rapport une cl est celui (ou l'un de ceux) cor-
respondant la plus grande valeur de la cl. Il est
atteint par les fonctions HDernier ou HLitDernier.
Les enregistrements suivant ou prcdant l'enre-
gistrement point sont atteints par les fonctions
HLitSuivant, HLitPrcdent ou HSuivant, HPrc-
dent.
Exemple de parcours croissant :
2. Positionnement en dehors du fichier de don-
nes
Si aprs l'excution d'une fonction HLitDernier,
HLitPrcdent, HLitPremier, HLitRecherche, HLit-
Suivant et HDernier, HPrcdent, HPremier, HRe-
cherche, HSuivant, l'enregistrement point pointe
sur le dernier enregistrement charg en mmoire,
la fonction HEnDehors renvoie Vrai.
Lors d'un parcours dun fichier de donnes, il faut
donc tester la fonction HEnDehors aprs l'excu-
tion d'une des fonctions cites ci-dessus.
3. Changement de cl de parcours
La cl de parcours peut tre modifie avec la fonc-
tion HChangeCl. Dans ce cas, l'enregistrement en
cours est conserv, bien que la cl de parcours soit
modifie.
La fonction HChangeCl peut tre utilise pour
rechercher un enregistrement aprs s'tre posi-
tionn en accs direct sur un enregistrement par la
fonction HLit.
Par exemple, la ligne :
peut remplacer l'algorithme :
4. Parcours en cas de doublons
En cas d'galit sur la valeur d'une cl (doublon),
l'ordre des enregistrements n'est pas significatif. Le
premier enregistrement renvoy sera l'un des enre-
gistrements rpondant l'argument de tri.
Les fonctions HLitSuivant ou HLitPrcdent per-
mettent d'obtenir tous les homonymes.
Important : Aucune hypothse ne doit tre faite
concernant la localisation relle de l'enregistre-
ment. En effet, sur une valeur de recherche poss-
dant des homonymes, une boucle HLitSuivant ne
permet pas de connatre l'ordre dans lequel les
homonymes ont t insrs.
5. Parcours selon un filtre
Il est possible de dfinir un filtre pour slectionner
des enregistrements. Ce filtre peut :
soit parcourir le fichier de donnes selon des
bornes dsignes et slectionner les enregistre-
ments correspondant au filtre. Les bornes dsi-
gnes concernent une cl du fichier de donnes.
soit parcourir le fichier de donnes en fonction
de la condition de slection indique. La cl de
parcours du fichier de donnes est retourne par
la fonction HFiltre en fonction de la condition
indique.
La slection des enregistrements selon le filtre est
alors gre automatiquement.
Le filtre (les bornes mini et maxi ou condition de
slection) est dcrit avec HFiltre.
Le filtre est automatiquement activ. Il peut tre
activ / dsactiv par programmation avec les
N.
Enreg
Nom Prnom Position
1 GONZALEZ Speedy
2 MOUSE Mickey
3 TALON Achille premier selon
PRENOM
4 LAGAFFE Gaston
5 DALTON Avrell premier selon
NOM
6 VAILLANT Michel dernier selon
NOM
7 ONO Yoko dernier selon
PRENOM
8 MALTESE Corto
HLitPremier(CLIENT,Nom)
TANTQUE PAS HEnDehors()
ImprimeEtiquette()
HLitSuivant(CLIENT,Nom)
Fin
HChangeCl(CLIENT,NOMCLI)
NumEnr est un entier
// Mmorise n enreg. en cours de
// Client
NumEnr=HNumEnr(CLIENT)
// Se replacer relativement la cl
// NOMCLI
HRecherche(CLIENT,NOMCLI,...
CLIENT.NOMCLI)
TANTQUE PAS HEnDehors() ET ...
NumEnr<>HNumEnr()
HSuivant(CLIENT,NOMCLI)
FIN
WLangage.book Page 331 Mardi, 23. avril 2013 1:59 13
332 Partie 7 : Gestion des fichiers de donnes
fonctions HActiveFiltre et HDsactiveFiltre.
Filtre et cl compose
Deux mthodes permettent de raliser un filtre sur
une cl compose :
Utilisation des fonctions de filtre volues (HFil-
treCommencePar, HFiltreComprisEntre,
HFiltreIdentique) : la gestion des cls composes
est automatiquement gre. Il suffit de prciser
pour chaque composante de la cl compose la
valeur prendre en compte pour le filtre.
Cette mthode est conseille.
Pour plus de dtails, consultez directement la
documentation de ces fonctions.
Utilisation de la fonction HFiltre combine avec la
fonction HConstruitValCl. Cette mthode est
prsente dans les paragraphes suivants.
Remarques
Le filtre peut tre utilis en langage externe (Win-
Dev uniquement).
Un seul filtre peut tre dfini par fichier un
moment donn.
Un filtre n'est actif que :
soit sur la cl de parcours sur laquelle il a t
dfini,
soit sur la cl de parcours renvoye en fonction
de la condition de slection.
Si un filtre est actif, HPremier, HLitPremier, HLit-
PremierBloque, HLitPremierSansBloquer
retournent :
soit le premier enregistrement correspondant
au filtre,
soit la fonction HEnDehors renvoie Vrai si aucun
enregistrement ne correspond au filtre.
Dans le cas dun filtre sur une cl avec des bor-
nes dfinies, l'enregistrement en cours est
alors le premier enregistrement ayant une cl
suprieure <BorneInf>, s'il existe.
Si un filtre est actif, HDernier, HLitDernier, HLi-
tDernierBloque, HLitDernierSansBloquer
retournent :
soit le dernier enregistrement correspondant au
filtre,
soit HEnDehors() Vrai si aucun enregistre-
ment ne correspond au filtre.
Dans le cas dun filtre sur une cl avec des bor-
nes dfinies, l'enregistrement en cours est
alors le premier enregistrement ayant une cl
suprieure <BorneSup>, s'il existe.
Si un filtre est actif, HSuivant, HLitSuivant, HLit-
SuivantBloque, HLitSuivantSansBloquer
retournent :
soit l'enregistrement suivant correspondant au
filtre,
soit la fonction HEnDehors renvoie Vrai si plus
aucun enregistrement ne correspond au filtre.
Dans le cas dun filtre sur une cl avec des bor-
nes dfinies, l'enregistrement en cours est
alors le premier enregistrement ayant une cl
suprieure <BorneSup>, s'il existe.
Si un filtre est actif, les fonctions HPrcdent et
HLitPrcdent retournent :
soit l'enregistrement prcdent correspondant
au filtre,
soit la fonction HEnDehors renvoie Vrai si plus
aucun enregistrement ne correspond au filtre.
Dans le cas dun filtre sur une cl avec des bor-
nes dfinies, l'enregistrement en cours est
alors le premier enregistrement ayant une cl
infrieure <BorneSup>, s'il existe.
Addition, suppression et
modification d'un enregistrement
Il est possible d'ajouter, de modifier ou de suppri-
mer un enregistrement d'un fichier :
HAjoute ajoute un enregistrement,
HEcrit crit un enregistrement,
HModifie modifie un enregistrement,
HRaye et HSupprime suppriment un enregistre-
ment.
Les fonctions HAjoute, HModifie, HRaye et HSup-
prime utilisent l'enregistrement charg en mmoire
Avant de supprimer ou de modifier un enregistre-
ment, il faut initialiser l'enregistrement charg en
mmoire avec HLit, HLitPremier, HLitDernier, HLit-
Suivant, HLitPrcdent ou HLitRecherche, HLitRe-
cherchePremier, HLitRechercheDernier, sinon une
erreur sera gnre (voir annexe).
Important : Dans les tables fichier, pour supprimer
un enregistrement, il faut utiliser la fonction Table-
Supprime (et non pas la fonction HSupprime). Pour
crire un enregistrement, il faut utiliser la fonction
TableEnregistre (et non pas les fonctions HAjoute,
HModifie, ...).
Remarque : La fonction HCopieEnreg permet de
copier l'enregistrement en cours d'un fichier de
donnes dans l'enregistrement en cours d'un autre
fichier de donnes ayant la mme structure. Pour
plus de dtails, consultez le paragraphe Gestion
d'alias, page 339.
WLangage.book Page 332 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 333
Affectation de variables de fichiers et
de champs de fentre ou de page
Les donnes d'un fichier peuvent tre prsentes
dans une fentre ou dans une page :
soit en fiche : un enregistrement par fentre ou
par page
soit en table : un enregistrement par ligne de
table
Prsentation en fiche
Dans le cas o les champs d'une fentre ou dune
page sont relis des rubriques, les variables des
fichiers peuvent tre affectes avec les valeurs des
champs (ou inversement) grce une seule
fonction :
EcranVersFichier / PageVersFichier affecte les
variables des fichiers avec les valeurs des
champs de l'cran qui leur sont relis,
FichierVersEcran / FichierVersPage affecte les
champs de l'cran avec les valeurs des variables
des fichiers qui leur sont relies.
Les variables de fichiers peuvent galement tre
affectes individuellement. Par exemple :
Important
L'affectation des variables du fichier n'effectue
pas de modifications dans le fichier de donnes :
la modification est effectue uniquement aprs
l'criture de l'enregistrement (par les fonctions
HAjoute, HModifie, ...).
Si plusieurs champs sont relis une mme
rubrique d'un fichier de donnes, les fonctions
FichierVersEcran / FichierVersPage et EcranVer-
sFichier / PageVersFichier peuvent se comporter
de manire alatoire.
Prsentation en table
Les fonctions EcranVersFichier / PageVersFichier
et FichierVersEcran / FichierVersPage ne doivent
pas tre utilises dans les tables fichiers.
Dans les tables, l'affectation des colonnes de la
table avec les valeurs des rubriques de fichier (ou
inversement) est gre automatiquement.
La gestion des fichiers dans les tables, appeles
"tables fichier", est spcifique. Elle est dtaille
dans laide en ligne.
1.1.7 Schmas : le mode fiche et le mode
table
Gestion d'un fichier en mode fiche fiche
Gestion d'un fichier en mode table
1.1.8 Dplacement et positionnement dans
un fichier de donnes
Le WLangage propose 3 fonctions pour se position-
ner et se dplacer rapidement dans un fichier de
donnes sans parcourir le fichier de donnes.
NOM=CLIENT.NOM
CLIENT.VILLE=VILLE
HPositionne Permet de se positionner dans un
fichier de donnes relativement
une cl ou de connatre la position
relative de l'enregistrement en cours
pour une cl par rapport au nombre
total d'enregistrements
HAvance Permet d'avancer de plusieurs enre-
gistrements en mme temps partir
de la position en cours selon une cl
donne
HRecule Permet de reculer de plusieurs enre-
gistrements en mme temps partir
de la position en cours sur une cl
donne
WLangage.book Page 333 Mardi, 23. avril 2013 1:59 13
334 Partie 7 : Gestion des fichiers de donnes
Exemple
1.2 Les fichiers de donnes au format xBase FoxPro
1.2.1 Prsentation
WinDev et WebDev proposent un module d'Accs
Natif xBase / FoxPro. Cet Accs Natif permet de
manipuler des fichiers xBase sans drivers externes
depuis un programme en WLangage.
Configuration ncessaire
Les fichiers suivants sont livrs en standard avec
WinDev / WebDev : WD180DB.DLL. Ce fichier est
ncessaire l'Accs Natif sur des fichiers xBase /
FoxPro pour un fonctionnement avec une analyse
HyperFileSQL Classic.
1.2.2 Utilisation de lAccs Natif xBase / Fox-
Pro
Pour utiliser l'accs natif xBase / Fox Pro dans vos
applications WinDev ou WebDev :
1. Importer si ncessaire les descriptions des
fichiers xBase / FoxPro dans l'analyse WinDev ou
WebDev.
2. Programmer avec les fonctions "HyperFileSQL"
du WLangage (voir Programmation l'aide des
fonctions HyperFileSQL).
La gestion des fichiers xBase/FoxPro est similaire
celle des fichiers HyperFileSQL l'exception des
limitations spcifies (consultez laide en ligne).
1.2.3 Importation de la structure des fichiers
Les tapes de l'importation
Pour raliser cette importation sous lditeur dana-
lyses :
1. Sous le volet "Analyse", droulez "Importer" et
slectionnez loption "Importer des descriptions de
fichiers / tables". L'assistant se lance.
1. Slectionnez le type de la base de donnes :
FoxPro / xBase. Une connexion la base de don-
nes xBase / FoxPro est automatiquement cre et
associe aux fichiers imports dans l'analyse.
Cette connexion devra tre utilise pour manipuler
le fichier de donnes xBase / FoxPro par program-
mation.
2. Spcifiez si les donnes doivent tre conserves
au format actuel (option ncessaire pour utiliser
l'Accs Natif xBase / FoxPro).
3. Slectionnez le mode d'accs aux fichiers (Accs
Natif xBase pour WinDev) et indiquez le rpertoire
des fichiers de donnes.
4. Slectionnez les tables importer dans l'ana-
lyse WinDev. Ces tables pourront tre manipules
par programmation grce aux fonctions Hyper File
de WinDev. Ces tables apparatront en bleu sous
l'diteur d'analyses.
Remarque : les bases de donnes FoxPro (exten-
sion .dbc) ne sont pas gres. Il est ncessaire
d'importer individuellement chaque fichier (exten-
sion .dbf) dans l'analyse.
5. Validez. Les tables sont importes dans l'ana-
lyse. Dans la description du fichier, vous retrouvez
le sous-type xBase du fichier import (dBase3+,
dBase4, FoxPro / FoxBase, Clipper5, Clipper87).
Remarques :
Une rubrique dfinie en Numrique sous FoxPro
peut tre importe en tant que montaire en Win-
Dev / WebDev (si la taille de la rubrique dpasse
par exemple la taille d'un rel).
Les rubriques de type Logique en xBase / FoxPro
sont importes en type Texte. En effet, pour un
boolen en xBase, il est possible d'indiquer Vrai
et Faux avec les chanes 'T' et 'F'.
Prendre en compte les volutions des
fichiers xBase
Pour prendre en compte les volutions des tables
importes sous l'diteur d'analyses, sous le volet
"Analyse", dans le groupe "Analyse", droulez "Syn-
chronisation" et slectionnez loption "Mettre jour
l'analyse depuis les bases de donnes externes".
Un assistant se lance et permet au choix :
soit d'analyser les diffrences pour les tables
importes.
soit d'analyser les diffrences pour toutes les
tables xBase.
// Position 50% de CLIENT sur
// la cl NOMCLI partir du dernier
MaxEnr est un entier
MaxEnr = HNbEnr()
HDernier(CLIENT, NOMCLI)
HRecule(CLIENT,NOMCLI, MaxEnr/2)
SI HEnDehors() ALORS
Erreur("Position endehors")
SINON
Info("Position : enreg="+...
hNumEnr()+" Client = "+...
CLIENT.NOMCLI)
FIN
WLangage.book Page 334 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 335
1.2.4 Points importants de programmation
La gestion des fichiers xBase est similaire celle
des fichiers HyperFileSQL l'exception des points
voqus dans ce paragraphe.
Nouveauts pour la gestion des fichiers xBase :
Gestion d'un identifiant automatique
Possibilit d'utiliser la fonction HReindexe.
Gestion des expressions dans la fonction HFiltre
Possibilit d'utiliser la fonction HChangeRep
Utilisation de laccs natif xBase avec les alpha-
bets non latins.
Gestion des fichiers FoxPro :
Support du format VFP
Tous les formats d'index sont supports (y com-
pris les index au format VFP correspondants
l'extension .CDX). Les index sont lus et modifis.
Gestion d'un identifiant automatique
Gestion des expressions dans la fonction HFiltre
Possibilit d'utiliser la fonction HChangeRep
Limitation : pas de cration ou de rindexation
dun fichier FoxPro.
Description dynamique d'un fichier xBase
Un fichier xBase peut tre dcrit par programma-
tion l'aide des fonctions suivantes :
Exemple :
Ouverture de fichiers dcrits dynamiquement
Un fichier xBase n'est pas automatiquement
ouvert : il faut ouvrir ce fichier avec la fonction
HDBOuvre avant sa premire utilisation, sauf s'il a
t cr avec la fonction HDBCration (qui cre et
ouvre le fichier).
Ouverture d'index
La fonction HDBOuvre ouvre le fichier de donnes
mais pas le ou les fichiers d'index. Il faut donc
ouvrir tous les fichiers d'index ncessaires l'utili-
sation du fichier de donnes avec la fonction
HDBIndex.
Si le ou les fichiers d'index ne sont pas ouverts, ils
ne seront pas mis jour aprs une suppression,
une modification ou une adjonction d'un enregistre-
ment.
Liaisons entre les fichiers xBase ou FoxPro
Les liaisons ne sont pas gres automatiquement.
Il faut les grer par programmation. Ainsi, pour
accder un enregistrement d'un fichier li, il faut
rechercher l'enregistrement correspondant selon la
cl de liaison (fonction HLitRecherche).
Exemple : Une fentre affiche les commandes d'un
client, le fichier "COMMANDE" contient le numro
du produit, le fichier "PRODUIT" contient le libell
du produit et le numro du produit.
HDBCration Termine la description dynamique
de la structure du fichier. Le fichier
qui vient d'tre dcrit est cr sur
le disque dans le chemin indiqu
dans HDBDcritFichier. Les
fichiers de donnes, mmos et
d'index sont crs sur le disque
HDBDcritFi-
chier
Dcrit dynamiquement un fichier
au format dBase 3 (format le plus
rpandu). Cette fonction permet
d'indiquer le nom, l'abrviation et
le chemin d'accs au fichier xBase.
HDBDcritIn-
dex
Dcrit dynamiquement les diff-
rents fichiers d'index qui seront
crs. Un fichier d'index doit tre
dcrit pour chaque cl de recher-
che. Le fichier d'index cr sera au
format dBase 3.
HDBDcritRu-
brique
Dcrit dynamiquement chaque
rubrique de la structure d'un fichier
xBase dcrit avec HDBDecritFi-
chier.
// Description d'un fichier xBase
// avec les rubriques suivantes :
// NOM, chane de 20 caractres
// PRENOM, chane de 20 caractres
// AGE, entier sur 3 chiffres
// SOLDE, rel sur 10 chiffres et
// 2 dcimales
// MARIE, boolen
// DATNAISS, date
// INFOS, mmo texte
HDBDcritFichier("CLIENTDB",...
"CD","C:\FIC\CLIENT.DBF")
HDBDcritRubrique("NOM,C,20")
HDBDcritRubrique("PRENOM,C,20")
HDBDcritRubrique("AGE,N,3,0")
HDBDcritRubrique("SOLDE,N,10,2")
HDBDcritRubrique("MARIE,L")
HDBDcritRubrique("DATNAISS,D")
HDBDcritRubrique("INFOS,M")
HDBCration()
WLangage.book Page 335 Mardi, 23. avril 2013 1:59 13
336 Partie 7 : Gestion des fichiers de donnes
Le traitement d'initialisation de la fentre est par
exemple :
Utilisation de l'accs natif xBase / FoxPro avec des
alphabets non latin
Pour utiliser l'accs natif xBase avec des alphabets
non latin, il est ncessaire de demander l'accs
natif d'effectuer une conversion OEM/ANSI stan-
dard. Il suffit pour cela de spcifier dans les infor-
mations tendues la chane suivante :
OEMTOANSI=WINDOWS;
1.3 Les fichiers de donnes prsents sur un mobile (Pocket PC, iOS,
Android)
1.3.1 Manipulation dune base de donnes
HyperFileSQL
Prsentation
Le format de base de donnes HyperFileSQL est
compatible entre WinDev, WinDev Mobile et Web-
Dev. Il sagit dun SGBD Relationnel redistribuable
gratuitement.
Cependant, la taille disponible sur un Pocket PC
tant restreinte et le systme dexploitation du Poc-
ket PC tant limit, les fonctionnalits suivantes ne
sont pas gres :
les transactions.
la journalisation.
la rplication journale HyperFileSQL.
la gestion des blocages des fichiers et des enre-
gistrements.
la gestion des fichiers au format Hyper File 5.5.
Manipulation dune base de donnes
HyperFileSQL depuis le mobile
Une base de donnes HyperFileSQL correspond
un ensemble de fichiers ".FIC", ".NDX", ".MMO".
Chaque fichier de donnes peut tre manipul par
une application Mobile. Ces manipulations sont
ralises grce aux fonctions HyperFileSQL.
Remarque : La mise en veille peut avoir des effets
nfastes sur les fichiers de donnes. Il est conseill
de fermer les fichiers de donnes (fonction
HFerme) quand il y a risque de mise en veille.
1.4 Fichiers de donnes spcifiques Windows Mobile
1.4.1 Manipulation d'une base de donnes
CEDB (Pocket PC uniquement)
Prsentation
Le format CEDB est un format de base de donnes
utilisable sous Pocket PC.
Une base de donnes CEDB correspond un
fichier ".CDB". Une base de donnes CEDB peut
contenir plusieurs fichiers de donnes (appels
galement "tables").
Deux types de bases de donnes CEDB existent :
les bases de donnes CEDB standard, qui corres-
pondent aux bases de donnes prsentes par
dfaut sur le Pocket PC. Il sagit des bases de
donnes contenant les fichiers de donnes
"Tches", "Contacts", "Calendrier", ...
les autres bases de donnes CEDB (appeles
personnalises), qui correspondent des bases
de donnes Access (fichier ".MDB") pralable-
ment exportes depuis un poste PC.
Lors de la copie d'une base de donnes Access
(fichier ".MDB") sur un Pocket PC, cette base de
donnes se transforme automatiquement en base
de donnes CEDB (fichier ".CDB").
Manipulation d'une base de donnes
Pocket PC (CEDB)
1. Manipulation d'une base de donnes Pocket PC
(CEDB) depuis le Pocket PC
Une base de donnes Pocket PC (appele CEDB)
correspond un fichier ".CDB". Une base de don-
nes Pocket PC peut contenir plusieurs fichiers de
donnes (appels galement "tables").
Cette base de donnes peut tre manipule par
une application WinDev Mobile. Ces manipulations
sont ralises grce aux fonctions cdbxxx.
// Lecture des commandes
HLitPremier(COMMANDE, Date)
SI HEnDehors() = Faux ALORS
// Recherche du produit
// correspondant
HLitRecherche(PRODUIT, NumPro, ...
COMMANDE.NumPro)
FichierVersEcran
FIN
WLangage.book Page 336 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 337
2. Manipulation d'une base de donnes Pocket PC
(CEDB) depuis le poste PC
Si vous possdez WinDev standard, il est gale-
ment possible de crer une application WinDev per-
mettant de manipuler directement la base de
donnes Pocket PC. Ces manipulations sont gale-
ment ralises grce aux fonctions cdbxxx.
Remarque : Pour manipuler une base de donnes
Pocket PC partir d'une application WinDev stan-
dard, il est ncessaire de connecter le poste PC au
Pocket PC (fonction ceConnecte).
3. Synchronisation d'une base de donnes Pocket
PC (CEDB) avec une base de donnes Access
Une base de donnes Access (fichier ".MDB") est
prsente sur le poste PC. Cette base de donnes
est exporte sur le Pocket PC : ActiveSync la trans-
forme automatiquement en base de donnes Poc-
ket PC (fichier ".CDB").
Cette base de donnes Pocket PC peut tre mani-
pule par une application WinDev Mobile.
Si vous possdez WinDev standard, il est gale-
ment possible de crer une application WinDev per-
mettant de manipuler la base de donnes Pocket
PC.
Ces manipulations sont ralises grce aux fonc-
tions cdbxxx.
La synchronisation entre la base de donnes du
Pocket PC et la base de donnes Access est rali-
se par ActiveSync.
Remarques :
Pour manipuler une base de donnes Pocket PC
partir d'une application WinDev standard, il est
ncessaire de connecter le poste PC au Pocket
PC (fonction ceConnecte).
L'application WinDev standard peut galement
manipuler la base de donnes Access grce
l'Accs Natif Access.
Manipulation d'une base de donnes
standard du Pocket PC
Une base de donnes standard (contenant les
fichiers de donnes tches, contacts, ...) est pr-
sente sur le Pocket PC. Cette base de donnes peut
tre manipule par une application WinDev pour
Pocket PC.
Si vous possdez WinDev standard, il est gale-
ment possible de crer une application WinDev per-
mettant de manipuler cette base de donnes
standard du Pocket PC.
Ces manipulations sont ralises grce aux fonc-
tions cdbxxx.
La synchronisation entre la base de donnes du
Pocket PC et les donnes visualises grce Out-
look est ralise par ActiveSync.
Remarque : Pour manipuler une base de donnes
Pocket PC partir d'une application WinDev stan-
dard, il est ncessaire de connecter le poste PC au
Pocket PC (fonction ceConnecte).
Le format des fichiers ".CDB" n'est pas compatible
entre Windows CE 3.0 et Windows CE 4.X. Il n'est
donc pas possible d'utiliser les mmes fichiers
".CDB" sur des Pockets PC n'utilisant pas le mme
systme d'exploitation.
Structure des bases de donnes stan-
dard
La structure des bases de donnes standard est
une structure prdfinie du WLangage (aucune
dclaration n'est ncessaire).
Cette structure permet de :
crer un enregistrement,
modifier un enregistrement,
rcuprer le contenu d'un enregistrement.
Pour remettre zro toutes les variables d'une
structure, utilisez la fonction cdbRaz.
Remarque : Les variables de la structure des bases
de donnes standard sont diffrentes en fonction
de la base de donnes manipule : Contacts, Ren-
dez-Vous et Tches. Pour plus de dtails, consultez
laide en ligne.
WLangage.book Page 337 Mardi, 23. avril 2013 1:59 13
338 Partie 7 : Gestion des fichiers de donnes
1.4.2 Fonctions de manipulation d'une base
de donnes CEDB
Les fonctions permettant de manipuler une base
de donnes CEDB sont les suivantes :
cdbAjoute Ajoute l'enregistrement prsent en mmoire dans un fichier de donnes
cdbAnnuleRecher-
che
Annule le critre de recherche en cours
cdbCol Renvoie une caractristique d'une colonne de l'enregistrement en cours (valeur, type,
identifiant ou nom)
cdbDateHeureVer-
sEntier
Transforme une variable de type DateHeure en une valeur compatible avec une colonne
de type date et heure (entier sans signe sur 8 octets)
cdbEcritCol Modifie la valeur d'une colonne d'un enregistrement en mmoire
cdbEnDehors Permet de savoir si l'enregistrement sur lequel on veut se positionner est en dehors du
fichier
cdbEntierVersDa-
teHeure
Transforme la valeur d'une colonne de type date et heure (entier sans signe sur 8
octets) en une variable de type DateHeure
cdbFerme Ferme une base de donnes (fichier ".CDB") pralablement ouverte avec la fonction
cdbOuvre
cdbListeFichier Renvoie la liste des fichiers de donnes prsents dans une base de donnes CEDB
cdbLit Lit un enregistrement dans un fichier en fonction d'un numro d'enregistrement donn
cdbLitDernier Positionne sur le dernier enregistrement d'un fichier et lit cet l'enregistrement
cdbLitPrcdent Positionne sur l'enregistrement prcdent d'un fichier et lit cet l'enregistrement
cdbLitPremier Positionne sur le premier enregistrement d'un fichier et lit cet l'enregistrement
cdbLitRecherche Positionne sur le premier enregistrement d'un fichier dont la valeur d'une colonne sp-
cifique est gale une valeur recherche
cdbLitSuivant Positionne sur l'enregistrement suivant d'un fichier et lit cet enregistrement
cdbModifie Modifie l'enregistrement spcifi ou l'enregistrement prsent en mmoire dans le
fichier de donnes
cdbNbCol Renvoie le nombre de colonnes de l'enregistrement en mmoire
cdbNbEnr Renvoie le nombre d'enregistrements prsents dans un fichier de donnes
cdbNumEnr Renvoie le numro de l'enregistrement en cours dans le fichier de donnes
cdbOuvre Ouvre une base de donnes (fichier ".CDB") sur le Pocket PC connect au poste en
cours
cdbRaz R-initialise toutes les variables d'une des structures des bases de donnes standard
cdbSupprime Supprime l'enregistrement en cours ou l'enregistrement spcifi dans le fichier de don-
nes
cdbTrouve Vrifie si l'enregistrement en cours correspond la recherche en cours
WLangage.book Page 338 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 339
2. FONCTIONNALITS AVANCES
Ce chapitre prsente les fonctionnalits pour une
gestion avance d'une base de donnes :
gestion des alias,
gestion du NULL dans HyperFileSQL,
protection et cryptage des donnes,
contrle de l'intgrit rfrentielle,
gestion des fichiers "mmo",
rassignation de fichiers,
recherche et index full-text,
gestion des transactions,
journalisation des fichiers,
modification automatique des fichiers,
change et partage de donnes entre plusieurs
programmes,
fichier temporaire,
rcupration de la structure d'un fichier,
utilisation dun driver ODBC sur HyperFileSQL
Classic.
2.1 Gestion d'alias
Les alias permettent de manipuler :
plusieurs fichiers physiques ayant la mme des-
cription dans l'analyse,
plusieurs fichiers logiques dcrits dans l'analyse
manipulant le mme fichier physique.
2.1.1 Plusieurs fichiers physiques avec une
description logique identique
Par exemple, il est ainsi possible de manipuler en
mme temps :
le fichier Client2000.fic qui contient la sauve-
garde des clients pour l'anne 2000.
le fichier Client.fic qui contient les rfrences des
clients pour l'anne en cours.
Ces deux fichiers ont la mme description logique
dans l'analyse : le fichier CLIENT.
Par dfaut, la description du fichier CLIENT pr-
sente dans l'analyse est lie au fichier Client.fic.
Pour utiliser le fichier Client2000.Fic, il est nces-
saire de "copier" la description du fichier CLIENT de
l'analyse : il suffit de crer un alias avec la fonction
HAlias. La ligne de code est la suivante :
HAlias(Client, Client2000)
WLangage.book Page 339 Mardi, 23. avril 2013 1:59 13
340 Partie 7 : Gestion des fichiers de donnes
La manipulation des deux fichiers se fera de la
mme faon avec les fonctions HyperFileSQL clas-
siques.
2.1.2 Plusieurs fichiers logiques relis un
seul fichier physique
Il est possible de raliser plusieurs recherches en
parallle sur un mme fichier physique, ou une
recherche et un filtre en parallle sur le fichier.
Exemple : Le fichier Client.Fic est associ au fichier
logique Client dans l'analyse. Pour filtrer les enre-
gistrements du fichier Client.fic et pour parcourir en
mme temps la totalit des enregistrements de ce
fichier, il est ncessaire :
de "copier" la description du fichier CLIENT dans
l'analyse : il suffit de crer un alias avec la fonc-
tion HAlias.
d'associer la description de l'alias au fichier phy-
sique Client.Fic (fonction HChangeNom).
Remarque : Cette mthode permet de grer plu-
sieurs contextes HyperFileSQL pour un mme
fichier physique.
2.1.3 Fonctions de gestion des alias
Plusieurs fonctions permettent de manipuler les
alias :
D'autres fonctions peuvent intervenir dans la dfini-
tion et la manipulation des alias :
2.1.4 Crer un alias sur quoi ?
Il est possible de crer et de manipuler des alias
sur les lments suivants :
Fichier de donnes dcrit dans l'analyse
Fichier de donnes dcrit dynamiquement
Requte cre avec l'diteur de requtes
Vue HyperFileSQL (format HyperFileSQL Classic)
Alias
2.1.5 Caractristiques d'un alias
Fichier physique associ un alias :
Par dfaut, le nom spcifi pour l'alias est attri-
bu au fichier physique correspondant l'alias.
Pour associer l'alias un fichier physique de nom
diffrent, il suffit d'utiliser les fonctions HChange-
Nom et HChangeRep.
Mot de passe d'un alias :
Par dfaut, le mot de passe d'un fichier alias est
identique au mot de passe du fichier d'origine. Il
est possible de modifier ce mot de passe grce
la fonction HPasse. Le nom du fichier utilis dans
cette fonction correspond alors au nom de l'alias.
Rindexation :
Les fichiers alias peuvent tre rindexs.
Modification automatique des fichiers de
donnes :
Cette opration peut tre applique aux fichiers
alias.
2.1.6 Manipuler le fichier alias et ses rubri-
ques
Editeur de code : Pour viter l'erreur "Identifica-
teur inconnu" lors de l'utilisation d'un fichier alias
et de ses rubriques, il est ncessaire de dfinir
une source de donnes pour dclarer le nom de
l'alias avant l'utilisation de la fonction HAlias.
Par exemple :
Attention : L'utilisation du mot-cl Externe est pos-
sible mais entrane un ralentissement non ngli-
geable l'excution.
HAlias Cre un alias logique d'un fichier
ou annule tous les alias existants
HAnnuleAlias Annule un alias prcdemment
dclar avec la fonction HAlias
HChangeNom Modifie le nom physique d'un
fichier de donnes
HChangeRep Modifie le chemin d'accs un
fichier de donnes
Commande2000 est une source de ...
donnes
HAlias(Commande,Commande2000)
WLangage.book Page 340 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 341
Editeur de fentres ou de pages : les champs et
les tables ne peuvent pas tre directement asso-
cis des rubriques des fichiers alias. Il est
ncessaire d'affecter les champs un par un par
programmation.
Remarque : Pour redfinir les liaisons des
champs par programmation, il est possible d'utili-
ser soit la fonction ChampAlias, soit la proprit
..LiaisonFichier.
2.2 Gestion du NULL dans HyperFileSQL
WinDev et WebDev permettent de grer la valeur
Nulle dans les rubriques des fichiers de donnes
HyperFileSQL et pour tous les autres types d'accs
(Natif, OLEDB, ...).
Ainsi, lors de calculs sur les enregistrements de vos
fichiers, les enregistrements contenant une rubri-
que Nulle ne seront pas pris en compte. Par exem-
ple, si une requte calcule la note moyenne des
lves pendant le trimestre, seules les notes des
lves prsents seront prises en compte. Si l'lve
est absent, sa note correspondra la valeur nulle.
2.2.1 Comment grer la valeur nulle dans
une de vos rubriques ?
Pour grer la valeur nulle dans vos fichiers, vous
disposez :
Sous l'diteur d'analyses :
dune option "NULL support" dans longlet
"Info" de la description du fichier. Cette option
permet de dfinir si la gestion du NULL est sup-
porte pour ce fichier. Dans ce cas, il sera pos-
sible de grer la valeur NULL pour les
diffrentes rubriques du fichier.
d'une option "Valeur NULL par dfaut" dans
longlet "Gnral" de la description dune rubri-
que. Cette option permet de dfinir la valeur
nulle comme valeur par dfaut de la rubrique.
En programmation, de deux proprits :
Limites : Il n'est pas possible d'utiliser la valeur
NULL :
sur les rubriques tableau.
sur les identifiants automatiques.
sur les cls composes.
Attention : L'criture d'enregistrements par une
application utilisant une version de WinDev ant-
rieure la version 75205 peut rendre la proprit
..Null incohrente (renverra vrai ou faux).
L'criture d'enregistrements par une application uti-
lisant la version de WinDev 75205 ou suprieure
fixe la proprit ..Null Faux mme si la rubrique a
t mise Nulle par une application utilisant Win-
Dev.
2.2.2 Comment utiliser la valeur NULL dans
vos applications ?
Comment enregistrer une valeur
NULL dans une rubrique ?
Pour enregistrer une valeur NULL dans une
rubrique :
1. Affichez la fentre de description du fichier
(option "Description du fichier de donnes" du
menu contextuel).
2. Dans longlet "Info", cochez la case "NULL sup-
port".
3. Validez la fentre.
4. Gnrez lanalyse.
5. Si l'utilisateur n'a saisi aucune valeur dans un
champ associ une rubrique : pour affecter la
valeur NULL cette rubrique pour l'enregistrement
en cours, il est ncessaire d'utiliser la proprit
..Null aprs la fonction EcranVersFichier.
Exemple : Le champ de saisie SAI_Note a l'option
"NULL si vide" coche. Dans ce cas, il est possible
de raliser le test suivant avant l'enregistrement
des donnes :
Null Permet de :
dfinir la valeur NULL comme
valeur par dfaut pour une rubri-
que d'un fichier lors de sa des-
cription dynamique.
associer ou non la valeur NULL
une rubrique d'un fichier.
NullSupport Permet de :
dfinir le mode de gestion de la
valeur NULL pour un fichier lors
de sa description dynamique.
connatre le mode de gestion de
la valeur NULL d'un fichier
EcranVersFichier()
SI SAI_Note = NULL ALORS
Cours.Note..Null = Vrai
FIN
WLangage.book Page 341 Mardi, 23. avril 2013 1:59 13
342 Partie 7 : Gestion des fichiers de donnes
Attention : L'option "NULL si vide" des champs de
saisie n'a aucun lien avec la gestion du NULL dans
les fichiers de donnes HyperFileSQL.
Pour plus de dtails sur cette option, consultez
laide en ligne (mots-cls : "Null si vide").
Remarque : Si la valeur par dfaut de la rubrique
est NULL (case coche dans lditeur), la fonction
HRaz remet la proprit ..Null Vrai.
Requte : Condition de slection
Il est possible sous l'diteur de requtes de prendre
en compte ou non les enregistrements ayant une
rubrique nulle. Il suffit de crer une condition de
slection, et de choisir l'option "Est nulle" ou "N'est
pas Nulle".
Dans une requte de slection effectuant un cal-
cul, tous les enregistrements ayant une valeur nulle
(pour la rubrique de calcul) ne seront pas pris en
compte.
Exemple
L'exemple suivant est une requte qui permet de
calculer la moyenne des notes des lves pour le
cours de Franais pour l'anne 2012. Si une des
notes correspond la valeur NULL, cette note n'est
pas prise en compte.
2.3 Protection et cryptage des fichiers de donnes
2.3.1 Les possibilits de protection
Plusieurs possibilits permettent de prserver la
confidentialit et la scurit des donnes lors du
stockage des fichiers de donnes. Ces possibilits
peuvent tre appliques aux diffrents types de
fichiers : fichiers de donnes (.Fic), fichier dindex
(.NDX), fichier mmo (.MMO). Il est possible de :
ne pas crypter les fichiers,
crypter les fichiers sur 128 bits : seuls les utilisa-
teurs connaissant le mot de passe pourront y
accder en lecture comme en criture. Le mot de
passe est gr dans le programme au moment
de l'accs au fichier.
Le niveau de protection du fichier de donnes est
choisi lors de la description du fichier, sous ldi-
teur danalyses. Il ne peut pas tre modifi par pro-
grammation.
Si la scurit renforce est active, le mot de passe
du fichier de donnes sera demand chaque
modification automatique des fichiers de donnes.
Pour modifier le niveau de protection, il faut modi-
fier la description du fichier de donnes.
En rsum, un fichier de donnes peut tre au
choix :
non protg,
protg par mot de passe avec cryptage des don-
nes,
protg par mot de passe avec cryptage des
index,
protg par mot de passe avec cryptage des
mmos.
2.3.2 Gestion des fichiers crypts
La transmission du mot de passe associ un
fichier de donnes doit s'effectuer en programma-
tion juste avant la cration ou l'ouverture du fichier
de donnes. Le programmeur peut :
soit demander le mot de passe lutilisateur,
soit intgrer le mot de passe dans le programme
ou le lire dans un fichier paramtre.
Il est conseill de donner un mot de passe ayant
une taille minimale de 4 caractres. La taille maxi-
male du mot de passe est illimite.
Le mot de passe peut tre pass au fichier de don-
nes de deux faons :
soit en passant le mot de passe en paramtre
aux fonctions HOuvre, HCration, HCrationSiI-
nexistant.
soit en utilisant la fonction HPasse avant douvrir
le fichier ou de le crer.
Au moment o WinDev / WebDev interprte la fonc-
tion HCration ou HCrationSiInexistant, le mot de
passe doit tre connu par la fonction HPasse sil
nest pas prcis dans les paramtres des fonc-
tions.
// Ajout ou modification de
// l'enregistrement
HAjoute(Cours)
SELECT Notes.Cours AS Cours,
Notes.Date AS Date,
LEFT(Notes.Date,4) AS Anne,
AVG(Notes.Note) AS la_moyenne_Note
FROM Notes
WHERE Notes.Cours = 'Franais'
AND Notes.Note IS NOT NULL
AND LEFT(Notes.Date,4) = '2012'
GROUP BY Notes.Cours, Notes.Date,
LEFT(Notes.Date,4)
HPasse(CLIENT, "Code secret")
WLangage.book Page 342 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 343
Si le mot de passe est incorrect, la fonction HEr-
reurMotDePasse renvoie Vrai.
Notes
Les fichiers de donnes d'une analyse peuvent
avoir des mots de passe identiques ou diffrents.
Chaque fichier de donnes est crypt selon son
propre mot de passe.
Attention : Il n'est pas possible de retrouver un
mot de passe "oubli". Si le mot de passe est
perdu, le fichier de donnes n'est plus accessi-
ble.
2.4 Gestion d'un identifiant
2.4.1 Gestion automatique
Classiquement, chaque enregistrement d'un fichier
de donnes doit contenir une rubrique ayant une
valeur unique dans le fichier de donnes. Cette
rubrique, appele identifiant, permet d'identifier
l'enregistrement dans le fichier de donnes. C'est
une rubrique de type cl unique.
Le numro d'enregistrement ne permet pas d'iden-
tifier un enregistrement. En effet, celui-ci n'est pas
fixe; par exemple, il peut tre modifi aprs une
rindexation avec compactage.
WinDev / WebDev permet de grer automatique-
ment un identifiant : l'identifiant est choisi lors de
la description du fichier de donnes, sous lditeur
danalyses.
Dans ce cas, WinDev / WebDev se charge de tout :
il cre automatiquement la rubrique et affecte cette
rubrique lors de l'ajout de l'enregistrement dans le
fichier de donnes.
Important : Il ne faut jamais modifier la valeur de
l'identifiant sinon l'unicit des enregistrements
sera remise en cause.
Il est possible de grer un identifiant par program-
mation, sans utiliser l'identifiant automatique pro-
pos par WinDev / WebDev.
2.4.2 Gestion manuelle
La mthode pour grer manuellement un identi-
fiant est la suivante :
1. Lors de la description du fichier de donnes, si
celui-ci ne comporte pas de cl unique, crez une
rubrique de type entier et cl unique.
2. Lors de l'ajout d'un enregistrement, la valeur de
cette rubrique est gre par traitement : il suffit
d'incrmenter la valeur de la rubrique chaque
enregistrement cr.
Exemple de gestion manuelle d'un identifiant :
Cette gestion simple peut tre utilise par exemple
dans une application monoposte. Pour des exem-
ples avancs, consultez le chapitre sur la rplica-
tion.
2.4.3 Test de l'unicit d'une cl
Que l'identifiant soit gr manuellement ou auto-
matiquement par WinDev / WebDev, il faut vrifier
l'unicit de la cl lors d'une modification d'un enre-
gistrement dans le fichier de donnes.
La vrification de l'unicit d'une cl a t dtaille
dans le chapitre prcdent de cette partie.
2.5 Contrle automatique de l'intgrit rfrentielle
L'intgrit rfrentielle consiste vrifier par exem-
ple que :
si un enregistrement est supprim dans le fichier
pre (ou propritaire), les enregistrements corres-
pondants dans les fichiers fils (ou membres) sont
galement supprims,
si un enregistrement est ajout dans un fichier
fils, il existe un enregistrement correspondant
dans le fichier pre,
si un enregistrement est modifi dans un fichier
pre, la cl unique n'est pas modifie,
...
La vrification de l'intgrit rfrentielle dpend de
la nature de la liaison entre les fichiers.
2.5.1 Intrt du test de l'intgrit rfren-
tielle
Par exemple, lors de la suppression d'un enregistre-
ment dans un fichier, il faut vrifier que les enregis-
trements du fichier li qui correspondent
l'enregistrement supprim ont galement t sup-
prims.
HLitDernier(FACTURE,NUMFACT)
EcranVersFichier
FACTURE.NUMFACT=FACTURE.NUMFACT+1
HAjoute(FACTURE)
WLangage.book Page 343 Mardi, 23. avril 2013 1:59 13
344 Partie 7 : Gestion des fichiers de donnes
Prenons l'exemple d'une gestion de commandes,
constitu des fichiers suivants :
"COMMANDE" contenant les rfrences de la
commande. L'identifiant est le numro de com-
mande.
"PRODUIT" contenant les rfrences des pro-
duits. L'identifiant correspond au numro de pro-
duit.
"CLIENT" contenant les rfrences des clients.
L'identifiant est le numro de client.
"COMMANDE" est reli "CLIENT" par le numro
du client.
"COMMANDE" est reli "PRODUIT" par le
numro du produit.
Lors de la suppression d'un client de "CLIENT", si
les commandes correspondant au client ne sont
pas supprimes que risque-t-il de se passer ?
Le client 1000 est supprim (mais pas ses com-
mandes) et c'est le dernier de la liste. Lors de
l'ajout d'un nouveau client ayant le numro 1000,
ce client aura des commandes qui ne lui appartien-
nent pas mais qui appartiennent au client prc-
demment supprim !
Le contrle de l'intgrit rfrentielle permet de
tester automatiquement si l'intgrit est vrifie et
donc d'viter des incohrences dans la base de
donnes.
Pour utiliser la fonctionnalit de contrle automati-
que de l'intgrit rfrentielle :
Les liaisons doivent tre dcrites sous l'diteur
d'analyses ou par la fonction HDcritLiaison.
Le type des liaisons doit permettre la gestion de
lintgrit rfrentielle automatique. Les diff-
rents types de liaisons sont dcrits dans le para-
graphe suivant.
La gestion de lintgrit rfrentielle doit avoir
t active dans le projet avec la fonction HG-
reIntegrit(Vrai) dans le code dinitialisation du
projet.
2.5.2 Dfinitions
Les dfinitions des diffrents types de liaisons dis-
ponibles sont prsentes dans le livre "Concepts".
2.5.3 Les diffrents types de liaisons
Les diffrents types de liaisons disponibles sont
prsents dans le livre "Guide de Dmarrage".
Rappel : Les liaisons entre fichiers peuvent tre de
plusieurs types :
parallle,
facultative,
de complment,
partage,
complexe.
2.5.4 Programmation du contrle automati-
que de l'intgrit rfrentielle
Le contrle automatique de l'intgrit rfrentielle
peut tre utilis uniquement en WLangage. Il ne
peut pas tre utilis :
pour les fichiers au format xBase,
en langage externe.
Activation du mcanisme
Par dfaut, le mcanisme de contrle automatique
de l'intgrit rfrentielle n'est pas branch. Il peut
tre activ :
soit au niveau de la description du projet,
soit par programmation.
Activation au niveau du projet
Dans la description du projet, il est possible de dfi-
nir si le contrle automatique de lintgrit et / ou
des doublons doit tre activ.
Ce choix nimplique aucune ligne de code suppl-
mentaire dans votre projet.
Activation par programmation
Le mcanisme de contrle automatique de lint-
grit rfrentielle peut tre activ par la fonction
HGreIntegrit (Vrai) ou dsactiv par la fonction
HGreIntegrit (Faux).
Attention :
L'activation du mcanisme de contrle automati-
que de l'intgrit rfrentielle active implicitement
le mcanisme de gestion des doublons (HGreDou-
blon).
Il n'est pas possible de dsactiver le mcanisme de
contrle des doublons si celui du contrle de l'int-
grit est actif (HGereIntegrit (Vrai)).
Remarques :
Le mcanisme de contrle de l'intgrit corres-
pond des recherches effectues dans les
fichiers relis lors des appels aux fonctions d'cri-
ture dans les fichiers de donnes (HAjoute, HMo-
difie, HSupprime, HRaye, TableEnregistre,
TableSupprime). Ce mcanisme ne modifie pas
le contexte (positionnement) du fichier de base
et des fichiers relis.
L'intgrit rfrentielle n'est pas teste dans le
cas de l'crasement d'un fichier par la fonction
HCration. Il est prfrable d'utiliser la fonction
WLangage.book Page 344 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 345
HCrationSiInexistant pour ne pas craser de
fichier de donnes.
Tester l'intgrit
Lorsque le mcanisme du contrle de l'intgrit est
activ (HGreIntegrit (Vrai)), la fonction HErreurIn-
tgrit doit ncessairement tre teste aprs cha-
que fonction crivant dans le fichier : HAjoute,
HModifie, HEcrit, HSupprime, HRaye, TableEnregis-
tre, TableSupprime.
La fonction HErreurIntgrit retourne Vrai si une
erreur dintgrit sest produite. La fonction HErreu-
rInfo retourne le dtail de l'erreur :
Si la fonction HErreurIntgrit n'est pas appele,
l'erreur 15 (Erreur d'intgrit) sera automatique-
ment gnre lors du prochain appel une fonc-
tion de gestion de fichier. Cette erreur ne peut pas
tre ignore : tous les fichiers sont ferms et l'ex-
cution du programme est abandonne.
Exemple en monoposte (gestion automatique des
blocages et gestion de lintgrit)

Exemple en rseau
HGreIntegrit(Vrai)
// Suppression du client
// numro Num
HLitRecherchePremier(CLIENT,...
IdClient,Num)
SI HTrouve() ALORS
SI HSupprime(CLIENT) ALORS
Info("Client supprim")
SINON
SI HErreurIntegrit() ALORS
Erreur("Impossible de "+...
"supprimer ce client",...
"des commandes subsistent")
FIN
SINON
Erreur("Client non trouv")
FIN
HGreIntegrit(Vrai)
HBloqueFichier(CLIENT)
SI HErreurBlocage() ALORS
Info("Blocage fichier impossible")
SINON
HLitRecherchePremier(CLIENT,...
IdClient, Num)
SI HTrouve() ALORS
SI HSupprime(CLIENT) ALORS
Info("Suppression OK")
SINON
Erreur(HErreurInfo())
FIN
FIN
FIN
Tableau rcapitulatif des vrifications d'intgrit effectues par WinDev / WebDev
Le tableau ci-dessous rsume, pour les fonctions ncessitant un contrle de l'intgrit (HRaye, HSup-
prime, HAjoute, HEcrit et HModifie), la vrification de l'intgrit effectue par WinDev / WebDev en fonc-
tion du type de liaison.
Lgende :
1 : lors de la suppression d'un propritaire, vrification de la non-existence d'un membre li
2 : lors de l'ajout d'un membre, vrification de l'existence d'un propritaire li
3 : Lors de la modification d'un membre, vrification de l'existence du propritaire li (dans le cas du
changement de la valeur de la cl de liaison)
4 : Lors de la modification d'un propritaire, vrification de la non-existence du membre li l'ancien pro-
pritaire (dans le cas du changement de la valeur de la cl de liaison)
5 : Lors de la modification d'un membre, vrification de la non-existence du propritaire li l'ancien
membre (dans le cas du changement de la valeur de la cl de liaison)
Liaison
Compl-
ment (0,1)
- (1,1)
Liaison Par-
tage (x,n) -
(1,1)
Liaison Parta-
ge (1,n) -
(0,1)
Liaison Parta-
ge (0,n) -
(0,1)
Liaison Facul-
tative (0,1) -
(0,1)
Liaison Paral-
lle (1,1) -
(1,1)
HRaye
HSupprime
1 1 1 - - Dev.
HAjoute
HEcrit
2 2 Dev - - Dev
HModifie 3 et 4 3 et 4 5 - - Dev
WLangage.book Page 345 Mardi, 23. avril 2013 1:59 13
346 Partie 7 : Gestion des fichiers de donnes
2.6 Gestion des fichiers "mmo"
2.6.1 Mmo texte et mmo binaire
Les fichiers "mmo" peuvent tre grs en WLan-
gage.
Les fichiers "mmo" sont des fichiers complmen-
taires aux fichiers de donnes. Ils permettent
d'associer aux enregistrements du fichier de don-
nes des donnes telles que des textes longs, des
images et des sons.
Un fichier "mmo" est dcrit et cr en mme
temps que le fichier de donnes.
Pour crer un fichier "mmo" :
1. Dcrivez le fichier de donnes sous l'diteur
danalyses.
2. Crez une rubrique texte de type "mmo texte"
pour les textes longs ou une rubrique de type "son,
image, binaire" pour stocker des images ou des
sons.
3. Gnrez l'analyse.
En WLangage, le fichier de donnes et le fichier
"mmo" voluent en parallle :
les fonctions HCration et HCrationSiInexistant
crent vide le fichier de donnes, le fichier
d'index et le fichier "mmo" (<NomFichier>.MMO),
les fonctions HAjoute et HModifie crivent dans
le fichier de donnes et dans le fichier "mmo",
les fonctions de lecture lisent l'enregistrement
dans le fichier de donnes et dans le fichier
"mmo".
Attention : Les fonctions HRaye et HSupprime ont
des actions diffrentes sur les fichiers "mmo" et
sur les fichiers de donnes :
La fonction HRaye supprime l'enregistrement
dans le fichier de donnes mais pas dans le
fichier mmo. En effet, HLibre ne libre pas les
enregistrements rays dans les fichiers "mmo".
L'utilisation de HRaye est dconseille avec les
fichiers "mmo".
La fonction HSupprime supprime l'enregistre-
ment dans le fichier de donnes et dans le fichier
"mmo". Pour supprimer un enregistrement dans
un fichier "mmo", il faut utiliser la fonction
HSupprime.
Une fonction permet dactiver la gestion des
fichiers "mmo" : HGreMmo. Cette fonction
active ou dsactive la gestion des rubriques de type
mmo. Il est possible de grer tous les mmos d'un
fichier de donnes ou uniquement une rubrique
mmo spcifique d'un fichier de donnes. Par
dfaut, la gestion des mmos est active.
Si un traitement sur un fichier n'utilise pas le
fichier "mmo", il est intressant de dbrancher la
gestion du fichier "mmo" car le traitement sera
alors plus rapide.
Par exemple, lors de la modification de la rubrique
"ChifAff" de tous les enregistrements d'un fichier
"Client", il suffit de dbrancher la gestion des
mmos avant le traitement, puis de la rebrancher.
Remarque : Les fichiers mmo peuvent tre cryp-
ts et/ou compresss.
2.6.2 Mmos binaires image, son, OLE et
autres
Il existe 4 types de rubriques : mmo binaire image,
son, OLE et autre. Ces types de mmos permettent
de stocker des fichiers binaires (par exemple des
images, des sons, des fichiers OLE, ...) dans la
rubrique.
Les rubriques pourront tre simplement manipu-
les en WLangage pour les affecter ou pour rcup-
rer leur contenu.
Les fonctions permettant de manipuler les mmos
binaires sont :
HAttacheMmo pour affecter la rubrique.
HExtraitMmo pour rcuprer le contenu de la
rubrique et le sauver dans un fichier.
HInfoMmo pour avoir des informations sur la
rubrique.
Remarque : Les rubriques mmo binaires peuvent
tre manipules avec les fonctions :
Son si la rubrique mmo binaire est au format
WAV (WinDev uniquement).
iImprimeImage si la rubrique mmo binaire est
au format IMG.
InfoBitmap si la rubrique mmo binaire est au
format IMG.
Initialisation
Un mmo binaire peut contenir tout type de fichier.
Un mmo binaire peut tre initialis :
partir d'une autre rubrique de type mmo
binaire (par simple affectation)
partir d'un fichier par la fonction HAttache-
Mmo
ANIMAL.PHOTO=CHIEN.PHOTO
HAttacheMmo(ANIMAL,...
PHOTO,"CHIEN1.TIF",HMmoImg)
WLangage.book Page 346 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 347
Remarques :
Lorsqu'un fichier OLE est modifi au travers d'un
champ OLE, pour affecter le fichier OLE dans une
rubrique mmo binaire OLE, il faut :
sauver l'objet OLE avec la fonction OLESauve,
affecter la rubrique avec la fonction HAttache-
Mmo.
Lorsqu'un champ image est modifi par les fonc-
tions de dessin du WLangage, pour affecter
l'image dans une rubrique mmo binaire image, il
faut :
sauver l'image avec dSauveImage,
affecter la rubrique avec HAttacheMmo.
EcranVersFichier / PageVersFichier n'affecte pas
automatiquement le contenu d'un champ image
dans la rubrique mmo binaire image qui lui est
associe. Il faut ncessairement affecter la rubri-
que avec la fonction HAttacheMmo.
La fonction HAttacheMmo permet de donner
une information :
sur le type du fichier,
sur le mmo lui-mme.
Rcupration
Un mmo binaire est rcupr avec la fonction HEx-
traitMmo. Cette fonction sauve le contenu du
mmo binaire dans un fichier.
Remarque : La fonction FichierVersEcran / Fichier-
VersPage affecte automatiquement le contenu d'un
champ image avec le contenu de la rubrique mmo
binaire qui lui est associe, si le contenu de la
rubrique a un format d'image reconnu (BMP, PCX,
JPEG, TIFF, ...).
Informations sur le mmo
La fonction HInfoMmo permet de rcuprer les
informations sur la rubrique mmo binaire :
type du mmo,
nom, taille, date et heure du fichier d'origine,
information libre donne lors de l'affectation du
mmo par la fonction HAttacheMmo.
2.7 Rassignation des fichiers de donnes
2.7.1 Intrt
Une mme description de fichier peut correspondre
plusieurs fichiers physiques. Les fichiers de don-
nes ont alors :
soit des noms physiques diffrents,
soit le mme nom mais sont stocks dans des
rpertoires diffrents.
Il faut alors pouvoir modifier soit le nom, soit le
rpertoire des fichiers.
Les fichiers de l'analyse sont dcrits dans un rper-
toire en dur. En utilisation finale, le lecteur dinstal-
lation des fichiers pourra tre variable selon le
poste sur lequel l'application WinDev est installe
ou selon le poste serveur sur lequel le site WebDev
est dploy. Il faut alors pouvoir modifier le rper-
toire de stockage des fichiers.
La modification du nom et/ou du rpertoire est
ralise en programmation. Elle doit tre effec-
tue avant la cration ou l'ouverture du fichier.
2.7.2 Modification du rpertoire de stoc-
kage
Lors de la description du fichier de donnes sous
lditeur danalyses, il a t choisi un rpertoire de
stockage des fichiers de donnes et d'index :
soit un rpertoire dfini en dur,
soit le rpertoire de lapplication.
Les fichiers de donnes peuvent tre stocks dans
des rpertoires diffrents de ceux dcrits dans
l'analyse. Il suffit de modifier le nom du rpertoire
en programmation.
Les fonctions HSubstRep ou HChangeRep permet-
tent de spcifier un rpertoire diffrent du rper-
toire dcrit sous lditeur danalyses.
Le rpertoire dfini dans l'analyse est le rpertoire
demand.
Le rpertoire du fichier sur le disque est le rper-
toire physique.
Par exemple :
WB Les rubriques mmo binaire, son et OLE
existent par compatibilit avec WinDev.
// Les fichiers dcrits sur
// le lecteurC et
// installs sur le lecteur S
HSubstRep("C:\Rep1",...
"S:\RpertoireDesDonnees")
HCrationSiInexistant(NomFic1)
WLangage.book Page 347 Mardi, 23. avril 2013 1:59 13
348 Partie 7 : Gestion des fichiers de donnes
2.7.3 Modification du nom d'un fichier de
donnes
Par dfaut, un fichier de donnes est cr avec le
nom dfini dans l'diteur danalyses.
Le fichier de donnes peut tre cr avec un autre
nom. Il suffit de modifier le nom du fichier de don-
nes en programmation.
La fonction HChangeNom permet de donner un
nom diffrent de celui qui a t dfini dans la des-
cription du fichier de donnes.
Le nom du fichier qui a t dfini dans l'analyse est
le nom logique.
Le nom du fichier (ou des fichiers) sur le disque est
le nom sur disque (ce nom peut tre un nom long si
le systme supporte les noms longs).
Remarque : La taille du nom long d'un fichier est
de 260 caractres maximum (y compris le chemin
d'accs au fichier).
2.7.4 Garder la trace des rassignations
A quoi sert le .REP ?
Le fichier <MonProjet>.REP est un fichier contenant
la liste des fichiers manipuls par l'application ou
par le site (identifiant, nom logique et chemin com-
plet du fichier physique).
Le GUID de l'analyse est l'identifiant unique de
l'analyse lie au projet, contenant la description
des fichiers. Cet identifiant peut tre connu sous
l'diteur d'analyses, dans la description de lana-
lyse (onglet "Options").
Le GUID du fichier correspond l'identifiant du
fichier logique. Cet identifiant peut tre connu sous
l'diteur d'analyses, dans la description du fichier
(onglet "Notes").
Ce fichier est automatiquement cr dans le rper-
toire de l'application ou du site et renseign par le
moteur HyperFileSQL.
Le fichier ".REP" permet de localiser facilement les
fichiers de donnes qui ont t utiliss par l'appli-
cation WinDev ou par le site WebDev.
L'application WinDev ou le site WebDev met jour
automatiquement le fichier ".REP" mais ne se sert
pas (ou rarement) du fichier ".REP".
Ce fichier est utilis par tous les outils devant mani-
puler les fichiers de l'application ou du site, et prin-
cipalement par la mise jour automatique des
fichiers, ...
Exemple : Mise jour d'une application ou dun site
avec modification de l'analyse.
Lors de la mise jour d'une application WinDev ou
dun site WebDev, la modification automatique des
fichiers de donnes est automatiquement lance
en cas de modification de la structure de la base
de donnes.
Cette procdure utilise le fichier ".REP" pour retrou-
ver les fichiers physiques utiliss par l'application
ou par le site afin de les modifier.
Pour plus de dtails, consultez Modification auto-
matique des fichiers de donnes, page 360.
Remarque : Le .REP ne doit pas tre modifi
"manuellement" sauf dans des cas trs exception-
nels, par exemple sur le conseil d'un membre du
Support Technique de PC SOFT.
Comment est gr le .REP sous
WinDev Mobile ?
WinDev Mobile permet de mettre jour une liste
des fichiers de donnes manipuls par l'application
(quivalent au fichier .REP sous WinDev standard).
Cette liste est sauvegarde dans la base de regis-
tres du Pocket PC, dans la cl
"\HKEY_LOCAL_MACHINE\SOFTWARE\PC
SOFT\WD Mobile\18.0\<NomApplication>\DATA".
Pour chaque fichier de donnes manipul par
l'application en cours, les informations suivantes
sont conserves :
identifiant (GUID du fichier). Cet identifiant peut
tre connu sous l'diteur d'analyses, dans la des-
cription du fichier (onglet "Notes").
nom logique.
chemin complet du fichier physique.
Ces informations sont renseignes automatique-
ment par le moteur HyperFileSQL Mobile.
WLangage.book Page 348 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 349
Par exemple :
Fonctions permettant de grer le .REP
1. Gestion du .REP
2. Cration et modification du fichier .REP
Remarque : Les informations donnes par les fonc-
tions HChangeRep, HSubstRep, et HChangeNom
seront prises en compte lors de la cration et de la
mise jour du fichier ".REP".
3. Lecture du fichier .REP
Remarque : Si une application ou un site utilise plu-
sieurs fichiers physiques avec le mme nom logi-
que (cas habituel dun logiciel de comptabilit
multi-entreprises ou encore des fichiers "archives"),
le fichier ".REP" contiendra plusieurs lignes pour le
mme fichier logique : chaque ligne rfrencera un
fichier physique.
4. Ecriture dans le fichier
Pour crire dans le fichier .REP, il suffit d'utiliser les
fonctions de gestion de fichiers externes :
La structure de la ligne ajoute doit suivre la norme
suivante :
Le GUID du fichier correspond l'identifiant du
fichier logique. Cet identifiant peut tre connu sous
l'diteur d'analyses, dans la description du fichier
(onglet "Notes").
Structure du fichier .REP
La premire ligne comprend les informations con-
cernant l'analyse dans laquelle les fichiers ont t
dcrits. Cette analyse correspond l'analyse du
projet en cours.
La structure de cette ligne est la suivante :
Le GUID de l'analyse est l'identifiant unique de
l'analyse lie au projet, contenant la description
des fichiers. Cet identifiant peut tre connu sous
l'diteur d'analyses, dans la description de lana-
lyse (onglet "Options").
Les lignes suivantes dcrivent les diffrents
fichiers manipuls par l'application ou par le site.
Une ligne est cre par fichier physique manipul.
Cette ligne comprend les informations suivantes :

HGreREP Active ou dsactive la gestion du
fichier .REP. Lors de l'activation de la
gestion du .REP, il est possible de
donner le nom et le chemin du fichier
.REP. Un fichier HFREP.INI sera alors
cr dans le rpertoire de Windows.
Par dfaut, la gestion du fichier
".REP" est active.
HCration Cre un fichier de donnes physi-
que (et renseigne le fichier .REP si
la gestion du .REP est active)
HCrationSiI-
nexistant
Cre un fichier de donnes physi-
que s'il n'existe pas dj (et rensei-
gne le fichier .REP si la gestion du
.REP est active)
HOuvre Ouvre un fichier de donnes physi-
que et renseigne le fichier .REP si
ncessaire (ouverture d'un fichier
n'appartenant pas l'analyse par
exemple)
HListeREP Liste les diffrents fichiers et leur
chemin physique associ prsents
dans le fichier .REP
fOuvre Ouvre le fichier
fEcritLigne Ecrit une nouvelle ligne dans le
fichier
fFerme Ferme le fichier
LOCALIZA-
TION=
GUID
Fichier
Tab Nom logi-
que fichier
Tab Chemin
du fichier
physique
ANALYSISGUID= GUID Analyse
LOCALIZATION= GUID Fichier Tab Nom logique fichier Tab Chemin du fichier physique
WLangage.book Page 349 Mardi, 23. avril 2013 1:59 13
350 Partie 7 : Gestion des fichiers de donnes
Le GUID du fichier correspond l'identifiant du
fichier logique. Cet identifiant peut tre connu sous
l'diteur d'analyses, dans la description du fichier
(onglet "Notes").
Exemple de fichier .REP :
2.8 Recherche et index full-text
2.8.1 Prsentation
HyperFileSQL propose une recherche des chanes
de caractres trs rapide dans les donnes. Cette
recherche (appele "full-text") permet de rechercher
un mot ou un ensemble de mots.
Il devient possible d'indexer sans programmation
les textes prsents dans une base de donnes
HyperFileSQL. Ces textes peuvent tre contenus
dans des rubriques de type "Texte" ou de type
"Mmo texte".
Un index peut indexer une ou plusieurs rubriques
diffrentes. La cration de l'index peut prendre en
compte les textes enrichis (RTF, HTML) : les balises
de ces formats seront ignores lors de l'indexation.
Il est ainsi possible d'effectuer des recherches de
mots stocks dans des documents RTF ou HTML.
Les rsultats de l'indexation full-text sont proposs
selon un ordre de pertinence ("ranking").
Attention : la recherche "Full-text" n'est pas une sim-
ple recherche du type "contient" : la ponctuation
n'est pas prise en compte.
2.8.2 Comment faire une recherche "full-
text" ?
Pour effectuer une recherche "full-text", il est
ncessaire de :
1. Crer un index full-text dans le fichier de don-
nes concern par cette recherche.
2. Crer une requte pour effectuer la recherche
full-text.
3. Analyser et afficher le rsultat de la requte.
2.8.3 Comment crer un index full-text ?
La cration d'un index full-text est ralise sous
l'diteur d'analyses.
Pour crer un index full-text :
1. Dans l'diteur d'analyses, affichez la description
des rubriques du fichier concern (option "Descrip-
tion des rubriques" du menu contextuel).
2. Cliquez sur l'icne . La fentre de dfinition
de l'index full-text apparat. Slectionnez les rubri-
ques intervenant dans la composition de l'index
full-text. Seules les rubriques de type "Texte" et
"Mmo Texte" prsentes dans la description du
fichier sont proposes. Validez.
3. La rubrique de type "Index full-text" apparat
dans la liste des rubriques.
4. Slectionnez la rubrique et si ncessaire modi-
fiez ses caractristiques :
dans la liste des rubriques, il est possible de
modifier directement le nom de l'index full-text.
dans la partie droite de la fentre, slectionnez
les paramtres de l'index full-text : taille minimale
des mots indexs, gestion des balises RTF, ges-
tion des balises HTML, gestion de la casse, ges-
tion de l'accentuation.
5. Validez la fentre de description des rubriques.
6. Enregistrez et gnrez l'analyse. Lors de la gn-
ration de l'analyse, la description des fichiers de
donnes est modifie et l'index full-text est cr
(fichier d'extension ".FTX").
Remarques
Pour crer directement un index full-text partir
d'une rubrique texte ou mmo texte, il suffit de
slectionner la rubrique dans la fentre de des-
cription des rubriques et de cliquer sur le lien
"Crer un index full-text sur la rubrique".
WLangage.book Page 350 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 351
Il est possible de grer les index full-text dans les
fichiers de donnes dcrits par programmation :
il suffit d'utiliser une variable de type Description
d'IndexFullText pour dcrire l'index, puis la fonc-
tion HDcritIndexFullText pour valider la cration
de l'index.
A tout moment, il est possible de modifier la com-
position d'un index full-text existant : il suffit de
cliquer sur le bouton "Editer l'index" dans la par-
tie gauche de la description de la rubrique sous
l'diteur d'analyses.
Pour crer une rubrique de type Index full-text,
une gnration de l'analyse et une modification
automatique des donnes sont obligatoires.
2.8.4 Comment effectuer une recherche
full-text ?
Les recherches full-text sont effectues grce aux
requtes : requtes cres sous l'diteur de requ-
tes ou requtes cres en code SQL. La condition
de la recherche est saisie lors de la cration de la
requte.
Recherche full-text : diteur de requtes
Pour crer une requte ralisant une recherche full-
text, il suffit d'ajouter la requte une rubrique de
type "Index full-text". Automatiquement, la fentre
de description d'une recherche full-text s'affiche.
Cette fentre permet d'indiquer :
La valeur de recherche. Cette valeur peut tre
saisie directement (un assistant permet de cons-
truire la chane rechercher) ou correspondre
un paramtre. Pour plus de dtails sur les carac-
tristiques de la chane rechercher, consultez le
paragraphe "Syntaxe de la valeur de recherche".
les options de tri du rsultat.
A la validation de cette fentre, la rubrique de type
"full-text" est automatiquement ajoute dans les
lments de la requte. Une condition a t auto-
matiquement dfinie : seuls les enregistrements
dont la pertinence est suprieure 0 seront affi-
chs dans le rsultat de la requte.
Recherche full-text : Requte en code SQL
Pour crer une requte ralisant une recherche full-
text en code SQL, il suffit d'utiliser la syntaxe
MATCH (<Index>) AGAINST <Condition> o :
<Index> correspond la liste des rubriques de
l'index spares par des virgules (l'ordre des rubri-
ques n'est pas important).
<Condition> correspond la chane rechercher.
Pour plus de dtails sur les caractristiques de la
chane rechercher, consultez le paragraphe "Syn-
taxe de la valeur de recherche".
Exemple :
Dans cet exemple, SAI_Rechercher est un champ
de saisie et IdUserConnect est une variable..
Remarque : Requte avec un paramtre sur un
index full-text : comment ignorer le paramtre ?
Il faut que le "MATCH" de la requte ne soit pas
dans le rsultat de la requte, mais dans le
WHERE. En effet, si le rsultat doit inclure la perti-
nence, il faut que le paramtre soit renseign pour
valuer le rsultat.
Pour qu'une requte cre avec l'diteur de requ-
tes ait le MATCH dans le WHERE, il faut que la perti-
nence ne soit pas affiche dans le rsultat.
MaRequte est une chane = [
SELECT * FROM Contacts
WHERE MATCH(Contacts.Nom, ...
Contacts.Prenom, ...
Contacts.CommentaireHTML,
Contacts.CommentaireTxtBrut,...
Contacts.Commentaires, ..
Contacts.Telephone, ...
Contacts.Bureau,...
Contacts.Portable, ...
Contacts.Mail,...
Contacts.MSN, ...
Contacts.Site_internet, ...
Contacts.Pays, ...
Contacts.NumFax, Contacts.Ville)
AGAINST ('] MaRequte = ...
MaRequte + SAI_Rechercher + [
')
AND Contacts.IDUtilisateur =
]
MaRequte = MaRequte + ...
IdUserConnect + [
ORDER BY Nom DESC
]
HExcuteRequteSQL(REQ_RECH, ...
hRequteDfaut, MaRequte)
POUR TOUT REQ_RECH
TableAjouteLigne(...
Table_Contact_par_catgorie,
REQ_RECH.idcontact,...
REQ_RECH.IDCategorie, ...
REQ_RECH..IdUserConnect, ...
REQ_RECH.Nom, REQ_RECH.Prenom)
FIN
CAS ERREUR :
Erreur(HErreurInfo())
WLangage.book Page 351 Mardi, 23. avril 2013 1:59 13
352 Partie 7 : Gestion des fichiers de donnes
Exemple avec pertinence :
Exemple avec pertinence :
Syntaxe de la valeur de recherche
La valeur de recherche peut contenir les lments
suivants :
2.8.5 Analyser le rsultat d'une requte
"full-text"
Le rsultat d'une requte full-text donne pour cha-
que enregistrement du fichier de donnes con-
cern la pertinence de l'enregistrement par rapport
la valeur de recherche.
Cette pertinence dpend de plusieurs facteurs :
le nombre de fois o le mot recherch est pr-
sent dans l'enregistrement.
le nombre de mots dans l'enregistrement et leur
nombre de rptitions.
le rapport entre les enregistrements qui contien-
nent les mots recherchs et ceux qui ne contien-
nent pas les mots recherchs. En effet, plus le
mot recherch est prsent dans tous les enregis-
trements, et moins la pertinence sera impor-
tante.
...
Le rsultat d'une requte "full-text" peut ensuite
tre trait comme tout rsultat d'une requte : il est
par exemple possible d'afficher le rsultat dans
une table, en triant selon la pertinence, ...
2.8.6 Grer les index full-text par program-
mation
Le WLangage propose plusieurs fonctions WLan-
gage permettant de grer les index full-text :
Remarques :
La cration d'un index full-text dans un fichier de
donnes cr par programmation peut tre rali-
se grce une variable de type Description
d'IndexFullText.
La fonction HRindexe permet de r-indexer les
index full-text.
SELECT
MATCH(XX, YY, ZZ) AGAINST ...
({ParamFullText}) AS ...
PertinenceFullText
FROM TABLE
WHERE
<Paramtres>
AND PertinenceFullText > 0
ORDER BY
PertinenceFullText DESC
SELECT *
FROM TABLE
WHERE
<Paramtres>
AND MATCH(XXX, YYY, ZZZ)
AGAINST({ParamFullText }) > 0
Elment Signification
Un mot tout
seul
Le mot indiqu sera recherch.
La pertinence sera augmente si le
texte contient ce mot. Exemple : "Win-
Dev" recherche le mot "WinDev
Deux mots
spars par
un espace
Recherche l'un ou l'autre des mots.
Exemple : "WinDev WebDev" recher-
che les textes contenant soit "WinDev"
soit "WebDev".
Un mot pr-
cd du
signe "+"
Le mot indiqu est obligatoire.
Exemple : "+WinDev" recherche les tex-
tes contenant obligatoirement "Win-
Dev".
Un mot pr-
cd du
signe "-"
Le mot indiqu ne doit pas tre prsent
dans le texte.
Exemple : "-Index" recherche les textes ne
contenant pas "Index".
Un mot pr-
cd du
signe "~"
Si le texte contient le mot indiqu, la
pertinence sera diminue.
Un ou plu-
sieurs mots
entours de
guillemets
Les mots indiqus sont recherchs
groups et dans l'ordre.
Attention : si l'option "Ignorer les mots
infrieurs " est diffrente de 0, les
mots entre les guillemets infrieurs
la taille prcise ne seront pas recher-
chs.
Un mot suivi
du signe "*"
La recherche est une recherche du
type "Commence par" le mot indiqu.
HDcritIndexFullText Dcrit par programma-
tion un index full-text pour
un fichier de donnes
cr par programmation.
HListeIndexFullText Renvoie la liste des index
full-text d'un fichier (d'une
requte ou d'une vue)
reconnus par le moteur
HyperFileSQL
WLangage.book Page 352 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 353
2.9 Les transactions
2.9.1 Quest ce quune transaction ?
Une transaction est un ensemble d'oprations
indissociables : soit toutes les oprations de la
transaction sont ralises, soit aucune opration
n'est ralise. La gestion des transactions est le
meilleur moyen d'assurer la cohrence d'un ensem-
ble d'critures indissociables sur des fichiers
HyperFileSQL.
Par exemple, dans une application ou un site ban-
caire, une opration de virement consiste en un
dbit pour un compte et en un crdit pour un
second compte. Il est ncessaire de grer ces deux
oprations dans une seule et mme transaction
afin d'viter toute incohrence (en cas de rupture
de courant en cours d'opration par exemple).
2.9.2 Savoir utiliser les transactions selon
ses besoins
Voici quelques conseils pour optimiser la gestion
des transactions :
Raliser des transactions dans des applications
installes sur des postes fiables ou dans des
sites installs sur des postes serveur fiables :
transaction disque.
Dans ce cas, les transactions sont utilises unique-
ment dans le but de pouvoir annuler simplement
une suite d'oprations. Il est possible d'afficher des
fentres ou des pages au milieu d'une transaction,
de raliser diffrents traitements relativement
longs, ...
Chaque opration ralise pendant la transaction
est enregistre dans un fichier de transaction.
L'enregistrement manipul est bloqu en criture
jusqu' la validation ou l'annulation de la transac-
tion.
Raliser des critures fiables dans des fichiers
(domaine bancaire, comptable, ...) : transaction
disque.
Les transactions permettent d'assurer la scurit
d'un ensemble d'oprations. Dans ce cas, il est
ncessaire de regrouper toutes les oprations
d'criture dans votre code afin de les excuter dans
une transaction. Le code excut pendant la tran-
saction ne doit pas afficher de fentres ou de
pages, raliser des parcours de fichiers, etc.
WLangage.book Page 353 Mardi, 23. avril 2013 1:59 13
354 Partie 7 : Gestion des fichiers de donnes
Ce code doit uniquement comprendre les opra-
tions de modification des fichiers.
Chaque opration ralise pendant la transaction
est enregistre dans un fichier de transaction.
L'enregistrement manipul est bloqu en criture
jusqu' la validation ou l'annulation de la transac-
tion.
2.9.3 Principes
Principe des transactions sur des fichiers HyperFi-
leSQL
Chaque opration d'criture effectue lors d'une
transaction est mmorise dans un fichier des
transactions. A tout moment, il est possible d'annu-
ler la transaction : toutes les oprations effectues
depuis le dbut de la transaction seront annules.
Lorsque les oprations d'criture incluses dans la
transaction sont termines, le programme peut
valider les oprations de la transaction.
Cas particuliers
Erreur du programme, la transaction est automa-
tiquement abandonne.
Appel de la fonction FinProgramme, la transac-
tion est automatiquement abandonne.
Annulation d'un test depuis l'diteur, la transac-
tion est automatiquement abandonne.
Panne de courant ou arrt brusque de l'applica-
tion ou du serveur Web (par le gestionnaire de
tches par exemple).
Lorsque l'application ou le serveur Web est
relanc, la cohrence de la base de donnes
peut tre rtablie :
par l'outil WDTRANS,
au premier appel la fonction HTransactionD-
but,
par la fonction HTransactionAnnule.
Pour plus de dtails sur les diffrents modes de
rtablissement de la cohrence des donnes,
consultez le paragraphe Gestion des cas parti-
culiers, page 355.
2.9.4 Manipuler les transactions par pro-
grammation
Mettre en place la gestion des transactions
1. Si vos fichiers sont protgs par mot de passe,
ouvrez tous les fichiers utiliss pendant la transac-
tion avant le dbut de la transaction.
Si vos fichiers ne sont pas protgs par mot de
passe, les fichiers manipuls aprs la fonction
HTransactionDbut seront automatiquement mis
en transaction.
2. Commencez la transaction avec la fonction
HTransactionDbut. Cette fonction permet ven-
tuellement de dfinir le nom du journal des tran-
sactions.
3. Effectuez vos oprations. Toutes les oprations
d'criture sur les fichiers en transaction sont auto-
matiquement enregistres dans le fichier de tran-
saction. Attention : les traitements raliss sont
relativement plus lents (puisque chaque opration
est enregistre dans un fichier spcifique).
4. Annulez si ncessaire les oprations ralises
pendant la transaction (fonction HTransactionAn-
nule).
5. Spcifiez la fin de la transaction avec la fonction
HTransactionFin. La transaction est valide.
Tableau rcapitulatif des fonctions WLangage utili-
ses (pour une base de donnes HyperFileSQL)
HGreTransaction Active ou non la gestion
des transactions
(la gestion des transac-
tions est active par dfaut)
HTransactionDbut Dbute la transaction
HTransactionFin Valide la transaction
HTransactionAnnule Annule la transaction en
cours
HTransactionAnnule
HTransactionDbut
HTransactionFin
Outil WDTRANS
Annule une transaction
qui a chou (panne de
courant)
HTransactionInter-
rompue
Permet de savoir si une
transaction a t interrom-
pue (la transaction n'a t
ni valide, ni annule).
Cas dune panne de cou-
rant.
HTransactionLibre Si un enregistrement du
fichier de donnes spci-
fi est considr comme
tant en transaction mais
n'appartient aucune
transaction en cours, il est
automatiquement libr
WLangage.book Page 354 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 355
Manipuler les enregistrements lors d'une
transaction : les rgles suivre
Les enregistrements modifis pendant la tran-
saction peuvent tre lus avant ou aprs le dbut
de la transaction : ils seront toujours pris en
compte dans le journal des transactions.
La gestion des transactions n'exclut pas la ges-
tion des blocages des enregistrements en tran-
saction.
En effet, les enregistrements manipuls pendant
la transaction sont automatiquement bloqus en
criture.
Dans une application WinDev en rseau, si l'utili-
sateur tente de modifier un enregistrement en
transaction, un message apparatra lui deman-
dant de retenter l'opration.
Il est donc ncessaire que la transaction soit la
plus courte possible, pour viter tout blocage
des utilisateurs.
Erreurs spcifiques la gestion des transactions
70031 : Opration non autorise en transaction
Vous utilisez une fonction non autorise pendant
une transaction. Par exemple, la fonction HTran-
sactionDbut est utilise en cours de transac-
tion.
70034 : La dernire transaction a chou
Vous tentez d'utiliser un enregistrement apparte-
nant une transaction qui a chou (panne de
courant, ...). Le programme est relanc sans avoir
annul la transaction. Dans ce cas, il est con-
seill d'annuler la transaction qui a chou (voir
ci-dessous).
2.9.5 Gestion des cas particuliers
Panne de courant
Si une panne (coupure de courant, re-dmarrage
du poste, ...) survient pendant une transaction, les
fichiers de donnes risquent d'tre incohrents : la
transaction n'a t ni valide, ni abandonne. Le
fichier de transaction est toujours prsent sur le
poste.
Dans ce cas, la cohrence de la base de donnes
sera restaure :
soit au premier appel la fonction HTransaction-
Dbut,
soit avec la fonction HTransactionAnnule,
soit avec l'outil redistribuable WDTrans.
Attention : La restauration de la cohrence de la
base peut tre relativement longue.
Remarque : Pour savoir si la restauration de la
cohrence de la base est ncessaire, testez le
rsultat de la fonction HTransactionInterrompue
dans le code d'initialisation du projet (par exemple).
Conseil : rtablir la cohrence de la
base de donnes
Pour rtablir la cohrence de la base de donnes,
les oprations conseilles sont les suivantes :
1. Testez le rsultat de la fonction HTransactionIn-
terrompue dans le code d'initialisation du projet
par exemple.
2. Si la transaction a t interrompue, effectuez
une des oprations suivantes pour rtablir la coh-
rence de la base de donnes :
appel de la fonction HTransactionAnnule,
appel des fonctions HTransactionDbut/HTran-
sactionFin,
lancement de l'outil WDTRANS.
Exemple :
Autre solution : il est galement possible de grer
l'erreur 70034 dans le code d'initialisation du pro-
jet grce au mot-cl QUAND EXCEPTION. Ainsi,
quand l'erreur 70034 surviendra, la cohrence de
la base de donnes sera restaure soit par la fonc-
tion HTransactionAnnule, soit par les fonctions
HTransactionDbut/HTransactionFin.
Remarque : Aprs une coupure de courant, il est
conseill de rindexer les fichiers de donnes de
l'application.
Erreur lors de l'utilisation du
programme
Lorsque l'excution de l'application ou du site est
arrte cause d'une erreur programme (division
par zro par exemple), la transaction en cours est
automatiquement annule.
SI HTransactionInterrompue() ALORS
SI Confirmer("La transaction "+...
"effectue par le poste "+...
h.trsPoste +...
" a t interrompue. "+...
"Voulez-vous rtablir la "+...
"cohrence des fichiers ?") ALORS
// Annule les transactions
// interrompues
SI HTransactionAnnule()= Faux ALORS
Info("Impossible ...
d'annuler "+"la transaction")
FIN
FIN
FIN
WLangage.book Page 355 Mardi, 23. avril 2013 1:59 13
356 Partie 7 : Gestion des fichiers de donnes
Suppression du journal de
transaction
Le journal de transaction est un fichier HyperFi-
leSQL cr et prsent uniquement le temps de la
transaction. Il ne faut pas supprimer ce fichier
sous peine d'incohrence de la base de donnes.
2.9.6 Gestion avance
Transaction : Les fichiers crs
Lors de la mise en place des transactions, deux
types de fichiers HyperFileSQL sont crs :
Le journal des oprations en transaction : Fichier
temporaire au format HyperFileSQL contenant les
diffrentes oprations ralises sur les fichiers
de l'application ou du site pris en compte par la
transaction. Ce fichier est cr par la fonction
HTransactionDbut. Par dfaut, son nom est
<Nom Projet>_$TRS_OPERATION. Ce nom est
modifiable avec la fonction HTransactionDbut.
Le journal des valeurs : Fichier temporaire asso-
ci chaque fichier de donnes pris en compte
par la transaction.
Ce fichier a pour nom <Nom
Fichier>_$$_TRSVAL.Fic. Ce fichier contient pour
chaque opration ralise dans la transaction :
soit le contenu de l'enregistrement avant l'op-
ration (lors d'une suppression par exemple),
soit le contenu de l'enregistrement aprs l'op-
ration (lors d'un ajout par exemple).
Identifiant du poste ralisant la
transaction
Par dfaut, le poste est identifi par un numro uni-
que interne et par le nom du poste (nom dfini sous
Windows).
Pour identifier simplement le poste effectuant les
oprations en transactions, la fonction HPoste per-
met de dfinir un identifiant spcifique au poste.
Cet identifiant remplace le nom du poste. Cet iden-
tifiant est enregistr dans le journal des oprations
en transaction et peut tre consult avec
WDTRANS.
Par dfaut, le poste ralisant la transaction corres-
pond au serveur Web. Ce poste est identifi par un
numro unique interne et par le nom du poste (nom
dfini sous Windows).
Pour identifier simplement le poste de linternaute
effectuant les oprations en transactions, la fonc-
tion HPoste permet de dfinir un identifiant spcifi-
que au poste de linternaute. Pour dfinir un
identifiant unique par internaute, utilisez la fonc-
tion NavigateurAdresseIP. Cet identifiant est enre-
gistr dans le journal des oprations en transaction
et peut tre consult avec WDTRANS.
2.10 Les journaux
2.10.1 Gnralits
La "journalisation" des fichiers de l'analyse est une
fonctionnalit intressante.
Qu'est-ce qu'un journal ?
Le journal est un fichier particulier dans lequel Win-
Dev / WebDev mmorise automatiquement toutes
les oprations ralises sur un ou plusieurs fichiers
de donnes depuis un moment donn (cration du
fichier, dernire modification automatique des don-
nes, dernire sauvegarde ralise avec WDJour-
nal, ...).
Le journal contient l'historique de l'utilisation du
fichier, c'est--dire :
l'enregistrement complet avant manipulation ou
modification par l'utilisateur ou par linternaute,
l'enregistrement complet aprs manipulation ou
modification par l'utilisateur ou par linternaute,
l'auteur de la manipulation ou de la modification,
la date de la manipulation ou de la modification,
la nature de l'opration effectue : ajout, modifi-
cation, suppression, lecture.
A quoi sert un journal ?
Le journal peut tre manipul avec l'utilitaire
WDJournal. Il est possible de raliser les oprations
suivantes partir d'un journal :
Restaurer le contenu d'un fichier de donnes
journal en cas de perte ou de destruction du
fichier de donnes.
Restaurer le contenu d'un fichier de donnes
journal jusqu' une certaine date.
Retrouver l'auteur, la date et l'heure d'une opra-
tion ralise sur un enregistrement spcifique.
Conserver un historique de l'utilisation d'un
fichier (pour raliser des statistiques par exem-
ple).
Exemples :
La dernire sauvegarde date du mois dernier.
Vous avez fait une erreur de manipulation. Grce
au journal, vous pouvez rcuprer toutes vos don-
nes, sans perdre celles du dernier mois de
travail !
Un utilisateur a saisi pendant toute une matine
WLangage.book Page 356 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 357
les bons de commande de la semaine dernire
au lieu de saisir ceux de la semaine en cours.
Afin de perdre le moins de donnes possible, il
est prfrable de remettre tous les fichiers de
l'analyse dans l'tat o ils se trouvaient la veille
au soir.
L'opration est simple. La personne charge de
la maintenance restituera les fichiers de don-
nes prcdemment sauvegards grce
WDJournal. Grce au contenu du journal,
WDJournal pourra reconstituer les fichiers, opra-
tion par opration, depuis la dernire sauvegarde
jusqu'au moment choisi.
Les types de journaux
Les options suivantes permettent de journaler vos
fichiers de donnes. Selon l'option slectionne,
diffrents fichiers seront automatiquement crs.

Option Action ralise Fichiers crs automati-
quement
Aucun journal (option par
dfaut)
Aucun
Journal des critures Toutes les oprations d'ajout, de modifi-
cation et de suppression seront enregis-
tres dans le journal.
Quand choisir cette option ?
Pour connatre tout moment qui a modi-
fi le fichier et quelle est la modification
effectue.
<Nom du fichier>.JNL.fic
Historique des accs au
fichier
Seuls les ordres HyperFileSQL utiliss
pour accder au fichier seront mmori-
ss.
Quand choisir cette option ?
Pour connatre tout moment les opra-
tions qui ont t effectues sur le fichier.
Attention : il est impossible de connatre
la valeur de l'enregistrement avant et
aprs modification.
JournalOpration.fic
JournalIdentification.fic
Journal des critures + Histo-
rique des accs
Toutes les oprations d'ajout, de modifi-
cation et de suppression seront enregis-
tres dans le journal.
Les ordres HyperFileSQL utiliss pour
accder au fichier seront galement
mmoriss.
Quand choisir cette option ?
Pour connatre tout moment :
- qui a modifi le fichier,
- quelle est la modification effectue,
- quelles sont les oprations effectues
sur le fichier.
<Nom du fichier>.JNL.fic
JournalOpration.fic
JournalIdentification. fic
WLangage.book Page 357 Mardi, 23. avril 2013 1:59 13
358 Partie 7 : Gestion des fichiers de donnes
2.10.2 Mettre en place la journalisation
Dfinir la journalisation au niveau
des fichiers de donnes
La mise en place de la journalisation sur les
fichiers de donnes HyperFileSQL est ralise sous
l'diteur d'analyses.
Pour mettre en place la journalisation sur un fichier
dcrit dans l'analyse :
1. Ralisez une sauvegarde des fichiers de don-
nes dans leur tat actuel avec l'utilitaire WDJour-
nal.
2. Sous l'diteur d'analyses, affichez la description
du fichier voulu (option "Description du fichier de
donnes" du menu contextuel).
3. Dans l'onglet "Divers", slectionnez le type de
journal grer pour ce fichier.
4. Selon l'option slectionne, prcisez si nces-
saire le rpertoire des diffrents fichiers crs par
la journalisation.
Attention : les fichiers JournalIdentification et Jour-
nalOpration sont toujours prsents dans le mme
rpertoire. Par dfaut, ces fichiers sont crs dans
le rpertoire de l'application ou du site. Ce rper-
toire est dfini dans les options de l'analyse (option
"Description de lanalyse" du menu contextuel du
graphe de lanalyse, onglet "Journaux") et peut tre
modifi au niveau de chaque fichier.
Conseil : Les fichiers journaux permettent d'enre-
gistrer les oprations effectues sur un fichier pour
les rejouer sur une sauvegarde en cas de problme
(disque inutilisable par exemple). Il est conseill de
sauvegarder les fichiers journaux dans des rper-
toires (et mme des disques) diffrents de ceux uti-
liss pour les fichiers de donnes.
Dfinir la journalisation au niveau
des rubriques
Par dfaut, toutes les rubriques d'un fichier jour-
nal sont automatiquement journales. Cepen-
dant, il est possible de dfinir si certaines
rubriques doivent tre journales ou non.
Par exemple, si un des fichiers de donnes utilise
une rubrique mmo pour stocker une image (infor-
mation peu importante et peu sujette modifica-
tion), il est possible de ne pas journaler cette
rubrique.
Pour ne pas journaler une rubrique :
1. Affichez la description du fichier de donnes
(option "Description des rubriques" du menu con-
textuel).
2. Slectionnez la rubrique voulue.
3. Dans l'onglet "Avanc", dcochez l'option "Jour-
naler la rubrique".
Gnrer l'analyse
Lorsque la journalisation a t dfinie dans l'di-
teur d'analyses, l'analyse peut tre gnre.
Attention : Avant d'effectuer cette opration, il est
conseill de sauvegarder les fichiers de donnes
avec l'outil WDJournal.
Modification automatique des don-
nes et journalisation
Lorsquune modification automatique des fichiers
de donnes est effectue sur des fichiers
journals :
1. Les fichiers journaux sont automatiquement
sauvegards.
2. Les fichiers journaux sont purgs.
2.10.3 Fichiers crs lors de la mise en place
de la journalisation
Lorsqu'un fichier de l'analyse a t dcrit avec une
option de journalisation, les fichiers suivants peu-
vent tre crs :
Pour plus de dtails sur la structure de ces fichiers,
consultez laide en ligne.
Pour paramtrer l'emplacement de ces fichiers et
leur mot de passe :
Fichier JournalOpration et
JournalIdentification : Par dfaut, ces fichiers
sont crs dans le rpertoire de l'application ou
du site. Pour modifier ce rpertoire :
1. Affichez la description de l'analyse (option
"Description de l'analyse" du menu contextuel).
2. Affichez l'onglet "Journal".
3. Slectionnez le rpertoire du fichier et son mot
de passe si ncessaire.
Remarque : Ce rpertoire peut galement tre
modifi pour chaque fichier journal (option "Des-
cription du fichier de donnes", onglet "Divers").
JournalOpra-
tion.Fic
Ensemble des oprations rali-
ses sur les fichiers de donnes
HyperFileSQL journals utiliss
par lapplication ou par le site.
Une opration correspond
une fonction HyperFileSQL.
JournalIdentifica-
tion.Fic
Liste des emplacements physi-
ques de tous les fichiers journa-
ls de lapplication ou du site.
*JNL.Fic Fichier cr pour chaque fichier
journal. Contient les sauvegar-
des des enregistrements pour
toutes les oprations ralises
par l'utilisateur.
WLangage.book Page 358 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 359
Dans ce cas, les fichiers JournalOpration et
JournalIdentification seront crs pour chaque
fichier l'emplacement spcifi.
Fichier *JNL : Par dfaut, ce fichier est cr dans
le rpertoire de l'application ou du site. Pour
modifier ce rpertoire :
1. Affichez la description du fichier (option "Des-
cription du fichier de donnes" du menu contex-
tuel).
2. Affichez l'onglet "Divers".
3. Slectionnez le rpertoire du fichier.
Remarque : Le mot de passe du fichier *JNL.fic
sera identique au mot de passe du fichier de don-
nes.
2.10.4 WDJournal : Utilitaire de gestion des
journaux
L'utilitaire WDJournal permet de :
Sauvegarder et restaurer vos fichiers de don-
nes.
Vrifier la cohrence d'un journal et le purger si
ncessaire.
Restaurer un fichier de donnes partir de son
journal.
Rechercher qui a modifi un enregistrement,
quelle date, ...
Cet utilitaire est redistribuable. Pour plus de
dtails, consultez laide en ligne.
2.10.5 Manipuler les journaux par program-
mation
La gestion des journaux est automatique. Cepen-
dant, plusieurs fonctions du WLangage permettent
de manipuler des journaux :
Des proprits WLangage permettent galement
de grer les fichiers journals :
HChangeRepJnl Modifie dynamiquement
l'emplacement des fichiers du
journal correspondant un
fichier HyperFileSQL (fichier
*JNL et fichiers JournalOpra-
tion et JournalIdentification).
HGreJournal Permet d'activer ou non la ges-
tion des journaux. Cette gestion
est active par dfaut.
HJournalInfo Ajoute des commentaires dans
le journal lors de l'enregistre-
ment de l'opration journale.
Ces commentaires pourront
tre visualiss dans WDJournal.
HJournalRecre Recre un journal vide. Cette
fonction permet par exemple de
remettre le journal 0 aprs
une sauvegarde ou une rplica-
tion. Le contenu des fichiers
existants est perdu.
HJournalRed-
marre
Redmarre la journalisation du
fichier. Cette journalisation a
t arrte grce la fonction
HJournalStop.
HJournalStop Arrte la journalisation du
fichier. Les manipulations effec-
tues dans le fichier journal
ne sont plus enregistres.
HRgnreFi-
chier
Rgnre un fichier partir de
son journal.
FichierJournal Permet de savoir si un fichier de
donnes est un fichier journal ou
non.
Journalisation Permet de connatre le mode de
journalisation utilis pour un
fichier de donnes (fichier dfini
sous l'diteur d'analyses ou
dfini dynamiquement).
RpertoireJour-
nal
Permet de grer le rpertoire du
fichier journal dcrit dans l'ana-
lyse. Il est ainsi possible de :
Connatre le rpertoire du jour-
nal pour un fichier dfini sous
l'diteur d'analyses ou dfini
dynamiquement.
Dfinir le rpertoire du journal
pour un fichier dfini dynami-
quement.
WLangage.book Page 359 Mardi, 23. avril 2013 1:59 13
360 Partie 7 : Gestion des fichiers de donnes
2.11 Modification automatique des fichiers de donnes
2.11.1 Principe
La modification automatique des fichiers de don-
nes permet de mettre jour la description des
fichiers de donnes prsents sur les postes utilisa-
teurs ou sur les serveurs de donnes.
En effet, si la structure d'un ou de plusieurs fichiers
a volu sur le poste de dveloppement (ajout ou
suppression de rubriques, modifications de rubri-
ques, ...), ces modifications doivent obligatoirement
tre reportes sur les postes utilisateurs ou sur les
serveurs de donnes lors de la mise jour de
l'application ou du site.
Si la mise jour de l'application ou du site est
effectue sans modification automatique des don-
nes, l'application ou le site risque de :
ne plus fonctionner correctement,
gnrer des erreurs de programmation.
Attention : Dans le cas d'une mise jour rseau
avec modification automatique des fichiers de don-
nes, l'installation de la mise jour de l'application
sur les postes utilisateurs doit tre obligatoire (Win-
Dev uniquement).
2.11.2 Dans quels cas la modification auto-
matique des donnes est-elle ncessaire ?
La modification automatique des donnes est
ncessaire dans les cas suivants :

Remarque : Dans le cas d'une installation rseau,
la modification automatique des donnes modifie
la fois les fichiers de donnes prsents sur le poste
serveur et ceux prsents sur les postes utilisateurs
(WinDev uniquement).
Poste de dveloppement Postes des utilisateurs / Serveur de donnes
Cas 1 :
Modifications de
la structure des
fichiers de don-
nes au format
HyperFileSQL 7
L'application / le site utilise
des fichiers de donnes au for-
mat HyperFileSQL 7.
La structure des fichiers de
donnes a t modifie (ajout
ou suppression de
rubriques, ...).
L'application / le site utilise des fichiers de donnes
au format HyperFileSQL 7.
Ces modifications doivent obligatoirement tre
rpercutes lors de la mise jour de l'application ou
du site. La structure des fichiers sera ainsi identique
celle du poste de dveloppement.
Cas 2 :
Migration des
fichiers de don-
nes Hyper File
5.5 (WinDev 5.5
ou WebDev 1.5)
vers HyperFi-
leSQL Classic
L'application / le site utilise
des fichiers de donnes au for-
mat HyperFileSQL Classic.
L'application / le site utilise des fichiers de donnes
au format Hyper File 5.5 (WinDev 5.5 / WebDev 1.5).
La migration des fichiers de Hyper File 5.5 vers
HyperFileSQL Classic doit obligatoirement tre effec-
tue lors de la mise jour de l'application ou du site.
La structure des fichiers sera ainsi identique celle
du poste de dveloppement.
Cas 3 :
Modifications de
la structure des
fichiers de don-
nes au format
Hyper File 5.5
(WinDev 5.5 /
WebDev 1.5)
L'application / le site utilise
des fichiers de donnes au for-
mat Hyper File 5.5 (WinDev
5.5 / WebDev 1.5).
La structure des fichiers de
donnes a t modifie (ajout
ou suppression de
rubriques, ...)..
L'application / le site utilise des fichiers de donnes
au format Hyper File 5.5 (WinDev 5.5 / WebDev 1.5.)
Ces modifications doivent obligatoirement tre
rpercutes lors de la mise jour de l'application ou
du site. La structure des fichiers sera ainsi identique
celle du poste de dveloppement.
WLangage.book Page 360 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 361
2.11.3 Raliser la modification automatique
des donnes
Poste de dveloppement
La modification automatique des fichiers de don-
nes est systmatiquement ralise lors de la
gnration de l'analyse sur le poste de dveloppe-
ment.
Pour reporter la modification automatique sur les
fichiers de donnes prsents sur les postes des uti-
lisateurs ou sur les serveurs de donnes, il suffit
d'effectuer la modification automatique lors de
l'installation de la mise jour de l'application ou du
site. Le paramtrage de cette modification automa-
tique peut tre effectu lors de la cration du pro-
gramme dinstallation.
Poste de dploiement
Lors de l'installation d'une mise jour avec modifi-
cation automatique des fichiers de donnes, l'utili-
sateur ou le responsable du site pourra configurer
la modification automatique en cliquant sur le bou-
ton "Avanc". Ce bouton est prsent sur le premier
plan du programme d'installation. Une fentre
s'affiche permettant de :
Crer un fichier de compte rendu des oprations
effectues lors de la modification automatique
des donnes. En cas de problme, ce fichier
pourra tre transmis au responsable de l'applica-
tion ou du site.
Par dfaut, ce fichier est nomm "LOGMO-
DAUTO.TXT" et est cr dans le rpertoire d'instal-
lation de l'application ou du site.
Lister les fichiers de donnes au format HyperFi-
leSQL Classic sur lesquels la modification auto-
matique va tre effectue. Il sera alors possible
d'ajouter cette liste :
des fichiers de donnes supplmentaires,
des rpertoires supplmentaires contenant des
fichiers de donnes.
Spcifier des rpertoires supplmentaires conte-
nant des fichiers de donnes au format Hyper
File 5.5 qui ne sont pas trouvs automatique-
ment lors de la mise jour.
Remarques :
Lors de la mise jour, les fichiers de donnes
automatiquement trouvs sont :
les fichiers prsents dans le rpertoire d'instal-
lation de l'application ou du site,
les fichiers lists dans le fichier ".REP".
Pour plus de dtails sur le fichier ".REP", consul-
tez Rassignation des fichiers de donnes,
page 347.
Pour empcher l'utilisateur d'accder aux options
de configuration de la modification automatique,
l'diteur d'installation WDINST permet de rendre
invisible le bouton "Avanc" du programme d'ins-
tallation (WinDev uniquement).
Forcer la modification automatique des fichiers
Sur le poste de dveloppement comme sur le poste
de dploiement, il est possible tout moment de
lancer une modification automatique des fichiers
de donnes.
En effet, dans certains cas, la modification automa-
tique des donnes peut ne pas tre ralise
correctement : fichiers de donnes prsents sur un
ordinateur portable non connect au rseau au
moment de la mise jour, mise jour
dfectueuse, ... Il est alors ncessaire de forcer la
modification automatique des donnes pour pou-
voir utiliser l'application ou le site. L'outil WDMod-
Fic permet de forcer la modification automatique
des fichiers de donnes.
2.11.4 Notes
Excuter plusieurs fois la modification automati-
que des fichiers de donnes
Si la modification automatique est effectue sur
des donnes dj jour, cette modification n'aura
aucune incidence sur l'application ou sur le site.
Configuration par dfaut du programme d'installa-
tion
Si l'application ou le site est associ une analyse,
par dfaut, le programme d'installation propose
d'effectuer la modification automatique des
fichiers de donnes. L'utilisateur ou le responsable
du site peut accder aux options de configuration
de la modification automatique en cliquant sur le
bouton "Avanc".
Sauvegarde des fichiers de donnes
Avant d'excuter la modification automatique, les
fichiers de donnes de l'application ou du site sont
automatiquement sauvegards. Les rpertoires de
sauvegarde sont nomms :
"Sauvegarde Modif Auto (<DateModifAuto> <Heu-
reModifAuto>)" s'il s'agit d'une modification auto-
matique des fichiers de donnes sans migration
"Fichiers avant conversion (<DateModifAuto>
<HeureModifAuto>)" s'il s'agit d'une migration des
fichiers de donnes de Hyper File 5.5 vers Hyper-
FileSQL 7.
WLangage.book Page 361 Mardi, 23. avril 2013 1:59 13
362 Partie 7 : Gestion des fichiers de donnes
2.12 Cration de fichiers dynamiques (ou temporaires)
En WLangage, il est possible de dcrire des fichiers
HyperFileSQL temporaires par programmation.
Pour dcrire des fichiers temporaires, il faut :
1. Dclarer des variables de type "Description de
fichier", "Description de rubrique" et "Description de
liaison" (si ncessaire).
Ces types sont dtaills partir de la page 56.
2. Pour chaque fichier :
dcrire les caractristiques du fichier grce aux
proprits HyperFileSQL,
dcrire les caractristiques des rubriques grce
aux proprits HyperFileSQL,
valider la description de chaque rubrique (fonc-
tion HDcritRubrique),
valider la description du fichier (fonction HDcrit-
Fichier).
3. Dcrire si ncessaire les caractristiques des
liaisons grce aux proprits HyperFileSQL.
4. Valider si ncessaire la description de chaque
liaison (fonction HDcritLiaison).
Pour dcrire un fichier temporaire, une analyse
HyperFileSQL doit tre associe au projet en cours.
Notes :
Un fichier dynamique peut tre reli une fen-
tre, une page, un tat ou un champ grce
aux proprits du WLangage.
Les fichiers dynamiques peuvent tre modifis
par la modification automatique des fichiers.
Un fichier dynamique peut tre rindex par
WDOutil ou par HRindexe.
Les fonctions de description de fichier tempo-
raire ne peuvent pas tre utilises en langage
externe. Elles ne permettent pas de modifier un
fichier dcrit sous l'diteur d'analyses de WinDev
/ WebDev (fichier non temporaire)
Des fonctions spcifiques xBase permettent de
crer des fichiers temporaires xBase.
2.13 Rcupration de la structure des fichiers HyperFileSQL d'une analyse
Il est possible de rcuprer la structure des fichiers
d'une analyse. Cela permet par exemple de crer
un outil comme le visualisateur de fichiers WDMAP.
Les fonctions permettant de rcuprer la structure
des fichiers sont les suivantes (elles ne peuvent
pas tre utilises sur des fichiers xBase).
Remarques :
La fonction HOuvreAnalyse accepte en param-
tre un mot de passe optionnel si un mot de passe
a t dfini lors de la description de l'analyse
(mot de passe WDMAP). Ce mot de passe permet
de protger l'accs l'analyse par programme.
Pour utiliser les fonctions HListeFichier, HListe-
Rubrique et HListeCl, il n'est pas ncessaire
d'ouvrir l'analyse avec HOuvreAnalyse.
Pour rcuprer la structure des fichiers de don-
nes d'une analyse, si l'analyse est associe au
projet, il n'est pas ncessaire d'ouvrir lanalyse
avec HOuvreAnalyse. Il faut que le fichier de des-
cription de l'analyse (WDD) soit install dans la
bibliothque du projet (WDL) ou dans le rper-
toire de l'analyse.
HFermeAnalyse Ferme une analyse ouverte
par HOuvreAnalyse
HListeAnalyse Retourne le nom des analyses
et le lecteur sur lequel elles
sont installes
HListeCl Retourne les informations sur
les cls d'une analyse
HListeFichier Retourne le nom des fichiers
d'une analyse
HListeRubrique Retourne la structure (rubri-
ques) d'un fichier
HOuvreAnalyse Ouvre une analyse pour acc-
der ses fichiers de donnes
HRcupreRubri-
que
Retourne le contenu de la
rubrique spcifie pour l'enre-
gistrement en cours
HVersRubrique Ecrit le contenu de la rubrique
spcifie pour l'enregistre-
ment en cours
WLangage.book Page 362 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 363
2.14 Acclrer les traitements et optimiser une application / un site
Plusieurs mcanismes de gestion sont branchs
par dfaut lors de la cration dune application
WinDev ou dun site WebDev.
Pour optimiser les temps de rponses de vos appli-
cations ou de vos sites, nous vous conseillons de
"dbrancher" les gestions inutilises. Les diffren-
tes gestions branches par dfaut sont :
les transactions,
le journal,
les mmos,
le .REP,
la rplication,
les triggers,
le RPC.
Pour chacune de ces gestions, voici un bref rappel
de la fonctionnalit concerne et comment la
dbrancher par programmation.
Attention : Toutes ces fonctionnalits doivent tre
dbranches dans le code dinitialisation du projet.
2.14.1 Gestion des transactions
La gestion des transactions permet de conserver
lintgrit et la cohrence dune base de donnes,
quelle que soit lopration effectue sur la base de
donnes. Pour plus de dtails, consultez le paragra-
phe Les transactions, page 353.
Si aucun fichier nest en transaction, la gestion des
transactions est inutile. Elle peut tre dbranche
grce la fonction HGreTransaction.
2.14.2 Gestion du journal
Le journal est un fichier particulier o sont mmori-
ses toutes les critures effectues sur un fichier
de donnes depuis la dernire sauvegarde. Son
fonctionnement est dcrit dans le paragraphe Les
journaux, page 356.
Si aucun fichier nest journal, la fonction HGre-
Journal permet de dbrancher la gestion des jour-
naux.
2.14.3 Gestion des mmos
La gestion des mmos est ncessaire lorsque les
fichiers contiennent des rubriques de type mmo.
Leur gestion est dcrite dans le paragraphe Ges-
tion des fichiers "mmo", page 346.
Si aucun fichier ne comporte de rubriques mmos,
il est possible de dbrancher leur gestion avec la
fonction HGreMmo.
2.14.4 Gestion du ".REP"
Le ".REP" contient le nom et le rpertoire physique
des fichiers de donnes HyperFileSQL dune appli-
cation ou dun site. Pour plus de dtails sur son uti-
lisation, consultez le paragraphe Rassignation
des fichiers de donnes, page 347.
Si votre application ou votre site ne ncessite pas
la gestion du ".REP", il est possible de dbrancher
sa gestion avec la fonction HGreREP.
2.14.5 Gestion de la rplication
La rplication des donnes permet de maintenir
jour des fichiers de donnes prsents sur diff-
rents postes. Son utilisation est dtaille dans le
paragraphe La rplication de donnes, page 387.
Si votre application ou votre site nutilise pas la
rplication, il est possible de dbrancher sa gestion
avec la fonction HGreRplication.
2.14.6 La gestion des triggers
Un trigger correspond lassociation dune proc-
dure et dune action de modification ralise sur un
enregistrement dun ou de plusieurs fichiers. Son
utilisation est dtaille dans le paragraphe Les
triggers HyperFileSQL, page 385.
Si aucun trigger nest utilis dans lapplication ou
dans le site, la gestion des triggers peut tre dsac-
tive grce la fonction HGreTrigger.
2.14.7 La gestion du RPC
Le RPC permet de consulter une base de donnes
HyperFileSQL via Internet / Intranet ou RTC
(Rseau Tlphonique Commut). La gestion du
RPC est dtaille dans laide en ligne.
Si votre application ou votre site ne gre pas
laccs distant, il est conseill de dbrancher sa
gestion avec la fonction HGreAccsDistant.
WLangage.book Page 363 Mardi, 23. avril 2013 1:59 13
364 Partie 7 : Gestion des fichiers de donnes
2.15 Driver ODBC sur HyperFileSQL
2.15.1 Prsentation
Le driver ODBC sur HyperFileSQL permet d'accder
une base de donnes Hyper depuis un logiciel de
base de donnes externe grant les accs par
ODBC.
Les donnes HyperFileSQL sont alors accessibles
en lecture et en criture.
Installation
Lors de l'installation de WinDev / WebDev sur le
poste de dveloppement, il est possible d'installer
le driver ODBC sur HyperFileSQL.
De mme, lors de la configuration du programme
d'installation de vos applications ou de vos sites,
vous pouvez inclure l'installation du driver ODBC
sur HyperFileSQL.
2.15.2 Configuration
Pour utiliser le driver ODBC sur HyperFileSQL :
1. Lancez l'administrateur de donnes ODBC
(ODBCAD32.EXE) sur votre poste ou sur le poste
serveur. Utilisez par exemple l'option "Dmarrer ..
Excuter" de Windows et saisissez
"ODBCAD32.EXE".
2. Slectionnez l'onglet "Base de donnes utilisa-
teur".
3. Cliquez sur le bouton "Ajouter".
4. Slectionnez le driver "HyperFileSQL".
5. Cliquez sur le bouton "Terminer".
6. Saisissez le nom de la source de donnes Hyper-
FileSQL. Ce nom permettra d'identifier la base de
donnes HyperFileSQL dans les programmes exter-
nes.
7. Cliquez sur le bouton "Dtail".
8. Slectionnez le fichier WDD correspondant
l'analyse (bouton "Parcourir").
9. Dans la liste des analyses, slectionnez l'ana-
lyse voulue puis slectionnez le rpertoire des
fichiers de donnes correspondant (bouton "Par-
courir"). Tous les fichiers de donnes HyperFileSQL
correspondant l'analyse slectionne sont regrou-
ps dans ce rpertoire.
Attention : il est ncessaire de slectionner un
rpertoire de fichier par analyse.
10. Validez (bouton "OK").
La base de donnes est utilisable en lecture et en
criture depuis des programmes externes via le dri-
ver ODBC sur HyperFileSQL.
Pour plus de dtails sur le driver ODBC sur HyperFi-
leSQL Classic, consultez laide en ligne.
2.16 ODBC sur HyperFileSQL via J++ et JDBC
2.16.1 Prsentation
Le driver ODBC sur HyperFileSQL permet d'accder
une base de donnes HyperFileSQL depuis un
logiciel de base de donnes externe, grant les
accs par ODBC. Il est ainsi possible d'utiliser le dri-
ver ODBC sur HyperFileSQL 7 via J++ et JDBC.
Il est ncessaire d'utiliser :
le driver JDBC de Microsoft ou de Sun
Visual J++ ou le JDK de Sun.
Attention : Pour utiliser les driver ODBC sur Hyper-
FileSQL via J++ et JDBC, les limitations sont les
suivantes :
Afin d'viter que d'autres programmes ne modifient
intempestivement vos donnes HyperFileSQL, le
pilote est en lecture seulement. Le driver ODBC sur
HyperFileSQL est un driver ODBC de niveau 2. Pour
plus d'informations, consultez un manuel spcia-
lis sur ODBC.
2.16.2 Installation
Lors de l'installation de WinDev ou WebDev sur le
poste de dveloppement, il est possible d'installer
le driver ODBC sur HyperFileSQL.
De mme, lors de la configuration du programme
d'installation de vos applications WinDev, vous pou-
vez inclure l'installation du driver ODBC sur HyperFi-
leSQL.
2.16.3 Configuration
Pour utiliser le driver ODBC sur HyperFileSQL, confi-
gurez le driver ODBC :
1. Lancez l'administrateur de donnes ODBC
(ODBCAD32.EXE) sur votre poste. Utilisez par exem-
ple l'option "Dmarrer .. Excuter" de Windows et
saisissez "ODBCAD32.EXE".
2. Slectionnez l'onglet "Base de donnes Utilisa-
teur".
3. Cliquez sur le bouton "Ajouter".
4. Slectionnez le driver "HyperFileSQL".
5. Cliquez sur le bouton "Terminer".
WLangage.book Page 364 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 365
6. Saisissez le nom de la source de donnes Hyper-
FileSQL. Ce nom permettra d'identifier la base de
donnes HyperFileSQL dans les programmes exter-
nes.
7. Cliquez sur le bouton "Dtail".
8. Slectionnez le fichier WDD correspondant
l'analyse grce au bouton "Parcourir".
9. Dans la liste des analyses, slectionnez l'ana-
lyse voulue puis slectionnez le rpertoire des
fichiers de donnes correspondant (bouton "Par-
courir").
Dans ce rpertoire tous les fichiers de donnes
HyperFileSQL correspondant l'analyse slection-
ne sont regroups.
Attention : il est ncessaire de slectionner un
rpertoire de fichier par analyse.
10. Validez (bouton "OK").
La base de donnes est utilisable en lecture seule-
ment depuis des programmes externes via le driver
ODBC sur HyperFileSQL.
2.16.4 Utilisation
Pour utiliser le driver ODBC sur HyperFileSQL
depuis votre programme Java, il faut :
1. Dfinir le driver utilis. Par exemple, avec la
ligne de code suivante :
2. Dfinir l'URL sur la connexion ODBC systme
(par exemple "hfodbc") :
3. Interroger en SQL la base de donnes HyperFi-
leSQL. Par exemple :
Remarque : Le driver ODBC sur HyperFileSQL ne
permet pas d'accder une base de donnes
HyperFileSQL crypte.
2.17 Provider OLE DB pour HyperFileSQL
2.17.1 Prsentation
Le provider OLE DB pour HyperFileSQL permet
d'accder une base de donnes HyperFileSQL
(Classic ou Client/Serveur) depuis un logiciel
externe grant les accs par OLE DB.
Le provider est disponible en lecture et en criture.
Une application crite dans un langage tiers peut
lire et crire dans des fichiers HyperFileSQL.
Pour plus d'information, consultez un manuel sp-
cialis sur OLE DB.
2.17.2 Installation
Le provider OLE DB pour HyperFileSQL est fourni
sous la forme d'un pack d'installation disponible
dans le rpertoire "Install\OLEDB" de WinDev/Web-
Dev.
Par dfaut, le provider OLE DB est install dans le
rpertoire "C:\Program Files\Fichiers communs\PC
SOFT\18.0\OLEDB".
// utilisation du driver JDBC de
// Microsoft
Class.foName("com.ms.jdbc.odbc.
JdbcOdbcDriver");
// Utilisation du driver JDBC de
// Sun
Class.forName("sun.jdbc.odbc.
JdbcOdbcDriver");
String jURL = "jdbc:odbc:hfodbc";
//Connexion
Connection Contact = ...
DriverManager.getConnection
(jURL,"<user>", "<pass>");
// Cre une requte
Statement jRequete = ...
Contact.createStatement();
// Excution de la requte
// et rcupration ...
ResultSet Resultat = ...
jRequete.executeQuery(...
"SELECT * FROM CLIENT");
int jColonne = 5;
int jLigne = 3;
ResultSetMetaData jMetaData= ...
Resultat.getMetaData();
for (int i=0;i<jLigne;i++)
Resultat.next();
System.out.println("Nom de"+ ...
"colonne : " + jMetaData.get ...
ColumnLabel(jColonne));
System.out.println("Valeur : " +
Resultat.getString(jColonne));
Resultat.close();
jRequete.close();
Contact.close();
WLangage.book Page 365 Mardi, 23. avril 2013 1:59 13
366 Partie 7 : Gestion des fichiers de donnes
Remarque : Pour qu'une application puisse utiliser
un provider OLE DB, il est ncessaire d'installer le
composant MDAC (Microsoft Data Access Compo-
nent) en version 2.8 ou suprieure. Ce composant
est disponible en tlchargement sur le site de
Microsoft. Il est intgr au systme d'exploitation
partir de Windows 2003 Serveur et Windows Vista.
2.17.3 Configuration
L'application utilisant un provider OLEDB doit four-
nir une chane de connexion. Cette chane dfinit le
provider utiliser ainsi que les paramtres de con-
nexion fournir ce provider pour tablir la con-
nexion avec la base de donnes.
Cette chane (appele chane de connexion) peut
tre :
saisie en programmation (par exemple dans une
application C# ou VB.Net).
construite l'aide d'un assistant (par exemple
avec l'outil Crystal Report).
Le format gnral de la chane de connexion est le
suivant :
<Element1>=<Valeur1>;<Element2>=<Va
leur2>;...;<ElementN>=<ValeurN>
Pour plus de dtails, consultez laide en ligne.
Utilisation de l'analyse dans une con-
nexion une base de donnes
HyperFileSQL Classic
Dans le cas d'une connexion une base de don-
nes HyperFileSQL Classic :
Si le chemin du fichier WDD est indiqu dans le
paramtre "Data Source" de la chane de
connexion :
Seuls les fichiers dcrits dans cette analyse
seront pris en compte par la connexion.
Les liaisons et les rgles d'intgrit dcrites
dans l'analyse sont prises en compte automati-
quement.
Si le chemin du fichier WDD n'est pas indiqu
dans le paramtre "Data Source" de la chane de
connexion :
Tous les fichiers prsents dans le rpertoire
indiqu dans le paramtre "Initial Catalog"
seront pris en compte.
Aucune contrainte d'intgrit entre les fichiers
n'est respecte automatiquement.
Remarques :
Lors d'un accs par le provider OLE DB pour
HyperFileSQL, les fentres d'assistance automati-
que de HyperFileSQL sont dsactives.
Les rubriques de type "Dure" dans les fichiers
de donnes HyperFileSQL sont retournes sous
forme d'entiers sur 8 octets par le provider OLE
DB. L'unit est la milliseconde.
Les rubriques de types tableau ne sont pas
gres par le provider OLE DB.
Dans cette version, les commandes SQL avec
paramtres ne sont galement pas gres.
Exemples de chanes de connexion
OLE DB
Connexion une base HyperFileSQL Classic sans
prciser l'analyse :
Connexion une base HyperFileSQL Classic en
prcisant l'analyse :
Connexion une base HyperFileSQL Client/
Serveur :
Connexion une base HyperFileSQL Client/Ser-
veur avec des fichiers protgs par des mots de
passe et utilisant l'alphabet russe :
Remarque : Dans cet exemple, tous les fichiers de
la base de donnes sont protgs par le mot de
passe "secret1" sauf le fichier "Fichier2" qui est pro-
tg par le mot de passe "secret2".
/Provider=PCSOFT.HFSQL;Initial
Catalog=c:\Ma Base HyperFileSQL
Provider=PCSOFT.HFSQL;Data
Source=c:\Ma Base HyperFleSQL\ ...
MonAnalyse.wdd;Initial ...
Catalog=c:\Ma Base HyperFileSQL
Provider=PCSOFT.HFSQL;Data
Source=serveurbdd.
masociete.fr:4910;User...
ID=admin;Password=secret;...
Initial Catalog=MaBase
Provider=PCSOFT.HFSQL;Data
Source=serveurbdd.masciete.fr;...
User ID=utilisateur;...
Initial Catalog=MaBasRusse; ...
Extended Properties= ...
"Password=*:secret1; ...
Password=Fichier2:secret2;...
Language=KOI8-R"
WLangage.book Page 366 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 367
3. LANGAGE SQL
3.1 Prsentation
Un programme dvelopp avec WinDev ou WebDev
peut accder une base de donnes selon plu-
sieurs modes :
Accs Natif
OLE DB
ODBC via OLE DB
Ce chapitre prsente comment accder :
des fichiers HyperFileSQL par SQL,
des fichiers de base de donnes tierce par SQL.
3.2 Langage SQL et HyperFileSQL
3.2.1 Prsentation
Le WLangage propose plusieurs fonctions pour
interroger une base de donnes HyperFileSQL par
des requtes SQL (HExcuteRequte, HExcuteRe-
quteSQL).
Les fichiers HyperFileSQL peuvent tre interrogs :
Par des requtes cres par lditeur de requ-
tes.
Pour plus de dtails sur la cration des requtes
et la manipulation de lditeur de requtes, con-
sultez le manuel "Gnrateur dtats et de requ-
tes".
Par des requtes SQL saisies directement sous
lditeur de code (fonction HExcuteRequ-
teSQL).
A laide du driver ODBC sur HyperFileSQL fourni
avec WinDev / WebDev, depuis une application
ou un site non dvelopp avec WinDev / WebDev.
3.2.2 Commandes SQL utilisables avec
HyperFileSQL
Les commandes SQL pouvant tre utilises sur des
fichiers HyperFileSQL sont les suivantes :
ADD_MONTH ALL
AND ANY
AS ASC
ASCII AVG
BETWEEN BIN
BOTTOM CASE
CBRT CEIL - CEILING
CHAR_LENGTH CHARACTER_LENGT
H
COALESCE CONCAT
COUNT CREATE TABLE
DECODE DEGREES
DELETE DESC
WLangage.book Page 367 Mardi, 23. avril 2013 1:59 13
368 Partie 7 : Gestion des fichiers de donnes
Toutes les autres commandes SQL non cites ne
sont pas gres actuellement.
Remarque : Nous ne dtaillerons pas ces comman-
des. Nous vous conseillons de consulter si nces-
saire un ouvrage spcialis ou laide en ligne.
3.2.3 Fonctions d'excution de requtes
Les requtes cres avec l'diteur de requtes
seront initialises par la fonction HExcuteRe-
qute.
Les requtes en langage SQL seront initialises par
la fonction HExcuteRequteSQL. Pour rcuprer le
contenu d'une requte SQL, il est ncessaire de dis-
poser d'une source de donnes (ou d'un champ
table fichier, combo, ... reli la requte).
Important : Une variable de type "source de don-
nes" doit toujours tre dclare comme GLOBALE
la fentre, la page ou au projet. Dans le cas con-
traire, elle ne pourrait pas tre utilise pour remplir
une table par exemple puisque sa dure de vie
serait trop courte.
Si une variable de type "source de donnes" est
dclare en tant que variable LOCALE, un warning
sera gnr indiquant le risque.
Exemple de requte de l'diteur de requtes (la
requte s'appelle ici RequeteEditeur.WDR) :
Exemple de requte en langage SQL :
DISTINCT DIV
DROP TABLE EXISTS
FROM FULL OUTER JOIN
GROUP BY HAVING
HEX IN
INNER JOIN INSERT
INSTR INTO
IS NULL / IF NULL LAST_DAY
LAST_INSERT_ID LEFT
LEFT OUTER JOIN LEN
LENGTH LIKE
LIMIT LOWER
LPAD LTRIM
MAX MID
MIN MONTHS_BETWEEN
NEW_TIME NEXT_DAY
NOT NVL
OCT OCTET_LENGTH
ON OR
ORDER BY PATINDEX
POSITION RADIAS
RANDOM REPLACE
RIGHT RIGHT OUTER JOIN
ROUND RPAD
RTRIM SELECT
SET SOME
SOUNDEX SOUNDEX LIKE
SOUNDEX2 SOUNDEX2 LIKE
SUBSTR SUBSTRING
SUM SYSDATE
TOP TRANSLATE
TRIM TRUNC
UNION UPDATE
UPPER UUID
VALUES WHERE
SrcRequete est une source de donnes
SI HExcuteRequte(SrcRequete,...
RequeteEditeur) ALORS
Erreur(HerreurInfo())
SINON
HLitPremier(SourceRequete)
TANTQUE pas HEnDehors()
// Parcours du rsultat de la
// requte
HLitSuivant()
FIN
FIN
SrcRequete est une source de donnes
SI pas HExcuteRequteSQL(...
SrcRequete,"SELECT NomClient,...
"+...
"Adresse FROM CLIENT WHERE "+...
"CLIENT.Ville LIKE 'Paris%'")
ALORS
Erreur(HerreurInfo())
SINON
HLitPremier(SourceRequete)
TANTQUE pas HEnDehors()
// Parcours du rsultat
// de la requte
HLitSuivant()
FIN
FIN
WLangage.book Page 368 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 369
Particularit des requtes de mise jour de base
(UPDATE, DELETE, INSERT, ...)
Ces requtes n'tant pas destines renvoyer une
slection d'enregistrements, il n'est pas ncessaire
de disposer d'une source de donnes pour les ex-
cuter. Les fonctions HExcuteRequte et HExcute-
RequteSQL peuvent alors tre appeles avec un
nom de requte au lieu d'une source de donnes.
Exemple de requte SQL DELETE :
Passage de paramtres une requte
Une requte sur une base de donnes peut rece-
voir des paramtres (par exemple la slection des
clients du dpartement X).
Pour cela, la fonction HExcuteRequte permet de
passer des paramtres la requte construite sous
l'diteur de requtes. Consultez l'aide relative
l'diteur de requtes et la fonction HExcuteRe-
qute pour de plus amples informations.
Une requte en langage SQL (initialise par la fonc-
tion HExcuteRequteSQL) peut elle aussi accepter
des paramtres. Il suffit pour cela que la chane
constituant la requte SQL soit construite par con-
catnation avec les paramtres.
Par exemple, pour rechercher un client dont le
numro a t saisi l'cran :
3.3 Langage SQL et autres bases de donnes
3.3.1 Prsentation
WinDev / WebDev permet dinterroger une base de
donnes tierce :
soit par le WLangage (HExcuteRequteSQL),
soit par une requte cre avec lditeur de
requtes.
3.3.2 Requte cre dans lditeur de
requtes
Pour crer une requte sur une base de donnes
tierce, les tapes sont les suivantes :
1. Importation des tables de la base de donnes
tierce (description des structures) dans lanalyse du
projet.
Pour raliser cette opration, sous le volet "Ana-
lyse", dans le groupe "Cration", droulez "Impor-
ter" et slectionnez loption "Importer des
descriptions de fichiers/tables". Lassistant permet
de se connecter un serveur ou une base de
donnes et de slectionner les tables importer.
2. Cration des requtes avec lditeur de requ-
tes.
3.3.3 Requte cre par programmation
Pour crer une requte sur une base de donnes
tierce, les diffrentes tapes sont les suivantes :
1. Dclaration de la connexion dans lditeur
danalyses.
2. En programmation, deux mthodes sont
possibles :
Mthode 1 : Dclaration dune source de donnes.
Utilisation de la fonction HExcuteRequteSQL.
Mthode 2 :
Ouverture de la connexion avec la fonction HOu-
vreConnexion.
Excution de la requte avec la fonction HExcu-
teRequteSQL.
Parcours du rsultat de la requte avec les fonc-
tions HLitXXX.
Fermeture de la connexion avec la fonction HFer-
meConnexion.
Dclaration de la connexion
Dans lditeur danalyses, sous le volet "Analyse",
dans le groupe "Connexion", cliquez sur "Nouvelle
connexion".
SI PAS HExcuteRequteSQL(...
"RequeteDeSuppression",...
"DELETE FROM CLIENT WHERE "+...
"CLIENT.NumClient=346") ALORS
Erreur(HErreurInfo())
SINON
Info("Suppression effectue")
FIN
CReqSQL est une chane
SourceRequete est une source de ...
donnes
// ChampNumeroClient est un champ
// de saisie de la fentre
cReqSQL="SELECT NomClient"+ ...
"FROM CLIENT WHERE "+...
"CLIENT.NClient=" +...
ChampNumeroClient
SI PAS HExcuteRequteSQL(...
SourceRequete,cReqSQL) ...
ALORS Erreur(HErreurInfo())
SINON
HLitPremier(SourceRequete)
Info(SourceRequete.NomClient)
// Affiche nom client trouv
FIN
WLangage.book Page 369 Mardi, 23. avril 2013 1:59 13
370 Partie 7 : Gestion des fichiers de donnes
Programmation
Le code suivant permet dexcuter une requte
SQL sur une base de donnes accessible via la con-
nexion dcrite dans lanalyse.
Remarque : Tous les ordres SQL spcifiques la
base de donnes tierce peuvent tre utiliss.
// Dclaration de la source
// de donnes
Client75 est une source de Donnes
// Recherche clients du
// dpartement 75
// GestionCommerciale : nom de la
// connexion dcrite dans l'analyse
SI PAS ...
HExcuteRequteSQL(Client75,...
GestionCommerciale,...
hRequteInterruptible,...
"SELECT * FROM"+...
" CLIENT WHERE CODEPOSTAL "+...
"LIKE '75%') alors
Erreur(HErreurInfo())
RETOUR
FIN
// Rcupration du rsultat
POUR TOUT Client75
CalculeStats()
FIN
WLangage.book Page 370 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 371
4. GESTION DES BLOCAGES DE FICHIERS
4.1 Prsentation des blocages
4.1.1 Blocages de fichiers
Pourquoi bloquer les fichiers ?
Sous Windows, plusieurs programmes s'excutant
sur le mme poste ou sur des postes relis en
rseau peuvent travailler simultanment sur un
mme fichier de donnes.
La gestion des fichiers implique donc la gestion des
accs concurrentiels. Il faut notamment interdire
plusieurs programmes de modifier le mme enre-
gistrement en mme temps, en bloquant le fichier
ou l'enregistrement.
Le WLangage permet de grer simplement le blo-
cage d'un fichier ou d'un enregistrement du fichier.
Blocages de fichiers par programma-
tion
Des fonctions du WLangage permettent de bloquer
les fichiers ou les enregistrements et d'obtenir des
comptes rendus de blocage.
Ces fonctions bloquent au choix :
uniquement l'enregistrement lu en criture,
la totalit du fichier en criture,
la totalit du fichier en lecture et en criture.
Elles permettent bien entendu de dbloquer les
fichiers ou les enregistrements bloqus.
4.1.2 Qu'est ce qu'un blocage ?
Un blocage correspond au blocage d'un fichier ou
d'une partie de fichier pour interdire temporaire-
ment l'accs ce fichier (ou cette partie de
fichier) par un autre programme. Le blocage peut
tre :
uniquement en criture, dans ce cas le fichier (ou
la partie de fichier) peut tre lu par un autre pro-
gramme pendant la dure du blocage;
en lecture et en criture, dans ce cas le fichier
(ou la partie du fichier) reste totalement inacces-
sible aux autres programmes.
4.1.3 Quand faut-il bloquer et que faut-il
bloquer ?
Voici quelques rgles de base connatre pour
grer les blocages en programmation :
1. Chaque enregistrement qui va tre modifi, sup-
prim ou rcrit doit tre au pralable lu et bloqu,
par une fonction de lecture bloquante (non obliga-
toire).
L'enregistrement est automatiquement dbloqu
par les oprations de modification, de suppression
et de rcriture.
2. Lorsqu'un enregistrement est bloqu par une
fonction de lecture bloquante et qu'il n'est pas
dbloqu par une opration de modification, de
suppression ou de rcriture, il doit tre dbloqu
par une fonction de dblocage.
3. Lorsque plusieurs enregistrements doivent tre
dbloqus, il est possible de les dbloquer en une
seule opration par la fermeture du fichier.
4. Seul le programme ayant bloqu les enregistre-
ments et les fichiers peut les dbloquer.
5. Lorsqu'un fichier est bloqu, il n'est pas nces-
saire de lire l'enregistrement avec les fonctions de
lecture bloquante. Il suffit d'utiliser une fonction de
lecture "simple".
6. Ds qu'un fichier ne sert plus dans un pro-
gramme, du moins pour un temps assez long, il est
prfrable de le fermer. Il reste alors accessible aux
autres programmes.
4.1.4 Le WLangage et les blocages
Le WLangage propose deux modes de gestion de
blocage. Le dveloppeur choisit le mode de blocage
en fonction de l'utilisation finale de l'application ou
du site qu'il dveloppe et de la programmation sou-
haite.
Les modes de blocage sont les suivants :
Mode Mono : Chaque fichier ouvert est automati-
quement bloqu en lecture et en criture. Ainsi, il
n'est pas ncessaire de grer les blocages ni de
tester les comptes rendus de blocage. Les
fichiers ne sont pas partageables.
Mode Multi : Tout fichier ouvert peut tre partag
par d'autres programmes et d'autres postes. Le
dveloppeur gre les blocages des fichiers et des
enregistrements ainsi que les comptes rendus de
blocage. Il dcide des actions entreprendre
dans chacun des cas.
Le mode Mono est le mode de blocage par dfaut
de WinDev.
Le mode Multi est le mode de blocage par dfaut
de WebDev.
WD WebDev
WLangage.book Page 371 Mardi, 23. avril 2013 1:59 13
372 Partie 7 : Gestion des fichiers de donnes
4.2 La gestion des blocages
4.2.1 Exemples illustrant la ncessit de blo-
quer
Plusieurs exemples de traitements des blocages
sont prsents ci-dessous. Ils illustrent la ncessit
de bloquer les fichiers.
Pour afficher une liste permettant de slection-
ner un ou plusieurs enregistrements, il n'est pas
ncessaire de bloquer les enregistrements affi-
chs.
Par contre, une fois la slection effectue, dans
la plupart des cas, il faut lire l'enregistrement cor-
respondant pour s'assurer de son existence et le
bloquer pour pouvoir ventuellement le modifier.
Dans le cas de l'ajout d'un ou de plusieurs enre-
gistrements dans un fichier, il faut bloquer le
fichier pour pouvoir calculer la valeur d'une rubri-
que partir d'un autre enregistrement (numro
de client par exemple). Dans les autres cas, il
n'est pas ncessaire de bloquer le fichier.
Lors d'un traitement statistique permettant de
calculer le poids d'un ou de plusieurs articles par
rapport la totalit des articles, le fichier doit
tre bloqu ou interdit de modification avant le
traitement afin de s'assurer que le contenu du
fichier ne sera pas modifi pendant le calcul.
La gestion des blocages dpend souvent des cir-
constances des traitements du fichier. Pour sim-
plifier la gestion des blocages, par exemple dans
le cas d'un programme de gestion des caisses
d'un magasin, le mme client ne peut pas tre en
mme temps plusieurs caisses. Aussi n'est il
pas ncessaire de bloquer l'enregistrement du
fichier client lors de son traitement bien qu'il soit
modifi.
4.2.2 Structure des blocages
Deux niveaux de blocage sont proposs :
blocage d'un fichier dans sa totalit,
blocage d'un enregistrement donn.
Le blocage d'un fichier dans sa totalit bloque auto-
matiquement tous les enregistrements de ce
fichier.
Le blocage d'un fichier n'est possible que si aucun
des enregistrements de ce fichier n'est bloqu par
un autre poste ou par un autre programme.
Le dblocage d'un fichier dbloque automatique-
ment tous les enregistrements bloqus par le
mme programme.
Important : Les blocages restent actifs tant qu'une
fonction de dblocage (de fichier ou d'enregistre-
ment) ou d'criture (dbloque l'enregistrement
crit) n'est pas excute.
4.2.3 Dead lock (inter-blocage)
Lors de la gestion des blocages, il est possible de
se trouver dans une situation o tous les fichiers
sont bloqus et o il n'est pas possible de les
dbloquer. Ce cas de figure est appel "Dead Lock".
Pour viter une "treinte mortelle", il est conseill
de suivre les trois points ci-dessous :
1. Bloquer tous les fichiers exploits dans un traite-
ment, selon l'ordre alphabtique des fichiers utili-
ss.
2. Effectuer le traitement dsir.
3. Dbloquer les fichiers.
Illustrons ce conseil par un exemple. L'exemple ci-
dessous prsente un cas "d'treinte mortelle".
Supposons que les programmes P1 et P2 effec-
tuent les traitements suivants ( ne pas faire !) :
Les programmes effectuent leurs blocages dans
l'ordre suivant :
P1 bloque F1.
P2 bloque F2.
P1 veut bloquer F2, mais celui-ci est dj bloqu
par P2.
P2 veut bloquer F1, mais celui-ci est dj bloqu
par P1.
Les deux programmes attendent donc un dblo-
cage ventuel : il n'y a pas de solution si aucun des
2 programmes ne libre un des fichiers !
Pour viter une telle situation, suivons les conseils
prcdemment donns :
1. Bloquer les fichiers selon l'ordre alphabtique
(F1 puis F2).
2. Effectuer le traitement dsir.
3. Dbloquer les fichiers.
WD WebDev
Programme P1 Programme P2
BLOQUER(F1) BLOQUER(F2)
BLOQUER(F2) BLOQUER(F1)
< Traitement 1 > <Traitement 2>
DEBLOQUER(F1) DEBLOQUER(F2)
DEBLOQUER(F2) DEBLOQUER(F1)
WLangage.book Page 372 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 373
Les traitements de P1 et P2 deviennent :
Dans ce cas :
P1 bloque F1.
P2 ne peut pas bloquer F1.
P1 bloque F2.
P2 attend la libration du fichier F1.
Le traitement 1 s'excute.
P1 dbloque F1.
P1 dbloque F2.
P2 bloque F1.
P2 bloque F2. ...
"L'treinte mortelle" est vite !
4.3 Les modes de blocage proposs
Il existe deux modes de blocage des fichiers et des
enregistrements.
Ce chapitre :
aide choisir le mode adopter dans les pro-
grammes,
explique la mthode pour bloquer un fichier ou
un enregistrement,
dtaille le fonctionnement de chaque mode.
4.3.1 Mode Mono
Le mode Mono est le mode de blocage par dfaut
de WinDev.
Il se caractrise par le blocage automatique de cha-
que fichier ds son ouverture. Le fichier sera dblo-
qu lors de sa fermeture.
Utilisateur WinDev 5.5 : ce mode correspond la
fonction HModeAuto de WinDev 5.5.
Ce mode est conserv par compatibilit avec Win-
Dev. Il ne doit pas tre utilis dans un site WebDev.
Utilisateur WebDev 1.5 : ce mode correspond la
fonction HModeAuto de WebDev 1.5.
Quand utiliser ce mode ?
Le mode Mono est utilis pour dvelopper simple-
ment des programmes dont les fichiers ne sont pas
partags par plusieurs postes ou par plusieurs pro-
grammes en mme temps.
Avec le mode Mono, il n'est pas ncessaire de grer
les blocages en programmation, les fichiers sont
bloqus ds leur ouverture en criture et en lec-
ture. Les fichiers ne sont pas partageables.
Important
Le mode Mono ne convient pas aux programmes
fonctionnant en rseau.
Si un programme dvelopp en mode Mono est
lanc plusieurs fois sur une mme machine ou
s'excute en rseau, un message d'erreur s'affi-
chera signalant que le mode Mono est inappro-
pri pour ce type de fonctionnement.
Un programme dvelopp avec le mode Mono ne
pourra pas tre lanc plusieurs fois sous Win-
dows.
Comment sont bloqus les fichiers en
mode Mono ?
Le mode Mono est le mode de blocage par dfaut
de WinDev.
En mode Mono, ds qu'un fichier est ouvert par
une fonction (HOuvre ou toute autre fonction, par
exemple HLitPremier, HCreation, ...), le fichier est
bloqu automatiquement en lecture et en criture.
Si l'accs au fichier est refus (le fichier est dj
bloqu par un autre programme), l'excution du
programme est abandonne aprs l'affichage d'un
message signalant que ce mode est inappropri.
Un fichier qui a t bloqu lors de son ouverture est
automatiquement dbloqu ds qu'il est ferm :
par la fonction HFerme, si elle est appele,
pour pouvoir ouvrir un autre fichier lorsque le
nombre maximum de fichiers pouvant tre ouvert
est atteint (fermeture automatique des fichiers).
Remarques
Si le fichier est dbloqu par HFerme (ou HDblo-
queFichier, HDbloqueTotalFichier) ou par la fer-
meture automatique, dans la suite du
programme,
il sera bloqu de nouveau lorsqu'il sera rouvert
par une fonction.
En mode Mono, le fichier est bloqu tant qu'il est
ouvert. Il est donc conseill de laisser un fichier
bloqu le moins longtemps possible.
Programme P1 Programme P2
BLOQUER(F1) BLOQUER(F1)
BLOQUER(F2) BLOQUER(F2)
<Traitement 1> <Traitement 2>
DEBLOQUER(F1) DEBLOQUER(F1)
DEBLOQUER(F2) DEBLOQUER(F2)
WD WebDev
WLangage.book Page 373 Mardi, 23. avril 2013 1:59 13
374 Partie 7 : Gestion des fichiers de donnes
Ainsi, il est prfrable de fermer un fichier ds
qu'il n'est plus utilis.
Comment partager les donnes en
mode Mono ?
En mode Mono, les fichiers ne peuvent pas tre
partags. Cependant, dans certaines analyses,
deux programmes peuvent s'excuter en mme
temps, l'un modifiant les fichiers, l'autre consultant
uniquement les fichiers. Dans un tel cas d'utilisa-
tion, les programmes en mode Mono peuvent acc-
der au fichier en mme temps.
Si un programme (modifiant les fichiers) dvelopp
en mode Mono est lanc plusieurs fois sur une
mme machine ou s'excute en rseau, un mes-
sage d'erreur s'affichera signalant que le mode
Mono est inappropri pour ce type de fonctionne-
ment
Supposons par exemple deux programmes :
P1 consulte le fichier "COMMANDE",
P2 modifie le fichier "COMMANDE".
P1 suit l'algorithme suivant :
P2 suit l'algorithme suivant :
Si P2 est lanc en premier puis P1 en second,
alors :
P2 ouvre et bloque le fichier "COMMANDE"
P1 ouvre le fichier "COMMANDE" bien qu'il soit
bloqu. HOuvre(HOLecture/HOLectureEcriture)
ouvre le fichier qu'il soit bloqu ou non.
P1 peut consulter le fichier et P2 peut modifier le
fichier.
Attention : si P2 supprime l'enregistrement "X" du
fichier "COMMANDE" en mme temps que P1 con-
sulte l'enregistrement "X" du fichier "COMMANDE",
P1 ne verra pas que l'enregistrement "X" est sup-
prim du fichier.
Pour pouvoir partager un fichier entre un pro-
gramme modifiant un fichier et un ou plusieurs pro-
grammes consultant le fichier, le programme
modifiant le fichier doit appeler une fonction pour
ouvrir et bloquer ce fichier, les autres programmes
doivent appeler la fonction HOuvreSansBloquer
pour accder au fichier bien qu'il soit bloqu.
Note : les fonctions sont dtailles la fin de cette
partie.
Attention : Si le fichier est ouvert par la fonction
HOuvre(HOLecture/HOLectureEcriture), le fichier
n'est pas bloqu. Ainsi, le fichier n'est pas protg
contre d'ventuelles modifications.
C'est pourquoi la fonction HOuvre(HOLecture/
HOLectureEcriture) ne doit tre utilise que dans
des programmes ne modifiant pas le fichier.
Ainsi les instructions suivantes ne doivent pas tre
excutes aprs la fonction HOuvre(HOLecture/
HOLectureEcriture) :
HAjoute- HEcrit
HLibre- HModifie
HRaye- HSupprime
TableEnregistre- TableSupprime
Rgles de base en mode Mono
Pour grer correctement les blocages de fichiers
et/ou denregistrements nous vous invitons sui-
vre les rgles suivantes :
Le mode Mono ne doit pas tre utilis lorsque les
fichiers sont partags par plusieurs programmes.
Le mode Mono ne convient pas pour dvelopper
un programme fonctionnant en rseau.
En rsum
En mode Mono, chaque fois qu'un fichier est ouvert
par une fonction (sauf la fonction HOuvre(HOLec-
ture/HOLectureEcriture)), il est automatiquement
bloqu en lecture et en criture.
Le fichier est dbloqu automatiquement lors de
sa fermeture.
Il sera bloqu de nouveau par l'appel d'une fonction
(sauf la fonction HOuvre(HOLecture/HOLectureE-
criture).
La fonction HOuvre(HOLecture/HOLectureEcriture)
ouvre le fichier sans le bloquer, qu'il soit dj blo-
qu par un autre programme ou non.
// affichage liste des commandes
Resouvre = HOuvre(COMMANDE, ...
HOlecture)
si Resouvre = Faux alors
Info ("fichier non trouv")...
sinon
HLitPremier(COMMANDE,NUM)
TantQue pas HEnDehors()
Afficher_commande
HLitSuivant(COMMANDE,NUM)
Fin
Fin
// suppression des commandes
//comportant le produit CodePr
CodePr = Saisie_code_produit
HLitRecherche(COMMANDE,CODE,CodePr)
Tant que HTrouve()
HSupprime(COMMANDE)
HLitSuivant(COMMANDE,CODE)
Fin
WLangage.book Page 374 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 375
Le mode Mono convient aux programmes ne parta-
geant pas leurs fichiers pour dvelopper simple-
ment un programme.
Appel du mode Mono
Le mode Mono est le mode de blocage par dfaut
de WinDev.
Remarque : Dans un programme, il est possible de
passer du mode Mono au Multi.
Exemple en mode Mono
Lexemple suivant illustre le mcanisme de blocage
et de dblocage du mode Mono. Les fonctions utili-
ses sont dtailles la fin de cette partie.
Vous remarquerez quaucun de ces programmes ne
comporte de fonctions de blocage de fichier.
Remarque : Aprs l'appel de la fonction HLitRe-
cherche, le fichier "CLIENT" est ouvert et bloqu. Il
est dbloqu la fin de l'excution du programme.
4.3.2 Mode Multi
Le mode Multi est le mode de blocage par dfaut
de WebDev.
Le mode Multi se caractrise par :
les blocages sont grs par le dveloppeur dans
les programmes,
les comptes rendus de blocage (permettant de
savoir si aucun enregistrement d'un fichier n'est
dj bloqu par un autre programme) sont grs
dans les programmes par le dveloppeur qui
dcide des traitements effectuer.
Utilisateur WinDev 5.5 : ce mode correspond la
fonction HModePerso de WinDev 5.5.
Quand utiliser ce mode ?
Le mode Multi doit tre prfr au mode Mono
lorsqu'un ou plusieurs fichiers d'un programme doi-
vent tre partags par plusieurs programmes.
En consquence, le mode Multi doit tre utilis ds
qu'une opration logique de mise jour de plu-
sieurs fichiers ne peut pas tre interrompue : soit
tous les fichiers sont mis jour, soit aucun.
En WinDev, le mode Multi propose une gestion
automatique :
des erreurs de blocages,
des conflits de modification.
Cette gestion automatique peut tre personnalise
tout moment grce la fonction HSurErreur.
Pour plus de dtails sur la personnalisation de la
gestion automatique, consultez laide en ligne.
Remarque : la gestion des blocages utilise en
WinDev 5.5 est toujours disponible par compatibi-
lit.
Appel du mode Multi
Pour appeler le mode Multi dans un programme, il
suffit d'excuter au dbut du programme la fonc-
tion HMode(hModeMulti).
Deux mthodes de mise en place des blocages
sont disponibles :
Mode Direct : constante hModeDirect (valeur par
dfaut) : mise en place des blocages prioritaire
(sur la modification par exemple).
Ainsi, la modification d'un enregistrement sur
lequel de nombreuses lectures sont ralises a
peu de chances d'tre effectue, mais les bloca-
ges sont plus rapides.
Mode Rservation : constante
hModeRservation : mise en place des blocages
non prioritaire.
Cette mthode permet de modifier immdiate-
ment un enregistrement sur lequel de nombreu-
ses lectures sont effectues. Cette mthode est
plus lente que la mthode hModeDirect.
En rsum
Le mode Multi permet de partager un ou plusieurs
fichiers entre plusieurs programmes.
En programmation, le dveloppeur gre les bloca-
ges des fichiers. Il doit galement tester HErreur-
Blocage aprs toutes les fonctions HyperFileSQL.
Le mode Multi convient aux programmes grant
des fichiers pouvant tre partags. Les program-
mes traitent une opration logique de mise jour
de plusieurs fichiers ne pouvant pas tre interrom-
pue.
// Recherche client selon son nom
HLitRecherche(CLIENT,NOM,"MARTIN")
Si HTrouve() alors
Info ("Client trouv")
Sinon
Info("Client inconnu")
Fin
WLangage.book Page 375 Mardi, 23. avril 2013 1:59 13
376 Partie 7 : Gestion des fichiers de donnes
4.3.3 Les blocages possibles en mode multi
Blocage des fichiers en
programmation
Il existe plusieurs mthodes pour bloquer un fichier
ou un enregistrement :
blocage du fichier,
blocage enregistrement par enregistrement.
Blocage du fichier
Il est ncessaire de bloquer la totalit du fichier si
les deux conditions suivantes sont respectes :
si plusieurs enregistrements doivent tre bloqus
en mme temps,
pour simplifier la programmation.
Les fonctions permettant de bloquer un fichier
sont :
HBloqueFichier : le fichier est bloqu en criture.
HBloqueFichier(hBlocageLecture/
hBlocageEcriture) : le fichier est bloqu en lec-
ture et en criture.
HInterditModif : le fichier est bloqu en criture y
compris pour le programme qui l'a bloqu.
Les fonctions permettant de dbloquer un fichier
sont :
HDbloqueFichier : le fichier a t bloqu par
HBloqueFichier.
HFinInterditModif : le fichier a t bloqu par
HInterditModif.
HFerme : le fichier est ferm et dbloqu.
Blocage enregistrement par enregistrement
Les enregistrements peuvent tre bloqus au cours
de leur utilisation sans que le fichier soit bloqu
dans sa totalit.
Les fonctions permettant de bloquer un enregistre-
ment sont : HLit, HLitRecherchePremier, HLitRe-
chercheDernier, HLitDernier, HLitPremier,
HLitSuivant, HLitPrcdent
Aprs chaque fonction, il faut tester HErreurBlo-
cage pour s'assurer que l'enregistrement a pu tre
bloqu.
Attention : la fin du traitement, il ne faut pas
oublier de dbloquer les enregistrements bloqus
avec les fonctions : HDbloqueFichier, HFerme,
HFinInterditModif, HDbloqueNumEnr, HAjoute,
HModifie, HEcrit, HRaye, HSupprime, TableSup-
prime, TableEnregistre.
Remarque : Le blocage d'un enregistrement par les
fonctions "HLit..." est inactif si le fichier a t prc-
demment bloqu par les fonctions "HBloque...", la
fonction est quivalente "HLit...".
4.4 Gestion assiste des erreurs HyperFileSQL
Le moteur HyperFileSQL permet de grer divers
types derreurs par programmation :
Erreur de doublons
Erreur dintgrit
Erreur de mot de passe
Erreur de conflit de modification et de conflit
d'tat de modification
Erreur de blocage
Erreur de saisie obligatoire
Rindexation en cours
A tout moment, la fonction HSurErreur permet de
personnaliser la gestion assiste des erreurs ou de
dbrancher cette gestion. Pour chaque type
derreur, il est possible :
soit de grer cette erreur par une fentre spcifi-
que ou par une procdure,
soit de dbrancher lassistance et de grer
lerreur par programmation (comme en WinDev
5.5).
4.4.1 Principe
Pour simplifier la programmation de la gestion des
fichiers de donnes, le moteur HyperFileSQL gre
automatiquement les cas derreur les plus cou-
rants.
Cette gestion automatique consiste assister lutili-
sateur dans le traitement de lerreur. En effet, le
plus souvent, lerreur provient dun problme au
niveau des donnes saisies.
Cette gestion automatique est propose par dfaut
et peut tre personnalise ou entirement dbran-
che.
Remarque : La gestion assiste des erreurs est dis-
ponible pour les fichiers au format HyperFileSQL
Classic,
pour les fichiers manipuls via un accs natif ou
pour les fichiers manipuls via un provider OLE DB.
WLangage.book Page 376 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 377
Si vos fichiers sont manipuls via un provider OLE
DB, sont grs uniquement :
Les erreurs de doublons
Attention : Certaines erreurs de doublons peu-
vent ne pas tre reconnues comme telles par
l'accs OLE DB. Ces erreurs ne seront pas gres
comme des erreurs de doublons mais seront con-
sidres comme des erreurs fatales. Exemple :
l'analyse WinDev et la description de la base
externe ne sont pas en phase et la description du
fichier dans l'analyse ne contient pas toutes les
cls uniques du fichier dfinies sur la base.
Les erreurs de saisie obligatoire
Attention : L'erreur de saisie obligatoire apparat
uniquement si le provider OLE DB indique que la
rubrique est associe la proprit "NULL inter-
dit". Dans le cas contraire, l'erreur sera traite
comme une erreur fatale.
Si vos fichiers sont manipuls via un accs natif,
seule la gestion du mot de passe obligatoire n'est
pas disponible.
4.4.2 Fonctionnement standard
Erreur de doublons
Cause de lerreur
Lutilisateur ou linternaute ajoute un enregistre-
ment pour lequel la valeur dune cl unique
existe dj.
Par exemple, le nom de la ville est dfini comme
cl unique du fichier Client dans l'analyse. Lajout
dune ville avec un nom dj utilis provoque une
erreur de doublons.
Gestion assiste par dfaut (WinDev et WebDev)
Si une erreur de doublons est dtecte, une fen-
tre ou une page saffiche, demandant lutilisa-
teur de modifier la valeur de lenregistrement
provoquant lerreur.
Traitement de lerreur (WinDev Mobile)
Testez la fonction HErreurDoublon aprs chaque
fonction HyperFileSQL pouvant provoquer une
erreur de doublons (HAjoute, HModifie par exem-
ple). Le libell exact de l'erreur peut tre connu
avec la fonction HErreurInfo.
Erreur dintgrit
Cause de lerreur
Lutilisateur ou linternaute tente dajouter un
enregistrement en ne respectant pas les con-
traintes dintgrit dfinies entre les fichiers au
niveau de lanalyse.
Par exemple, les fichiers CEDEX, DEPARTEMENT
et REGION sont lis entre eux au niveau de l'ana-
lyse.
Ces liaisons rpondent des contraintes d'int-
grit relationnelles. Lajout dun dpartement
sans avoir cr la rgion correspondante
entrane une erreur dintgrit.
Gestion assiste par dfaut (WinDev et WebDev)
Lorsquune erreur dintgrit est dtecte, une
fentre ou une page saffiche, demandant luti-
lisateur dannuler lopration ou de modifier les
donnes saisies.
Traitement de lerreur (WinDev Mobile)
Testez la fonction HErreurIntgrit aprs chaque
fonction HyperFileSQL pouvant provoquer une
erreur dintgrit (HAjoute, HModifie par exem-
ple). Le libell exact de l'erreur peut tre connu
avec la fonction HErreurInfo.
Erreur de mot de passe
Cause de lerreur
Le programme tente de manipuler un fichier pro-
tg par mot de passe (ouverture, premire lec-
ture, ...). Le mot de passe na pas t spcifi par
programmation : une erreur de mot de passe sur-
vient.
Gestion assiste par dfaut (WinDev et WebDev)
Lorsquune erreur de mot de passe est dtecte,
une fentre ou une page saffiche, permettant
lutilisateur de saisir le mot de passe du fichier.
Traitement de lerreur (WinDev Mobile)
Testez la fonction HErreurMotDePasse aprs
chaque fonction HyperFileSQL pouvant provoquer
une erreur de mot de passe (HOuvre par exemple
ou ds la premire fonction HyperFileSQL mani-
pulant le fichier). Le libell exact de l'erreur peut
tre connu avec la fonction HErreurInfo.
Erreur de conflit de modification et de
conflit d'tat de modification
Cause de lerreur
Lors de l'utilisation d'une application ou dun site
en rseau, des conflits peuvent survenir suite
la saisie de donnes contradictoires par diff-
rents utilisateurs ou internautes.
Par exemple :
1. Lutilisateur / linternaute X dite la fiche du
dpartement "Cantal".
2. Lutilisateur / linternaute Y dite la fiche du
dpartement "Cantal".
3. Lutilisateur / linternaute X renomme le dpar-
tement en "Cantal_01".
4. Lutilisateur / linternaute Y modifie le nom du
dpartement ("Cantal_02") et enregistre. Lors de
cet enregistrement, il y a un conflit de modifica-
tion.
WLangage.book Page 377 Mardi, 23. avril 2013 1:59 13
378 Partie 7 : Gestion des fichiers de donnes
Un conflit de modification apparat.
Un conflit d'tat de modification apparat par
exemple si l'utilisateur / linternaute X supprime
la fiche.
Les diffrents cas sont rcapituls dans le tableau
suivant :
Gestion assiste par dfaut (WinDev et WebDev)
En cas de conflit lors de la modification dun
enregistrement, une fentre ou une page appa-
rat, proposant lutilisateur les diffrentes
valeurs possibles pour lenregistrement :
la valeur lue dans le fichier (avant modification)
la valeur modifie par un autre utilisateur,
la valeur saisie par lutilisateur en cours.
Lutilisateur peut alors choisir la valeur de la rubri-
que qui sera enregistre.
En cas de conflit d'tat lors de la modification dun
enregistrement, une fentre apparat, proposant
lutilisateur :
soit de ractiver les donnes supprimes,
soit de laisser les donnes dans leur tat.
Lutilisateur peut alors choisir la valeur de la rubri-
que qui sera enregistre.
Traitement de lerreur (WinDev Mobile)
Pour les erreurs de conflits de modification, tes-
tez la fonction HErreurModification aprs chaque
fonction HyperFileSQL pouvant provoquer cette
erreur (par exemple HModifie). Le libell exact de
l'erreur peut tre connu avec la fonction HErreu-
rInfo.
Pour les erreurs de conflit d'tat de modification,
testez la fonction HErreurEtatModification aprs
chaque fonction HyperFileSQL pouvant provoquer
cette erreur (par exemple HModifie). Le libell
exact de l'erreur peut tre connu avec la fonction
HErreurInfo.
Erreur de blocage
Cause de lerreur
Dans une application rseau ou dans un site, il
est possible de bloquer un enregistrement ou un
fichier (pour effectuer des oprations spcifiques
par exemple). Lorsqu'un poste tente d'accder
un enregistrement bloqu, une erreur de blocage
apparat.
Gestion assiste par dfaut (WinDev ou Web-
Dev)
En cas derreur de blocage, la gestion des bloca-
ges (vrification si le fichier est bloqu, traite-
ment du blocage) est automatiquement ralise
par le moteur HyperFileSQL.
Une fentre ou une page apparat, indiquant
lutilisateur que lenregistrement ou le fichier est
bloqu et lui proposant de retenter lopration ou
de lannuler. En cas dannulation, lapplication
continue de sexcuter normalement.
Traitement de lerreur (WinDev Mobile)
Testez la fonction HErreurBlocage aprs chaque
fonction HyperFileSQL pouvant provoquer une
erreur de blocage.
Saisie obligatoire (base de donnes
accde par OLE DB)
Cause de lerreur
Certaines rubriques manipules attendent obli-
gatoirement une valeur. Si cette valeur n'a pas
t renseigne, une erreur de saisie obligatoire
apparat.
Gestion assiste par dfaut (WinDev et WebDev)
En cas de valeur non renseigne, la gestion de
saisie obligatoire est automatiquement ralise
par le moteur HyperFileSQL.
Une fentre ou une page apparat, indiquant
lutilisateur que la rubrique doit tre renseigne
et lui propose de saisir la valeur de la rubrique.
Traitement de lerreur (WinDev Mobile)
Le numro derreur associ ce problme est
70710 : Valeur de rubrique obligatoire.
Ces numros derreurs peuvent tre connus avec
la fonction HErreur.
Rindexation en cours
Cause de lerreur
Le fichier manipul est actuellement en cours de
rindexation. Il est impossible de manipuler le
fichier (lecture, criture, ...) pendant cette rin-
dexation.
Enregistrement lu
Enregistre-
ment sur
disque
Actif Ray Supprim
Actif Conflit de
modifica-
tion
Conflit de
modification
Conflit de
modifica-
tion
Ray Conflit
d'tat de
modifica-
tion
Conflit de
modification
Conflit de
modifica-
tion
Supprim Conflit
d'tat de
modifica-
tion
Conflit
d'tat de
modification
XXXX
WLangage.book Page 378 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 379
Gestion assiste par dfaut (WinDev ou
WebDev)
Une fentre ou une page apparat, indiquant que
le fichier est en cours de rindexation (appele
aussi rorganisation). Cette fentre ou page est
affiche pendant toute la dure de la rindexa-
tion et ne peut tre ferme. Une jauge de pro-
gression indique l'tat de la rindexation.
Traitement de lerreur (WinDev Mobile)
Le numro derreur associ ce problme est
70720 : Une rindexation est en cours sur le
fichier.
Ces numros derreurs peuvent tre connus avec
la fonction HErreur.
4.4.3 Personnalisation
Les diffrentes solutions
WinDev, WebDev, WinDev Mobile offrent la possibi-
lit de personnaliser la gestion des erreurs HyperFi-
leSQL.
Il est possible d'utiliser des procdures personnali-
ses.
Une procdure spcifique de votre application est
automatiquement excute ds qu'une erreur
HyperFileSQL est rencontre.
Remarque : Il est possible de dfinir une procdure
pour chaque fichier et chaque type d'erreur.
WinDev / WebDev offrent galement la possibilit
d'utiliser des fentres ou des pages
personnalises : les fentres / pages standard du
moteur HyperFileSQL sont remplaces par des
fentres / pages de votre application.
Remarque : il est possible de dfinir une fentre /
page pour chaque fichier et chaque type d'erreur.
Mise en place
Pour mettre en place la personnalisation de la ges-
tion assiste des erreurs HyperFileSQL, il suffit de :
1. Pour chaque type derreur, crer la procdure, la
fentre ou la page permettant de personnaliser
lerreur. Une mme fentre, page ou procdure
peut grer plusieurs types derreurs. Cette fentre,
page ou procdure doit renvoyer une constante
spcifique en fonction du traitement excuter
(voir paragraphe ci-dessous).
2. Dfinir la personnalisation des erreurs avec la
fonction HSurErreur.
Exemples de fentres ou de pages
facilement intgrables (WinDev et
WebDev)
Les fentres / pages derreur utilises par dfaut et
prsentes dans les paragraphes prcdents sont
livres (avec leur code WLangage) titre dexem-
ple.
Ces fentres sont disponibles dans le sous-rper-
toire "Programmes\Donnees\Fentres prdfi-
nies\HyperFileSQL - Fenetres assistance
automatique" du rpertoire dinstallation de Win-
Dev.
Ces pages sont disponibles dans le sous-rpertoire
"Programmes\Donnees\Pages prdfinies\Hyper-
FileSQL - Pages assistance automatique" du rper-
toire dinstallation de WebDev.
Vous pouvez inclure ces fentres / pages dans vos
projets, les personnaliser et les passer en param-
tre la fonction HSurErreur.
Constantes utilises pour la person-
nalisation des erreurs
La fentre, la page ou la procdure permettant de
personnaliser l'erreur devra renvoyer une des cons-
tantes prsentes dans le tableau ci-dessous.
Le traitement correspondant sera effectu en fonc-
tion de la constante renvoye.
opRessayer La fonction ayant dclench
l'erreur est r-excute.
OpAnnuler La fonction ayant dclench
l'erreur renvoie une erreur et le
code continue s'excuter.
OpFinTraite-
ment
La fonction ayant dclench
l'erreur renvoie une erreur et le
traitement en cours s'arrte.
quivalent une ligne de code
de type :
SI PAS <Fonction HyperFileSQL>
ALORS RepriseSaisie()
OpFinPro-
gramme
La fonction ayant dclench
l'erreur renvoie une erreur et le
programme s'arrte.
quivalent une ligne de code
de type :
SI PAS <Fonction HyperFileSQL>
ALORS FinProgramme()
OpRelancePro-
gramme
Termine lapplication et relance
automatiquement lapplication
WLangage.book Page 379 Mardi, 23. avril 2013 1:59 13
380 Partie 7 : Gestion des fichiers de donnes
Remarque : Personnalisation des erreurs de
modification :
Si la fentre, la page ou la procdure appele lors
du conflit de modification renvoie la constante
opRessayer sans rien faire d'autre, les valeurs
seront crites dans le fichier sans provoquer un
nouveau conflit de modification.
4.4.4 Dbrancher la gestion assiste (Win-
Dev et WebDev)
WinDev et WebDev offrent la possibilit de dbran-
cher entirement le systme de gestion automati-
que des erreurs. Dans ce cas, il est ncessaire de
tester dans lapplication les diffrents cas derreurs
pouvant survenir. Si ce test nest pas ralis, une
erreur WLangage est gnre et lapplication
sarrte.
Mise en place
Pour dbrancher compltement la gestion automa-
tique des erreurs, il suffit dutiliser la fonction HSu-
rErreur en spcifiant une chane vide en nom de
fentre ou de procdure.
Dans ce cas, il est alors ncessaire de tester aprs
chaque fonction HyperFileSQL pouvant provoquer
une erreur, une ou plusieurs des fonctions
suivantes :
Le libell exact de lerreur peut tre alors connu
avec la fonction HErreurInfo.
Il est possible de rebrancher la gestion assiste
grce la fonction HSurErreur.
Remarque : Pour les autres erreurs (modification,
saisie obligatoire, rindexation en cours), aucun
test n'est ncessaire. Les numros d'erreurs asso-
cis ces problmes sont :
70700 : Conflit de modification
70710 : Valeur de rubrique obligatoire
70720 : Une r-indexation est en cours sur le
fichier
Ces numros d'erreurs peuvent tre connus avec la
fonction HErreur.
HErreurBlocage Teste si une erreur de blo-
cage est survenue.
HErreurDoublon Teste si une erreur de dou-
blons est survenue.
HErreurIntgrit Teste si une erreur d'int-
grit est survenue.
HErreurMotDePasse Teste si une erreur due un
mot de passe erron a t
rencontre.
WLangage.book Page 380 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 381
5. LES VUES HYPERFILESQL
5.1 Prsentation des vues HyperFileSQL
Une "vue" est un ensemble denregistrements
slectionns selon une condition de slection. Ces
enregistrements proviennent dun fichier HyperFi-
leSQL et sont chargs en mmoire.
Une vue est un "instantan" pris un instant donn
d'une partie d'une base de donnes.
Une vue HyperFileSQL peut tre compare un
fichier HyperFileSQL "virtuel" stock en mmoire.
Ce fichier n'est pas physiquement stock sur dis-
que mais il peut pratiquement tre utilis comme
un fichier HyperFileSQL "rel".
Une vue peut contenir des enregistrements issus
d'un fichier HyperFileSQL selon des critres de
slection.
Les enregistrements d'une vue sont des enregistre-
ments "virtuels". Un enregistrement virtuel se com-
pose de certaines rubriques d'un fichier ou de
toutes les rubriques.
La cration d'une vue est une opration de lecture
d'un fichier.
Elle peut ventuellement tre accompagne d'une
opration de blocage des enregistrements lus si
ces enregistrements doivent tre modifis.
Il est possible d'annuler toutes les modifications
effectues sur une vue. Les modifications effec-
tues sur une vue ne sont pas immdiatement
rpercutes sur le fichier HyperFileSQL. Pour met-
tre jour un fichier HyperFileSQL par rapport une
vue, il faut explicitement en donner l'ordre par une
fonction du WLangage.
5.2 Intrts des vues
Les vues apportent :
Plus de souplesse et de puissance pour les appli-
cations ou les sites qui utilisent des fichiers
HyperFileSQL
Les possibilits de filtre et de tri sont fortement
augmentes sur les vues.
Une vue permet de faire un parcours sur fichier
avec un filtre selon n'importe quelle rubrique et
non plus selon la cl du filtre uniquement.
Un niveau de scurit supplmentaire
Les vues permettent de limiter l'accs un sous-
ensemble de donnes prslectionnes.
Un gain de rapidit
Une vue est le rsultat d'une requte. Il s'agit
donc d'un change de type client/serveur parti-
culirement adapt aux rseaux sur lesquels
c'est le nombre d'changes et non la taille des
changes qui ralentit la communication.
5.3 Manipulation des vues
Aprs leur cration, les vues se manipulent de la
mme faon que les fichiers HyperFileSQL. La vue
a un nom et peut tre utilise dans la majorit des
fonctions HyperFileSQL. Il est par exemple possible
de :
parcourir une vue (fonctions HLitPremier, HLit-
Suivant, etc.),
ajouter des enregistrements dans une vue (fonc-
tion HAjoute),
raliser des filtres sur les enregistrements de la
vue (fonction HFiltre),
modifier des enregistrements (fonction HModi-
fie),
...
Les fonctions spcifiques la manipulation des
vues sont les suivantes :
HCreVue Cre une vue sur un fichier
HyperFileSQL
HCreVue_55 Cre une vue au format WinDev
5.5 / WebDev 1.5 (compatibilit
uniquement)
HDtruitVue Dtruit une vue prcdemment
cre
WLangage.book Page 381 Mardi, 23. avril 2013 1:59 13
382 Partie 7 : Gestion des fichiers de donnes
Pour plus de dtails sur ces fonctions, consultez
laide en ligne.
Pour connatre la disponibilit de ces fonctions
dans les diffrents produits (WinDev, WebDev, Win-
Dev Mobile), consultez laide en ligne.
5.4 Cration de vues HyperFileSQL
Comme nous l'avons indiqu prcdemment, une
vue contient des enregistrements "virtuels" issus
d'un fichier HyperFileSQL.
Pour crer une vue, plusieurs tapes sont
ncessaires :
1. Choix des rubriques composant la vue.
2. Choix de la rubrique de tri de la vue (si nces-
saire).
3. Slection des enregistrements contenus dans la
vue.
4. Cration de la vue.
5. Ralisation doprations ensemblistes si nces-
saire.
6. Affichage des enregistrements de la vue si
ncessaire.
Les paragraphes suivants dtaillent chacune de
ces tapes.
Remarque : Il est possible de conserver le fonction-
nement des vues prsent dans WinDev 5.5 / Web-
Dev 1.5 (avec gestion dun identifiant de vue). Il
suffit dutiliser la fonction HCreVue_55.
5.4.1 Choix des rubriques d'une vue
Pour crer une vue, la premire tape consiste
dterminer les rubriques que doit contenir la vue.
Chaque vue est attache un fichier
HyperFileSQL : le fichier de la vue.
La vue peut contenir :
toutes les rubriques du fichier,
certaines rubriques du fichier.
Toutes les rubriques du fichier
Pour que la vue contienne toutes les rubriques du
fichier, il suffit dutiliser la syntaxe suivante :
<Rsultat> = HCreVue(<Nom Vue> <Nom
Fichier>)
<Nom Vue> est le nom de la vue cre.
<Nom Fichier> est le nom logique du fichier de
base de la vue.
Exemple :
Certaines rubriques du fichier
Pour slectionner uniquement certaines rubriques
du fichier, il faut utiliser la syntaxe suivante :
<Rsultat> = HCreVue(<Nom Vue>,...
<Nom Fichier>, <NomRubrique>)
<Nom Vue> est le nom de la vue cre.
<Nom Fichier> est le nom logique du fichier de
base de la vue.
<NomRubrique> est la liste des rubriques int-
grer la vue. Les rubriques sont spares par
une virgule dans cette chane de caractres.
HExcuteVue Excute une vue cre prc-
demment. Permet de mettre
jour les donnes de la vue avec
les dernires donnes modifies
dans le fichier HyperFileSQL cor-
respondant
HFusionneVue Cre une vue HyperFileSQL
partir de deux vues prcdem-
ment cres (fonction HCre-
Vue). Un grand nombre
d'oprations ensemblistes peut
tre ralis lors de la fusion des
vues.
HTrieVue Trie une vue en crant un index
sur une rubrique de la vue
HVueVersFi-
chier
Enregistre les modifications rali-
ses dans une vue (grce aux
fonctions HModifie, HSupprime
ou HRaye) dans le fichier Hyper-
FileSQL correspondant
FichierVersTa-
bleMmoire
Affiche le contenu dune vue
dans une table mmoire
Externe MaVue1
NomFichier est une chaine="CLIENT"
// Vue avec tous les
// enregistrements de toutes les
// rubriques du fichier
HCreVue(MaVue1, NomFichier)
WLangage.book Page 382 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 383
Exemple :
5.4.2 Choix de la rubrique de tri initial de la
vue
Lors de la cration d'une vue, il est possible de sp-
cifier la rubrique de la vue qui servira de tri. Toutes
les rubriques de la vue peuvent servir de tri.
Une fois cre, la vue pourra tre retrie tout
moment grce la fonction HTrieVue.
Pour indiquer le tri initial, il faut utiliser la syntaxe
suivante :
<Rsultat> = HCreVue(<Nom Vue>, ...
<Nom Fichier>,...
<NomRubrique>, <RubriqueTri>)
<Nom Vue> est le nom de la vue cre.
<Nom Fichier> est le nom logique du fichier de
base de la vue.
<NomRubrique> est la liste des rubriques int-
grer la vue.
<RubriqueTri> est le nom de la rubrique de tri.
Cette chane contient :
Le sens du tri, avec les signes "+" (croissant,
valeur par dfaut) ou "-" (dcroissant).
Le nom de la rubrique de tri ou son indice de
cration.
Exemple :
5.4.3 Slection des enregistrements de la
vue
Lors de la cration d'une vue, il est possible de sp-
cifier une condition de slection des enregistre-
ments.
La condition est applique chaque enregistre-
ment avant de lintgrer la vue.
Pour spcifier une condition de slection dans une
vue, la syntaxe utilise est la suivante :
<Rsultat> = HCreVue(<Nom Vue>, ...
<Nom Fichier>, <NomRubrique>, ...
<RubriqueTri>,<Condition>)
<NomVue> est le nom de la vue cre.
<Nom Fichier> est le nom logique du fichier de
base de la vue.
<NomRubrique> est la liste des rubriques int-
grer la vue.
<RubriqueTri> est le nom de la rubrique de tri.
<Condition> est la condition de slection. Cette
condition est contenue dans une chane de
caractres utilisant une syntaxe de la forme
suivante :
"NomCli>'Dupont' et
(CodePos=34 ou CodePos=32)"
5.4.4 Oprations ensemblistes entre
plusieurs vues
Lors de la cration des vues, il est possible d'effec-
tuer un grand nombre d'oprations de slection sur
les enregistrements.
Toutefois, ces oprations peuvent se rvler insuffi-
santes dans certains cas. La cration d'une vue
peut alors se faire partir d'autres vues dj
cres.
Pour cela, il est possible d'utiliser les principales
oprations ensemblistes classiques : union, union
exclusive, intersection, soustraction.
La syntaxe utiliser est la suivante :
<Rsultat> =HFusionneVue(<Nom Vue>,...
<NomVue1>,<NomVue2>,...
Opration, RubriqueTriEtComparaison)
<NomVue> est le nom de la vue cre.
<NomVue1> est le nom de la premire vue.
<NomVue2> est le nom de la seconde vue.
<Opration> est une des constantes permettant
de dterminer le type dopration raliser :
hVueUnion : union de toutes les lignes des vues
A et B
hVueUnionEx : union de toutes les lignes non
communes des vues A et B
Externe MaVue1
NomFichier est une chaine="CLIENT"
RubriqueVue est une chane= ...
"NOM,PRENOM,ADRESSE"
// Vue contenant les enregistrements
// des rubriques Nom, Prnom,
// Adresse
HCreVue(MaVue1, NomFichier, ...
RubriqueVue)
Externe MaVue1
NomFichier est une chane="CLIENT"
RubriquesVue est une chane
RubriqueTri est une chane
RubriquesVue=...
"NOM,PRENOM,ADRESSE,CODEPOST"
RubriqueTri="-NOM" //OU RubTri="-1"
// Vue contenant les
// enregistrements
// des rubriques Nom, Prnom,
// Adresse
// et code postal du fichier//
Trie initialement dans l'ordre
// inverse des noms
HCreVue(MaVue1, NomFichier,...
RubriquesVue,RubriqueTri)
WLangage.book Page 383 Mardi, 23. avril 2013 1:59 13
384 Partie 7 : Gestion des fichiers de donnes
hVueIntersection : lignes communes A et B
hVueJointure : lignes communes A et B
hVueSoustraction : lignes de A - les lignes com-
munes avec B
<RubriqueTriEtComparaison> est une chane
contenant l'indice de la rubrique de comparaison
entre les deux vues. Cette rubrique est gale-
ment la rubrique de tri initial de la vue cre.
Important : Le fichier de la vue gnre par une
opration ensembliste sur deux autres vues est le
fichier de la premire vue passe en paramtre la
fonction HCreVue.
Remarque : Les oprations ensemblistes permet-
tent d'effectuer des traitements plus rapides que
certaines conditions de slection. Par exemple,
l'union est privilgier par rapport au OU dans la
condition du HCreVue.
WLangage.book Page 384 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 385
6. LES TRIGGERS HYPERFILESQL
6.1 Prsentation
6.1.1 Dfinition
Un trigger correspond lassociation dune proc-
dure et dune fonction dcriture sur un fichier
HyperFileSQL.
Les triggers permettent dexcuter facilement des
traitements lors de la modification dun enregistre-
ment.
Les procdures appeles par lintermdiaire des
triggers peuvent tre excutes avant ou aprs
lopration dcriture ralise sur le fichier.
Un trigger AVANT est appel avant d'excuter une
fonction HyperFileSQL. Il peut par exemple vrifier
la cohrence des rubriques d'un enregistrement.
Dans ce trigger, une variable d'tat HyperFileSQL
peut tre initialise pour annuler l'excution de la
fonction.
Un trigger APRES est appel aprs l'excution de la
fonction HyperFileSQL (sauf si le programme a t
interrompu pendant cette fonction). Il peut par
exemple centraliser le traitement des erreurs.
Remarque : Trigger sur les fonctions de manipula-
tion des tables : Les fonctions de manipulation des
tables (TableAjoute, TableAjouteLigne, TableSup-
prime, TableModifie, TableEnregistre, ... ) utilisent
implicitement les fonctions HyperFileSQL
suivantes : HAjoute, HSupprime et HModifie.
Lors de l'utilisation de l'une de ces fonctions de
manipulation de table, si un trigger est dfini pour
la fonction HyperFileSQL correspondante, le trigger
est automatiquement dclench.
6.1.2 Intrt des triggers
Les triggers permettent d'associer des traitements
toutes les fonctions HyperFileSQL de gestion de
fichiers sans se proccuper de l'emplacement de
ces fonctions dans le code source.
Mme s'il s'agit d'une fentre, dune page ou d'un
code cr par un assistant, les triggers associs
aux fonctions HyperFileSQL utilises seront excu-
ts.
L'utilisation de triggers permet de diminuer la taille
du code, de faciliter sa lecture et de faciliter les
volutions futures, par regroupement des traite-
ments.
Pour plus dinformations, le schma de la page sui-
vante prsente le mode de fonctionnement dtaill
des triggers.
Remarque : Les triggers sont galement disponi-
bles en mode HyperFileSQL Client/Serveur.
6.2 Comment crer et manipuler des triggers ?
6.2.1 Fonctions de manipulation des triggers
Les fonctions spcifiques la gestion des triggers
sont les suivantes :
HActiveTrigger Ractive un trigger prcdem-
ment dsactiv par la fonction
HDsactiveTrigger
HDcritTrigger Ajoute ou modifie un trigger sur
un fichier HyperFileSQL
HDsactiveTrig-
ger
Dsactive un trigger. Ce trigger
pourra ensuite tre ractiv
grce la fonction HActiveTrig-
ger
HDtruitTrigger Dtruit un trigger. Ce trigger ne
sera plus utilisable
HGreTrigger Active ou dsactive la gestion
des triggers
HListeTrigger Renvoie la liste des triggers
appliqus sur un ou plusieurs
fichiers de donnes
Pour plus de dtails sur ces fonctions, consultez
laide en ligne.
Pour connatre la disponibilit de ces fonctions
dans les diffrents produits (WinDev, WebDev,
WinDev Mobile), consultez laide en ligne.
Les fonctions pour manipuler les triggers sur le
serveur sont identiques et ont dans leur nom
"Serveur".
WLangage.book Page 385 Mardi, 23. avril 2013 1:59 13
386 Partie 7 : Gestion des fichiers de donnes
6.2.2 Manipuler des triggers
Crer un trigger
Un trigger "avant" ou "aprs" est cr grce la
fonction HDcritTrigger, dans le code d'initialisa-
tion du projet.
Le trigger peut tre cr sur un ou plusieurs fichiers
de l'analyse et pour une ou plusieurs fonctions
HyperFileSQL de manipulation des enregistre-
ments.
A chaque excution du trigger, une procdure spci-
fique est excute.
Pour crer un trigger, il suffit dutiliser la syntaxe
suivante :
<Rsultat> = HDcritTrigger
(<NomFichier>, <NomFonctionHF>,...
<NomProcdure>, <Type>)
<NomFichier> correspond au nom logique des
fichiers concerns par un traitement gr par
trigger.
<NomFonctionHF> correspond au nom des fonc-
tions du WLangage dclenchant le trigger.
<NomProcdure> correspond la procdure
associe appele par trigger.
<Type> permet de dterminer le type de trigger
("avant" ou "aprs").
Crer une procdure appele par
trigger
Une procdure de type "trigger" naccepte aucun
paramtre.
Toutefois, un certain nombre de variables d'tat
HyperFileSQL sont positionnes avant chaque
appel :
h.NomFichier : chane contenant le nom logique
du fichier dont le trigger est activ.
h.Action : caractre initialis "A" pour un trigger
"avant" et "P" pour un trigger "aprs".
h.FonctionTrigger : chane contenant le nom de la
fonction HyperFileSQL qui a dclench le trigger,
uniquement si la gestion de l'intgrit est dbran-
che.
h.AFaire : Pendant l'excution d'un trigger avant :
annulation de l'excution de la fonction Hyper
File en cours en affectant "A" la variable
d'tat Hyper File : H.AFaire = "A". Dans ce cas,
l'action n'est pas effectue et la fonction
(HAjoute, HModifie, ) renvoie Vrai (pas
d'erreur).
annulation de l'excution de la fonction Hyper
File en cours en affectant "E" la variable
d'tat Hyper File : H.AFaire = "E". Dans ce cas,
l'action n'est pas effectue (HAjoute, HModifie,
) n'est pas effectue et renvoie Faux. Le mes-
sage d'erreur est le suivant : "L'action sur le
fichier XXX a t interrompue par le trigger".
Activer / Dsactiver un trigger
Il est possible tout moment de lancer un traite-
ment permettant d'activer ou de dsactiver une
vrification ralise par un trigger.
Pour dsactiver temporairement un trigger parti-
culier, il faut utiliser la syntaxe :
<Rsultat>=HDsactiveTrigger([<ListeFichie-
rHF> [, <ListeFonctionHF>]] [, <Type>])
Dtruire un trigger
La fonction HDetruitTrigger permet de dtruire un
ou plusieurs triggers grce la syntaxe suivante :
<Rsultat>=HDtruitTrigger([<ListeFichie-
rHF> [, <ListeFonctionHF>]] [, <Type>])
WLangage.book Page 386 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 387
7. LA RPLICATION DE DONNES
7.1 Prsentation de la rplication
7.1.1 Prsentation
La rplication des donnes est une fonctionnalit
trs puissante. La rplication est l'opration per-
mettant 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 cha-
cune des bases de donnes sont reportes sur tou-
tes les autres bases de donnes.
WinDev / WebDev permet de raliser ces opra-
tions simplement. WinDev / WebDev propose deux
types de rplication :
La rplication journale (base sur la journalisa-
tion). 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
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). La rplication
universelle peut tre mise en place simplement
grce la rplication universelle assiste.
Nous ne prsenterons ici que la rplication univer-
selle.
7.1.2 Vocabulaire spcifique la rplication
Bases de donnes
La rplication distingue deux types de bases de
donnes :
base de donnes matre
C'est la base de donnes de rfrence. Sur cette
base de donnes sont effectues toutes les
mises jour :
modifications effectues par l'application ex-
cute sur ce poste.
modifications effectues sur les postes dis-
tants et transmises par la rplication
la base de donnes rplica ou abonne
Cette base de donnes distante est identique
la base de donnes "Matre". Sur cette base de
donnes sont appliques les modifications effec-
tues par le poste distant. La rplication trans-
met ces modifications la base de donnes
"Matre".
Type de rplication
Deux types de rplication peuvent tre mises en
place :
Rplication mono-directionnelle :
Ce type de rplication consiste effectuer uni-
quement une mise jour de la base de donnes
"Matre" vers les bases de donnes "Abonnes",
ou bien d'une base de donnes "abonne" vers la
base de donnes "Matre".
Rplication bi-directionnelle :
Ce type de rplication consiste effectuer une
mise jour de la base de donnes "Matre" vers
les bases de donnes "Abonnes" et des bases
de donnes "Abonnes" vers la base de donnes
"Matre".
Fichiers crs lors d'une rplication
La rplication universelle utilise plusieurs types de
fichiers :
Fichier .RPM: fichier permettant de dcrire une
base matre, et les bases qui lui sont abonnes.
Fichier .RPL : fichier dcrivant une base abon-
ne. Pour chaque base abonne, un fichier RPL
est cr. Ce fichier est prsent sur le poste
abonn.
Fichier .RPA : fichier journal contenant les infor-
mations de rplication. Ce fichier est chang
entre la base de donnes matre et la base de
donnes abonne.
Fichier .SYN : fichier contenant les informations
sur la situation de la base distant. Ce fichier per-
met d'optimiser la taille des fichiers de synchroni-
sation. Ce fichier est prsent sur le poste matre
et sur chaque poste abonn.
7.1.3 Remarque
Pour mettre en place la rplication universelle sur
des bases de donnes diffrentes de HyperFi-
leSQL, il est obligatoire de crer une rubrique de
type DateHeure dans chaque fichier. Cette rubrique
sera mise jour par l'application lors de la modifi-
cation ou lors de l'ajout d'un enregistrement. Si les
bases de donnes utilisent diffrents fuseaux
horaires, il est conseill d'utiliser un format univer-
sel (date et heure GMT par exemple).
WLangage.book Page 387 Mardi, 23. avril 2013 1:59 13
388 Partie 7 : Gestion des fichiers de donnes
7.2 Mettre en place la rplication universelle
7.2.1 Activation
Pour activer la rplication universelle, il suffit d'utili-
ser la fonction HGreRplication avec le paramtre
rplRplicationUniverselle.
Cette fonction permet de dsactiver le mode de
rplication standard (s'il tait actif) et d'activer la
rplication universelle.
7.2.2 Dclaration de la base matre
Cette opration n'est faire qu'une seule fois sur la
base matre.
Pour dclarer la base matre, il suffit d'utiliser la
fonction HCreRplicaMatre.
Remarque : Si le rpertoire courant permet de stoc-
ker des donnes, la ligne de code suivante peut
tre utilise :
Cette ligne de code cre le fichier RplicaMa-
tre.RPM sur le disque. Il ne reste plus qu' inscrire
les abonns dans ce fichier.
7.2.3 Dclaration des bases abonnes
Cette opration n'est faire qu'une seule fois pour
chaque base abonne. Cette opration doit tre
effectue sur la base matre.
Pour dclarer un nouvel abonn, utilisez la fonction
HCreRplicaAbonn. Cette fonction cre un
abonn (fichier RPL) avec le nom fournit. Cette
fonction renvoie galement un numro d'abonn.
Remarque : la fonction HCreRplicaAbonn uti-
lise des paramtres spcifiques pour la rplication
universelle. Pour plus de dtails, consultez l'aide de
la fonction.
7.3 Rplication entre des bases htrognes
La fonction HCreRplicaTransportable cre un
fichier journal (fichier .RPA).
Ce fichier journal est transmis et excut grce la
fonction HSynchroniseRplica.
Attention : Par dfaut lors de la synchronisation
(HSynchroniseRplica), le matre est prioritaire :
dans le cas d'une rplication abonn vers matre,
les donnes du matre ne seront pas mises jour.
Pensez utiliser une autre constante (rplPlusR-
centPrioritaire par exemple).
Deux fonctions spcifiques peuvent galement tre
utilises :
Remarques :
Les changes de fichiers ".RPA" ne sont pas obli-
gatoirement symtriques : il est possible de crer
et d'excuter plusieurs journaux dans un sens
sans crer ni excuter un seul journal dans
l'autre sens. Cependant, pour optimiser les per-
formances, il est conseill d'viter d'effectuer des
changes toujours dans le mme sens.
La rplication respecte les filtres poss sur les
tables ou les fichiers (sauf dans le cas de
liaisons, pour respecter l'intgrit).
Un filtre peut tre mis en place du ct du
matre : les abonns recevront alors un sous-
ensemble des donnes de la base matre. Dans
ce cas, il n'est pas ncessaire de mettre en place
un filtre du ct de la base abonne.
Si par le filtre, un enregistrement n'est plus "visi-
ble" sur la base de donnes matre, cet enregis-
trement sera considr comme supprim. Il sera
alors automatiquement supprim sur le poste
abonn.
HCreRplicaMatre("")
HRplDclareLiaison Permet de signaler au moteur
de rplication une liaison
entre deux fichiers. Le
moteur suivra alors la liaison
pour obtenir la liste des enre-
gistrements rpliquer dans
le second fichier.
HRplGestionFichier Dfinit les options utili-
ses pour la rplication
universelle d'un fichier.
HRplGestionRubri-
que
Dfinit les options utili-
ses pour la rplication
universelle d'une rubri-
que.
HRplProcdureFil-
tre
Permet de spcifier une pro-
cdure de filtrage spcifique
lorsquun fichier donn sera
rpliqu.
WLangage.book Page 388 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 389
7.4 Limitations
Les limitations sont les suivantes :
Chaque fichier ou table doit avoir au moins une
rubrique cl unique.
Il est ncessaire de pouvoir dater un enregistre-
ment. Si la rubrique permettant de dater l'enre-
gistrement est remplie automatiquement par un
trigger, ce trigger doit tre dsactiv durant l'ex-
cution de la fonction HSynchroniseRplica (pour
viter de remplir cette rubrique avec la date de
rplication).
La rplication n'ouvre pas les fichiers ou les
tables. Les fichiers ou les tables doivent avoir t
ouverts par le programme avant de lancer la
rplication.
Pendant la rplication, l'occupation mmoire
peut tre trs importante. Il est donc conseill de
ne rpliquer que les enregistrements ncessaires
vers un poste abonn.
Attention : cas spcifique : une partie seulement
des tables relies ne sont pas rpliques.
Dans ce cas, la rplication rejoue parfois certai-
nes modifications comme un couple {ajout, sup-
pression}. Si une table (non rplique) est relie
avec l'option de modifications en cascade, les
enregistrements relis risquent d'tre supprims
abusivement.
WLangage.book Page 389 Mardi, 23. avril 2013 1:59 13
390 Partie 7 : Gestion des fichiers de donnes
8. GESTION DE FICHIERS EN "BACK OFFICE"
8.1 Prsentation
La plupart des sites interactifs diffuss sur Internet
sont destins fonctionner en parallle dapplica-
tions dites traditionnelles, excutes en gnral
sous Windows.
Pour un site de commerce lectronique par
exemple :
le "Front Office" consistera dans la partie Inter-
net, en la prsentation des produits et prise de
commandes.
le "Back Office" consistera en la gestion des ven-
tes ralises : bons de livraison, factures, bons
de rparation, statistiques, relances, ...
Pour raliser les fonctions du "Back Office", lutilisa-
tion de lAGL WinDev est conseille.
WebDev offre plusieurs possibilits pour grer le
"Back Office" :
la mise jour par email,
laccs distant sur HyperFileSQL,
la rplication.
8.2 La mise jour par email
Lopration consiste synchroniser deux bases de
donnes, la base de donnes de lapplication
"Back Office" et la base de donnes de lapplication
"Front Office", par un envoi demails et une proc-
dure de lecture des emails.
Lapplication "Front Office" envoie un email cha-
que modification de la base de donnes.
Lapplication "Back Office" lit automatiquement la
messagerie intervalles rguliers afin de mettre
jour la base de donnes centrale.
8.3 Laccs distant sur Hyper File
8.3.1 Dfinition
L'accs distant permet de consulter une base de
donnes HyperFileSQL via Internet/Intranet ou
mme via RTC (Rseau Tlphonique Commut).
Trois modes dutilisation se distinguent :
Mode 1 :
Une application "Back Office" interroge la base
de donnes situe sur le serveur WEB (o se
trouve le site WebDev).
Mode 2 :
Le serveur WEB accde une base de donnes
situe sur le poste de lapplication "Back Office".
Mode 3 :
Un site WebDev situ sur un serveur A interroge
la base de donnes situes sur un serveur B (o
se trouve un autre site WebDev).
Les fonctions du WLangage spcifiques la gestion
de laccs distant sont : HOuvreAnalyse et HCon-
necteAccsDistant.
8.3.2 Dtail des trois modes dutilisation
Mode 1 : Application "Back Office"
WinDev et base de donnes sur le
serveur WEB
La base de donnes est situe sur le serveur WEB.
La base de donnes est mise jour directement
par le site WebDev lors des actions des internau-
tes.
Les utilisateurs de lapplication "Back Office" inter-
rogent et mettent jour la base de donnes partir
de lapplication WinDev.
Lapplication "Back Office" dialogue avec la base de
donnes grce laccs distant.
Remarque : Lapplication "Back Office" WinDev
peut tre accessible sur un serveur applicatif (cas
du schma) ou diffuse sur les postes des diff-
rents utilisateurs. Dans ce cas, chaque utilisateur
lance un accs distant.
WLangage.book Page 390 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 391
Mode 2 : Base de donnes sur le
poste de lapplication "Back Office"
WinDev
La base de donnes est situe sur le poste de
lapplication WinDev. La base de donnes est mise
jour par le site WebDev lors des actions des inter-
nautes grce laccs distant.
Les utilisateurs de lapplication "Back Office" inter-
rogent et mettent jour la base de donnes direc-
tement partir de lapplication WinDev.
Mode 3 : Deux sites WebDev sur
deux serveurs distants pour une
seule base de donnes
Selon le site auquel se connectent les internautes,
la base de donnes est mise jour :
soit directement par le site WebDev situ sur le
mme poste.
soit depuis le site WebDev grce laccs distant
(consultez laide en ligne pour plus de dtails).
8.4 La rplication de donnes
8.4.1 Prsentation
La rplication des donnes est une fonctionnalit
trs puissante. La rplication est l'opration per-
mettant de maintenir jour des bases de donnes
distantes de structures identiques. Chacune de ces
bases de donnes volue indpendamment : des
oprations diffrentes sont effectues sur ces
bases de donnes.
Grce la rplication, les oprations effectues sur
chacune des bases de donnes sont reportes sur
toutes les autres bases de donnes.
La rplication de donnes peut trs simplement
tre applique un site WebDev. Dans ce cas, la
rplication permet de maintenir jour :
la base de donnes situe sur le serveur WEB,
utilise par le site WebDev.
la base de donnes situe au sige de la socit
et utilise par une application WinDev de "Back
Office" par exemple.
Prenons un exemple classique d'utilisation de la
rplication des donnes :
Une entreprise permet de saisir des commandes
par deux techniques :
directement sur le site Internet de lentreprise : le
client saisi directement sa commande en indi-
quant ses coordonnes et les produits comman-
ds.
par les commerciaux, qui utilisent une applica-
tion de prise de commandes sous Windows.
Cette application est utilise au sige de la
socit, en tant quapplication de "Back Office".
Dans cet exemple :
le fichier "Commande" :
prsent sur le serveur WEB contient unique-
ment les commandes saisies par les clients uti-
lisant le site Internet.
prsent au sige de la socit contient unique-
ment les commandes saisies par les commer-
ciaux.
Il est donc ncessaire de mettre jour la base de
donnes du sige avec les commandes ralises
sur le site.
le fichier "Produit" :
prsent sur le serveur WEB doit contenir toutes
les rfrences des produits.
prsent au sige de la socit peut voluer, pre-
nant en compte les nouveaux produits.
Il est donc ncessaire de mettre jour la base de
donnes du site WebDev avec les nouveaux pro-
duits.
Grce la rplication, le site WebDev prsent sur le
serveur WEB et lapplication WinDev prsente au
sige de la socit ont chacune leur propre base de
donnes complte.
La base de donnes du site WebDev (ou rplica)
est identique la base de donnes "matre", lors de
son initialisation.
Rgulirement, une "Synchronisation" de ces bases
de donnes permet de prendre en compte les
modifications effectues sur chacune des diffren-
tes bases de donnes.
8.4.2 Mise en place de la rplication
Pour plus de dtails, consultez le chapitre La rpli-
cation de donnes, page 387 et laide en ligne.
WLangage.book Page 391 Mardi, 23. avril 2013 1:59 13
392 Partie 7 : Gestion des fichiers de donnes
9. ACCS AUX BASES TIERCES
9.1 Prsentation
Il existe diffrents modes d'excution des requtes
SQL en fonction du type d'accs effectu la base
de donnes.
Accs une base de donnes HyperFileSQL (dif-
fusion libre et gratuite avec vos applications Win-
Dev et vos sites WebDev) :
Aucune contrainte d'installation.
Les fonctions SQL et HyperFileSQL (HLitxxx, ...)
peuvent tre utilises avec ce type d'accs.
Accs par un accs natif : Accs natif Oracle,
SQL Server, AS/400, ...
Pour chaque type d'accs natif, il est ncessaire
de possder un module complmentaire. Contac-
tez le service commercial pour les dlais de dis-
ponibilit sur votre base de donnes.
Pour les accs de type Oracle ou SQL Server, il
est ncessaire d'installer la couche client sur le
poste de l'utilisateur.
Les fonctions SQL et HyperFileSQL (HLitxxx, )
peuvent tre utilises avec ce type d'accs. Ce
type d'accs est plus rapide que les accs par
ODBC ou par un provider OLE DB.
Accs par un driver ODBC direct :
Les caractristiques de la connexion la base de
donnes doivent tre dfinies dans l'administra-
teur ODBC de Windows. Seules les fonctions de
type SQL sont utilisables pour ce type d'accs.
Les fonctions HyperFileSQL (HLitxxx, ...) ne sont
pas utilisables.
Accs ODBC via le provider OLE DB :
Ce type d'accs utilise un provider OLE DB spci-
fique. Ce type d'accs est dconseill car plus
lent qu'un accs par un driver ODBC. En effet, les
performances sont moins bonnes que par un dri-
ver ODBC direct car l'accs se fait la fois par le
driver ODBC et par le provider OLE DB.
Les fonctions HyperFileSQL (HLitxxx, ...) et SQL
peuvent tre utilises avec ce type d'accs.
Il est ncessaire de dfinir les caractristiques
de la connexion la base de donnes dans
l'administrateur ODBC de Windows. Le provider
ainsi que MDAC 2.6 (ou suprieur) doivent tre
installs sur le poste.
Accs par un provider OLE DB :
Ce type d'accs utilise un provider OLE DB. Le
provider ainsi que MDAC 2.6 (ou suprieur) doi-
vent tre installs sur le poste.
Les fonctions SQL et HyperFileSQL (HLitxxx, ...)
peuvent tre utilises avec ce type d'accs.
9.2 Particularits
Accs xBase possible via HyperFileSQL :
Des fonctions spcifiques xBase sont utilisa-
bles en plus des fonctions classiques HyperFi-
leSQL (HDBOuvre, ).
Fichiers ASCII :
Utilisez les fonctions du WLangage spcifiques
aux fichiers externes (fOuvre, fLit, fEcrit, ).
Fichiers INI :
Utilisez les fonctions du WLangage spcifiques
aux fichiers INI (IniLit, IniEcrit, ).
Gestion de la base de registres :
Utilisez les fonctions du WLangage spcifiques
la base de registres (RegistreLit, RegistreEcrit,
).
9.3 Fonctions de gestion des bases de donnes tierces
Pour plus de dtails sur les diffrentes fonctions
utiliser pour grer une base de donnes tierce (con-
nexion la base, excution dune requte, blocage
des enregistrements, ...), consultez laide en ligne.
WLangage.book Page 392 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 393
10. FONCTIONS HYPERFILESQL
Les fonctions permettant de grer les fichiers HyperFileSQL sont les suivantes :
EcranVersFichier Initialise automatiquement la valeur mmoire des rubriques d'un fichier avec la
valeur des champs de la fentre
EspaceSignificatif Ajoute ou supprime les espaces situs droite d'une rubrique texte lors de sa lecture
FichierVersEcran Initialise automatiquement les champs d'une fentre avec les valeurs des rubriques
associes dans l'enregistrement en cours (charg en mmoire) du fichier HyperFi-
leSQL
FichierVersPage Initialise automatiquement les champs d'une page avec les valeurs des rubriques
associes dans l'enregistrement en cours (charg en mmoire) du fichier HyperFi-
leSQL
HAcclreVitesse Rorganise la structure interne des index pour optimiser la vitesse d'accs aux don-
nes
HActiveFiltre Active le filtre prcdemment cr pour le fichier spcifi
HActiveFiltreAuto Active un filtre automatique sur les fichiers relis lors du parcours d'un fichier XML
HActiveTrigger Ractive un trigger prcdemment dsactiv avec la fonction HDsactiveTrigger
HAjoute Ajoute l'enregistrement prsent en mmoire dans le fichier de donnes
HAlias Cre un alias logique d'un fichier ou annule tous les alias existants
HAnnuleAlias Annule un alias prcdemment dclar avec la fonction HAlias
HAnnuleDclaration Supprime une dclaration prcdemment faite avec HDclare, HDclareExterne ou
HDcritFichier
HAnnuleRecherche Annule le critre de recherche en cours
HAttacheMmo Permet d'associer un fichier une rubrique de type mmo binaire
HAvance Avance de plusieurs enregistrements dans le fichier, partir de la position en cours,
selon une rubrique spcifie
HBloqueFichier Bloque un fichier et restreint l'accs ce fichier pour les autres applications ou sites
HBloqueNumEnr Bloque un enregistrement et restreint l'accs cet enregistrement pour les autres
applications ou sites
HChangeCl Change la rubrique de parcours
HChangeConnexion Change la connexion une base de donnes utilise pour un fichier. Ce changement
sera pris en compte la prochaine ouverture du fichier
HChangeLocalisation Modifie le mode de recherche des fichiers de donnes
HChangeNom Modifie le nom physique d'un fichier de donnes
HChangeRep Modifie le chemin d'accs un fichier de donnes
HChangeRepJNL Modifie le chemin d'accs un fichier journal (fichier JournalOpration et fichier
JournalIdentification)
HChangeRepRPL Modifie l'emplacement de la description du rplica abonn (fichier RPL). Cette fonc-
tion doit tre utilise sur le poste abonn
HConnecte Redfinit un ou plusieurs paramtres d'une connexion par accs natif ou par accs
OLE DB sur une table spcifique ou sur un ensemble de tables
HConnecteAccsDis-
tant
Ouvre une analyse au format HyperFileSQL via un accs distant
HConstruitValCl Construit la valeur d'une cl compose pour raliser un filtre ou effectuer une recher-
che
HConstruitValClANSI Permet (sous une plateforme UNICODE, Pocket PC par exemple) de construire la
valeur d'une cl compose pour enregistrer cette cl compose dans un fichier de
donnes HyperFileSQL
WLangage.book Page 393 Mardi, 23. avril 2013 1:59 13
394 Partie 7 : Gestion des fichiers de donnes
HConvert Convertit une valeur numrique en une chane binaire pour effectuer une recherche
sur une cl numrique
HCopieEnreg Copie le contenu de l'enregistrement en cours (charg en mmoire) dans l'enregistre-
ment en cours d'un autre fichier
HCration Cre vide un fichier de donnes (fichier d'extension ".FIC") avec le fichier d'index et
le fichier mmo si ncessaire
HCrationSiInexistant Cre vide un fichier de donnes (si le fichier n'existe pas) ou ouvre un fichier (si le
fichier existe)
HCreReplicaAbonn Cre le fichier de description d'un rplica abonn (fichier ReplicaAbonne.RPL)
HCreRplicaMatre Cre le fichier de description d'un rplica matre (fichier ReplicaMaitre.RPL)
HCreRplicaTrans-
portable
Cre un fichier qui peut tre utilis pour rpliquer les donnes de la base de don-
nes en cours vers une base de donnes distante (pour envoi par email ou disquette
par exemple)
HCreVue Cre une vue HyperFileSQL
HDateEnreg Renvoie la date et l'heure de la dernire criture d'un enregistrement dans un fichier
HyperFileSQL
HDbloqueFichier Dbloque un fichier prcdemment bloqu avec la fonction HBloqueFichier
HDbloqueNumEnr Dbloque un enregistrement
HDclare Dclare une description de fichier (prsente dans une autre analyse) dans le projet
en cours
HDclareExterne Importe temporairement dans l'analyse en cours la description d'un fichier partir
d'un fichier HyperFileSQL existant
HDcritConnexion Dcrit une connexion temporaire
HDcritFichier Dcrit un fichier de donnes temporaire
HDcritIndexfullText Dcrit un index full-text dans un fichier de donnes cr par programmation.
HDcritLiaison Dcrit une liaison temporaire entre deux fichiers
HDcritRubrique Dcrit une rubrique d'un fichier de donnes temporaire
HDcritTrigger Non disponible dans cette version
HDernier Positionne sur le dernier enregistrement d'un fichier
HDsactiveFiltre Dsactive temporairement un filtre sur un fichier (une vue ou une requte)
HDsactiveFiltreAuto Dsactive un filtre automatique sur les fichiers relis lors du parcours d'un fichier
XML
HDsactiveTrigger Dsactive un trigger
HDtruitTrigger Dtruit un trigger
HDtruitVue Dtruit une vue prcdemment cre
HEcrit crit un enregistrement dans le fichier de donnes sans mettre jour les index cor-
respondants toutes les cls utilises dans le fichier
HEnDehors Permet de savoir si l'enregistrement sur lequel on veut se positionner est en dehors
du fichier, du filtre, de la vue ou de la requte
HEnregistrementVer-
sXML
Rcupre la structure et la valeur de l'enregistrement en cours et les exporte dans
une chane de caractres au format XML
HErreur Renvoie le numro de la dernire erreur dclenche par le moteur HyperFileSQL
HErreurBlocage Permet de tester si une erreur de blocage est survenue
HErreurDoublon Permet de tester si une erreur de doublons est survenue
HErreurEtatModifica-
tion
Renvoie l'tat d'un enregistrement lors d'un conflit de modification
HErreurInfo Renvoie une information dtaille sur la dernire erreur dclenche par le moteur
HyperFileSQL
HErreurIntgrit Permet de tester si une erreur d'intgrit est survenue
HErreurModification Renvoie la valeur d'une rubrique d'un enregistrement lors d'un conflit de modifica-
tion
WLangage.book Page 394 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 395
HErreurMotDePasse Permet de savoir si une erreur due un mot de passe erron a t rencontre sur ce
fichier
HEtat Permet de connatre l'tat d'un enregistrement
HExcuteProcdure Excute une procdure ou une fonction stocke.
HExcuteRequte Initialise une requte cre sous l'diteur de requtes et dclare cette requte au
moteur HyperFileSQL
HExcuteRequteSQL Initialise une requte crite en langage SQL et dclare cette requte au moteur
HyperFileSQL
HExcuteVue Excute une vue cre auparavant
HExporteXML Exporte les enregistrements d'un fichier (HyperFileSQL ou OLEDB), d'une vue ou
d'une requte dans un fichier XML
HExtraitMmo Extrait le contenu d'une rubrique de type mmo binaire dans un fichier
HFerme Ferme soit un fichier, soit tous les fichiers ouverts
HFermeAnalyse Ferme l'analyse en cours
HFermeConnexion Ferme une connexion une base de donnes
HFichierExiste Permet de savoir si un fichier existe
HFiltre Dfinit et active un filtre sur un fichier, une vue ou une requte
HFiltreContient Dfinit et active un filtre de type "Contient" sur un fichier de donnes, une vue ou une
requte.
HFiltreCommencePar Dfinit et active un filtre de type "Commence par" sur un fichier, une vue ou une
requte. Le filtre de type "Commence par" permet de slectionner tous les enregis-
trements commenant par une suite de caractres dfinie
HFiltreComprisEntre Dfinit et active un filtre de type "Compris entre" sur un fichier, une vue ou une
requte. Le filtre de type "Compris Entre" permet de slectionner tous les enregistre-
ments compris entre deux valeurs donnes
HFiltreIdentique Dfinit et active un filtre permettant de rechercher la valeur exacte d'une rubrique de
type chane. Ce filtre peut tre utilis sur un fichier, une vue ou une requte
HFinInterditModif Dbloque un fichier qui a t bloqu avec la fonction HInterditModif
HForceEcriture Force le systme d'exploitation du poste sur lequel les fichiers de donnes sont pr-
sents crire les donnes directement sur le disque
HFusionneVue Cre une vue HyperFileSQL partir de deux vues prcdemment cres
HGreAccsDistant Dbranche temporairement l'accs distant pour accder des fichiers de donnes
HyperFileSQL Classic prsents en local
HGreDoublon Active ou dsactive la gestion des doublons sur une cl unique
HGreIntgrit Active ou dsactive la gestion d'une contrainte d'intgrit sur une liaison d'un fichier
HGreJournal Active ou dsactive la gestion du journal d'un fichier journalis
HGreMmo Active ou dsactive la gestion des rubriques de type mmo
HGreREP Active ou dsactive la gestion du fichier .REP
HGreRplication Active ou dsactive temporairement la gestion de la rplication
HGreServeur Permet de connatre et de modifier certains paramtrages du serveur.
HGreTransaction Active ou dsactive la gestion des transactions
HGreTrigger Active ou dsactive la gestion des triggers
HHistoriqueModifica-
tion
Renvoie les modifications apportes une ou plusieurs rubriques d'un enregistre-
ment donn. Le rsultat peut tre par exemple affich dans une liste ou une table
afin de permettre l'utilisateur de visualiser les modifications effectues sur le
fichier spcifi
HImporteHF55 Importe un fichier Hyper File 5.5 dans un fichier au format HyperFileSQL Classic
HImporteTexte Importe un fichier texte dans un fichier au format HyperFileSQL Classic
HImporteXML Importe un fichier XML dans un fichier au format HyperFileSQL Classic
HInfoAnalyse Renvoie des informations sur une analyse (fichier WDD).
HInfoLog Renvoie des informations sur les logs du serveur.
WLangage.book Page 395 Mardi, 23. avril 2013 1:59 13
396 Partie 7 : Gestion des fichiers de donnes
HInfoMmo Renvoie les caractristiques des mmos binaires
HInfoRplica Renvoie des informations sur le rplica spcifi
HInitAbonn Initialise la plage d'identifiants automatiques d'un fichier de description d'un rplica
abonn (extension ".RPL")
HInterditModif Interdit toute modification sur un fichier. Les enregistrements sont uniquement
accessibles en lecture
HJournalInfo Insre des commentaires lors de la journalisation d'une opration
HJournalRecre Permet de recrer un journal vide. Cette fonction permet par exemple de remettre
le journal 0 aprs une sauvegarde ou une rplication. Le contenu des fichiers exis-
tants est perdu
HJournalRedmarre Redmarre la journalisation du fichier. Cette journalisation a t arrte grce la
fonction HJournalStop
HJournalStop Arrte la journalisation du fichier. Les manipulations effectues dans le fichier jour-
nal ne sont plus enregistres
HLibre Transforme les enregistrements rays d'un fichier en enregistrements supprims
HLibrePosition Supprime une position sauvegarde par la fonction HSauvePosition
HLibreRequte Libre les ressources d'une requte (suite l'utilisation des fonctions HExcuteRe-
qute ou HExcuteRequteSQL)
HListeAnalyse Renvoie la liste des analyses disponibles dans un rpertoire donn
HListeCl Renvoie la liste des cls d'un fichier reconnu par le moteur HyperFileSQL
HListeConnexion Renvoie la liste des connexions dfinies dans l'application ou dans le site (con-
nexions dfinies dans l'analyse et/ou dynamiquement)
HListeFichier Renvoie la liste des fichiers de l'analyse en cours ou d'une analyse spcifique recon-
nue par le moteur HyperFileSQL
HListeIndexFullText Renvoie la liste des index full-text d'un fichier (d'une requte ou d'une vue) reconnu
par le moteur HyperFileSQL
HListeLiaison Renvoie la liste des liaisons (de type Merise) prsentes dans l'analyse en cours ou
dans une analyse spcifique
HListeParamRequte Renvoie la liste des paramtres d'une requte cre avec l'diteur de requtes
HListePersoDossier Renvoie la liste des perso-dossiers (galement appels groupes) dfinis dans l'ana-
lyse.
HListeProvider Renvoie la liste des providers OLE DB installs sur le poste
HListeREP Renvoie la liste des affectations des fichiers prsents dans une analyse
HListeRubrique Renvoie la liste des rubriques d'un fichier reconnu par le moteur HyperFileSQL
HListeTrigger Renvoie la liste des triggers appliqus sur un ou plusieurs fichiers de donnes Hyper-
FileSQL
HLit Lit un enregistrement dans un fichier en fonction d'un numro d'enregistrement
donn
HLitDernier Positionne sur le dernier enregistrement d'un fichier, lit l'enregistrement et met jour
les variables HyperFileSQL
HLitPrcdent Positionne sur l'enregistrement prcdent d'un fichier, lit l'enregistrement et met
jour les variables HyperFileSQL
HLitPremier Positionne sur le premier enregistrement d'un fichier, lit l'enregistrement et met
jour les variables HyperFileSQL
HLitRecherche Positionne sur le premier enregistrement du fichier dont la valeur d'une rubrique sp-
cifique est suprieure ou gale une valeur recherche
HLitRechercheDernier Positionne sur le dernier enregistrement du fichier dont la valeur d'une rubrique sp-
cifique est infrieure ou gale une valeur recherche
HLitRecherchePre-
mier
Positionne sur le premier enregistrement du fichier dont la valeur d'une rubrique sp-
cifique est suprieure ou gale une valeur recherche
WLangage.book Page 396 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 397
HLitSuivant Positionne sur l'enregistrement suivant d'un fichier, lit l'enregistrement et met jour
les variables HyperFileSQL
HMigreClCompose-
Relie
Migre les valeurs des cls composes relies
HMiseAJourCollection Cre ou met jour une collection de procdures sur un serveur HyperFileSQL
HMode Change le mode et la mthode de blocage des fichiers
HModifie Modifie l'enregistrement spcifi ou l'enregistrement prsent en mmoire dans le
fichier de donnes
HModifieStructure Permet de mettre jour la structure dun fichier de donnes HyperFileSQL en effec-
tuant une modification automatique des donnes (galement appele Synchronisa-
tion des donnes).
HNbEnr Renvoie le nombre d'enregistrements d'un fichier ou d'une vue HyperFileSQL
HNumEnr Renvoie le numro de l'enregistrement en cours dans le fichier ou dans la vue Hyper-
FileSQL
HOptimise Optimise l'accs aux index des fichiers HyperFileSQL : les index sont chargs dans
les caches du systme. Acclre les premiers parcours de fichiers et les premires
excutions de requtes
HOptimiseRequte Permet dutiliser les temps morts dans lutilisation dun logiciel (priode sans traite-
ments) pour optimiser les requtes. Optimise laccs aux index des fichiers HyperFi-
leSQL
HOuvre Ouvre un fichier
HOuvreAnalyse Ouvre une analyse au format HyperFileSQL
HOuvreConnexion Ouvre une connexion une base de donnes
HPasse Fixe le mot de passe utilis pour crer ou pour ouvrir un fichier
HPositionCourante Renvoie la position approximative de l'enregistrement en cours dans le fichier
HPositionne Positionne sur un enregistrement partir de la position approximative d'une de ses
rubriques (l'enregistrement est lu)
HPoste Mmorise un numro unique de poste afin d'utiliser la journalisation et les transac-
tions en rseau
HPrcdent Positionne sur l'enregistrement prcdent du fichier (l'enregistrement n'est pas lu)
HPremier Positionne sur le premier enregistrement d'un fichier (l'enregistrement n'est pas lu)
HPrpareRequte Initialise une requte et dclare cette requte au serveur de base de donnes pour
optimiser les prochaines excutions de cette requte
HPrpareRequteSQL Initialise une requte crite en langage SQL et dclare cette requte au serveur de
base de donnes pour optimiser les prochaines excutions de cette requte
HPriorit Permet de connatre ou modifier la priorit de l'application appelante.
HPrioritClient Modifie la priorit d'une application cliente.
HRaye Raye un enregistrement d'un fichier
HRAZ Initialise une ou toutes les variables des rubriques d'un fichier avec leurs valeurs par
dfaut
HRecherche Positionne sur le premier enregistrement du fichier dont la valeur d'une rubrique sp-
cifique est suprieure ou gale une valeur recherche
HRechercheDernier Positionne sur le dernier enregistrement du fichier dont la valeur d'une rubrique sp-
cifique est infrieure ou gale une valeur recherche (l'enregistrement n'est pas lu)
HRecherchePremier Positionne sur le premier enregistrement du fichier dont la valeur d'une rubrique sp-
cifique est suprieure ou gale une valeur recherche
HRecule Recule de plusieurs enregistrements dans le fichier, partir de la position en cours,
selon une rubrique spcifie
HRcupreEnregistre-
ment
Renvoie le contenu de l'enregistrement en cours
HRcupreLog Ecrit dans un fichier les logs du serveur raliss entre deux dates donnes
WLangage.book Page 397 Mardi, 23. avril 2013 1:59 13
398 Partie 7 : Gestion des fichiers de donnes
HRcupreRubrique Renvoie le contenu d'une rubrique de l'enregistrement en cours
HRgnreFichier Rgnre un fichier partir de son journal
HRindexationEn-
Cours
Avertit si une rindexation est en cours sur un fichier de donnes et renvoie le pour-
centage de rindexation effectu
HRindexe Reconstruit l'index d'un fichier
HRetourPosition Restaure le contexte prcdemment sauvegard d'un fichier
HRplDclareLiaison Dclare une liaison de type (1,1) (0,n) entre deux tables
HRplGestionFichier
Dfinit les options utilises pour la rplication universelle d'un fichier :
le sens de rplication,
le mode de gestion des conflits.
HRplGestionRubrique Renseigne les options de rplication pour une rubrique : la rubrique peut tre rpli-
que ou non.
HRplPasse Fixe les mots de passe protgeant les rplicas transportables de la rplication uni-
verselle
HRplProcdureFiltre Dfinit la procdure WLangage qui sera appele chaque opration de rplication
pour un fichier donn
HSauvePosition Mmorise le contexte en cours d'un fichier
HScurit Active ou dsactive le mcanisme de scurit
HStatCalcule Ralise diverses statistiques sur les cls d'un fichier
HStatDate Renvoie la date de la dernire mise jour des statistiques d'index
HStatHeure Renvoie l'heure de la dernire mise jour des statistiques d'index
HStatNbDoublon Renvoie le nombre de doublons pour une rubrique donne
HStatNbEnr Renvoie le nombre d'entres pour une rubrique donne
HStatNbEnrIntervalle Renvoie une estimation majore du nombre d'entres pour une rubrique donne
dans un intervalle de valeurs donn
HSubstRep Remplace le nom logique du rpertoire des donnes (spcifi dans l'analyse) par un
nom physique
HSuivant Positionne sur l'enregistrement suivant du fichier (l'enregistrement n'est pas lu)
HSupprime Supprime un enregistrement d'un fichier
HSupprimeCollection Supprime une collection de procdures stockes d'un serveur HyperFileSQL.
HSupprimeTout Supprime tous les enregistrements d'un fichier de donnes ou d'une requte.
HSurErreur Personnalise la gestion des erreurs
HSynchroniseRplica Synchronise un rplica matre et un rplica abonn
HTransactionAnnule Si une transaction est en cours, annule toutes les oprations effectues sur les
fichiers en transaction depuis le dbut de la transaction.
Si aucune transaction est en cours, rtabli la cohrence de la base de donnes et
annule la transaction qui a chou (cas d'une coupure de courant par exemple)
HTransactionDbut Dmarre une transaction sur les fichiers HyperFileSQL et cre le fichier des transac-
tions
HTransactionFin Valide la transaction en cours :
les modifications effectues sur le fichier de donnes depuis le dbut de la tran-
saction (fonction HTransactionDbut) sont valides
le fichier de transaction est supprim (si la transaction est la dernire transaction
en cours dans le cas d'une application rseau)
les enregistrements bloqus en lecture par la transaction sont dbloqus
HTransactionInterrom-
pue
Permet de savoir si une transaction a t interrompue (la transaction n'a t ni vali-
de, ni annule). Les caractristiques de la transaction interrompue peuvent tre
connues grce des variables HyperFileSQL
WLangage.book Page 398 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 399
HTransactionLibre Transforme tous les enregistrements "en transaction" en enregistrements "normaux"
si ces enregistrements n'appartiennent pas une transaction actuellement en
cours. Si un enregistrement du fichier de donnes spcifi est considr comme
tant en transaction mais n'appartient aucune transaction en cours, il est automa-
tiquement libr
HTrieVue Trie une vue en crant un index sur une rubrique de la vue
HTrouve Vrifie si l'enregistrement en cours correspond au filtre ou la recherche en cours
HVrifieIndex Vrifie que les donnes contenues dans le fichier d'index (fichier .NDX) rfrencent
correctement les donnes contenues dans le fichier de donnes (.FIC)
HVrifieStructure Fixe le mode de comparaison des fichiers.
HVersion Permet de savoir si le contenu du fichier a t modifi
HVersFichier Copie une source de donnes (vue, requte, ) vers un fichier physique HyperFi-
leSQL de mme description
HVersRubrique Affecte la valeur indique une rubrique de l'enregistrement en cours
HVueVersFichier Enregistre les modifications ralises dans une vue dans le fichier correspondant
PageVersFichier Initialise automatiquement la valeur mmoire des rubriques dun fichier avec la
valeur des champs de la page
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 399 Mardi, 23. avril 2013 1:59 13
400 Partie 7 : Gestion des fichiers de donnes
11. PROPRITS HYPERFILESQL
Les proprits sappliquant aux fichiers HyperFileSQL sont les suivantes :
Abrviation Renvoie l'abrviation du fichier, dfinie sous l'diteur d'analyses lors de la description du
fichier
Accs Permet de connatre et de modifier le type d'accs d'une connexion
Alphabet Permet de connatre l'alphabet utilis par un fichier HyperFileSQL
Anne Rcupre ou modifie l'anne d'une rubrique de type Date
BaseDeDonnes Permet de connatre et de modifier la base de donnes associe une connexion
Binaire Identifie une rubrique de type binaire
BorneMax Rcupre la borne maximale du filtre en cours (dfini par la fonction HFiltre) sur un
fichier de donnes, une vue ou une requte
BorneMin Rcupre la borne minimale du filtre en cours (dfini par la fonction HFiltre) sur un
fichier de donnes, une vue ou une requte
CardinalitRelie-
Max
Paramtre la cardinalit maximale de la rubrique relie dans une liaison
CardinalitRelie-
Min
Paramtre la cardinalit minimale de la rubrique relie dans une liaison
CardinalitSource-
Max
Paramtre la cardinalit maximale de la rubrique source dans une liaison
CardinalitSource-
Min
Paramtre la cardinalit minimale de la rubrique source dans une liaison
ClCompose Identifie une rubrique de type cl compose
ClRelie Renvoie ou modifie la rubrique du fichier reli utilise dans la liaison
ClSource Renvoie ou modifie la rubrique du fichier source utilise dans la liaison
CodeSQL Renvoie une chane contenant le code SQL d'une requte cre avec l'diteur de requ-
tes.
Composante Paramtre les diffrentes composantes d'une cl compose
Compression Paramtre la compression des donnes d'une connexion.
CompressionMMO Paramtre le mode de compression du fichier MMO associ au fichier de donnes
ConditionFiltre Renvoie la condition de slection mise en place par la fonction HFiltre sur un fichier de
donnes, une vue HyperFileSQL ou une requte
Connexion Permet de connatre la connexion actuellement associe un fichier de donnes
Cryptage Permet de grer le type de cryptage de la communication entre les postes Client et le
poste Serveur HyperFileSQL
CryptageFic Paramtre le mode de cryptage du fichier de donnes
CryptageMMO Paramtre le mode de cryptage du fichier mmo associ au fichier de donnes
CryptageNdx Paramtre le mode de cryptage du fichier d'index associ au fichier de donnes
CxAccs Gre le type d'accs au fichier lors de la connexion OLE DB une table spcifique (en
tenant compte des modifications effectues par la fonction HConnecte)
CxAccsDcrit Gre le type d'accs au fichier lors de la connexion OLE DB une table spcifique (sans
tenir compte des modifications effectues par la fonction HConnecte)
CxBaseDeDonnes Gre la source de donnes OLE DB lors de la connexion OLE DB une table spcifique
(en tenant compte des modifications effectues par la fonction HConnecte)
CxBaseDeDon-
nesDcrit
Gre la source de donnes OLE DB lors de la connexion OLE DB une table spcifique
(sans tenir compte des modifications effectues par la fonction HConnecte)
CxInfosEtendues Permet de connatre les informations supplmentaires insres dans la chane de con-
nexion la base de donnes
CxInitialCatalog Permet de connatre la base de donnes par dfaut dfinie pour l'accs
WLangage.book Page 400 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 401
CxLibellDcrit Paramtre le libell de la connexion la source de donnes OLE DB
CxMotDePasseD-
crit
Dfinit le mot de passe utilis pour ouvrir le fichier lors d'une connexion OLE DB (fichier
dfini dynamiquement uniquement)
CxOptionsCurseur Permet de connatre le type curseur utilis lors d'une connexion une base de donnes
externe
CxProviderOLEDB Gre le nom du serveur OLE DB utilis (en tenant compte des modifications effectues
par la fonction HConnecte)
CxProviderOLEDB-
Dcrit
Gre le nom du serveur OLE DB (sans tenir compte des modifications effectues par la
fonction HConnecte)
CxTailleCache Permet de connatre et de modifier le nombre maximum d'enregistrements pouvant tre
contenus dans le cache de l'Accs Natif MySQL
CxUtilisateur Gre le nom de l'utilisateur lors d'une connexion OLE DB (en tenant compte des modifi-
cations effectues par la fonction HConnecte)
CxUtilisateurDcrit Gre le nom de l'utilisateur lors d'une connexion OLE DB (sans tenir compte des modifi-
cations effectues par la fonction HConnecte)
ExcutionTermine Permet de savoir si une requte ou une vue Hyper File Classic ou Client / Serveur a fini
de s'excuter
Extension Permet de connatre ou de modifier l'extension d'un fichier de donnes
FichierJournal Permet de savoir si un fichier de donnes est un fichier journal
FichierOrigine Permet de connatre le nom du fichier original correspondant une rubrique dsigne
par un alias
FichierParcouru Permet de connatre et de modifier la source de donnes utilise pour l'affichage des
enregistrements dans les champs bass sur un fichier de donnes
FichierReli Paramtre le nom du fichier reli utilis dans la liaison
FichierSource Paramtre le nom du fichier source utilis dans la liaison
FichierTransaction Permet de savoir si un fichier de donnes est un fichier de transaction
FiltreAvecBornes Permet de savoir si des bornes ont t prcises sur le filtre mis en place par la fonction
HFiltre sur un fichier de donnes, une vue HyperFileSQL ou une requte
Format Paramtre le format des donnes du fichier de donnes (ANSI ou Unicode)
FormuleCl Paramtre les diffrentes composantes d'une cl compose
GreHTLM Paramtre le mode de gestion du HTML dans un index full-text.
GreRTF Paramtre le mode de gestion du RTF dans un index full-text.
GrosFichier Paramtre la taille maximale d'un fichier de donnes
GUIDAnalyse Renvoie le GUID de l'analyse qui a permis de crer le fichier de donnes
GUIDFichier Renvoie le GUID du fichier dfini dans l'analyse qui a permis de crer le fichier de don-
nes
HauteurMaxVi-
gnette
Permet de connatre et de fixer la hauteur maximale de la nime vignette
Heure Rcupre ou modifie l'heure ou le nombre d'heures d'une rubrique de type Date (au for-
mat "Date et Heure" ou "Dure") ou d'une rubrique de type Heure
IdAutoMax Permet de connatre lidentifiant automatique maximum sur un fichier rpliqu
IdAutoMin Permet de connatre lidentifiant automatique minimum sur un fichier rpliqu
Indice Renvoie l'indice physique de la rubrique dans l'enregistrement
InfoGnrationVi-
gnette
Permet de savoir si la vignette a t gnre ou permet de connatre l'erreur de gnra-
tion
InfosEtendues Renvoie et modifie les informations supplmentaires d'un fichier de donnes ou d'une
rubrique accd par Accs Natif
Jour Rcupre ou modifie le jour ou le nombre de jours d'une rubrique de type Date (au for-
mat "Date", "Date et Heure" ou "Dure")
Journalisation Paramtre le mode de journalisation d'un fichier de donnes
WLangage.book Page 401 Mardi, 23. avril 2013 1:59 13
402 Partie 7 : Gestion des fichiers de donnes
Langue Dfinir les paramtres de la langue utilise pour les comparaisons et le tri dans le cas
d'une rubrique Unicode (en tenant compte des modifications effectues par la variable
H.CrationLangueUnicode).
LangueDcrit Dfinir les paramtres de la langue utilise pour les comparaisons et le tri dans le cas
d'une rubrique Unicode (sans tenir compte des modifications effectues par la variable
H.CrationLangueUnicode).
LargeurMaxVi-
gnette
Permet de connatre et de fixer la largeur maximale de la nime vignette
Libell Renvoie le libell associ la rubrique
LongueurMinimale Permet de dfinir et de connatre la longueur minimale des mots indexer dans un
index full-text.
Mmo Identifie une rubrique de type Mmo
Milliseconde Rcupre ou modifie les millisecondes ou le nombre de millisecondes d'une rubrique de
type Date (au format "Date et Heure" ou "Dure")
Minute Rcupre ou modifie les minutes ou le nombre de minutes d'une rubrique de type Date
(au format "Date et Heure" ou "Dure") ou d'une rubrique de type Heure
Mois Rcupre ou modifie le mois d'une rubrique de type Date (au format "Date Simple" ou
"Date et Heure")
MotDePasse Permet de dfinir le mot de passe de l'utilisateur utilisant la connexion
MotDePasseWDD5
5
Donne le mot de passe utiliser pour manipuler un fichier au format Hyper File 5.5
NbComposante Renvoie le nombre de composantes d'une cl compose
NbElmentTableau Paramtre le nombre d'lments d'une rubrique tableau
NbRubrique Renvoie le nombre de total de rubriques (y compris les cls composes) prsentes dans
un enregistrement d'un fichier dcrit sous l'diteur d'analyses, un fichier dcrit dynami-
quement, une vue HyperFileSQL ou une requte
NbRubriqueCl Renvoie le nombre de total de rubriques cl (y compris les cls composes) prsentes
dans un enregistrement d'un fichier dcrit sous l'diteur d'analyses, un fichier dcrit
dynamiquement, une vue HyperFileSQL ou une requte
NbRubriqueMmo Renvoie le nombre de total de rubriques mmo prsentes dans un enregistrement d'un
fichier dcrit sous l'diteur d'analyses, un fichier dcrit dynamiquement, une vue Hyper-
FileSQL ou une requte
NbVignette Permet de connatre le nombre de vignettes gnres pour la rubrique
NbVignetteDcrit Permet de connatre le nombre de vignettes dcrites pour la rubrique
Nom Gre le nom des diffrents objets HyperFileSQL
Nom55 Gre le nom logique d'un fichier au format Hyper File 5.5
NomDcrit Gre le nom logique d'un fichier de donnes
NomPhysique Gre le nom physique des fichiers de donnes
NomPhysiqueD-
crit
Gre le nom physique des fichiers HyperFileSQL (sans tenir compte des changements
de noms raliss grce la fonction HChangeNom)
NouvelEnregistre-
ment
Permet de savoir si l'enregistrement vient d'tre saisi dans le fichier de donnes.
Null Permet de grer la valeur NULL dans les rubriques des fichiers HyperFileSQL
NullSupport Permet de grer la valeur NULL dans un fichier HyperFileSQL
Numrique Identifie une rubrique numrique
NumroGnration Permet de connatre le numro de gnration du fichier physique associ au fichier logi-
que spcifi
OptionsCurseur Permet de grer le type de curseur utilis lors d'une connexion (HyperFileSQL Client/Ser-
veur, OLE DB, ...).
PartieDate Rcupre et modifie la date d'une rubrique de type Date (au format "Date et Heure")
WLangage.book Page 402 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 403
PartieDcimale Permet de connatre ou de modifier le nombre de dcimales d'une rubrique de type
numrique
PartieEntire Permet de connatre ou de modifier le nombre de chiffres composant la partie entire
d'une rubrique de type numrique
PartieHeure Rcupre et modifie l'heure d'une rubrique de type Date (au format "Date et Heure")
ProtgParMotDe-
Passe
Permet de savoir si un fichier est protg ou non par mot de passe
Provider Permet de grer le type d'une connexion (HyperFileSQL Client/Serveur, OLE DB, .).
RgleModification Gre la rgle de modification (gestion de l'intgrit) utilise dans une liaison
RgleSuppression Gre la rgle de suppression (gestion de l'intgrit) utilise dans une liaison
Rpertoire Gre le rpertoire physique des fichiers HyperFileSQL (en tenant compte des change-
ments de rpertoires raliss grce aux fonctions HChangeRep ou HSubstRep)
RpertoireDcrit Gre le rpertoire physique des fichiers HyperFileSQL (sans tenir compte des change-
ments de rpertoires raliss grce aux fonctions HChangeRep ou HSubstRep)
RpertoireJournal Gre le rpertoire du fichier journal dcrit dans l'analyse
RpertoireJourna-
lOpration
Permet de grer le rpertoire du fichier des oprations du journal associ un fichier
journal
RpertoireRplica-
tion
Permet de grer le rpertoire du rplica (fichier ".RPL" ou ".RPM")
RpertoireSauve-
gardeJournal
Permet de connatre et de modifier le rpertoire de sauvegarde des fichiers Journal
Rplication Permet de connatre le mode de rplication utilis pour un fichier de donnes (fichier
dfini sous l'diteur d'analyses ou dfini dynamiquement). Pour les fichiers dfinis dyna-
miquement, il est possible d'indiquer si ce fichier est en mode rplication ou non
RubriqueFiltre Permet de connatre la rubrique sur laquelle un filtre a t mis en place par la fonction
HFiltre sur un fichier de donnes, une vue HyperFileSQL ou une requte
RubriqueOrigine Permet de connatre le nom de la rubrique originale correspondant une rubrique dsi-
gne par un alias
Rubriques Permet de dfinir et de connatre les diffrentes rubriques composant l'index full-text.
RubriqueTex-
teComplte
Paramtre la gestion des rubriques de type texte dans un fichier HyperFileSQL (les rubri-
ques de type texte peuvent tre compltes automatiquement par des espaces ou non)
Seconde Rcupre ou modifie les secondes ou le nombre de secondes d'une rubrique de type
Date (au format "Date et Heure" ou "Dure")
Scuris Paramtre le niveau de scurit du cryptage des fichiers
SensibleAccentua-
tion
Paramtre la prise en compte de l'accentuation dans les diffrentes recherches effec-
tues sur la rubrique
SensibleCasse Paramtre la prise en compte de la case (majuscules/minuscules) dans les diffrentes
recherches effectues sur la rubrique
SensiblePonctua-
tion
Paramtre la prise en compte de la ponctuation (virgule, point, etc.) dans les diffrentes
recherches effectues sur la rubrique
Serveur Permet de connatre et modifier la source de donnes d'une connexion
Source Permet de connatre et modifier la source de donnes d'une connexion
Taille Paramtre la taille d'une rubrique de type texte (chane de caractres, mmo texte,
caractre)
TailleCache Permet de connatre et de modifier le nombre maximum d'enregistrements pouvant tre
contenus dans le cache de l'Accs Natif MySQL
TailleCl Permet de connatre et de modifier la taille de la partie indexe du mmo texte
TailleEnregistre-
ment
Renvoie la taille d'un enregistrement sans tenir compte des cls composes
Texte Identifie une rubrique de type texte
Type Identifie et modifie le type d'une rubrique
WLangage.book Page 403 Mardi, 23. avril 2013 1:59 13
404 Partie 7 : Gestion des fichiers de donnes
TypeCl Paramtre les caractristiques d'une rubrique de type cl
TypeTri Paramtre les caractristiques de tri sur une rubrique
Utilisateur Permet de connatre et modifier l'utilisateur d'une connexion
ValeurParDfaut Paramtre la valeur par dfaut d'une rubrique
Vignette Permet de connatre la valeur de la nime vignette
VisibleUtilisateurFi-
nal
Permet de savoir si une rubrique est visible ou non par les utilisateurs finals et de dfinir
si une rubrique doit tre visible ou non par les utilisateurs finals
WDD55 Chemin du fichier WDD au format 5.5 / 1.5 utilis pour manipuler des fichiers au format
5.5 / 1.5 dans une application WinDev 8 ou dans un site WebDev 7
Pour plus de dtails sur ces proprits, consultez laide en ligne.
Pour connatre la disponibilit de ces proprits dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 404 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 405
12. FONCTIONS SQL
Les principales fonctions SQL pouvant tre utili-
ses sur des requtes en code SQL sont les suivan-
tes (classes par thme) :
extraction de caractres :
ELT
EXTRACTVALUE
LEFT
RIGHT
MID, SUBSTR et SUBSTRING
SPLIT_PART
suppression de caractres :
LTRIM
RTRIM
TRIM
substitution de caractres :
REPLACE
REVERSE
TRANSLATE
fusion de chanes :
CONCAT
STRING_AGG
compltion de chanes :
LPAD
REPEAT
RPAD
SPACE
modification de la casse d'une chane de
caractres :
LOWER
UPPER
LCASE
UCASE
taille d'une chane de caractres :
LEN et LENGTH
CHARACTER_LENGTH
CHAR_LENGTH
OCTET_LENGTH
position d'une chane de caractres :
INSTR
FIELD
PATINDEX
POSITION
nombre d'enregistrements dans un fichier :
COUNT
calculs de numriques :
AVG
MAX
MIN
SUM
slection des n premiers ou des n derniers
enregistrements :
BOTTOM
TOP
code ASCII :
ASCII
code Unicode :
UNICODE
phontique :
SOUNDEX
SOUNDEX LIKE
SOUNDEX2,
SOUNDEX2 LIKE
gestion des dates
ADD_MONTH
LAST_DAY
MONTHS_BETWEEN
NEW_TIME
NEXT_DAY
ROUND
SYSDATE
TRUNC
Fonctions de comparaison :
COALESCE
GREATEST
IF NULL
IS NULL
LEAST
NVL
Instruction conditionnelle :
DECODE
CASE
Recherche "full-text" :
MATCH AGAINST
WLangage.book Page 405 Mardi, 23. avril 2013 1:59 13
406 Partie 7 : Gestion des fichiers de donnes
Vrification :
MD5
SHA et SHA1
Pour plus de dtails sur les fonctions SQL, consul-
tez une documentation spcifique au langage SQL.
Pour connatre toutes les commandes SQL (fonc-
tions, clauses, oprateurs, ...) utilisables dans une
requte SQL gre par HyperFileSQL, consultez
laide en ligne.
Remarques :
Ces instructions sont utilisables :
Dans le code SQL des requtes cres sous
l'diteur de requtes. Ces requtes sont ensuite
excutes grce la fonction HExcuteRe-
qute.
Dans le code SQL des requtes excutes avec
la fonction HExcuteRequteSQL.
Sauf indication contraire, ces fonctions sont utili-
sables sur tous les types de sources de donnes
(Oracle, Access, SQL Server, ...).
12.1 Dtail des fonctions
12.1.1 ELT
La fonction ELT renvoie la nime chane de caract-
res d'une liste de chanes.
Format d'utilisation :
Exemple : Le code SQL suivant suivant permet de
slectionner la premire chane de la liste :
12.1.2 EXTRACTVALUE
La fonction EXTRACTVALUE permet de manipuler
des chanes XML. Cette fonction renvoie le texte
(CDATA) du premier noeud texte qui est un fils de
l'lment correspondant l'expression XPATH. Si
plusieurs correspondances sont trouves, le con-
tenu du premier noeud texte fils de chaque noeud
correspondant l'expression XPATH est retourn
sous forme d'une chane dlimite par des espa-
ces.
Format d'utilisation :
Le paramtre <Fragment de XML> doit tre un frag-
ment de XML valide. Il doit contenir une unique
racine.
Exemple : Le code suivant permet de compter les
lments trouvs :
12.1.3 LEFT
La fonction LEFT extrait la partie gauche (c'est--
dire les premiers caractres) :
soit du contenu d'une rubrique de fichier,
soit d'une chane de caractres.
Format d'utilisation :
Exemple : Le code SQL suivant permet de lister les
dpartements des clients :
12.1.4 RIGHT
La fonction RIGHT extrait la partie droite (c'est--
dire les derniers caractres) :
soit du contenu d'une rubrique de fichier,
soit d'une chane de caractres.
Format d'utilisation :
Exemple : Le code SQL suivant permet d'extraire
les cinq derniers caractres du nom des clients :
12.1.5 SPLIT_PART
La fonction SPLIT_PART dcoupe une chane de
caractres selon le sparateur spcifi et renvoie la
nime partie de la chane.
ELT(Numro de la chane, ...
Chane1, Chane2, Chane3, ...)
SELECT ELT(1, 'ej', 'Heja', ...
'hej', 'foo')
EXTRACTVALUE(Fragment de XML,...
Expression XPATH)
SELECT EXTRACTVALUE('<a><b/> ...
</a>', 'count(/a/b)')
FROM CLIENT
WHERE CLCLEUNIK=1
LEFT(...
ChaneDeCaractres ou ...
Rubrique,NbCaractresAExtraire)
SELECT LEFT(CLIENT.CodePostal, 2)
FROM CLIENT
RIGHT(...
ChaneDeCaractres ou ...
Rubrique,NbCaractresAExtraire)
SELECT RIGHT(CLIENT.Nom, 5)
FROM CLIENT
WLangage.book Page 406 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 407
Format d'utilisation :
Exemple : Le code SQL suivant permet d'extraire
les 3 premiers mots correspondants l'adresse :
12.1.6 MID, SUBSTR et SUBSTRING
Les fonctions MID, SUBSTR et SUBSTRING
permettent :
soit d'extraire une sous-chane du contenu d'une
rubrique partir d'une position donne,
soit d'extraire une sous-chane d'une chane de
caractres partir d'une position donne.
MID
La fonction MID peut tre utilise uniquement sur
une source de donnes de type Access.
Format d'utilisation :
Exemple : Le code SQL suivant permet d'extraire
les troisime et quatrime caractres du nom des
clients :
SUBSTR
La fonction SUBSTR peut tre utilise uniquement
sur une source de donnes de type Oracle.
Format d'utilisation :
Exemple : Le code SQL suivant permet d'extraire
les troisime et quatrime caractres du nom des
clients :
SUBSTRING
La fonction SUBSTRING peut tre utilise unique-
ment sur une source de donnes de type SQL Ser-
ver.
Format d'utilisation :
Exemple : Le code SQL suivant permet d'extraire
les troisime et quatrime caractres du nom des
clients :
12.1.7 LRIM
La fonction LTRIM renvoie une chane de
caractres :
soit sans les espaces situs gauche,
soit sans une liste de caractres.
La suppression des caractres s'effectue de la
gauche vers la droite. Cette suppression est sen-
sible la casse (majuscules/minuscules). Cette
suppression s'arrte sur le premier caractre
trouv n'appartenant pas la liste spcifie.
La suppression de caractres spcifiques ne
peut pas tre ralise sur une source de don-
nes de type Access ou SQL Server.
La chane de caractres passe en paramtre la
fonction correspond :
soit au contenu d'une rubrique,
soit une chane de caractres.
Format d'utilisation :
Exemple : Le nom des clients est prcd de la civi-
lit des clients ("Mr.", "Mme." ou "Melle."). Le code
SQL suivant permet de :
supprimer la civilit de chaque nom (lettres "M",
"r", "m", "e" et "l" ainsi que le caractre point),
supprimer l'espace prcdent le nom (espace qui
SPLIT_PART(Expression initiale, ...
Dlimiteur, Numro de la partie ...
extraire)
SELECT SPLIT_PART(ADRESSE,' ', ...
1), SPLIT_PART(ADRESSE,' ',2),...
SPLIT_PART(ADRESSE,' ',3)
FROM CLIENT
WHERE CLCLEUNIK=2
MID(...
ChaneDeCaractres ou ...
Rubrique, PositionDpart,...
NbCaractresAExtraire)
SELECT MID(CLIENT.Nom, 3, 2)
FROM CLIENT
SUBSTR(...
ChaneDeCaractres ou
Rubrique,PositionDpart,...
NbCaractresAExtraire)
SELECT SUBSTR(CLIENT.Nom, 3, 2)
FROM CLIENT
SUBSTRING(ChaneDeCaractres
ou Rubrique, PositionDpart,...
NbCaractresAExtraire)
SELECT SUBSTRING(CLIENT.Nom, 3, 2)
FROM CLIENT
// Suppr. espaces situs gauche
LTRIM(ChaneDeCaractres/Rubrique)
// Suppr. liste de caractres
LTRIM(...
ChaneDeCaractres ou ...
Rubrique,CaractresASupprimer)
WLangage.book Page 407 Mardi, 23. avril 2013 1:59 13
408 Partie 7 : Gestion des fichiers de donnes
tait prsent entre la civilit et le nom).
Dans cet exemple :
12.1.8 RTRIM
La fonction RTRIM renvoie une chane de
caractres :
soit sans les espaces situs droite,
soit sans une liste de caractres.
La suppression des caractres s'effectue de la
droite vers la gauche. Cette suppression est sen-
sible la casse (majuscules/minuscules). Cette
suppression s'arrte sur le premier caractre
trouv n'appartenant pas la liste spcifie.
La suppression de caractres spcifiques ne
peut pas tre ralise sur une source de don-
nes de type Access ou SQL Server.
La chane de caractres passe en paramtre la
fonction correspond :
soit au contenu d'une rubrique,
soit une chane de caractres.
Format d'utilisation :
Exemple : Le code SQL suivant permet de suppri-
mer les caractres 'E', 'U' et 'R' situs droite du
nom des clients :
Dans cet exemple :
12.1.9 TRIM
La fonction TRIM renvoie une chane de
caractres :
soit sans les espaces situs gauche et droite.
soit sans une chane de caractres situe en
dbut et en fin de chane.
soit sans une chane de caractres situe en
dbut de chane.
soit sans une chane de caractres situe en fin
de chane.
La suppression des caractres s'effectue de la
droite vers la gauche. Cette suppression est sensi-
ble la casse (majuscule/minuscule). Cette sup-
pression s'arrte sur le premier caractre trouv
n'appartenant pas la chane spcifie.
Format d'utilisation :
12.1.10 REPLACE
La fonction REPLACE renvoie une chane de
caractres :
soit en remplaant toutes les occurrences d'un
mot prsent dans une chane par un autre mot.
soit en remplaant toutes les occurrences d'un
mot prsent dans une chane.
Le remplacement s'effectue de la droite vers la
gauche. Ce remplacement est sensible la casse
(majuscule/minuscule). Ce remplacement s'arrte
// Suppression des caractres
SELECT LTRIM(CLIENT.Nom, 'Mrmel.')
FROM CLIENT
// Suppression de l'espace
SELECT LTRIM(CLIENT.Nom)
FROM CLIENT
Si le nom du client est : La chane retourne
est :
'Melle. DUPONT' 'DUPONT'
'Mr. CIRVAL' 'CIRVAL'
'Mme. Dubois' 'Dubois'
// Suppr. espaces gauche
RTRIM(ChaneDeCaractres ou Rubri-
que)
// Suppr. liste de caractres
RTRIM(ChaneDeCaractre ou ...
Rubrique,CaractresASupprimer)
SELECT RTRIM(CLIENT.Nom, 'EUR')
FROM CLIENT
Si le nom du client est : La chane retourne
est :
'DUVALEUR' 'DUVAL'
'DRAFUREUR' 'DRAF'
'Galteur' 'Galteur'
'FOURMALTE' 'FOURMALTE'
'BENUR' 'BEN'
// Supp. espaces gauche et
// droite TRIM(Expression initiale)
// Supp. chane de caractres
// en dbut et en fin de chane
TRIM(Expression initiale, ...
Chane supprimer)
// Supp. espaces gauche et
// droite TRIM(Expression initiale)
// Supp. chane de caractres
// en dbut et en fin de chane
// TRIM(Expression initiale, ...
Chane supprimer)
// OU
// TRIM(BOTH Chane supprimer
// FROM Expression initiale)
// Supp. chane en dbut de chane
// TRIM(LEADING Chane supprimer
// FROM Expression initiale)
// Supp. chane en fin de chane
// TRIM(TRAILING Chane supprimer
// FROM Expression initiale)
WLangage.book Page 408 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 409
sur le premier caractre trouv n'appartenant pas
la chane spcifie.
Format d'utilisation :
12.1.11 REVERSE
La fonction REVERSE renvoie une chane de carac-
tres dont l'ordre des caractres est l'inverse de la
chane initiale.
Format d'utilisation :
12.1.12 TRANSLATE
La fonction TRANSLATE renvoie une chane de
caractres en remplaant tous les caractres indi-
qus par d'autres caractres. Si un caractre
remplacer n'a pas sa correspondance, ce caractre
est supprim.
Le remplacement s'effectue de la droite vers la
gauche. Ce remplacement est sensible la casse
(majuscule/minuscule).
Format d'utilisation :
12.1.13 CONCAT
La fonction CONCAT concatne plusieurs chanes
entre elles.
Format d'utilisation :
CONCAT nest pas gr par Sybase.
12.1.14 STRING_AGG
La fonction STRING_AGG permet de concatner
des chanes non nulles d'une liste de valeurs.
Format d'utilisation :
12.1.15 LPAD
La fonction LPAD renvoie une chane de taille dter-
mine. Pour atteindre la taille requise, cette chane
est complte gauche :
soit par des espaces.
soit par un caractre ou une chane donne.
Format d'utilisation :
12.1.16 REPEAT
La fonction REPEAT renvoie une chane de caract-
res constitue de la n fois la rptition de la chane
initiale.
Si n est infrieur ou gal 0, la fonction renvoie
une chane vide.
Si la chane initiale ou n sont NULL, la fonction
renvoie NULL.
Format d'utilisation :
Exemple : Le code SQL suivant permet d'extraire
les troisime et quatrime caractres du nom des
clients :
12.1.17 RPAD
La fonction RPAD renvoie une chane de taille
dtermine. Pour atteindre la taille requise, cette
chane est complte droite :
soit par des espaces.
soit par un caractre ou une chane donne.
Format d'utilisation :
// Remplacement de toutes les
// occurrences d'un mot par
// un autre
REPLACE(Expression initiale, ...
Chane remplacer, ...
Nouvelle chane)
// Suppression de toutes les
// occurrences d'un mot
REPLACE(Expression initiale, ...
Chane supprimer)
REVERSE(Chane initiale)
// Remplacement des caractres
TRANSLATE(Expression initiale, ...
Caractres remplacer, ...
Nouveaux caractres)
CONCAT(Chane1, Chane2 [, ...
, ChaneN])
STRING_AGG(chane, sparateur)
// Compltion par des espaces
//LPAD(Expression initiale,
// Longueur)
// Compltion par un caractre
// LPAD(Expression initiale,
// Caractre)
// Compltion par une chane de
// caractres
LPAD(Expression initiale, ...
Chane de caractres)
REPEAT(Chane initiale, n)
SELECT REPEAT(NOMCONTACT,14)
FROM CLIENT
WHERE CLCLEUNIK=10
// Compltion par des espaces
RPAD(Expression initiale,
Longueur)
// Compltion par un caractre
RPAD(Expression initiale,
Caractre)
WLangage.book Page 409 Mardi, 23. avril 2013 1:59 13
410 Partie 7 : Gestion des fichiers de donnes
12.1.18 SPACE
La fonction SPACE renvoie une chane constitue
de N espaces.
Format d'utilisation :
12.1.19 LOWER
La fonction LOWER convertit en minuscules :
soit le contenu d'une rubrique,
soit une chane de caractres.
La fonction LOWER ne peut pas tre utilise sur
une source de donnes de type Access.
Format d'utilisation :
Exemple : Le code SQL suivant permet de convertir
en minuscules le prnom des clients :
12.1.20 LCASE
La fonction LCASE retourne une chane avec tous
les caractres en minuscules en fonction du jeu de
caractres courant.
Format d'utilisation :
Exemple : Le code SQL suivant permet de convertir
en minuscules les villes des clients :
12.1.21 UCASE
La fonction UCASE retourne une chane avec tous
les caractres en majuscules en fonction du jeu de
caractres courant.
Format d'utilisation :
Exemple : Le code SQL suivant permet de convertir
en minuscules les villes des clients :
12.1.22 UPPER
La fonction UPPER convertit en majuscules :
soit le contenu d'une rubrique,
soit une chane de caractres.
La fonction UPPER ne peut pas tre utilise sur une
source de donnes de type Access.
Format d'utilisation :
Exemple : Le code SQL suivant permet de convertir
en majuscules les villes des clients :
12.1.23 LEN et LENGTH
Les fonctions LEN et LENGTH renvoient la taille (le
nombre de caractres) dune expression.
Cette taille comprend tous les caractres, y compris
les caractres espace et 0 binaire.
LEN
La fonction LEN peut tre utilise sur tous les types
de source de donnes, sauf les sources de don-
nes de type Oracle. Pour les sources de donnes
de type Oracle, utilisez la fonction LENGTH.
Format d'utilisation :
Exemple : Le code SQL suivant permet d'obtenir la
taille des noms des clients :
LENGTH
La fonction LENGTH peut tre utilise uniquement
sur une source de donnes de type Oracle.
Format d'utilisation :
Exemple : Le code SQL suivant permet d'obtenir la
taille des noms des clients :
12.1.24 INSTR
La fonction INSTR renvoie la position d'une chane
de caractres. Cette chane de caractres peut tre
recherche :
soit dans le contenu d'une rubrique,
// Compltion par une chane de
// caractres
RPAD(Expression initiale, ...
Chane de caractres)
SPACE(N)
LOWER(ChaneCaractres ou Rubrique)
SELECT LOWER(CLIENT.Prnom)
FROM CLIENT
LCASE(Expression initiale)
SELECT LCASE(Ville)
FROM CLIENT
UCASE(Expression initiale)
SELECT UCASE(Ville)
FROM CLIENT
UPPER(ChaneCaractres ou Rubrique)
SELECT UPPER(CLIENT.Ville)
FROM CLIENT
LEN(ChaneDeCaractres ou Rubrique)
SELECT LEN(CLIENT.Nom)
FROM CLIENT
LENGTH(...
ChaneDeCaractres ou Rubrique)
SELECT LENGTH(CLIENT.Nom)
FROM CLIENT
WLangage.book Page 410 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 411
soit dans une chane de caractres.
La fonction INSTR peut tre utilise uniquement
sur une source de donnes de type Oracle ou sup-
portant la norme SQL-92.
Format d'utilisation :
Exemple : Le code SQL suivant permet d'obtenir la
position de la premire occurrence de la lettre "T"
dans chaque nom de ville des clients :
12.1.25 FIELD
La fonction FIELD renvoie l'index de la chane
recherche dans la liste. Si la chane n'est pas trou-
ve, la fonction renvoie 0.
Format d'utilisation :
12.1.26 PATINDEX
La fonction PATINDEX renvoie la position de la pre-
mire occurrence d'une chane de caractres cor-
respondant une valeur spcifie (avec des
caractres gnriques).
Les caractres gnriques autoriss sont les
suivants :
'%' : reprsente zro, un ou plusieurs caractres.
'_' : reprsente un caractre unique.
Ces caractres gnriques peuvent tre combins.
Cette chane de caractres peut tre recherche :
soit dans le contenu d'une rubrique,
soit dans une chane de caractres.
La fonction PATINDEX peut tre utilise sur une
source de donnes de type HyperFileSQL 7 ou de
type SQL Server.
Format d'utilisation :
Exemple : Le tableau ci-dessous indique la position
de la premire occurrence trouve en fonction de
diffrentes valeurs recherches :
12.1.27 POSITION
La fonction POSITION renvoie la position d'une
chane de caractres dans une expression.
Format d'utilisation :
12.1.28 COUNT
La fonction COUNT renvoie :
le nombre d'enregistrements prsents dans un
fichier.
le nombre de valeurs non nulles d'une rubrique.
le nombre de valeurs diffrentes et non nulles
d'une rubrique
Format d'utilisation :
Exemples :
Le code SQL suivant permet d'obtenir le nombre
de produits prsents dans le fichier Produit :
Le code SQL suivant permet d'obtenir le nombre
de produits sur lesquelles un taux de TVA de
5,5 % est appliqu :
12.1.29 AVG
La fonction AVG calcule :
la moyenne d'un ensemble de valeurs non nulles.
la moyenne dun ensemble de valeurs diffrentes
et non nulles.
INSTR(...
ChaneDeCaractres ou ...
Rubrique, ChaneARechercher, ...
PositionDpart, Occurrence)
SELECT INSTR(CLIENT.Ville, 'T', 1,
1)FROM CLIENT
FIELD(Chane rechercher, ...
Chane1, Chane2, ...)
PATINDEX(ValeurARechercher, ...
ChaneDeCaractres ou Rubrique)
Valeur recherche
Nom de ville %E% %E_ %AR%
MONTPELLIER 6 10 0
PARIS 0 0 2
TARBES 5 5 2
TOULOUSE 8 0 0
VIENNE 3 0 0
POSITION(Chane rechercher, ...
Expression initiale)
POSITION(Chane rechercher, ...
Expression initiale, ...
Position de dpart)
COUNT(*)
COUNT(Rubrique)
COUNT(DISTINCT Rubrique)
SELECT COUNT(*)
FROM PRODUIT
SELECT COUNT(PRODUIT.TauxTVA)
FROM PRODUIT
WHERE PRODUIT.TauxTVA = '5.5'
WLangage.book Page 411 Mardi, 23. avril 2013 1:59 13
412 Partie 7 : Gestion des fichiers de donnes
Format d'utilisation :
Exemple : Le code SQL suivant permet d'obtenir le
salaire moyen des employs :
12.1.30 MAX
La fonction MAX renvoie la plus grande valeur des
valeurs prsentes dans une rubrique pour tous les
enregistrements slectionns dans le fichier.
La fonction MAX utilise dans une requte sans
regroupement doit renvoyer un et un seul enregis-
trement. Si la requte contient des regroupements,
il y aura un enregistrement par regroupement.
Si la source de donnes contient des enregistre-
ments, l'enregistrement retourn par la requte
contiendra la valeur maximale.
Si la source de donnes ne contient pas d'enregis-
trements, la valeur du MAX dans l'enregistrement
retourn est NULL.
Format d'utilisation :
Exemple : Le code SQL suivant permet d'obtenir le
salaire maximal des employs :
12.1.31 MIN
La fonction MIN renvoie la plus petite valeur des
valeurs prsentes dans une rubrique pour tous les
enregistrements slectionns dans le fichier.
Format d'utilisation :
Exemple : Le code SQL suivant permet d'obtenir le
salaire minimal des employs :
12.1.32 SUM
La fonction SUM renvoie :
soit la somme totale des valeurs non nulles pr-
sentes dans une rubrique pour tous les enregis-
trements slectionns dans le fichier.
soit la somme totale des valeurs diffrentes et
non nulles prsentes dans une rubrique pour
tous les enregistrements slectionns dans le
fichier.
Format d'utilisation :
Exemple : Le code SQL suivant permet d'obtenir la
somme totale des salaires :
Remarque : La rubrique manipule par la fonction
SUM ne doit pas correspondre au rsultat d'une
opration. Ainsi, la syntaxe suivante gnre une
erreur :
Cette syntaxe doit tre remplace par la syntaxe
suivante :
12.1.33 BOTTOM
La fonction BOTTOM renvoie uniquement les n der-
niers enregistrements du rsultat d'une requte.
La fonction BOTTOM peut tre utilise uniquement
sur une source de donnes de type HyperFileSQL.
Format d'utilisation :
Exemple : Le code SQL suivant permet de lister les
10 plus mauvais clients :
Remarque : Il est conseill d'utiliser la fonction
BOTTOM sur une requte trie. Dans le cas con-
traire, les enregistrements retourns par la fonction
BOTTOM seront slectionns selon leur numro
d'enregistrement.
12.1.34 TOP
La fonction TOP renvoie uniquement les n premiers
enregistrements du rsultat d'une requte.
AVG(Rubrique)
AVG(DISTINCT Rubrique)
SELECT AVG(EMPLOYE.Salaire)
FROM EMPLOYE
MAX(Rubrique)
MAX(DISTINCT Rubrique)
SELECT MAX(EMPLOYE.Salaire)
FROM EMPLOYE
MIN(Rubrique)
SELECT MIN(EMPLOYE.Salaire)
FROM EMPLOYE
SUM(Rubrique)
SUM(DISTINCT Rubrique)
SELECT SUM(EMPLOYE.Salaire)
FROM EMPLOYE
SELECT (A*B) AS C, SUM(C)
FROM MONFICHIER
SELECT (A*B) AS C, SUM(A*B)
FROM MONFICHIER
BOTTOM NbDernierEnregSlectionn
SELECT BOTTOM 10 SUM(COM-
MANDE.TotalTTC) AS TotalTTC,
CLIENT.NomClient
FROM CLIENT, COMMANDE
WHERE CLIENT.NumClient
=COMMANDE.NumClient
GROUP BY NomClient
ORDER BY TotalTTC DESC
WLangage.book Page 412 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 413
La fonction TOP ne peut pas tre utilise sur une
source de donnes de type Oracle.
Format d'utilisation :
Exemple : Le code SQL suivant permet de lister les
10 meilleurs clients :
Remarque : Il est conseill d'utiliser la fonction TOP
sur une requte trie. Dans le cas contraire, les
enregistrements retourns par la fonction TOP
seront slectionns selon leur numro d'enregistre-
ment.
12.1.35 ASCII
La fonction ASCII renvoie le code ASCII :
soit d'un caractre.
soit du premier caractre d'une chane.
Si le caractre ou la chane de caractres spcifie
correspond une chane vide (""), la fonction ASCII
renvoie 0.
Format d'utilisation :
12.1.36 SOUNDEX, SOUNDEX LIKE
La fonction SOUNDEX renvoie la reprsentation
phontique d'une chane de caractres (bas sur
un algorithme anglo-saxon).
Format d'utilisation :
Remarque : la fonction SOUNDEX utilise sur plu-
sieurs bases diffrentes (Hyper File, Oracle, MySQL,
) peut renvoyer des rsultats diffrents selon la
base utilise.
SOUNDEX LIKE n'est pas gr par Oracle, par
MySQL, par Progress ou par Informix. SOUNDEX
n'est pas gr par Informix.
12.1.37 SOUNDEX2, SOUNDEX2 LIKE
La fonction SOUNDEX2 renvoie la reprsentation
phontique d'une chane de caractres (bas sur
un algorithme proche du franais).
Format d'utilisation :
SOUNDEX2 et SOUNDEX2 LIKE ne sont pas grs
par Oracle, SQL Server, MySQL, Progress, Informix
ou par DB2.
12.1.38 ADD_MONTHS
La fonction ADD_MONTHS permet d'ajouter plu-
sieurs mois une date spcifie.
Format d'utilisation :
ADD_MONTHS n'est pas gr par SQL Server, par
MySQL, par Informix, par DB2 ou par Sybase.
12.1.39 LAST_DAY
La fonction LAST_DAY permet d'obtenir la date du
dernier jour du mois spcifi.
Format d'utilisation :
LAST_DAY n'est pas gr par Informix, par DB2 ou
par Sybase.
12.1.40 MONTHS_BETWEEN
La fonction MONTHS_BETWEEN permet d'obtenir le
nombre de mois entre deux dates spcifies.
Format d'utilisation :
MONTHS_BETWEEN n'est pas gr par MySQL, par
Informix, par DB2 ou par Sybase.
12.1.41 NEW_TIME
La fonction NEW_TIME permet d'obtenir une date
aprs conversion de fuseau horaire.
Format d'utilisation :
NEW_TIME n'est pas gr par SQL Server, par
MySQL, par Progress, par Informix, par DB2 ou par
Sybase.
TOP NbPremierEnregSlectionn
SELECT TOP 10 SUM(COM-
MANDE.TotalTTC) AS TotalTTC,
CLIENT.NomClient
FROM CLIENT, COMMANDE
WHERE CLIENT.NumClient
=COMMANDE.NumClient
GROUP BY NomClient
ORDER BY TotalTTC DESC
// Code ASCII d'un caractre
ASCII(Caractre)
// Code ASCII du premier caractre
// d'une chane
ASCII(Chane de caractres)
// Code ASCII d'un caractre
ASCII(Caractre)
// Code ASCII du premier caractre
// d'une chane
ASCII(Chane de caractres)
SOUNDEX2(Chane)
ADD_MONTHS(Date,Nombre de mois)
LAST_DAY(Date)
MONTHS_BETWEEN(Date1, Date2)
NEW_TIME(Date, Fuseau Horaire 1,
Fuseau Horaire 2)
WLangage.book Page 413 Mardi, 23. avril 2013 1:59 13
414 Partie 7 : Gestion des fichiers de donnes
12.1.42 NEXT_DAY
La fonction NEXT_DAY permet d'obtenir le premier
jour de la semaine suivant la date spcifie ou le
jour spcifi.
Format d'utilisation :
NEXT_DAY n'est pas gr par SQL Server, MySQL,
par Progress, par Informix, par DB2 ou par Sybase.
12.1.43 ROUND
La fonction ROUND permet d'arrondir la date au for-
mat spcifi.
Format d'utilisation :
ROUND n'est pas gr par Progress, par DB2, et par
Sybase.
12.1.44 SYSDATE
La fonction SYSDATE permet d'obtenir la date et
l'heure courante.
Format d'utilisation :
SYSDATE n'est pas gr par Informix et par Sybase.
12.1.45 TRUNC
La fonction TRUNC permet de tronquer la date au
format spcifi.
Format d'utilisation :
TRUNC n'est pas gr par SQL Server, par MySQL,
par Progress, par DB2 et par Sybase.
12.1.46 COALESCE
La fonction COALESCE permet de trouver la pre-
mire expression non nulle parmi ses arguments.
Format d'utilisation :
COALESCE n'est pas gr par Progress ou par Infor-
mix.
12.1.47 GREATEST
La fonction GREATEST renvoie la valeur la plus
grande des lments passs en paramtre;
Format d'utilisation :
12.1.48 LEAST
La fonction LEAST renvoie la valeur la plus petite
des lments passs en paramtre;
Format d'utilisation :
12.1.49 NVL, IF_NULL, IS_NULL
La fonction NVL permet de remplacer les valeurs
nulles d'une colonne par une valeur de substitu-
tion. Les fonctions IS_NULL et IF_NULL sont identi-
ques.
IS_NULL est utilis en SQL Server et IF_NULL avec
les bases MySQL ou Progress.
Format d'utilisation :
12.1.50 DECODE
La fonction DECODE permet d'obtenir le fonctionne-
ment d'une instruction SI .. ALORS .. SINON.
Format d'utilisation :
DECODE n'est pas gr par SQL Server, par MySQL,
par Progress, par Informix, par DB2 et par Sybase.
12.1.51 CASE
La fonction CASE permet d'obtenir le fonctionne-
ment d'une instruction SI .. ALORS .. SINON;
Format d'utilisation :
Ou :
Exemple :
NEXT_DAY(Date, Jour)
ROUND(Date, Format)
SYSDATE
TRUNC(Date, Format)
COALESCE(Param1, Param2, ...)
GREATEST(Param1, Param2, ...)
LEAST(Param1, Param2, ...)
NVL(Nom Colonne, ...
Valeur de substitution)
DECODE(Nom_Colonne, Valeur
compare 1, Valeur retourne 1,
[Valeur compare 2, Valeur
retourne 2][, Valeur par dfaut])
CASE Nom_Colonne WHEN Valeur ...
compare 1 THEN Valeur ...
retourne 1 [WHEN Valeur ...
compare 2 THEN Valeur ...
retourne 2][ELSE Valeur ...
retourne par dfaut] END
CASE WHEN Condition 1 THEN ...
Valeur retourne 1 [WHEN ...
Condition 2 THEN Valeur ...
retourne 2][ELSE Valeur ...
retourne par dfaut] END
SELECT rubInt, CASE rubInt ...
WHEN 3 THEN 'trois' WHEN 4 ...
THEN 'quatre' ELSE 'autre' END
WLangage.book Page 414 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 415
Ou :
12.1.52 MATCH AGAINST
La fonction MATCH AGAINST permet d'obtenir
l'indice de pertinence de l'enregistrement lors
d'une recherche full-text.
Format d'utilisation :
Ou :
Liste des rubriques correspond la liste des
rubriques de l'index spares par des virgules
(l'ordre des rubriques n'est pas important).
Valeur correspond la valeur recherche dans
les diffrentes rubriques. Ce paramtre peut cor-
respondre une valeur littrale ou un nom de
paramtre. La valeur de recherche peut contenir
les lments suivants :
[ALL] permet de forcer le remplacement des espa-
ces par des "+" dans la valeur recherche.
Exemple : Dans cet exemple, SAI_Rechercher est
un champ de saisie et IdUserConnect est une
variable.
Pour plus de dtails sur la recherche full-text, con-
sultez laide en ligne.
SELECT rubInt, CASE WHEN ...
rubInt=3 THEN 'trois' WHEN ...
rubInt=4 THEN 'quatre' ELSE ...
'autre' END
MATCH(Liste des rubriques) ...
AGAINST [ALL] Valeur
Elment Signification
Un mot tout seul Le mot indiqu sera recher-
ch. La pertinence sera aug-
mente si le texte contient ce
mot.
Exemple : "WinDev" recher-
che le mot "WinDev".
Deux mots spa-
rs par un espace
Recherche l'un ou l'autre des
mots.
Exemple : "WinDev WebDev"
recherche les textes conte-
nant soit "WinDev" soit "Web-
Dev".
Un mot prcd
du signe "+"
Le mot indiqu est obliga-
toire.
Exemple : "+WinDev" recher-
che les textes contenant obli-
gatoirement "WinDev".
Un mot prcd
du signe "-"
Le mot indiqu ne doit pas
tre prsent dans le texte.
Exemple : "-Index" recherche
les textes ne contenant pas
"Index".
Un mot prcd
du signe "~"
Le mot indiqu ne doit pas
tre prsent dans le texte.
Exemple : "-Index" recherche
les textes ne contenant pas
"Index".
Un ou plusieurs
mots entours de
guillemets
Les mots indiqus sont
recherchs groups et dans
l'ordre.
Attention : si l'option "Igno-
rer les mots infrieurs " est
diffrente de 0, les mots
entre les guillemets inf-
rieurs la taille prcise ne
seront pas recherchs.
Un mot suivi du
signe "*"
La recherche est une recher-
che du type "Commence par"
le mot indiqu.
MaRequte est une chane =
[SELECT * FROM Contact
WHERE MATCH(Contact.Nom,
Contact.Prenom, Contact.
CommentaireHTML,
Contact.CommentaireTexteBrut,
Contact.Commentaires,
Contact.Telephone, Contact.Bureau,
Contact.Portable, Contact.Mail,
Contact.MSN, Cotact.Site_internet,
Contact.Pays, Contact.NumFax,
Contact.Ville)
AGAINST ('
]
MaRequte = MaRequte +
SAI_Rechercher + [
')
AND Contact.IDUtilisateur =
]
MaRequte = MaRequte +
IdUserConnect + [
ORDER BY Nom DESC
]
HExcuteRequteSQL(REQ_RECH,
hRequteDfaut, MaRequte)
POUR TOUT REQ_RECH
TableAjouteLigne(Table_Contact_
par_catgorie, ...
REQ_RECH.idcontact,REQ_RECH.
IDCategorie, IdUserConnect, ...
REQ_RECH.Nom, REQ_RECH.Prenom)
FIN
CAS ERREUR:
Erreur(HErreurInfo())
WLangage.book Page 415 Mardi, 23. avril 2013 1:59 13
416 Partie 7 : Gestion des fichiers de donnes
12.1.53 MD5
La fonction MD5 calcule la somme de vrification
MD5 de la chane passe en paramtre. La valeur
retourne est un entier hexadcimal de 32 caract-
res qui peut tre utilis par exemple comme cl de
hachage.
Format d'utilisation :
12.1.54 SHA et SHA1
Les fonctions SHA et SHA1 calculent la somme de
vrification SHA1 160 bits de la chane passe en
paramtres selon la norme RFC 3174 (Secure Hash
Algorithm). La valeur retourne est une chane
hexadcimale de 40 caractres ou bien NULL si
l'argument est NULL. Une des possibilits d'utilisa-
tion de cette fonction est le hachage de cl
Format d'utilisation :
MD5(Chane)
SHA(Chane)
SHA1(Chane)
WLangage.book Page 416 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 417
13. HYPERFILESQL CLIENT/SERVEUR
13.1 Prsentation
WinDev permet de crer des applications accdant
des bases de donnes HyperFileSQL Client/Ser-
veur.
Une application HyperFileSQL Client/Serveur con-
siste excuter l'application sur diffrents postes
utilisateur (appels machines clientes) et dpor-
ter 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
fiables, ainsi qu'une maintenance de la base de
donnes facilite.
WinDev permet de :
crer entirement une application HyperFileSQL
Client/Serveur.
modifier une application WinDev existante en
une application HyperFileSQL Client/Serveur.
13.2 Mettre en place une application Client/Serveur
Pour mettre en place une application HyperFileSQL
Client/Serveur, les tapes sont les suivantes :
1. Paramtrage du serveur utilis.
2. Connexion des postes client au serveur.
3. Paramtrage des fichiers de donnes sur le ser-
veur.
4. Utilisation de l'application.
Pour plus de dtails sur HyperFileSQL Client/Ser-
veur, consultez laide en ligne.
WLangage.book Page 417 Mardi, 23. avril 2013 1:59 13
418 Partie 7 : Gestion des fichiers de donnes
14. FONCTIONS HYPERFILESQL CLIENT/SER-
VEUR
Les fonctions spcifiques la gestion du moteur HyperFileSQL Client/Serveur sont les suivantes :
HActiveTriggerServeur R-active un trigger serveur prcdemment dsactiv par la fonction HD-
sactiveTriggerServeur.
HAjouteGroupe Ajoute un groupe d'utilisateurs
HAjouteLiaison Ajoute une rgle d'intgrit entre deux fichiers sur le serveur
HAjouteOptimisationPlanifie Ajoute une tche d'optimisation des fichiers de donnes HyperFileSQL
Client/Serveur.
HAjouteSauvegardePlanifie Ajoute une planification de sauvegarde complte et diffrentielle sur le ser-
veur dfini par la connexion
HAjouteTche Ajoute une tche planifie sur le serveur dfini par la connexion.
HAjouteUtilisateur Ajoute un utilisateur une base de donnes
HAnnuleSauvegarde Annule une sauvegarde en cours.
HArrteServeur Arrte un serveur
HChangeMotDePasse Change le mot de passe d'un fichier de donnes HyperFileSQL Client/Ser-
veur
HChargeParamtre Lit un paramtre prcdemment sauvegard partir d'une procdure stoc-
ke grce la fonction HSauveParamtre.
HClusterAjouteNoeud Active un noeud dans un cluster HyperFileSQL.
HClusterArrte Suspend le fonctionnement d'un cluster HyperFileSQL
HClusterDmarre Dmarre un cluster HyperFileSQL.
HClusterEtat Renvoie l'tat d'un cluster HyperFileSQL en interrogeant son coordinateur
HClusterIgnoreSynchro Dsigne un noeud du cluster HyperFileSQL comme source de donnes pour
raliser la synchronisation du cluster.
HClusterInfoNoeud Renvoie l'tat de chaque noeud du cluster en interrogeant le coordinateur
HClusterParamtre Lit et modifie les paramtres d'un cluster HyperFileSQL
HClusterSupprimeNoeud Dsactive un noeud dans un cluster HyperFileSQL.
HCopieFichier Effectue une copie d'un fichier HyperFileSQL
HCreTriggerServeur Ajoute ou modifie un trigger serveur sur le serveur HyperFileSQL.
HDconnecteClient Affiche un message sur le(s) poste(s) Client, et dconnecte l'application
HDcritTriggerServeur Ajoute ou modifie un trigger serveur.
HDmarreServeur Permet de dmarrer un serveur (utilise MantaManager)
HDsactiveTriggerServeur Dsactive un trigger Serveur Hyper File Client / Serveur. Ce trigger pourra
ensuite tre ractiv grce la fonction HActiveTriggerServeur.
HDtruitTriggerServeur Dtruit un trigger serveur. Ce trigger serveur ne sera plus utilisable.
HEnvoieMessageVersClient Affiche un message sur le(s) poste(s) Client
HEtatServeur Permet de connatre l'tat d'un serveur
HExcuteProcdure Excute une procdure ou fonction stocke.
HExcuteSauvegardePlanifie Force le dclenchement d'une sauvegarde planifie.
HFinInterditAccsBaseDeDon-
nes
R-autorise l'accs une ou plusieurs bases de donnes accessibles par
une connexion
HGreCache Permet de paramtrer la gestion des caches dans le moteur HyperFileSQL
Client/Serveur
HGreServeur Permet de modifier certains paramtres du serveur.
WLangage.book Page 418 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 419
HGreTche Active ou dsactive une tche planifie d'un serveur Hyper File Client / Ser-
veur. Cette fonction permet galement de connatre l'tat d'une tche plani-
fie.
HInfoBlocage Renvoie des informations sur le blocage d'un fichier, d'un enregistrement,
ou de tous les enregistrements d'un fichier
HInfoDroitBaseDeDonnes Permet de connatre les droits accords sur une base de donnes dfinis
pour un utilisateur ou un groupe
HInfoDroitFichier Permet de connatre les droits accords sur un fichier de donnes pour un
utilisateur ou un groupe
HInfoDroitServeur Permet de connatre les droits accords sur un serveur un utilisateur ou
un groupe
HInfoFichier Renvoie les caractristiques d'un fichier prsent sur un serveur HyperFi-
leSQL
HInfoGroupe Renvoie des informations sur le groupe d'utilisateurs spcifi
HInfoLog Renvoie des informations sur les logs du serveur.
HInfoPropritBaseDeDonnes Permet de connatre les proprits d'une base de donnes situe sur un
serveur HyperFileSQL
HInfoPropritFichier Permet de connatre les proprits d'un fichier de donnes situ sur un ser-
veur HyperFileSQL
HInfoPropritServeur Permet de connatre les proprits d'un serveur HyperFileSQL
HInfoSauvegarde Renvoie des informations sur une ou plusieurs sauvegardes effectues sur
un serveur Hyper File Client / Serveur.
HInfoServeur Renvoie l'information spcifie propos du poste serveur
HInfoTche Renvoie les caractristiques d'une tche planifie dans une variable avan-
ce de type hTchePlanifie.
HInfoUtilisateur Met jour les variables de gestion des utilisateurs avec les informations
concernant l'utilisateur spcifi
HInterditAccsBaseDeDonnes Interdit tous les accs une base de donnes, ou bien aux bases de don-
nes accessibles par une connexion
HListeBaseDeDonnes Liste les bases de donnes Client/Serveur associes une connexion
HListeElmentStock Renvoie la liste des lments stocks sur un serveur Hyper File (collections
de procdures, procdures stockes ou requtes).
HListeGroupe Renvoie la liste des groupes d'utilisateurs dfinis pour une connexion
HListeOptimisationPlanifie Liste les tches d'optimisation planifies des fichiers de donnes HyperFi-
leSQL Client/Serveur pour une connexion
HListeParamtre Renvoie la liste des paramtres sauvegards partir des procdures stoc-
kes sur le serveur.
HListeSauvegardePlanifie Liste les sauvegardes compltes et diffrentielles qui ont t planifies sur
un serveur HyperFileSQL Client/Serveur.
HListeServeur Liste les serveurs HyperFileSQL installs sur une machine
HListeTche Liste les tches planifies d'un serveur.
HListeTriggerServeur Liste les diffrents triggers disponibles sur une connexion ou sur un des
fichiers de la connexion.
HListeUtilisateur Renvoie la liste des utilisateurs dfinis pour une connexion
HListeUtilisateurConnect Renvoie la liste les utilisateurs actuellement connects un ou plusieurs
fichiers manipuls par un une connexion Client/serveur
HMiseAJourCollection Cre ou met jour une collection de procdures sur un serveur Hyper File
HMiseAJourRequte Cre ou met jour une requte sur un serveur Hyper File
HModifieDroitBaseDeDonnes Modifie les droits donns un utilisateur ou un groupe pour une base de
donnes HyperFileSQL Client/Serveur
WLangage.book Page 419 Mardi, 23. avril 2013 1:59 13
420 Partie 7 : Gestion des fichiers de donnes
HModifieDroitFichier Modifie les droits accords sur un fichier de donnes HyperFileSQL Client/
Serveur pour un utilisateur ou un groupe
HModifieDroitServeur Modifie les droits accords sur un serveur HyperFileSQL pour un utilisateur
ou un groupe
HModifieGroupe Modifie les informations du groupe en fonction des lments prsents dans
les variables de gestion de groupe correspondantes
HModifieOptimisationPlanifie Modifie une tche d'optimisation planifie sur le serveur HyperFileSQL
dfini par la connexion. Cette tche est prsente dans une variable avance
de type hOptimisationPlanifie.
HModifiePropritBaseDeDon-
nes
Modifie les proprits d'une base de donnes situe sur un serveur Hyper-
FileSQL
HModifiePropritFichier Modifie les proprits d'un fichier HyperFileSQL situ sur un serveur
HModifiePropritServeur Modifie les proprits d'un serveur HyperFileSQL
HModifieSauvegardePlanifie Modifie une planification de sauvegarde complte
HModifieTche Modifie une tche planifie sur le serveur dfinie par la connexion. Cette
tche est prsente dans une variable avance de type hTchePlanifie.
HModifieUtilisateur Modifie les informations d'un utilisateur en fonction des lments prsents
dans les variables de gestion des utilisateurs correspondantes
HPriorit Permet de connatre ou de modifier la priorit de l'application appelante.
HPrioritClient Modifie la priorit d'une application cliente
HPurgeRepTravail Purge et dtruit le rpertoire temporaire prcdemment cr lors de l'excu-
tion de la fonction HRepTravailServeur
HQualitConnexion Renvoie l'indice de qualit de la connexion : plus l'indice est lev et plus la
connexion est rapide
HRAZClient Initialise la structure de gestion des postes Client (structure HClient)
HRAZGroupe Initialise les variables de gestion des groupes avec les valeurs par dfaut
HRAZUtilisateur Initialise les variables de gestion des utilisateurs avec les valeurs par
dfaut
HReconnecte Effectue une reconnexion au serveur pour toutes les connexions interrom-
pues.
HRcupreLog Rcupre dans un fichier les logs du serveur raliss entre deux dates don-
nes
HRepTravailServeur Renvoie le chemin d'un rpertoire temporaire sur le serveur. Ce rpertoire
est automatiquement cr sur le serveur. Les procdures stockes excu-
tes sur le serveur auront les droits d'criture dans ce rpertoire. Ce rper-
toire sera automatiquement vid et dtruit lors de la dconnexion du client.
HRestaureSauvegarde Permet de restaurer une sauvegarde effectue grce la fonction HSauve-
garde (ou via le Centre de Contrle Hyper File).
HSauvegarde Ralise la sauvegarde du contenu d'un serveur Hyper File : toutes les bases
du serveur, plusieurs ou une seule base de donns, un ou plusieurs
fichiers. Cette sauvegarde peut tre ralise alors quune ou plusieurs
bases de donnes sont en cours d'utilisation.
HSauveParamtre Sauve une valeur persistante partir d'une procdure stocke. Cette valeur
pourra tre lue grce la fonction HChargeParamtre.
HSimuleRseau Simule le fonctionnement de HyperFileSQL Client/Serveur sur un rseau
ADSL ou 3G
HSupprimeBaseDeDonnes Supprime une base de donnes prsente sur un serveur HyperFileSQL
HSupprimeCollection Supprime une collection de procdures stockes d'un serveur Hyper File.
HSupprimeFichier Supprime les fichiers HyperFileSQL (fichier .fic, .ndx et .mmo s'ils existent)
sur le serveur
HSupprimeGroupe Supprime un groupe d'utilisateurs associ une connexion, sur le serveur
HSupprimeLiaison Supprime une rgle d'intgrit entre deux fichiers sur le serveur
WLangage.book Page 420 Mardi, 23. avril 2013 1:59 13
Partie 7 : Gestion des fichiers de donnes 421
HSupprimeOptimisationPlani-
fie
Supprime une tche d'optimisation planifie de fichiers de donnes Hyper-
FileSQL Client/Serveur
HSupprimeParamtre Supprime un paramtre prcdemment sauv avec la fonction HSauvePa-
ramtre.
HSupprimeRpertoire Supprime un rpertoire prsent dans une base de donnes HyperFileSQL
Client/Serveur
HSupprimeRequte Supprime une requte d'un serveur Hyper File.
HSupprimeSauvegarde Supprime une sauvegarde prcdemment effectue avec la fonction HSau-
vegarde. La sauvegarde est supprime physiquement du disque.
HSupprimeSauvegardePlani-
fie
Supprime une planification de sauvegarde complte et/ou diffrentielle sur
un serveur HyperFileSQL Client/Serveur
HSupprimeTche Supprime une tche planifie d'un serveur Hyper File Client / Serveur.
HSupprimeUtilisateur Supprime un utilisateur associ une connexion sur le serveur
HSurAppelServeur Personnalise la gestion de l'affichage d'un message sur le poste client, et la
gestion de la dconnexion d'un poste client
HTransactionListe Liste les transactions en cours ou interrompues sur le serveur de la con-
nexion spcifie
Pour plus de dtails sur ces fonctions, consultez laide en ligne.
Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev
Mobile), consultez laide en ligne.
WLangage.book Page 421 Mardi, 23. avril 2013 1:59 13
422 Partie 7 : Gestion des fichiers de donnes
WLangage.book Page 422 Mardi, 23. avril 2013 1:59 13
Index 423
Symbols
.JNL 356
.Net 316
Assemblage 316
.REP 348
A
Acclrer traitements 363
Accs aux bases de donnes tierces 392
Accs distant
Fichier HyperFileSQL 390
ADD_MONTHS 413
Aide
Code 32
AJAX 222
Alias de Fichier 339
Appels entrants 271
Appels sortants 273
Archive 200
Fonctions ZIP 202
Argument de recherche 325
Assemblage (.NET) 316
Assigner fichier 347
Assistant de code 31
AVG 411
B
Back (Gestion) 125
Back Office 390
Base de donnes 392
Tierce 392
Binaire
Fonctions 153
Mmos binaires 346
Blocage 371
Enregistrement 372
Fichier HyperFileSQL 371
Bote de dialogue 128
Fonctions 132
Multilangue 130
BOTTOM 412
Boucle (Instruction) 76
Bouton de regroupement 30
Buffer (Variable) 42
Type Buffer 42
C
Caractre (Variable) 41
CD (graver) 204
Certificat SSL 235
Chane (Variable) 41
Chane ASCIIZ 41
Chane de caractres 155
Fonctions 156
Manipulation 155
Chane fixe sur 41
Chane Pascal sur 41
Champ
Fonctions 137
Proprits 137
Clavier
Traitements associs 33
Cl 324
Cl compose 326
Lecture selon cl 329
Type de cl 324
Cl compose 324, 326
Cl de parcours 330
Cl doublon 324, 331
Cl numrique 326
Cl texte 325
Cl unique 324, 343
Client
HyperFileSQL Client/Serveur 417
Client/Serveur 417
COALESCE 414
Code
Aide 32
Assistant 31
Compltion automatique 31
Couleur 31
Historique 32
Indentation automatique 32
Points darrt 33
Saisie assiste 31
Traduction des messages 33
Traitements spcifiques 33
Vrification 32
Collection de procdures 99
Communication 243
E-mails 245
Fax 278
Fichier XML 312
FTP / RPC WinDev 282
WLangage.book Page 423 Mardi, 23. avril 2013 1:59 13
424 Index
Page HTML 281
Serveur de WebServices XML 306
Serveur FTP 285
SOAP 302
Socket 287
Tlphonie 271
Thread 294
Compltion automatique 31
CONCAT 409
Constante 46
Continuer (Instruction) 87
Contrle de lintgrit 343
Cookies 216
Couleur
Code 31
COUNT 411
Critre de recherche 325
Cryptage fichiers HyperFileSQL 342
CTI 271
D
Date
Fonctions 159
Date (Variable) 42
Type Date 42
Type DateHeure 43
Type Dure 43
Type Heure 43
DateHeure (Variable) 43
Dates et heures 159
DDE
Fonctions 193
Dead lock 372
DECODE 414
Dplacement dans un fichier 333
Description
de fichier (Variable) 57
De liaison (Variable) 58
De rubrique (Variable) 59
Dialogue (botes de dialogue) 128
Document XML
Fonctions 314
Doublon 324, 331
Doublons 377
Downpload 215
Drag and Drop 133
Automatique 133
Depuis lexplorateur 135
Fonctions 136
Programm 134
Driver ODBC sur HyperFileSQL 364, 365
Dure (Variable) 43
E
Ecrire un e-mail 251
E-mail 245
Ecrire 251
Fonctions 251
POP 3 et SMTP 246
Simple MAPI 248
Email
Mise jour des fichier HyperFileSQL 390
Enregistrement 328
Ajouter 332
Charg en mmoire 330
Ecrire 328
Lire 328
Modifier 332
Point 328, 330
Rechercher 329
Supprimer 332
Entier (Variable) 40
Envoyer des fax 278
Erreur
Gestion assiste 376
Gestion des exceptions 105
Etreinte mortelle 372
Evnement Windows (fonctions) 187
Excel 199
Fonctions 199
Exception (Mcanisme) 105
Excutable
Fonctions 192
Explorateur (Drag and Drop) 135
Externe (Mots rservs) 90
F
Fax 278
Application denvoi de fax 279
Fonctions 280
Serveur de fax 278
Fentre
Fonctions 119
Proprits 137
Fentre MDI (fonctions) 121
Fentre popup
MonChampPopup 93
WLangage.book Page 424 Mardi, 23. avril 2013 1:59 13
Index 425
Fichier
Zip 200
Fichier archive (fonctions) 202
Fichier de rplication 387, 391
Fichier HyperFileSQL
Accs distant (RPC) 390
Alias 339
Assigner 347
Blocage 371
Cl 343
Crer 323
Fermer 323
Identifiant 325, 343
Journal 356
Lecture selon cl 329
Mmos 346
Mise jour par email 390
Nom logique 323
Nom long 323, 348
Optimisation 363
Ouvrir 323
Parcours 330
Parcours selon un filtre 331
Positionnement 333
Protection 342
Restauration 359
Sauvegarde 359
Taille suprieure 2 Go 324
Variable 328
Vue 381
Fichier journal 356
Fichier mmo 346
Fichier temporaire 362
Fichier xBase 334
Fichier XLS 199
Fichier XML 312
Fonctions 314
Fichiers externes
Fonctions 168
Manipulation de fichiers 167
Manipulation des disques et de rpertoires
168
Manipulation du contenu 167
Prsentation 167
Filtre 331
Finances (fonctions) 154
Fonction
Archive 202
Binaire 153
Bote de dialogue 132
Chane de caractres 156
Champs dune fentre 137
Date 159
DDE 193
Drag and drop 136
E-mail 251
Evnement Windows 187
Excutable 192
Fax 280
Fentre 119
Fichiers externes 168
Finances 154
Fonctions diverses 188
FTP 286
Graphe 164
Gravure 205
HTTP 281
HyperFileSQL 393
HyperFileSQL Client/Serveur 418
Impression 177
Java 188
LDAP 270
Matrice 153
MCI 183
MDI 121
Menu 121, 124
Messages 132
Net 284
Options de menu 121, 124
Page 123
Ports srie et parallle 181
Presse-papiers 180, 181
Projet 195
Registre 180
Rseau 194
Service 184
SOAP 305
Socket 291
Souris 181
SQL 405
Statistique 154
Surcharger une fonction WLangage 102
Systme 185
Tlphonie 274
Thread 301
Twain 182
USB 182, 183
Windows 186
XLS 199
XML 314
WLangage.book Page 425 Mardi, 23. avril 2013 1:59 13
426 Index
ZIP 202
Zone mmoire 166
Fonctions
SNMP 194
Framework 316
Front Office 390
FTP 285
FTP (fonctions) 286
FTP / RPC WinDev 282
G
Gnrer un Webservice XML 308
Gestion assiste des erreurs 376
Goto (Instruction) 77
Graphe
3 dimensions 162
Graphes 161
Boursier 162
Courbe 162
Cration 163
Exemples 164
Fonctions 164
Histogramme 161
Nuage de points 162
Prsentation 161
Secteur 161
Types 161
Valeurs par dfaut 163
Gravage 204
Graver 204
Fonctions 205
Guide 32
H
Heure
Type DateHeure 43
Type Dure 43
Type Heure 43
Historique du code 32
HTTP (fonctions) 281
HyperFileSQL
Client/Serveur 417
Driver ODBC 364, 365
Fonctions 393
Fonctions Client/Serveur 418
Gestion de laccs distant (RPC) 390
Gestion du NULL 341
Mise jour par email 390
Proprits 400
Rplication 387, 391
SQL 367
Triggers 385
Vue 381
I
Identifiant 325
Identifiant automatique 343
IF_NULL 414
Importer un Webservice XML 306
Impression 174
Dessins 176
Fonctions 177
Images 176
Paramtres 174
Polices 175
Prsentation 174
Principes 174
Texte 176
Indentation automatique (code) 32
Index xBase 334
INSTR 410
Instruction 76
Boucle 76
Compose 76
Continuer 87
Goto 77
Pour 77
Pour tous (parcours de chanes) 80
Pour tous (parcours de champs) 81
Pour tous (parcours de fichiers) 78
Pour tous (parcours de tableaux) 82, 83
Pour tout (parcours de chanes) 80
Pour tout (parcours de champs) 81
Pour tout (parcours de fichiers) 78
Pour tout (parcours de tableaux) 82, 83
Renvoyer 88
Retour 87
Selon 84
Si 85
Sortir 88
Intgrit rfrentielle 343, 344
Inter blocage 372
Internaute
Cookies 216
IS_NULL 414
WLangage.book Page 426 Mardi, 23. avril 2013 1:59 13
Index 427
J
J++ 364
Java (fonctions) 188
JDBC 364
Journal 356
Programmation 359
L
Langage
SQL 367
LAST_DAY 413
LDAP 270
LEFT 406
LEN 410
LENGTH 410
Liaison
Types de liaisons 344
LOWER 410
LPAD 409
LTRIM 407
M
MaFentre (Mots rservs) 91
MaPage (Mots rservs) 91
MAPI 248
MaSource (Mots rservs) 92
Matrices 151
Fonctions 153
Manipulation 151
MAX 412
MCI (fonctions) 183
MDI
Fonctions 121
Mcanisme des exception 105
Mmo 346
Menu
Fonctions 121, 124
menu 324
Menu diteur (Ruban) 30
Message (fonctions) 132
MID 407
MIN 412
Mode de blocage 371, 373
Modulo (Mots rservs) 92
MoiMme (Mots rservs) 92
MonChampPopup (Mots rservs) 93
Montaire (Variable) 41
MonEtat (Mots rservs) 94
MonFichier (Mots rservs) 94
MonParent (Mots rservs) 94
MONTHS_BETWEEN 413
Mot de passe 342
Variable 342
Mots rservs 90
Externe 90
MaFentre 91
MaPage 91
MaSource 92
Modulo 92
MoiMme 92
MonChampPopup 93
MonEtat 94
MonFichier 94
MonParent 94
Stop 95
Multilangue 33
Bote de dialogue 130
N
Net (fonctions) 284
NEW_TIME 413
NEXT_DAY 414
Nom logique 323
Nom long 323, 348
NULL 45
NULL dans HyperFileSQL 341
Numrique (Variable) 41
NVL 414
O
Objet automation (Variable) 54
Objet automation dynamique (Variable) 55
Oprateur 67
Arithmtiques 68
Binaires 68
Comparaison 70
Divers 74
Indirection 73
Logiques 67
Sur adresse 73
Sur chanes de caractres 71
Optimisation 363
Option de menu
Fonction 121, 124
WLangage.book Page 427 Mardi, 23. avril 2013 1:59 13
428 Index
P
Page
Fonctions 123
Prsentation 123
Page HTML 281
Rcuprer 281
Paramtres dune procdure 100
Parcours de fichier 330
Parcours selon filtre 331
PATINDEX 411
Priphrique Twain (fonctions) 182
Point darrt 33
Police (Variable) 60
POP 3 246
Popup (fentre)
MonChampPopup 93
Ports srie et parallle (fonctions) 181
Pour (Instruction) 77
Pour tous, parcours de chanes (Instruction) 80
Pour tous, parcours de champs (Instruction) 81
Pour tous, parcours de fichiers (Instruction) 78
Pour tous, parcours de tableaux (Instruction) 82,
83
Pour tout, parcours de chanes (Instruction) 80
Pour tout, parcours de champs (Instruction) 81
Pour tout, parcours de fichiers (Instruction) 78
Pour tout, parcours de tableaux (Instruction)82, 83
Prcdent (Bouton) 125
Presse-papiers (fonctions) 180, 181
Procdure 96
Appeler 100
Collections de procdures 99
Dclarer 99
Globale 96
Locale 98
Paramtres 100
Projet
Fonctions 195
Proprit
DateHeure 43
Description de fichier 57
Description de liaisons 59
Description de rubriques 60
Dure 43
Fentres et champs 137
Heure 43
HyperFileSQL 400
Protection des fichiers 342
Protocole
POP 3 246
SMTP 246
SOAP 302
SSL 235
R
Recherche
A lidentique 325
Gnrique 325
Recherche denreg. 329
Rcuprer des pages HTML 281
Rel (Variable) 41
Registre (fonctions) 180
Rgle de porte des variables 66
Regroupement 30
Renvoyer (Instruction) 88
REPLACE 408
Rplication de donnes 387, 391
Rseau (fonctions) 194
Retour (Instruction) 87
RIGHT 406
ROUND 414
RPAD 409
RTRIM 408
Ruban (Editeur) 30
Rubrique 328
Cl 324
S
Scuriser les transactions (SSL) 235
Selon (Instruction) 84
Smaphore dans les threads 296
Serveur
HyperFileSQL Client/Serveur 417
Serveur de fax 278
Programmation 279
Serveur FTP 285
Serveur SOAP 302
Excuter des procdures 302
Service (fonctions) 184
Si (Instruction) 85
Signaux 298
Site
AJAX 222
Lien avec WinDev 390
SMTP 246
SNMP (Fonctions) 194
WLangage.book Page 428 Mardi, 23. avril 2013 1:59 13
Index 429
SOAP 302
Fonctions 305
Socket 287
Fonctions 291
Sortir (Instruction) 88
SOUNDEX 413
SOUNDEX2 413
Source de donnes (Variable) 56
Souris
Fonctions 181
Traitements associs 33
SQL 367
AVG 411
BOTTOM 412
COUNT 411
Fonctions 405
HyperFileSQL 367
INSTR 410
LEFT 406
LEN 410
LENGTH 410
LOWER 410
LTRIM 407
MAX 412
MID 407
MIN 412
PATINDEX 411
RIGHT 406
RTRIM 408
SUBSRING 407
SUBSTR 407
SUM 412
TOP 412
UPPER 410
SSL 235
Statistiques (fonctions) 154
Stop (Mots rservs) 95
STRING_AGG 409
Structure (Variable) 52
Structure dynamique (Variable) 54
SUBSTR 407
SUBSTRING 407
SUM 412
Surcharger une fonction WLangage 102
SYSDATE 414
Systme (fonctions) 185
T
Tableau dynamique (Variable) 48
Tableau fixe (Variable) 50
Tableau simple (Variable) 47
Tlcharger un fichier 213, 215
Tlphonie 271
Appels entrants 271
Appels sortants 273
Fonctions 274
Temporaire (Fichier) 362
Thread 294
Fonctions 301
Grer les smaphores 296
Signaux 298
TOP 412
Touche "Prcdent" 125
Traduction
Messages 33
Traitements spcifiques 33
Transaction 353
Programmation 354
Transaction scurise 234
TRANSLATE 409
Triggers 385
TRIM 408
TRUNC 414
Twain (fonctions) 182
Type
Buffer 42
Chane 41
Date 42
DateHeure 43
Description de fichier 57
Description de liaison 58
Description de rubrique 59
Dure 43
Heure 43
Montaire 41
Numrique 41
Police 60
Rel 41
Source de donnes 56
Tableau dynamique 48
Tableau fixe 50
Tableau simple 47
Variant 44
U
Unicit 324
Unicit cl 343
Upload 213
WLangage.book Page 429 Mardi, 23. avril 2013 1:59 13
430 Index
UPPER 410
USB (fonctions) 182, 183
V
Variable
Description de fichier 57
Description de liaison 58
Description de rubrique 59
Globale 64
Locale 64
Objet automation 54
Objet automation dynamique 55
Police 60
Prsentation 39
Rgle de porte 66
Source de donnes 56
Structure 52
Structure dynamique 54
Type avanc 47
Type Buffer 42
Type caractre 41
Type chane 41
Type date 42
Type dateheure 43
Type dure 43
Type entier 40
Type heure 43
Type montaire 41
Type numrique 41
Type rel 41
Type simple 39
Type tableau dynamique 48
Type tableau fixe 50
Type tableau simple 47
Type variant 44
Variable compose 51
Variable de fichier 328
Variant (Variable) 44
Vrification du code 32
Verrou 371
Volet (menu ruban) 30
Vue HyperFileSQL 381
Programmation 382
W
WDBackup 359
WebService XML 306
Importer 306
Webservice XML
Gnrer 308
WinDev
Fonctions diverses 188
WinDev (Back office) 390
Windows 180
Fonctions 186
WLangage 37
Code navigateur 38
Code serveur 38
Surcharger une fonction WLangage 102
X
xBase 334
XLS 199
Fonctions 199
XML 312
Fonctions 314
Z
Zone mmoire (fonctions) 166
WLangage.book Page 430 Mardi, 23. avril 2013 1:59 13

Vous aimerez peut-être aussi