Vous êtes sur la page 1sur 216

WinDev 18, WebDev 18, WinDev Mobile 18 Documentation version 18(1) - 1012

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


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

1. INTRODUCTION

37

1.1 Quelques caractristiques du WLangage ......................................................................... 37 1.2 La programmation en code serveur et navigateur ...........................................................38

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

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

Conseil : Pour recevoir directement des mises jour intermdiaires et des conseils dutilisation, abonnezvous 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.

2.2 Oprations disponibles sur les dates, heures, dures, ... ................................................44
Sommaire 3

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

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

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

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

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

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

3.3 Oprateurs arithmtiques ................................................................................................68


3.3.1 Prsentation ..........................................................................................................................68 3.3.2 Rgles de calcul .....................................................................................................................68 3.3.3 Notes.....................................................................................................................................68

5. MOTS RSERVS

90

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 4 Sommaire

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
Sommaire 5

5.9 MonFichier ........................................................................................................................94 5.10 MonParent ......................................................................................................................94 5.11 STOP (appel du dbogueur) ............................................................................................95

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

6. PROCDURE ET FONCTION

96

7.5 Fonctions de gestion des exceptions ..............................................................................108

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

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

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

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

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

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

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

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

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

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

7. GESTION DES EXCEPTIONS

105

8.7 Hritage de classe ........................................................................................................... 115


8.7.1 Syntaxe ...............................................................................................................................116 8.7.2 Redfinition de mthodes ....................................................................................................116

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

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

7.3 Mcanisme des exceptions spcifiques ..........................................................................107


7.3.1 Prsentation ........................................................................................................................107 7.3.2 Syntaxes de dclaration .......................................................................................................107

Sommaire

Sommaire

2. GESTION DES PAGES

123

5.3 "Drag and Drop" programm .........................................................................................134


5.3.1 Principe...............................................................................................................................134 5.3.2 Programmation....................................................................................................................134

2.1 Prsentation .................................................................................................................... 123 2.2 Fonctions de gestion des pages ..................................................................................... 123 2.3 Fonctions de gestion des menus .................................................................................... 124

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

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

5.5 Fonctions de gestion du "Drag and Drop" ......................................................................136

6. GESTION DES CHAMPS

137

3.2 Empcher lutilisation du bouton "Prcdent" ............................................................... 126


3.2.1 Fonctionnement...................................................................................................................126 3.2.2 Mise en place.......................................................................................................................126

6.1 Prsentation .....................................................................................................................137 6.2 Fonctions gnrales de manipulation des champs ........................................................137

3.3 Gestion de la synchronisation ........................................................................................ 126


3.3.1 Prsentation ........................................................................................................................126 3.3.2 Synchronisation par dfaut...................................................................................................126

7. PROPRITS DES FENTRES, DES PAGES ET DES CHAMPS

140

3.4 Synchronisation par programmation ..............................................................................127

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

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

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

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

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

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

2.3 Manipulation des chanes de caractres sous Pocket PC ..............................................156 2.4 Fonctions de gestion des chanes de caractres ............................................................156

Sommaire

Sommaire

3. MANIPULER DES DATES ET DES HEURES

159

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

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

7.5 Fonctions de gestion des zones mmoires partages ....................................................173

8. IMPRIMER EN WLANGAGE

174

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

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

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 6. MANIPULER DES FICHIERS EXTERNES

166 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

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

10

Sommaire

Sommaire

11

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

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

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

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

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

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

12.4 Fonctions d'archivage ...................................................................................................202

13. GRAVER UN CD OU UN DVD

204

3.4 Tester la gestion des cookies dans un site WebDev .......................................................217

13.1 Prsentation ...................................................................................................................204 13.2 Gravure dun CD / DVD .................................................................................................204 13.3 Fonctions de gravure ....................................................................................................205

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

14. FONCTIONS DACCS AU POCKET PC 15. FONCTIONS SPCIFIQUES WINDEV MOBILE

206 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

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

15.2 Clavier du Pocket ..........................................................................................................208


15.2.1 Prsentation ......................................................................................................................208 15.2.2 Fonctions WLangage ..........................................................................................................209

5.3 Manipulation d'objets Javascript externes depuis le WLangage ...................................221

12

Sommaire

Sommaire

13

6. AJAX

222

10.3.3 Etape 3 : Certification du certificat sur le serveur .................................................................236

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

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

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

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

7. GADGETS VISTA

227

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

7.1 Prsentation ....................................................................................................................227 7.2 Cration du Gadget ........................................................................................................227


7.2.1 Les tapes ...........................................................................................................................227 7.2.2 Gnration du gadget...........................................................................................................228

PARTIE 6 : COMMUNICATION
1. LA COMMUNICATION 243
1.1 Communication avec WinDev / WebDev ........................................................................243 1.2 Communication avec WinDev Mobile ............................................................................244

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

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

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

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

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 14 Sommaire

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

Sommaire

15

3. ACCDER LOTUS NOTES ET OUTLOOK

253

5. SALESFORCE

267

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

5.1 Utiliser le service Salesforce ............................................................................................ 267


5.1.1 Prsentation ........................................................................................................................ 267 5.1.2 Comment le faire ? ..............................................................................................................267

5.2 Fonctions Salesforce ....................................................................................................... 267

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

6. FLUX RSS

269

6.1 Prsentation ....................................................................................................................269 6.2 Comment le faire ? .........................................................................................................269 6.3 Fonctions de gestion des flux RSS ..................................................................................269

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

7. SERVEUR LDAP 8. WINDEV ET LA TLPHONIE

270 271

7.1 Prsentation .................................................................................................................... 270

8.1 Prsentation ....................................................................................................................271 8.2 Grer les appels entrants ................................................................................................271


8.2.1 Les diffrentes tapes.......................................................................................................... 271 8.2.2 Exemple .............................................................................................................................. 272

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

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

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

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

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

9.3 Fonctions WLangage ...................................................................................................... 277

4.4 Gestion des documents Google .....................................................................................265


4.4.1 Prsentation ........................................................................................................................265 4.4.2 Comment grer les documents Google ? ...............................................................................265

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

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

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

16

Sommaire

Sommaire

17

10.4 Configurer le serveur de fax par programmation ........................................................279


10.4.1 Options du serveur de fax ...................................................................................................279 10.4.2 Astuces .............................................................................................................................280

15. GESTION DES CLS BLUETOOTH

292

10.5 Fonctions de gestion des fax ........................................................................................280

11. RCUPRER DES PAGES HTML

281

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

11.1 Prsentation .................................................................................................................... 281 11.2 Fonctions HTTP ............................................................................................................... 281

12. GESTION DE FICHIERS SUR INTERNET

282

16. GESTION DES THREADS

294

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

16.1 Prsentation ...................................................................................................................294


16.1.1 D'une gestion simple des threads vers une gestion avance ...............................................294 16.1.2 Exemple ............................................................................................................................ 294

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

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

12.3 Fonctions Net ................................................................................................................284

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

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

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

13.2 Fonctions FTP .................................................................................................................286

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

14. GESTION DES SOCKETS

287

14.1 Prsentation ...................................................................................................................287


14.1.1 Diffrentes possibilits.......................................................................................................287 14.1.2 Exemple ............................................................................................................................287

16.7 Fonctions de gestions des threads .................................................................................301

17. SOAP

302

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

17.1 Prsentation ...................................................................................................................302


17.1.1 WinDev / WebDev et le protocole SOAP.............................................................................. 302 17.1.2 Exemple ............................................................................................................................ 302

14.3 Application WinDev "Serveur simplifi" ........................................................................288


14.3.1 Le serveur simplifi ............................................................................................................288 14.3.2 Mode de transmission des informations..............................................................................289

17.2 Excuter des procdures sur un serveur SOAP .............................................................302


17.2.1 Principe d'utilisation.......................................................................................................... 302 17.2.2 La structure SOAP..............................................................................................................303

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

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

14.5 Fonctions Socket ........................................................................................................... 291

17.4 Fonctions SOAP .............................................................................................................305

18

Sommaire

Sommaire

19

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

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

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

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

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

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

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

2. FONCTIONNALITS AVANCES

339

19.3 Fonctions de gestion des documents XML ................................................................... 314

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

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

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

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

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

20.5 Crer le programme dinstallation dun assemblage .NET .......................................... 318 20.6 Utiliser des assemblages .NET dans une application WinDev ..................................... 319

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

20

Sommaire

Sommaire

21

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.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.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.17 Provider OLE DB pour HyperFileSQL .............................................................................365


2.17.1 Prsentation...................................................................................................................... 365 2.17.2 Installation ........................................................................................................................ 365 2.17.3 Configuration.....................................................................................................................366

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

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

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

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

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

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

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

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

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

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

2.15 Driver ODBC sur HyperFileSQL ......................................................................................364


2.15.1 Prsentation ......................................................................................................................364 2.15.2 Configuration .....................................................................................................................364

5. LES VUES HYPERFILESQL

381

5.1 Prsentation des vues HyperFileSQL ...............................................................................381 5.2 Intrts des vues .............................................................................................................381 5.3 Manipulation des vues ....................................................................................................381

22

Sommaire

Sommaire

23

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

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 Sommaire 25

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 11. PROPRITS HYPERFILESQL


24 Sommaire

393 400

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

PARTIE 1 Editeur de code

14. FONCTIONS HYPERFILESQL CLIENT/SERVEUR

418

26

Sommaire

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 permet d'accder tout moment tous les traitements d'un objet.

1.1 Lditeur de code


Lditeur de code permet de saisir tous les traitements en WLangage (le langage de programmation intgr WinDev, WebDev et WinDev Mobile). Il permet 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, ...

Partie 1 : Editeur de code

29

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.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. L'ensemble des options slectionnes est automatiquement intgr dans le code lors de la validation (touche ENTREE). lancer les assistants de code. Ces assistants permettent 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 slectionner.

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 "Environnement", droulez "Options" puis slectionnez "Options de lditeur de code".

1. Bouton WinDev/WebDev/WinDev Mobile (en haut gauche). Ce bouton permet dafficher le "A propos" du produit en cours. 2. 3. Affichage des barres doutils des versions prcdentes (mode compatible). Affichage des menus droulants des versions prcdentes (mode compatible).

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 : inutile de rechercher le nom exact d'une variable globale 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, ... contenant 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.

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 donnes par les diffrents crans de l'assistant pour obtenir la syntaxe correspondante. Lutilisation de ces assistants de code nest bien entendu pas obligatoire. 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 correspondant.

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.

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 saisie grce diffrentes bulles. Cette aide apparat lorsque le nom de la fonction est entirement saisi. Si diffrentes syntaxes sont disponibles pour la fonction en cours, des flches apparaissent dans les diffrentes bulles. Pour modifier la syntaxe active, utilisez les touches [Alt] + [Flche droite] ou [Alt] + [Flche gauche]. Une bulle d'aide affiche la description du paramtre 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 utilise sur un paramtre dj saisi. Partie 1 : Editeur de code 31

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 flche), soit deffectuer une action par dfaut (clic sur licne du bouton).

30

Partie 1 : Editeur de code

Une bulle d'aide affiche la description du rsultat (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 nouvelle fonction). - si la combinaison de touches [Alt + F1] est utilise 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 produit.

Dans chaque sous-rpertoire, des fichiers ".FIC", ".NDX" et ".MMO" correspondants au nom des fentres, du projet, ... contiennent l'historique. Ces fichiers peuvent au bout d'un certain temps occuper 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.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 diffrents. 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 multilingues est dtaill dans laide en ligne.

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 lment d'un type donn. Pour plus de dtails, consultez laide en ligne.
Reprage du code modifi

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 didentifier le type de problme rencontr. Plusieurs types de messages peuvent tre affichs dans ce volet : les warnings, affichs en orange, alertent des risques 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 fentre, de page ou chaque recompilation du projet des problmes potentiels dtects sur les interfaces.

1.2.10 Gestion des points darrt


Lors du test de lapplication sous lditeur, les points darrt permettent de lancer automatiquement le dbogueur partir dune ligne donne. Pour plus de dtails, consultez laide en ligne.

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 colores disparaissent automatiquement.
Correction du code saisi

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 lditeur de code". 2. Dans longlet "Code", cochez loption "Sauver lhistorique des modifications du code". Cette gestion de lhistorique cre un sous-rpertoire "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 ...

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 lutilisation de la souris ou du clavier, cliquez sur une des icnes proposes.

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 dsormais une liste des corrections possibles. Cette liste prsente le nom des variables et/ou des lments du projet pouvant correspondre. le correcteur d'orthographe pour les commentaires et les chanes de caractres.
Marques de positionnement

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 "Rindentation auto.".

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.

32

Partie 1 : Editeur de code

Partie 1 : Editeur de code

33

PARTIE 2 Syntaxe de base du WLangage

34

Partie 1 : Editeur de code

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 permet d'accder tout moment tous les traitements d'un objet.

1.1 Quelques caractristiques du WLangage


Les fonctions du WLangage peuvent s'crire indiffremment 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 pratique 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 programmation vnementielle sans mme avoir la grer. En effet, pour chaque objet cr avec WinDev, WebDev ou WinDev Mobile, il est possible d'associer un ou plusieurs traitements qui s'excuteront sur laction d'un vnement donn. Vous navez rien grer, vous n'aurez qu' saisir chaque traitement. En WebDev, les traitements peuvent tre saisis : soit en code serveur : le traitement saisi sexcutera 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'initialisation 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 lorsque le champ est modifi, dautres traitements lis dautres vnements 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 permet d'illustrer l'utilisation de la fonction. Tous les mots-cls du WLangage (fonctions, constantes 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.

Partie 2 : Syntaxe de base du WLangage

37

1.2 La programmation en code serveur et navigateur


Ce chapitre prsente la syntaxe du WLangage. Chaque 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 pouvez utiliser : soit le WLangage qui sera automatiquement traduit en JavaScript, soit directement le JavaScript.

WB

Dans lditeur de code, des bandeaux de couleurs 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 serveur depuis un traitement ralis en code navigateur. Exemple :
// Code navigateur de Modification // et sortie dune COMBO PageValide("", "BOUTON1") // Appelle le code serveur de clic sur // le bouton BOUTON1

2. LES VARIABLES
Le WLangage propose deux types de variables : les types simples, pouvant tre dclars directement 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 rservs. 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 caractres 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 caractres (essentiellement pour les API Windows), le WLangage propose diffrents types de chanes. Pour plus de dtails sur les chanes de caractres, consultez le paragraphe Le type Chane, page 41 Buffer : type conseill pour crire un code portable 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 DateHeure, page 43. Partie 2 : Syntaxe de base du WLangage 39

2.1.2 Types de variables


Les types "simples" du WLangage sont les suivants : Boolen : type conseill pour toutes les oprations 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 raliss sur des valeurs relles ncessitant une prcision 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 raliss sur des valeurs relles ncessitant une prcision garantie des dcimales. Un numrique gre 38 chiffres significatifs (32 maximum pour la partie entire, 6 maximum pour la partie dcimale). 38 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, consultez le paragraphe Le type variant, page 44.

constantes dans le fichier "Limites.WL". Pour intgrer ces constantes dans votre application, utilisez la ligne de code suivante dans le code dinitialisation du projet :
Externe "Limites.WL"

2.1.3 Dclarer un type simple


Dclarer une ou plusieurs variables
<Nom variable> est un(e) <Type variable>

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 plusieurs 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)

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 initialise 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 significatifs (17 maximum pour la partie entire, 6 maximum 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 dutiliser 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 oprandes seront automatiquement converties en montaire. Langage externe Le type montaire n'est pas disponible en langage externe.

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 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. Pour obtenir une prcision plus importante, utilisez le type montaire.

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.
NomClient est une chane Compteur est un entier Prix est un rel i,j,k sont des entiers

2.1.4 Les diffrents types dentier


Le WLangage propose diffrents types d'entiers : Valeur comprise entre Entier -2 x 109 et 2 x 109 (environ) Entier sur 1 octet -128 et 127 (incluses) Entier sur 2 octets -32.768 et 32.767 (incluses) Entier sur 4 octets -2 x 109 et 2 x 109 (environ) Entier sur 8 octets -9 x 1018 et 9 x 1018 (environ) Entier sans signe 0 et 4 x 109 Octet 0 et 255 (incluses) Ce type est quivalent au type Entier sans signe sur 1 octet. Entier sans signe sur 0 et 255 (incluses) 1 octet Entier sans signe sur 0 et 65.535 (incluses) 2 octets Entier sans signe sur 0 et 4 x 109 (environ) 4 octets Entier sans signe sur 0 et 18 x 1018 8 octets Entier systme s'adapte automatiquement la taille gre par le systme (4 octets en 32 bits, 8 octets en 64 bits)

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.
NomClient est une chane NomClient = "Dupond" Compteur est un entier = 7 i,j,k sont des entiers = 21 // Seul k est initialis 21

2.1.8 Le type Chane


Le WLangage propose diffrents types de chanes de caractres. Les types de chane les plus courants sont les suivants : Caractre : Caractre cod sur 1, 2 ou 4 octets selon le mode de gestion des chanes et la plateforme d'excution. Chane Ansi : Chane de taille dynamique contenant uniquement des caractres au format ANSI. Chane Unicode : Chane de taille dynamique contenant 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 longueur de la chane. Celle-ci peut varier de faon Partie 2 : Syntaxe de base du WLangage 41

Valeurs limites des types de donnes Si une variable est affecte avec une valeur dpassant 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 diffrents types de donnes ont t associes des 40 Partie 2 : Syntaxe de base du WLangage

2.1.6 Le type numrique


Le type numrique permet de contenir des nombres 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.

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 disponibles : 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 compatible 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 environ 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 longueur. 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 Windows. Tous les types avancs (diffrents du type "Chane") sont disponibles pour compatibilit avec les autres langages de programmation 42 Partie 2 : Syntaxe de base du WLangage

(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 initialise 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 proposes, 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 :
MaChane est une chane fixe sur 30 MaChane = "WinDev est formidable" // Suppression des espaces MaChane = SansEspace(MaChane) ComptageLettre(MaChane) // ComptageLettre est une procdure

automatique les conversions (fonctions ChaneVersDate, DateVersChane, EntierVersDate, DateVersEntier, ...). Ce type peut tre utilis aussi bien : pour rcuprer puis manipuler des rubriques HyperFileSQL au format Date. pour rcuprer puis manipuler les champs de saisie 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 utilises 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.
DateDbut est une date = 1205 DateFin est une date = "20011231" // 31/12/2001 DateJour est une date = DateDuJour()

dans les fonctions du WLangage permettant de grer les Heures, pour raliser des calculs sur les heures (diffrence, addition, ...). Proprits utilisables sur les heures : Pour connatre les proprits utilisables sur les heures, consultez laide en ligne.
HeureDbut est une heure="20011201" // Ajoute 5 heures HeureDbut..Heure +=5 // Modifie le nombre de minutes HeureDbut..Minutes = 5

Limites : Le type Heure permet de grer les heures comprises entre 00:00 et 23:59. La prcision est effectue la milliseconde.

2.1.12 Le type DateHeure


Le type DateHeure permet de manipuler simplement 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.
DateDbut est une DateHeure DateDbut = "200112311524" // 31/12/2001 15h24 minutes

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 automatiquement 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 raliser certaines manipulations spcifiques en mmoire, d'utiliser certaines API windows.

Les proprits utilisables sur les dates Pour connatre les proprits utilisables sur les dates, consultez laide en ligne.
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--

Proprits utilisables sur les variables de type DateHeure Pour connatre les proprits utilisables sur les variables de type DateHeure, consultez laide en ligne.
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)

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 HeureVersChane, 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 saisie de type Heure,

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-

2.1.10 Le type date


Le type Date permet de manipuler simplement des dates. Ce type permet de grer de manire quasi

Partie 2 : Syntaxe de base du WLangage

43

culs (diffrence, addition, ...).


HeureDbut est une heure = "1330" HeureFin est une heure = "1730" DureCongrs est une Dure = ... HeureFin - HeureDbut

Remarque : pour un type variant, NULL signifie "Pas affect"


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

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 indiquer que le paramtre ne doit pas tre pris en compte pour vrifier si un objet dynamique est allou ou non Cas n3 : Seul le prnom est donn :
sNom est un Variant = Null // utilisation du variant // obligatoire // pour variable de type Null // (non renseigne) HExcuteRequte(ClientNomPrnom, ... hRequteDfaut, sNom, "Jean")

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 comprises entre plus et moins 2 milliards de jours. La prcision est la milliseconde.

Ou
HExcuteRequte(ClientNomPrnom, ... hRequteDfaut, Null, "Jean")

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
nValeur est un variant = 10 nValeur = Saisie1 nValeur = Client.Nom

pour un type numrique, NULL signifie "gal 0".


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

excutera la requte :
SELECT * FROM CLIENT WHERE PRENOM='Jean'

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 :
SELECT * FROM CLIENT WHERE NOM = {Param1} AND PRENOM = {Param2}

Type d'un variant Il est possible de connatre le type d'un variant grce la proprit ..Type. La proprit ..Type permet 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).

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 simplement ignores. Par exemple, la requte "Ex1" correspond au code SQL suivant :
SELECT NomDesRubriques FROM NomDesFichiers WHERE Rubrique = {Param1}

Type variant et NULL Pour spcifier qu'une variable de type Variant ne contient pas de valeur, il suffit d'utiliser la constante NULL.

Cas n1 : Les 2 paramtres sont donns :


HExcuteRequte(ClientNomPrnom, ... hRequteDfaut, "Dupond", "Jean")

excutera la requte :
SELECT * FROM CLIENT WHERE NOM = 'Dupond' AND PRENOM = 'Jean'

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 fonctions permettant de manipuler des dates et les heures (voir fonctions de gestion des dates et des heures dans laide en ligne).

La requte "Ex1" est excute dans le bouton "Btn_OK" par la fonction HExcuteRequte. Le code WLangage utilis est le suivant :
HExcuteRequte, (... Ex1,hRequteDfaut,SAI_Saisie1)

Cas n2 : Seul le nom est donn :


HExcuteRequte(ClientNomPrnom, ... hRequteDfaut, "Dupond")

excutera la requte :
SELECT * FROM CLIENT WHERE NOM='Dupond'

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 lutilisation de loption "NULL si vide" :
Valeur saisie "NULL si dans le champ vide" pour le SAI_Saisie1 champ ChampSaisi e1 Code SQL excut

Aucune valeur Option coche

SELECT NomRubriques FROM NomFichiers

44

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

45

Aucune valeur Option dco- SELECT NomRubriques che

FROM NomFichiers WHERE Rubrique =

(voir ci-dessus) pour un type numrique, NULL signifie "gal 0"


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

SELECT NomUne valeur est Option saisie coche ou Rubriques dcoche FROM NomFichiers WHERE Rubrique= ValeurSaisie

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 partir 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.2 Null et les variants


Pour spcifier qu'une variable de type Variant ne contient pas de valeur, il suffit d'utiliser la constante NULL. Remarques : pour un type variant, NULL signifie "Pas affect" pour un type numrique, NULL signifie "gal 0" (voir ci-dessous)
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

Les constantes doivent tre dclares dans : le code d'initialisation du projet pour tre utilisable 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 fentre / 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 utilisable 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.

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 :
// 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

Dclarer des constantes de mme nom Dans un mme traitement, il n'est pas possible de dclarer plusieurs lments (variables ou constantes) 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 variable sera utilise dans cette procdure locale. la constante sera utilise dans tous les autres traitements. Si une constante "globale" au projet et une constante "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.3.3 Null et les valeurs numriques


Utilis avec des valeurs numriques, Null permet de comparer une valeur 0. Il est uniquement possible d'utiliser les oprateurs de comparaison d'galit et de diffrence (oprateur = et oprateur <>). Remarques : pour un type variant, NULL signifie "Pas affect"

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 directement 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>

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 CONSTANTE 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
CONSTANT TauxTVA = 19.6 FIN

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)

46

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

47

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.
TableauClient[2,5,3] = 47 // quivalent : TableauClient[2][5][3] = 47

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 manipuler des tableaux simples. Il est par exemple possible 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 nouvelle 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 toutes les instances de classes, il est ncessaire de dclarer un tableau local de la manire suivante :
ClasseSystme est une classe tTableauDfaut est un tableau ... local de 1 entier FIN

OU
<Nom du tableau dynamique> = allouer un tableau dynamique de <Dimension 1> [,<Dimension 2> ... [,<Dimension 10>]] <Type des lments du tableau>
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

suivante :
<Nom de la procdure>(<Nom du tableau>)
TableauFourn est un tableau... dynamique TableauFourn = allouer un tableau... dynamique de 10 par 50 chanes // Appel de la procdure // AfficheTableau AfficheTableau(TableauFourn)

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>)
TableauFourn est un tableau ... de 10 par 50 chanes // Appel de la procdure // AfficheTableau AfficheTableau(TableauFourn)

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 permet 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
TableauClient est un tableau ... dynamique

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 uniquement si ces classes possdent un constructeur sans paramtres (ou avec des paramtres facultatifs). 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 plusieurs variables de mme nom (quel que soit le 48 Partie 2 : Syntaxe de base du WLangage

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.
TableauClient[2,5,3] = 47 // quivalent : TableauClient[2][5][3] = 47

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 effectue la suite de la dclaration de la structure, de la variable compose ou de la classe.
// 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

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 classes uniquement si ces classes possdent un constructeur 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 plusieurs variables de mme nom (quel que soit le type de ces variables).

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>

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>

Passer un tableau dynamique en paramtre une procdure Un tableau dynamique peut tre pass en paramtre une procdure. Pour cela, utilisez la syntaxe

Partie 2 : Syntaxe de base du WLangage

49

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 manipuler 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 permet 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>

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.
TableauClient[2,5,3] = 47 // quivalent : TableauClient[2][5][3] = 47

Reprsentation "MaStructure" :

de

la

zone

mmoire

de

Syntaxe Dclarer un tableau associatif


<Nom du tableau> est un tableau associatif de <Type>
// 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"])

Cette reprsentation mmoire est compatible avec les API de Windows. Il est ainsi possible de transmettre un tableau de taille fixe une fonction des API de Windows. Dimension d'un tableau fixe La fonction Dimension permet de connatre le nombre 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 plusieurs 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.

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 personnalises, 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
RefProduit est compose de CodeF est un entier CodePr est une chane fixe sur 10 FIN

Passer un tableau fixe en paramtre une procdure Un tableau fixe peut tre pass en paramtre une procdure. Pour cela, utilisez la syntaxe suivante : <Nom de la procdure>(<Nom du tableau>)
TableauFourn est un tableau fixe ... de 10 par 50 chanes // Appel procdure AfficheTableau AfficheTableau(TableauFourn)

OU
<Nom du tableau> est un tableau fixe de <Dimension 1> [,<Dimension 2> ... [,<Dimension 10>]] <Type des lments du tableau>
TableauClient est un tableau fixe... de 5 par 7 par 3 entiers // quivalent : TableauClient est un tableau fixe... de 5,7,3 entiers

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 directement 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 structure>.
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

2.5.4 Tableau associatif


Un tableau associatif est un type "avanc" de tableau : il permet de regrouper une srie d'lments 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).

Manipuler un membre d'une variable compose


<Nom de la variable>.<Nom du membre>
RefProduit.CodeF = 7 RefProduit.CodePr = "cran"

50

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

51

Manipuler une variable compose Une variable compose peut tre utilise sans faire rfrence ses membres.
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

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 constructeur sans paramtre (ou avec des paramtres facultatifs). Tous les autres types de donnes (chane, constante, ...) 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 dclaration. 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'utiliser le tableau.. .
// 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

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 : Peut tre Variable Structure Classe Tableau un mem- compose bre de Variable Non Non Non Non compose Structure Oui Oui Oui Oui Classe Oui Oui Oui Oui Tableau Oui Oui Oui Non 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.

Syntaxe Dclarer une structure


<Nom de la structure> est une structure <Membres de la structure> FIN
RefProduit est une structure CodeF est un entier CodePr est une chane fixe sur 10 FIN

Dclarer une variable de type structure


<Nom de la variable> est une <Nom de la structure>
RefProduit est une structure CodeF est un entier CodePr est une chane fixe sur 10 FIN Fauteuil est une RefProduit

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 avances). 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 compose, 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 dclaration. 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'utiliser le tableau.
// 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

Manipuler un membre d'une variable de type structure


<Nom de la variable structure>:<Nom du membre de la structure>
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"

2.5.6 Structure
Une structure est un type de donnes personnalis. Une structure regroupe des lments de types diffrents. Remarque : Si vous manipulez des variables personnalises, 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.

Dclaration de structures Si une structure <Nom de la structure> est dclare : dans le code du projet, il sera possible de dclarer 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 possible 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.

Quels types "avancs" peuvent tre membre ? Une variable "avance" peut tre membre d'une variable "avance". Le tableau ci-dessous prsente les diffrentes combinaisons :
Peut tre un membre de Variable compose Structure Classe Tableau Variable Structure Classe Tableau compose Non Oui Oui Oui Non Oui Oui Oui Non Oui Oui Oui Non Oui Oui Non

52

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

53

Passer une structure en paramtre une procdure 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>)
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)

//... FichierSource = Allouer un Fichier // traitement sur l'objet // ... // librer l'objet Liberer FichierSource

Appeler une mthode d'un objet automation


<Nom de l'objet automation> mthode>([<Paramtres>])

>> <Nom

de la

* 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 plusieurs 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.

Dclaration d'une structure dynamique


<NomVariable> est [un] <NomStucture> dynamique

Remarque : La liste des mthodes pouvant tre utilises dpend du serveur. Pour connatre les mthodes, reportez-vous la documentation du serveur.
MonObjetAutomation>>... FichierOuvrir(NomDoc)

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>])

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.

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 serveur automation est automatiquement lanc. Pour allouer un objet automation 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 paramtres doit tre respect (reportez-vous la documentation du serveur et de ses mthodes si ncessaire). Pour certains serveurs automation, certains paramtres 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 paramtres obligatoires. Ainsi pour donner une valeur quelconque un paramtre optionnel, il suffit d'affecter le caractre

2.5.9 Objet Automation Dynamique


Un objet automation dynamique est un objet automation allou la demande, au cours du programme. Syntaxe Dclarer un objet automation dynamique
<Nom de l'objet automation dynamique> est un objet automation dynamique
// Dclaration MonObjetDynamique... est un objet automation dynamique

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 constructeur. Librer une structure dynamique
Librer <NomStructure>

Allouer un objet automation dynamique


<Nom de l'objet automation dynamique> = allouer un objet automation dynamique <Nom du serveur automation>
// Cration d'un objet automation // dynamique MonObjetDynamique = allouer un ... objet automation dynamique ... MonServeur

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 automatique lorsquil n'est plus utilis. Toutefois, il est possible de forcer la destruction de la structure.
Fichier est une structure Nom est une Chane Extension est une Chane Rpertoire est une Chane Fin FichierSource est un Fichier ... dynamique

o <NomStructure> : Nom identifiant l'instance de la structure.

Appeler une mthode d'un objet automation dynamique


<Nom de l'objet automation dynamique> <Nom de la mthode>([<Paramtres>])
MonObjetDynamique>>... FichierOuvrir(NomDoc)

>>

2.5.8 Objet automation


Le mot-cl Automation permet de dclarer un objet automation. L'allocation de cet objet est directement effectue lors de la dclaration. Remarque : Il est aussi possible d'utiliser un objet automation dynamique. Son allocation est effectue la demande, au cours du programme. Syntaxe Dclarer un objet automation
<Nom de l'objet automation> est un objet automation <Nom du serveur automation>
MonObjetAutomation ... est un objet automation MonServeur

Remarque : La liste des mthodes pouvant tre utilises dpend du serveur automation. Pour connatre 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 automatiquement dtruit la fin du traitement contenant sa dclaration ou lors d'une nouvelle allocation de l'objet.

54

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

55

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>

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 possibles sur une vue (respectivement une requte) pourront tre effectues sur une variable de type Source de donnes associe une vue (respectivement une requte). Pour dcrire une source de donnes temporaire, il est ncessaire de : 1. Dclarer une variable de type "Source de donnes". 2. Initialiser la source de donnes (fonctions HExcuteRequteSQL 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 dclare), la source de donnes sera automatiquement dtruite. Syntaxe Dclarer une source de donnes
<Nom de la variable> est une source de donnes

Supprimer la source de donnes (requte ou vue) Lorsque la mme variable de type Source de donnes 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.
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)

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 temporaires. La description de chaque fichier de donnes 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 rinitialise 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

Allocation d'un objet dynamique Lors de l'allocation d'un objet automation dynamique, 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 paramtres doit tre respect (reportez-vous la documentation si ncessaire). Pour certains serveurs automation, certains paramtres des mthodes ne sont pas valus : seule la prsence du paramtre a de l'importance. 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 paramtres 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 plusieurs 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 56 Partie 2 : Syntaxe de base du WLangage

Dclarer plusieurs descriptions de fichiers


<Nom de la variable 1>, <Nom de la variable 2> sont des descriptions de fichiers
MonFichier ... est une description de fichier MonFichier1, MonFichier2 sont des... descriptions de fichiers

Dclarer plusieurs sources de donnes


<Nom de la variable 1>, <Nom de la variable 2> sont des sources de donnes
MaSourceDonne ... est une source de donnes MaSourceDonne1, MaSourceDonne2 ... sont des sources de donnes

Initialiser une variable de type "Source de donnes" (requte ou vue) Pour initialiser une variable de type "Source de donnes", utilisez la fonction : HExcuteRequteSQL si la variable est associe une requte. HCreVue si la variable est associe une vue.
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)

Manipuler une requte ou une vue par programmation Pour manipuler une requte ou une vue par programmation, 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 plusieurs 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

Dcrire une variable de type "Description de fichier" Pour dcrire une variable de type "Description de fichier", utilisez les proprits du WLangage spcifiques aux descriptions de fichiers de donnes. Pour valider la description d'une variable de type "Description de fichier", utilisez la fonction HDcritFichier.
// Description du fichier "CLIENT" MonFichier..Nom = "CLIENT" MonFichier..Type = hFichierNormal MonFichier..CryptageFic = ... hCryptageStandard // Description des rubriques // du fichier ... // Validation description // fichier "CLIENT" HDcritFichier(MonFichier)

Proprits spcifiques la description de fichiers de donnes Les proprits spcifiques la description de fichiers de donnes sont dtailles dans laide en ligne.

Partie 2 : Syntaxe de base du WLangage

57

Comment dcrire des fichiers de donnes temporaires ? 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 (fonction HDcritRubrique). valider la description du fichier de donnes (fonction 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 donnes temporaire Lors de la cration d'un fichier de donnes sous l'diteur d'analyses, les noms du fichier de donnes et de ses rubriques sont automatiquement reconnus par le compilateur. Lors de la cration d'un fichier de donnes temporaire 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 temporaire ou ses rubriques provoque une erreur de compilation. 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.
MonFichier est une description ... de fichier ... MonFichier..Nom = "CLIENT" ... HDcritFichier("CLIENT") ... CLIENT est une source de donnes ... HLitPremier(CLIENT,CLIENT.NOMCLI)

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 plusieurs 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.

// Validation description // liaison "HABITE" HDcritLiaison(MaLiaison)

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 temporaires ? 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 (fonction HDcritRubrique). valider la description du fichier de donnes (fonction 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 automatiquement 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.
MaLiaison est ... une description de liaison ... MaLiaison..Nom = "HABITE" ... HDcritLiaison("HABITE") ...

EXTERNE HABITE ... Cardinalit = ... HABITE..CardinalitRelieMax

2.5.12 Description de liaison


Une variable de type Description de liaison permet de dcrire une liaison entre deux fichiers de donnes 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 rinitialise et pourra tre utilise pour dcrire une autre liaison. Syntaxe Dclarer une description de liaison
<Nom de la variable> est une description de liaison

Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plusieurs 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 permet de dcrire une ou plusieurs rubriques d'un fichier de donnes temporaire. La description de chaque rubrique est valide par la fonction HDcritRubrique. 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 temporaire. Syntaxe Dclarer une description de rubrique
<Nom de la variable> est une description de rubrique

Dclarer plusieurs descriptions de liaisons


<Nom de la variable 1>, <Nom de la variable 2> sont des descriptions de liaisons
MaLiaison ... est une description de liaison MaLiaison1, MaLiaison2 sont des ... descriptions de liaisons

Dclarer plusieurs descriptions de rubriques


<Nom de la variable 1>, <Nom de la variable 2> sont des descriptions de rubriques
MaRubrique ... est une description de rubrique MaRubrique1, MaRubrique2 sont des descriptions de rubriques

Dcrire une variable de type "Description de liaison" Pour dcrire une variable de type "Description de liaison", utilisez les proprits du WLangage spcifiques aux descriptions de liaisons. Pour valider une description d'une variable de type "Description de liaison", utilisez la fonction HDcritLiaison.
// 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"

Dcrire une variable de type "Description de rubrique" Pour dcrire une variable de type "Description de rubrique", utilisez les proprits du WLangage spcifiques aux descriptions de rubriques. Pour valider une description de variable de type "Description de rubrique", utilisez la fonction HDcritRubrique.
// Description du fichier // MonFichier ... // Description de la rubrique "NOM" MaRubrique..Nom = "NOM" MaRubrique..Type = hRubTexte MaRubrique..Taille = 40

58

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

59

MaRubrique..TypeCl = hClUnique // Validation description // rubrique "NOM" HDcritRubrique(MonFichier, ... MaRubrique) // Validation description fichier // MonFichier ...

de donnes. Ce fichier de donnes temporaire et ses rubriques pourront alors tre manipuls par leur nom sous l'diteur de code.
MonFichier ... est une description de fichier ... MonFichier..Nom = "CLIENT" ... HDcritFichier("CLIENT") ... CLIENT est une source de donnes ... HLitPremier(CLIENT,CLIENT.NOMCLI)

Proprits spcifiques la description de rubriques Les proprits spcifiques la description de rubriques sont dcrites dans laide en ligne. Comment dcrire des fichiers de donnes temporaires ? 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 (fonction HDcritRubrique). valider la description du fichier de donnes (fonction 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 donnes temporaire Lors de la cration d'un fichier de donnes sous l'diteur d'analyses, les noms du fichier de donnes et de ses rubriques sont automatiquement reconnus par le compilateur. Lors de la cration d'un fichier de donnes temporaire 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 temporaire ou ses rubriques provoque une erreur de compilation. Pour que les noms du fichier de donnes temporaire 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

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 dynamique, 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.
MaPolice = ... PoliceCre("Arial",12,iGras) MaPolice..Nom = "Arial" MaPolice..Taille = 12 MaPolice..Gras = Vrai

MaCxion..MotDePasse = "PASSWORD" MaCxion..Serveur = "MONSERVEUR" MaCxion..BaseDeDonnes = "Base1" MaCxion..Provider = ... hAccsHFClientServeur MaCxion..Accs = hOLectureEcriture MaCxion..InfosEtendues = "Infos" MaCxion..OptionsCurseur= ... hCurseurClient HOuvreConnexion(MaConnexion)

Remarque : il est galement possible de dclarer le nom du fichier de donnes temporaire avec le motcl Externe. Cependant, la vitesse d'excution du traitement sera ralentie. Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plusieurs 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.

Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plusieurs 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.

Dclaration de variables de mme nom Dans un traitement, il est interdit d'utiliser plusieurs 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 regrouper une srie d'lments du mme type. Les lments 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>

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 grPoliceTitreAxe). 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

2.5.15 Connexion
Une variable de type Connexion permet de dcrire une ou plusieurs connexions des bases de donnes externes (HyperFileSQL Client/Serveur, Accs Natif, ...). La connexion pourra tre ouverte grce la fonction 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

Par exemple, si les lments sont ajouts dans l'ordre suivant : 1, 2, 3, ils seront rcuprs dans le mme ordre 1, 2, 3
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

Proprits WLangage utilisables avec le type File AjoutTermin Renvoie et modifie le mode d'ajout des lments. Cette proprit est utilise pour la gestion du multithread

Dclarer plusieurs connexions


<Nom de la variable 1>, <Nom de la variable 2> sont des connexions
MaConnexion est une connexion

Dclarer plusieurs polices


<Nom de la variable 1>, <Nom de la variable 2> sont des polices
MaPolice est une police MaPolice1, MaPolice2 sont des polices

Dfinir les caractristiques d'une connexion Pour dcrire une variable de type Connexion, utilisez les proprits WLangage spcifiques aux connexions.
// Description de la connexion MaCxion..Utilisateur = "USER"

NbThreadAttente Renvoie le nombre de threads en attente. Cette proprit est utilise pour la gestion du multithread Occurence Renvoie le nombre d'occurrences de la file 61

60

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

Vide

Vrai si la file est vide, Faux dans le cas contraire

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 affich dans l'ordre de dfilement. Une file peut tre utilise pour typer un paramtre 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'lments dans l'ordre d'enfilement.

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. Dfile Rcupre l'lment du dbut de la file. Ajoute un lment la fin de la file. Srialise une file. Supprime tous les lments d'une file.

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 lment. Il est galement possible d'utiliser les proprits lors d'une gestion multithread mais le rsultat n'est pas permanent. Par exemple :
SI MaListe..Occurrence>0 ALORS // Quand le thread arrive ici, ... // la liste peut tre vide FIN

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. :
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

Dsrialise Dsrialise une file. Enfile Srialise Supprime Tout

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>

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 :
POUR TOUT [ELEMENT] <Variable> ... [, <Compteur> [, <Compteur>]] ... DE <Liste> [<Sens>] ... FIN

Proprits WLangage utilisables avec le type Pile Les proprits suivantes peuvent tre utilises pour manipuler une variable de type Pile. AjoutTermin Renvoie et modifie le mode d'ajout des lments. Cette proprit est utilise pour la gestion du multithread Renvoie le nombre de threads en attente. Cette proprit est utilise pour la gestion du multithread Renvoie le nombre d'occurrences de la pile. Vrai si la pile est vide, Faux dans le cas contraire

Les files et le multithread La gestion du multithread est prise en compte lors de l'ajout et de la suppression d'un lment (fonctions 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 :
SI MaFile..Occurrence>0 ALORS // Quand le thread arrive ici, ... // la file peut tre vide FIN

Proprits WLangage utilisables avec le type Liste Les proprits suivantes peuvent tre utilises pour manipuler une variable de type Liste Occurence Vide Renvoie le nombre d'occurrences de la liste. Vrai si la liste est vide, Faux dans le cas contraire.

Les lments peuvent tre modifis pendant le parcours. En cas de modification de la liste pendant un parcours, le parcours est affect par les oprations d'ajout et de suppression. Les fonctions disponibles pendant le parcours sont les suivantes : Syntaxe : Insre(<Nom de la liste>, AvantElmentCourant, <Valeur>)

NbThreadAttente

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 :
POUR TOUT [ELEMENT] <Variable> ... [, <Compteur> [, <Compteur>]] ... DE <File> ... FIN

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. Ajoute Dsrialise Insre Srialise Supprime SupprimeTout Ajoute un lment la fin de la liste. Dsrialise une liste. Insre un lment dans la liste. Srialise une liste. Supprime un lment de la liste Supprime tous les lments de la liste.

Attention : l'lment sera parcouru par l'itration suivante si la boucle est descendante. Syntaxe : Insre(<Nom de la liste>, AprsElmentCourant, <Valeur>)

Occurence Vide

Attention : l'lment sera parcouru par l'itration suivante si la boucle est ascendante. Syntaxe : Supprime(<Nom de la liste>, ElmentCourant)

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>

Remarques : Le contenu de la liste peut tre affich sous le dbogueur. Une liste peut tre utilise pour typer un paramtre de procdure. Une liste peut tre copie avec l'oprande liste. Une liste peut tre initialise par une liste d'lments.

Fonctions WLangage de gestion des piles. Les fonctions suivantes peuvent tre utilises pour manipuler une variable de type pile. Dpile Dsrialise Empile Srialise Rcupre l'lment du dbut de la pile. Dsrialise une pile. Ajoute un lment dans une pile. Srialise une pile.

Les lments peuvent tre modifis pendant le parcours. En cas de modification de la file pendant un parcours, les lments parcourus seront ceux prsents lors de l'initialisation du parcours : si des lments sont enfils aprs l'initialisation 62 Partie 2 : Syntaxe de base du WLangage

2.5.18 Pile
Une pile est un type structur qui permet de regrouper une srie d'lments du mme type. Les lments sont ajouts la fin de la pile et sont rcuprs du plus rcent au plus ancien.

Partie 2 : Syntaxe de base du WLangage

63

SupprimeTout Supprime tous les lments d'une pile. Les piles et le multithread La gestion du multithread est prise en compte lors de l'ajout et de la suppression d'un lment (fonctions 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 :
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

Les lments peuvent tre modifis pendant le parcours. En cas de modification de la pile pendant un parcours, les lments parcourus seront ceux prsents 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 affich dans l'ordre de dpilement. Une pile peut tre utilise pour typer un paramtre 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'lments dans l'ordre d'empilage

Les variables globales dclares dans une fentre fille ne peuvent pas tre utilises dans sa fentre mre. Lorsque la fentre / page dans laquelle la variable 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 lapplication 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 traitement 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 peuvent 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>
GLOBAL // Toutes les dclarations qui // suivent sont des variables // globales Indice est un entier NomClient est une chane

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 :

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 dclare. Variable globale : utilisable dans tous les traitements 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 globale et une variable locale). des procdures locales associes). Disponibilit des variables sous WebDev en code Navigateur : Les variables globales serveur du projet sont disponibles dans les codes Navigateur 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 globales une fentre ou page Les variables globales dclares dans le traitement 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.

2.6.2 Variables locales


Les variables locales peuvent tre utilises uniquement dans les traitements dans lesquels elles sont dclares. En dehors de ces traitements, les variables locales sont inconnues. Ces variables ne pourront 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>
LOCAL // Toutes les dclarations qui // suivent sont des variables // locales I est un entier PrnomClient est une chane

2.6.1 Variables globales


Variables globales un projet Les variables globales dclares dans le traitement d'initialisation d'un projet peuvent tre utilises dans tous les traitements : du projet. des fentres / des pages (traitement de la fentre / page, de ses champs et des procdures locales associes). des tats (traitement de l'tat, de ses champs et

64

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

65

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 variable "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 utilise 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 utilise dans le reste du projet. Exception : La rgle de porte des variables ne s'applique pas sur les constantes.

3. OPRATEURS
3.1 Prsentation
Les diffrents oprateurs sont les suivants : Oprateurs logiques : Exemples : ET, OU, PAS Oprateurs arithmtiques : Exemples : "+", "-", "*", "/", "++", "--", "+=", "-=" Oprateurs binaires : Exemples : ETBinaire, OUBinaire, 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 conditions.
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

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 :
SI NumTest ALORS ... SI NumTest <> 0 ALORS ...

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 :
SI (A = 2 ET B > 3) OU ... (A = 2 ET B < 0) ALORS ...

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

Exceptions : Dans les filtres SQL et les requtes SQL, l'oprateur ET est prioritaire sur l'oprateur OU.

66

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

67

Par exemple :
Condition1 ET Condition2 OU Condition3

sera valu ainsi :


(Condition1 ET Condition2) OU Condition3

de l'oprande : Oprande Entier sur 4 Rsultat Entier sur 4 Entier sur 8 Entier sur 8

Autre

Entier sur 8

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 renvoie 0. Exemples :
// 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

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). "--" : 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 :
n est un entier = 10 Trace(n+=1)

Entier sur 8 Autre

3.4.2 Oprateurs de dcalage


Dcalage vers la gauche :
<Valeur 1> bitDcaleGauche <Valeur 2> bitDcaleGauche(<Valeur1>, <Valeur 2>)

Dcalage vers la droite :


<Valeur 1> bitDcaleDroite <Valeur 2> bitDcaleDroite(<Valeur1>, <Valeur 2>)

Pour afficher le rsultat, effectuez les modifications suivantes :


n est un entier = 10 n += 1 Trace(n)

3.3.2 Rgles de calcul


Les diffrents calculs se font sans perte de prcision ou tronquage. Les vrifications de dbordement 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 rsultat du calcul utilisant les oprateurs suivants : "++" : Incrmentation.

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 habituelles.

Notes Les bits de <Valeur 1> sont dcals de <Valeur 2> bits vers la droite ou vers la gauche. Par exemple :
bitDcaleGauche(4,1) // Renvoie 8

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 dcimal. Autre exemple :
bitDcaleDroite(4,2) // Renvoie 1

3.4 Oprateurs binaires


Les oprations sur des valeurs binaires sont uniquement 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. Le type de rsultat peut tre diffrent selon le type des oprandes : Valeur 2 Entier sur 4 Entier sur 8 Autre Valeur 1 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

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 dcimal. Les bits qui dpassent la taille de <Valeur 1> sont ignors. Par exemple :
bitDcaleGauche(4,30) // Renvoie 0 bitDcaleGauche(4,4) // Renvoie 0

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> : Valeur 1 wlEntier_1 wlEntier_2 wlEntier_4 Entier sur 4 1 4 12 1 Entier sur 8 1 8 14 12 Si la valeur de <n> est incorrecte, l'opration renvoie 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.

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 :
bitDcaleGauche(4,35) // Renvoie 0

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 de l'oprande : Oprande Valeur 1 Entier sur 4 Entier sur 8 Rsultat Entier sur 4 Entier sur 8

Non binaire La syntaxe est la suivante : ~ <Valeur> Le type de rsultat peut tre diffrent selon le type

68

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

69

3.5 Oprateurs de comparaison


3.5.1 Prsentation
Les oprateurs de comparaison peuvent tre diviss en plusieurs catgories : galit stricte : = Egalit
galit souple : ~= galit trs souple : ~~ Commence par : [=

Exemple : 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

Il est possible de comparer des instances de structures dynamiques (ou des instances de classes dynamiques) grce l'oprateur "=". Exemple :
// 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 ...

Comparaison Diffrent : <>

Infrieur ou gal : <= Suprieur ou gal : >= Strictement infrieur : < Strictement suprieur : > Commence par : [=

Intervalle de Strictement compris entre : Valeur1< x< Valeur2 comparaison


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

Comparaison d'instances de structures et d'instances de classes Les structures dynamiques sont instancies uniquement lors de leur allocation.

La mme opration peut tre ralise sur les instances de classes.

Les oprateurs de comparaison peuvent tre utiliss 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 ponctuations l'intrieur des chanes (galit trs souple uniquement) quivalence HyperFileSQL : Pour retrouver l'quivalence l'galit trs souple lors d'une recherche sur une cl texte dans un fichier de donnes HyperFileSQL, il est ncessaire de configurer les options suivantes lors de la description de la rubrique dans

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 rfrence. 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.
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

3.6 Oprateurs sur chanes de caractres


Les chanes de caractres peuvent tre manipules 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 crochets fermant) : Oprateur d'extraction d'une sous-chane. "=" : Egalit stricte "~=" : Egalit souple (non disponible sous WebDev code navigateur) "[=" : Commence par
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)

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 ponctuations l'intrieur des chanes (galit trs souple uniquement). quivalence HyperFileSQL : Pour retrouver l'quivalence l'galit trs souple lors d'une recherche sur une cl texte dans un fichier de donnes HyperFileSQL, il est ncessaire de configurer les options suivantes lors de la description de la rubrique dans l'analyse :

Intervalles de comparaison Les intervalles de comparaison permettent de simplifier l'criture de comparaisons complexes. Ainsi, la ligne
SI x>5 et x<10 ALORS ...

peut tre remplace par


SI 5<x<10 ALORS...

La ligne :
SI x>=5 et x<=10 ALORS ...

peut tre remplace par


SI X=5 A 10 ALORS...

70

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

71

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>. sur CHAINEAEXTRAIRE[[<Dbut> <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 manipulant les chanes avec les oprateurs [[ ]], mfiezvous 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.
Procdure P(sChane) SI sChane alors sChane="5" //Appel de la procdure par la // ligne : // p(sVar[[3 ]])

3.6.3 Oprateurs sur les chanes de caractres et UNICODE


Les oprateurs disponibles sont : "+" : Pour concatner des chanes. "[[" et "]]" (double crochets ouvrant et double crochets fermant) : Oprateur d'extraction d'une sous-chane. Oprateur "+" Il est possible de concatner deux chanes UNICODE. 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 inversement). Cependant, une erreur WLangage apparatra en excution. Oprateur "[[" et "]]" Toutes les syntaxes de l'oprateur [[ ]] sont disponibles 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 format 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.7 Oprateur sur adresse


L'oprateur & retourne l'adresse d'une variable sous la forme d'un entier.
i z t s est un entier est une chane ASCIIZ sur 50 est un tableau de 10 rels 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

Syntaxe
<Rsultat> = &<Nom de la variable>

Remarques L'oprateur & permet de connatre l'adresse de toutes les formes de variables (simples et composes). 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 lments, 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 utilise.

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
{"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

Indirection dans une procdure


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

Pour viter toute modification de la chane initiale, il est ncessaire de passer le paramtre par valeur : soit en utilisant des parenthses autour du paramtre dans l'appel de la procdure soit en utilisant le mot-cl Local dans l'en-tte de la procdure

3.6.4 Position dans une chane de caractres


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.

Indirection avec variable


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}

72

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

73

Indirection avec une classe


// 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)

<Type> : Constante permettant de prciser le type de l'lment recherch :


indChamp indConnexion indEtat indFentre indFichier indGPW indLiaison indPage indParamtreRequte IndVariable Elment recherch parmi les champs Elment recherch parmi les connexions Elment recherch parmi les tats Elment recherch parmi les fentres Elment recherch parmi les fichiers de donnes Elment recherch parmi les lments du groupware utilisateur Elment recherch parmi les liaisons Elment recherch parmi les pages Elment recherch parmi les paramtres des requtes Elment recherch parmi les variables

d'indiquer les diffrents paramtres d'une fonction du WLangage. Par exemple :


dCopieImage(Image1, image2)

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

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 :
Ascenseur..Bormax = 200 FraisDePort..Titre = ... "Fentre des frais de port" MonEtat..MargeBasse = 20 MaPolice..Nom = "Arial"

Syntaxe Indirection simple


{<Expression>}

3.9.8 Triple point


L'oprateur "..." (triple point) permet de continuer une ligne logique sur la ligne physique suivante. Par exemple :
SI (CodeFamille="LV") ET ... (CodeFamille="MO") ALORS Traitement FIN Libell = "Veuillez saisir le "+ ... "nom du client."

<Expression> : permet d'identifier le champ, la variable ou la rubrique manipuler. Si cette expression 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 : {":NomDuMembre"} Si cette expression correspond une chane vide (""), une erreur du WLangage est gnre. Indirection en spcifiant le type de llment (optimise la vitesse dexcution)
{<Expression>, <Type>}

IndRubrique Elment recherch parmi les rubriques

Quand utiliser l'indirection ? L'indirection peut tre utilise par exemple : pour accder la valeur d'un lment (champ, variable, rubrique, ...)
{s_NomChamp} = 10 ValeurChamp = {s_NomChamp}

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 :
MonExemple1, MonExemple2 ... sont des chanes

pour utiliser une proprit


{s_NomChamp}..Hauteur = 10

<Expression> : permet d'identifier le champ, la variable ou la rubrique manipuler. Si cette expression correspond une chane vide (""), une erreur du WLangage est gnre.

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 dclench le trigger en cours.

les diffrents paramtres d'une fonction du WLangage. Par exemple :


dCopieImage(Image1, image2)

3.9.4 Le point virgule


Le point virgule permet de sparer diffrentes instructions crites sur la mme ligne. Par exemple :
I est un entier;M est une chane

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 arithmtiques et logiques.
// Oprateurs arithmtiques // (+, -, /, *) et logiques (ET, OU) n est un entier = 5 + 6

3.9.5 Deux points


Les deux points permettent d'accder aux membres 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 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 74 Partie 2 : Syntaxe de base du WLangage "..." : Le triple point "//" : La double barre

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 :
// Recherche dans une chane Machane est une chane = ... "WinDev est formidable" SI Position(Machane, "W")<>0 ALORS Info("trouv") //Rsultat FIN

3.9.1 Les parenthses


Les parenthses permettent : de regrouper les diffrents lments d'une opration tout en indiquant l'ordre de priorit. Par exemple :
Si (A-B)*5 ALORS ....

3.9.6 Le point
Le point permet d'accder un sous lment. Quelques exemples : accs un champ d'une fentre / page : MaFentre.ChampSaisieDate accs une variable globale d'une fentre /

Partie 2 : Syntaxe de base du WLangage

75

4. LES INSTRUCTIONS DU WLANGAGE


4.1 Instructions composes
Plusieurs types dinstructions composes sont disponibles 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 fonction d'une condition Instruction de branchement : GOTO : Branchement une tiquette donne
A FAIRE TANTQUE <Condition>

4.1.2 Instruction GOTO


L'instruction GOTO permet d'excuter un code identifi par une tiquette donne. Important : L'tiquette doit obligatoirement tre dfinie dans le mme traitement que l'instruction GOTO.
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

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'instructions. Le bloc d'instructions est alors excut pour chacune 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.
POUR Indice = 1 A 10 Tableau[Indice] = MaVariable + 10 FIN

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 traitement (ou de la procdure) en cours. RENVOYER : Renvoi d'un compte rendu au traitement 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 instructions RETOUR et RENVOYER dans un mme traitement. 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 ... SI <Condition> ALORS CONTINUER // Retour au mot-cl BOUCLE ... FIN

Syntaxe
POUR <Variable de contrle> = <Valeur initiale> A <Valeur finale> [PAS <x>] ... FIN

Syntaxe
... GOTO <Nom de l'tiquette> ... <Nom de l'tiquette> : <Code de l'tiquette>

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 susceptible 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 traitement appelant. Sortie de la boucle POUR et sortie 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 instructions RETOUR et RENVOYER dans un mme traitement. Excution de l'itration suivante Pour excuter directement l'itration suivante sans terminer le code de l'itration en cours, utilisez l'instruction Continuer :
POUR <Variable de contrle> = <Valeur initiale> A <Valeur finale> [PAS <x>] ...

4.1.1 Instruction BOUCLE


Le bloc d'instructions est rpt l'infini. Le nombre d'itrations du bloc d'instructions n'est pas contrl, il n'y a pas d'expression valuer.
BOUCLE //lecture d'une ligne du fichier //texte UneLigne = fLitLigne(NumFic) SI UneLigne = EOT ALORS SORTIR TraiteLigne(UneLigne) FIN

Code de l'tiquette Aprs excution du code de l'tiquette, le programme excute les lignes de code suivant directement 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 instruction GOTO, un warning apparat lors de la compilation du projet. tiquette et instructions POUR et POUR TOUT L'instruction GOTO ne permet pas d'accder directement dans le bloc d'instructions d'un POUR ou d'un POUR TOUT. Ainsi, ce code provoque une erreur la compilation du projet :
POUR Indice = 1 A 10 EtiqReprise : Res ++ FIN GOTO EtiqReprise

Syntaxe Syntaxe 1 : Boucle avec sortie selon une condition "SI"


BOUCLE ... SI <Condition> ALORS SORTIR ... FIN

Syntaxe 2 : Boucle avec sortie selon une condition"TANTQUE"


BOUCLE ...

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 warning.

76

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

77

SI <Condition> ALORS CONTINUER // Retour au mot-cl POUR ... FIN

Dans ce cas, la variable de contrle est automatiquement incrmente.

4.1.4 Instruction POUR TOUT / POUR TOUS, parcours de fichiers de donnes


L'instruction POUR TOUT permet d'effectuer diffrents 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
POUR TOUT Client // 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 <Fichier> AVEC ... <Valeur Minimale> <= <Rubrique cl> <= ... <Valeur Max> [<Sens>] ... FIN
// 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

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 :
"NomClient > 'Dupont' et ... CodePos = 34 ou AgeClient >= 32"

Les oprateurs accepts sont variables en fonction du type des rubriques utilises dans la condition : <> > Diffrent Plus grand Valable pour tous les types Valable pour tous les types

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
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

>= Plus grand ou Valable pour tous les types gal < Plus petit Valable pour tous les types <= Plus petit ou Valable pour tous les types gal = Strictement gal Valable pour tous les types Valable pour les types "chane" uniquement Valable pour les types "chane" uniquement ~= Environ gal ] ]= Contient

Commence par Valable pour les types "chane" uniquement

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
POUR TOUT Client SUR NumClient // Ajout des clients dans la liste ListeAjoute(ListeClient,... Client.NumClient) 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

Parcours avec recherche gnrique "Commence par"


POUR TOUT <Fichier> AVEC <Rubrique cl> [= ... <Dbut de la valeur recherche> [<Sens>] ... FIN
POUR TOUT Client AVEC ... NomClient [= "Du" // Ajout des clients dans la liste ListeAjoute(ListeClient,... Client.NumClient) FIN

Parcours avec filtre


POUR TOUT <Fichier> AVEC "<1re Condition> [ET/OU/PAS <2me Condition> [ET/OU/PAS...<Nme Condition>]]" [<Sens>] ... FIN

2. Filtre de comparaison par rapport un intervalle de valeurs


POUR TOUT <Fichier> AVEC <Rubrique cl> = ... <Valeur Minimale> A <Valeur Maximale> [<Sens>] ... FIN

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 souligns ("_"). 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 fonction 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 rubrique>. Si une <Valeur de la rubrique> contient une simple quote (ou une double quote), il faut faire prcder cette simple quote (ou double quote) par un anti-slash. Partie 2 : Syntaxe de base du WLangage 79

ou 78 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 sortie du traitement (ou de la procdure) en cours. RENVOYER : Renvoi d'un compte rendu au traitement 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 excution 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 instructions RETOUR et RENVOYER dans un mme traitement. 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 automatiquement ou si la sortie est effectue par les instructions SORTIR, RETOUR, Ferme, Si le parcours se termine automatiquement : la position du fichier de donnes avant le parcours est restaure. l'ventuel filtre ncessaire au parcours est dsactiv. Si le parcours est interrompu (instructions SORTIR, RETOUR, RENVOYER, Ferme, ) : la position du fichier de donnes avant le parcours 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 :
POUR TOUT <Fichier> SUR <Rubrique cl> ... SI <Condition> ALORS CONTINUER // Retour au mot-cl POUR TOUT // Passage l'enregistrement // suivant ... FIN

4.1.5 Instruction POUR TOUT / POUR TOUS, parcours de chanes


L'instruction POUR TOUT permet d'effectuer diffrents 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 sparateur
POUR TOUTE CHANE <Sous-chane> DE ... <Chane initiale> ... [SEPAREE PAR <Sparateur>] [<Sens>] ... 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

// 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

<Sparateur> et <Recherche> peuvent tous correspondre : soit des chanes ANSI. soit des chanes UNICODE. Cependant, il n'est pas possible d'utiliser des chanes 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 diffrents 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
// Pour chaque utilisateur list // dans la liste ListeUtilisateur POUR TOUTE LIGNE DE ListeUtilisateur // Envoi d'un email //EnvoieMessage(ColNom, ColEdmail) FIN

Cette syntaxe permet de parcourir toutes les positions de la sous-chane <Recherche> dans la chane <Chane initiale>. A chaque itration, la variable <Position> est renseigne avec la position de la sous-chane en cours. Le comportement est indtermin si la chane initiale ou la chane recherche est modifie lors du parcours. 2. Avec option
POUR TOUTE POSITION <Position> DE <Recherche>... DANS <Chane initiale> AVEC <Options> ... FIN

Cette syntaxe permet de parcourir toutes les souschanes 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 initiale 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> correspond au dernier lment extrait. Parcours des occurrences dune chane dans une autre chane 1. Sans option
POUR TOUTE POSITION <Position> DE <Recherche>... DANS <Chane initiale> [<Sens>] ... FIN

Cette syntaxe parcourt toutes les positions de la sous-chane <Recherche> dans la chane <Chane initiale>. A chaque itration, la variable <Position> est renseigne avec la position de la sous-chane en cours. Le comportement est indtermin si la chane initiale 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>,

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 toutes 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 boucle de parcours. Remarque : Lors du parcours des lignes d'une table, l'affichage de cette table est bloqu. La fonction MultitcheRepeint n'est pas prise en compte.

80

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

81

Parcours des lments slectionns dans un champ


POUR TOUTE LIGNE SELECTIONNEE DE <Champ> ... FIN
// Pour chaque utilisateur // slectionn dans la table // TableUtilisateur POUR TOUTE LIGNE SELECTIONNEE DE ... TableUtilisateur // Envoi d'un email EnvoieMessage(ColNom, ColEdmail) FIN

nes et/ou la ligne en cours (fonction TableSelectMoins, TableSelectPlus, ...). dans le cas d'une table fichier, dans la boucle de parcours, l'enregistrement en cours est l'enregistrement trait par le parcours.

Parcours des valeurs des lments dun tableau


POUR TOUT ELEMENT (<Valeur>) DE <Tableau> [<Sens>] ... FIN

POUR TOUT ELEMENT nIdentifiant ... DE taIDParClient ... Trace(nIdentifiant) FIN

4.1.7 Instruction POUR TOUT / POUR TOUS, parcours de tableaux


L'instruction POUR TOUT permet d'effectuer diffrents 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
// 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

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 toutes 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 boucle de parcours. Parcours des indices des lments slectionns
POUR TOUTE LIGNE SELECTIONNEE <Indice> ... DE <Champ> ... 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 : automatiques, fixes, dynamiques. Les tableaux peuvent avoir plusieurs dimensions. Le comportement est indtermin si le nombre d'lments est modifi dans la boucle de parcours.

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. 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

4.1.8 Instruction POUR TOUT / POUR TOUS, parcours de tableaux associatifs


L'instruction POUR TOUT permet deffectuer diffrents 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 associatif. 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
// 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

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 boucle 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 slection82 Partie 2 : Syntaxe de base du WLangage

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 uniquement 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

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. 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 : automatiques, fixes, dynamiques. Les tableaux peuvent avoir plusieurs dimensions. Le comportement est indtermin si le nombre d'lments est modifi dans la boucle de parcours.

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. 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'lments parcourus peut tre 0 ou N. Partie 2 : Syntaxe de base du WLangage 83

Les lments du tableau sont parcourus dans l'ordre des ajouts (pas d'option de sens de parcours). 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

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

4.1.10 Instruction SI
L'instruction conditionnelle SI permet de choisir d'excuter une action ou une autre en fonction d'une condition.
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

Syntaxe Syntaxe 1
SI <Condition> ALORS <Action si condition vraie> [SINON <Action si condition fausse> ] FIN

<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 expressions sont vrifies. <Valeur> _DANS_ (<Expression 1>, <Expression 2>, ... , <Expression N>) Remarque : Dans ce cas-l, ds quune expression 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.
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

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 uniquement 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'lments parcourus peut tre 0 ou N. Les lments du tableau sont parcourus dans l'ordre des ajouts (pas d'option de sens de parcours). 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.

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>]

Les conditions composes de ET et OU sont values 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 composes, 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'instruction conditionnelle SI correspondante.

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

4.1.9 Instruction SELON


L'instruction conditionnelle SELON permet de choisir d'excuter une action ou une autre en fonction de la valeur d'une expression.
SELON Quantit CAS 1 : Comment = "Promotions" CAS 2 : Comment = "Vous en "+... "achetez deux "+... "et nen payez qu'un seul" AUTRE CAS : Comment = "" 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 traitement en cours.

Condition Le paramtre <Condition> peut tre de la forme : <Valeur> = <Expression> <Valeur> < <Expression> <Valeur> <= <Expression> <Valeur> > <Expression> <Valeur> >= <Expression>

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 traitement boucle.

84

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

85

Il y a sortie du bloc d'instructions lorsque l'expression de condition est fausse.


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

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 :
TANTQUE <Condition> ... SI <Condition> ALORS CONTINUER // Retour au mot-cl TANTQUE ... FIN

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 initiale> A <Valeur finale> [PAS <x>] ... SI <Condition> ALORS CONTINUER ... FIN

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.

Syntaxe
TANTQUE <Condition> <Action si condition vraie> FIN

Condition compose Les mots-cls ET et OU permettent d'effectuer des oprations logiques et de construire des conditions composes. Par exemple :
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

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> ([<Paramtre>]) SI <Condition> ALORS RETOUR ... 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 traitement appelant. Sortie de la boucle TANTQUE et sortie du traitement (ou de la procdure) en cours. SORTIR : Sortie de la boucle TANTQUE et excution 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 instructions RETOUR et RENVOYER dans un mme traitement. Boucle sans fin Lors de la compilation du projet, une instruction TANTQUE sans fin vidente (absence des instruc-

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

Les conditions composes de ET et OU sont values 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 composes, 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.

Instruction POUR
POUR <Variable de contrle> = <Valeur initiale> A <Valeur finale> [PAS <x>] SI <Condition> ALORS RETOUR 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 automatique. Instruction BOUCLE
BOUCLE ... SI <Condition> ALORS CONTINUER ... FIN

Instruction POUR TOUT


POUR TOUT <Fichier> SUR <Rubrique cl> SI <Condition> ALORS RETOUR FIN

4.2 Instructions simples


Les diffrentes instructions simples sont les suivantes : CONTINUER : Retour direct au dbut de la prochaine itration sans terminer le code de l'itration en cours RENVOYER : Sortie du traitement (ou de la procdure) 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 excution de la suite du traitement en cours

Instruction BOUCLE
BOUCLE ... SI <Condition> ALORS RETOUR ... 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> ALORS RETOUR ... FIN

86

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

87

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 boucle ou d'une procdure Plusieurs instructions sont possibles : RENVOYER : Renvoi d'un compte rendu au traitement 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 instructions RETOUR et RENVOYER dans un mme traitement.

Instruction BOUCLE
BOUCLE ... SI <Condition> ALORS RENVOYER <Valeur renvoyer> ... FIN

Syntaxe Instruction POUR


POUR <Variable de contrle> = <Valeur initiale> A <Valeur finale> [PAS <x>] ... SI <Condition> ALORS SORTIR ... FIN <Suite du traitement>

Instruction TANTQUE
TANTQUE <Condition> ... SI <Condition> ALORS SORTIR ... FIN <Suite du traitement>

Instruction TANTQUE
TANTQUE <Condition 1> ... SI <Condition> ALORS RENVOYER <Valeur> ... FIN

Instruction POUR TOUT


POUR TOUT <Fichier> SUR <Rubrique cl> ... 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 boucle Plusieurs instructions sont possibles : RETOUR : Sortie de la boucle et sortie du traitement (ou de la procdure) en cours. RENVOYER : Renvoi d'un compte rendu au traitement 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 instructions RETOUR et RENVOYER dans un mme traitement.

4.2.3 Instruction RENVOYER


L'instruction RENVOYER permet de sortir du traitement (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> ([<Paramtre>]) SI <Condition> ALORS RENVOYER <Valeur renvoyer> SINON RENVOYER <Valeur renvoyer> FIN

Dans tous les cas, si la <Condition> est vrifie, les oprations effectues sont : Renvoi d'un compte rendu au traitement appelant. Sortie du bloc d'instructions. Sortie du traitement (ou de la procdure) en cours. Autres instructions permettant de sortir d'une boucle ou d'une procdure Plusieurs instructions sont possibles : RETOUR : 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 ou la page en cours. Attention : Il n'est pas possible d'utiliser les instructions RETOUR et RENVOYER dans un mme traitement.

Instruction BOUCLE
BOUCLE ... SI <Condition> ALORS SORTIR ... FIN <Suite du traitement>

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.

Instruction POUR
POUR <Variable de contrle> = <Valeur initiale> 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

88

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

89

5. MOTS RSERVS
Plusieurs mots du WLangage sont des mots rservs, permettant deffectuer des actions spcifiques : Externe MaFentre MaPage MaSource Modulo MoiMme MonChampPopup MonEtat MonFichier MonParent STOP

5.2 MaFentre
Le mot-cl MaFentre permet de manipuler la fentre 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.
// Rcupration du titre de la // fentre en cours TitreFentre = MaFentre..Titre

Passage en paramtre :
AppelProcedure(MaFentre)

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 procdure 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 fonctions du WLangage acceptant un nom de fentre en paramtre, utilisez : soit une chane vide. soit directement le mot-cl MaFentre.

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.
// Intgration du fichier // "WinConst.wl" // Constantes standard de Windows EXTERNE "WinConst.wl"

Syntaxe
EXTERNE <Nom du fichier>

Plusieurs fichiers dfinissant des constantes sont fournis en standard avec WinDev / WebDev : WinConst.wl : Constantes standard de Windows. Limites.wl : Constantes correspondant aux limites 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 relche" en utilisant la variable _EVE.wParam. Utilisation 2 : Dclarer un objet externe Le mot-cl EXTERNE permet de dclarer une variable 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 prsente dans une bibliothque externe (charge avec la fonction ChargeWDL).
EXTERNE MaFentre ChargeWDL("User1.WDL") Ouvre(MaFentre)

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
MaFentre..Titre = ... "Saisissez vos donnes" TitreEnCours = MaFentre..Titre

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.
// Rcupration du titre de la page // en cours TitrePage = MaPage..Titre

Passage en paramtre :
AppelProcedure(MaPage)

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 chemin 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 projets ou utilises par le systme d'exploitation. Utilisez le mot-cl EXTERNE pour inclure dans le code un fichier contenant des constantes communes.

Syntaxe
EXTERNE <Nom de l'objet externe>

Syntaxe
MaPage

<Nom de lobjet externe> correspond au nom de l'objet externe (fichier, variable, constante, ...) dclarer.

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
MaPage..Titre = ... "Saisissez vos donnes" TitreEnCours = MaPage..Titre

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'utiliser le mot-cl MaPage dans un tat. Utilisation de MaPage dans une procdure Le mot-cl MaPage peut tre utilis dans une procdure (locale ou globale) uniquement si la procdure 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 paramtre, utilisez : soit une chane vide. soit directement le mot-cl MaPage. Partie 2 : Syntaxe de base du WLangage 91

90

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 donnes en cours. accder la valeur d'une rubrique de l'enregistrement en cours dans la source de donnes en cours. rcuprer le nom de la source de donnes pour effectuer un traitement HyperFileSQL.
// 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

Modification de la valeur du champ en cours :


MoiMme = "Dupond"

Utilisation d'une proprit (proprit Libell par exemple) :


MoiMme..Libell = "Nom des clients" LibellChamp = MoiMme..Libell

Passage en paramtre :
AppelProcedure(MoiMme)

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 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 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.

Syntaxe
MaSource

Limite Le mot-cl MaSource est utilisable uniquement dans les traitements associs : un tat. une table fichier.

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 procdure (locale ou globale) uniquement si la proc-

5.7 MonChampPopup
Le mot-cl MonChampPopup permet de manipuler le champ qui a ouvert une fentre popup. En excution, le mot-cl MonChampPopup est remplac par : le champ qui a ouvert la fentre popup (c'est-dire le champ depuis lequel la fonction OuvrePopup ou OuvrePopupPosition a t appele) le champ prcis dans la fonction OuvrePopupPosition 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 MomChampPopup 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

Passage en paramtre
AppelProcedure(MonChampPopup)

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 WLangage.
// Rcupration du reste de // la division // ResteDivision = Modulo(21,4) // ResteDivision vaut 1 // quivalent : ResteDivision = 21 Modulo 4

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 (procdure globale, classe, ...) indpendant du champ en cours.
-- 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

Syntaxe
MoiMme

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 :
SI MonChampPopup..Type = ... TypBouton ALORS MonChampPopup..Libell = ... "Slection en cours" FIN

Le mot-cl MonChampPopup peut tre utilis uniquement dans les traitements manipulant la fentre 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 procdure 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 traitement de la fentre popup. Le mot-cl MonChampPopup 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.

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 :
ValeurChamp = MoiMme

92

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

93

5.8 MonEtat
Le mot-cl MonEtat permet de manipuler l'tat courant. Lors de l'excution du projet, le mot-cl MonEtat 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 (procdure globale, classe, ...) indpendant de l'tat en cours.
// Rcupration du nom de l'tat // en cours MonEtat = MonEtat..Nom

Basse par exemple) :


MonEtat..MargeBasse = 15 ResMarge = MonEtat..MargeBasse

Manipulation du superchamp en cours Le mot-cl MonParent est toujours remplac par le superchamp en cours. Par exemple, passage en paramtre :
AppelProcedure(Monparent)

Passage en paramtre :
AppelProcedure(MonEtat)

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 procdure (locale ou globale) uniquement si la procdure 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.

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 superchamp 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.
// Ouverture fentre Ouvre(FentreSaisie) STOP // Lancement du dbogueur

Syntaxe
MonEtat

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 excutable n'a aucune action.

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-

Syntaxe Lancement du dbogueur


STOP

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 automatiquement 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 manipuler le fichier de donnes, ses proprits ou encore ses rubriques.

Lancement du dbogueur avec condition


STOP SI <Condition>

Mode de lancement du dbogueur Pour lancer le dbogueur lors d'un test, il est possible d'utiliser : le mot-cl STOP dans l'diteur de code.

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 motcl MonParent est remplac par le superchamp et non par le nom du superchamp. Le mot-cl MonParent s'utilise alors comme un superchamp. Intrt : Le mot-cl MonParent permet de rendre le code des champs du superchamp (champ, bouton, ...) ou des fonctions associes au superchamp 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.
// 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

Syntaxe
MonParent

94

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

95

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 retourner 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 procdure 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 procdures et les fonctions. Pour plus de dtails, consultez-la Dclarer une procdure / une fonction, page 99. La syntaxe d'appel est la mme pour les procdures et les fonctions. Pour plus de dtails, consultez Appeler une procdure / une fonction, page 100. Il est possible de crer des procdures multisyntaxes. 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 paragraphe suivant.

Javascript. Cette collection de procdures Javascript est enregistre dans le rpertoire "<Nom Projet>_WEB" sous le nom "<Nom Projet>.JS". Limite : Les procdures globales serveur ne peuvent pas appeler des procdures globales navigateur 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 procdure .. Crer une procdure globale vide" du menu contextuel. En WebDev : Si le code en cours est un code serveur, la procdure globale est cre dans la collection de procdures 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 "Procdures", 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 (navigateur)". 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 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 ncessaires. 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 globale et validez. Remarque : Il est possible d'afficher la liste des procdures globales dans lexplorateur de projet double-cliquant sur le dossier "Procdures" (raccourci clavier [Ctrl] [F8]) de l'diteur de code. Suppression dune procdure globale 1. Depuis lditeur de code Pour supprimer une procdure globale depuis l'diteur de code : 1. Cliquez sur le bandeau de la procdure dans l'diteur de code. 2. Dans le menu contextuel, slectionnez "Supprimer". 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 procdure. 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'explorateur 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.

6.2 Procdure / fonction globale et locale


6.2.1 Dfinition
Les procdures peuvent tre de deux types : Procdure globale : utilisable dans tous les traitements du projet. Cette procdure globale est mmorise dans le projet. Procdure locale : utilisable dans tous les traitements 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 globale 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 procdures sont les mmes pour les fonctions. 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 navigateur En WebDev, un projet correspondant un site dynamique contient au moins deux collections de procdures (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 projet>_Navigateur" (fichier ".WWN") Remarque : une collection de procdures globale Navigateur est convertie en collection de procdure

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 traitement d'initialisation d'un projet peuvent tre appe-

96

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

97

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 "Prive". Dans ce cas, la procdure globale et accessible 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, slectionnez 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 fentre fille ne peuvent pas tre utilises dans sa fentre mre. Procdures locales un tat Les procdures locales dclares dans un tat peuvent 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", droulez "Nouveau" et slectionnez loption "Nouvelle procdure locale (Serveur)". - Pour crer une procdure locale navigateur, sous le volet "Code", dans le groupe "Procdures", droulez loption "Nouveau" et slectionnez l'option "Nouvelle procdure locale (Navigateur)". Mthode 2 : Slectionnez l'option "Crer une procdure .. Crer une procdure locale vide" du menu contextuel. En WebDev : - Pour crer une procdure locale serveur, slectionnez 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 procdure 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 ncessaires. Remarque en WebDev : Si le code slectionn est un code serveur, la procdure cre sera une procdure 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 slectionnez l'option "Procdures locales" de l'lment. 3. Affichez le menu contextuel et slectionnez l'option "Nouvelle procdure locale".

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 globale. 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 procdures


Pour crer une collection de procdures : 1. Dans le volet "Explorateur de projet", slectionnez loption "Procdures". 2. Dans le menu contextuel (clic droit de la souris), slectionnez l'option "Nouvelle collection de procdures".

6.3.3 Importation d'une collection de procdures


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 "Procdures", slectionnez l'option "Importer une collection 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 procdure locale. Important : Il ne faut pas dclarer deux procdures avec le mme nom (notamment une procdure globale et une procdure locale). Dclarer une procdure avec paramtres
PROCEDURE <Nom de la procdure>(<Paramtres>) <Code de la procdure> <Code de la procdure>

Remarque : Pour des raisons de lisibilit des programmes, le mot-cl PROCEDURE peut tre remplac 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 traitements suivant le mot-cl Retour ne sont pas excuts. Par exemple :
PROCEDURE Calcul(Dividende)... SI Dividende = 0 ALORS ... Erreur("Division par 0 ... "impossible") Retour SINON ... FIN

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>([<paramtres>,]*)

98

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

99

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.

SINON Renvoyer Faux FIN

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> )

6.4.3 Renvoi d'un rsultat


Pour retourner le rsultat d'une procdure au traitement appelant, utilisez le mot-cl Renvoyer. Par exemple :
PROCEDURE Trouve(Fichier,Cl,Valeur) HLitRecherche(Fichier,Cl,Valeur) SI HTrouve=Vrai ALORS Renvoyer Vrai

Conseil : Pour les procdures qui retournent un rsultat, il est conseill d'utiliser le mot-cl FONCTION au lieu de PROCEDURE pour faciliter la lecture du code. Important : Il ne faut pas forcer la sortie d'une procdure 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.

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>))

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 procdures sont les mmes pour les fonctions. Dans le cas dune procdure multisyntaxe, lappel de la bonne syntaxe est rsolu lexcution. Pour plus de dtails, consultez Surcharger une fonction WLangage, page 102. Syntaxe : Appeler une procdure
[<Valeur retourne> = ] <Nom de la procdure>([<Paramtres>])
// 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

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.
Indice est un entier = 7 // Appel de la procdure MaProc MaProc(Indice) -- Dclaration de la procdure MaProc PROCEDURE MaProc(Indice est un rel) ...

Par exemple :
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

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 ExcuteTraitement.

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 procdure, utilisez la syntaxe suivante :
<Nom de la procdure>(<Nom de la variable passe en paramtre>)

Solution 2 : Utilisation de paramtres "local" dans la procdure Lors de la dclaration d'une procdure, les variables passes en paramtre peuvent devenir locales cette procdure. Pour cela, il suffit de faire prcder 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>)

6.6 Paramtre d'une procdure / une fonction


Il est possible de passer des paramtres une procdure. 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 procdures 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 obligatoire. Par dfaut, le type de la variable passe en paramtre lors de l'appel de la procdure est utilis dans la procdure. Par exemple :
Indice est un entier // Appel de la procdure MaProc MaProc(Indice) -- Dclaration procdure MaProc PROCEDURE MaProc(Compteur) // Compteur est de type entier Compteur += 1

Par exemple :
// Appel procdure ChampVisible ChampVisible(ChampAdresse) -- Dclaration de la procdure PROCEDURE ChampVisible(ChampAdresse) ChampAdresse..Visible = Faux

Par exemple :
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

Remarques : MoiMme permet de manipuler le champ en cours. MaFentre permet de manipuler la fentre en cours. Partie 2 : Syntaxe de base du WLangage 101

100

Partie 2 : Syntaxe de base du WLangage

MaPage permet de manipuler la page en cours MonEtat permet de manipuler l'tat en cours.

-- Traitement d'appel de la procdure Dessin(10,15,*,iVertClair)

6.8 Surcharge de prototype


6.8.1 Prsentation
Les procdures et les mthodes de classes peuvent 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'excution, le moteur dtermine automatiquement la syntaxe appeler en fonction du nombre et du type des paramtres passs. Cette technologie est souvent prsente sous diffrentes 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 Constructeurs. 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. 3. Une nouvelle syntaxe est automatiquement cre dans l'diteur de code. Remarques : La cration d'une procdure de mme nom propose 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 projet ( 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.6.3 Paramtre optionnel


Certains paramtres passs une procdure peuvent 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>,...)

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 procdure de pouvoir manipuler les diffrents paramtres 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.
// Procdure de dcalage de champs PROCEDURE DcaleChamp(*) POUR I = 1 A ... MesParamtres..Occurrence MesParamtres[I]..X +=10 FIN

Par exemple :
-- Dclaration de la procdure PROCEDURE Dessin(Ligne,Colonne,... CoulFond = iNoir, CoulTrait = ... iJauneClair) ... -- appel de la procdure Dessin(10,15)

Pour conserver la valeur par dfaut d'un paramtre optionnel, utilisez le caractre "*" lors de l'appel de la procdure. Par exemple :
-- Dclaration de la procdure PROCEDURE Dessin(Ligne,Colonne,... CoulFond = iNoir, ... CoulTrait = iJauneClair) ...

L'indexation des paramtres commence toujours 1 quel que soit le nombre de paramtres obligatoires 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.8.3 Gestion du multisyntaxe en excution


Mcanisme de base Le mcanisme de base est le suivant : dtermination 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 minimal. Si deux syntaxes sont quivalentes, c'est la premire dans l'ordre de l'diteur de code qui est excute. 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

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 procdure personnelle nomme Info. A chaque fois que la fonction Info sera utilise, ce sera la fonction personnelle qui sera excute. 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 personnalise sera utilise la place de la fonction WLangage.

6.8.2 Comment le faire ?


Ajouter des syntaxes une procdure Pour ajouter une syntaxe une procdure existante : 1. Dans l'explorateur de projet, slectionnez la procdure. 2. Affichez le menu contextuel de la procdure et choisissez l'option "Ajouter une syntaxe".

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>

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 surcharger. le mme nombre de paramtres que la fonction WLangage surcharger. Ces paramtres doivent galement tre du mme type que ceux de la 102 Partie 2 : Syntaxe de base du WLangage

Par exemple, pour surcharger la fonction Trace du WLangage, il est possible d'utiliser le code suivant :
PROCEDURE Trace(Information1) Message("Lancement d'une trace") WL.Trace(Information1)

Partie 2 : Syntaxe de base du WLangage

103

"ClasseDrive2" qui hritent de "ClasseBase".


// 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

2me aspect : une syntaxe supplmentaire dans la mthode de la classe drive :


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 syntaxe 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

7. GESTION DES EXCEPTIONS


7.1 Prsentation
En cas d'erreur de programmation dans une application / 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 diverses solutions : l'affichage d'un message d'erreur personnalis (non disponible en WebDev). le mcanisme des exceptions. Il est alors possible de personnaliser la gestion de l'erreur. Attention : ces solutions permettent uniquement de grer des erreurs de programmation. Ces solutions ne permettent pas de grer des erreurs d'excution (du type criture impossible dans un fichier en lecture seule). 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 traitement des exceptions : les exceptions gnrales : le traitement d'exception est valable pour l'ensemble d'un objet (projet, fentre, page, tat, ...) les exceptions spcifiques : le traitement d'exception est valable uniquement sur une portion de code dtermine. les exceptions automatises : la gestion des exceptions se met en place directement depuis l'interface de WinDev, WebDev et WinDev Mobile.

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 :
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 ClasseBase oDrive.meth(1) // appelle la 1re syntaxe dans la classe ClasseDrive

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 :
ClasseBase PROCEDURE meth(s est une chane) ClasseDrive PROCEDURE meth(n est un entier)

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 programmation d'afficher un message du type : "Problme dans l'application XXX : Notez le texte de

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 : .
PROCEDURE mthode(...) <redfinition>

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 utilisable 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 dclaration des globales dune page ou code douverture 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 traitement d'exception ne sera plus valide une fois le traitement termin. Ainsi, un traitement d'exception dclar dans un code de clic d'un bouton ne sera valide que dans ce traitement et dans toutes les procdures appeles partir de ce traitement.

Pour provoquer une multisyntaxe, il faut ajouter l'attribut d'extension <multisyntaxe> la mthode de la classe drive.
PROCEDURE mthode(...) <multisyntaxe>

104

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

105

7.2.2 Syntaxes de dclaration


Traitement de l'exception sur une ligne
QUAND EXCEPTION <Traitement exception sur 1 ligne> <Suite du code>

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 traitement d'exception. Exemple :
// 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

Traitement de l'exception sur plusieurs lignes


QUAND EXCEPTION <Code du traitement de l'exception> FIN <Suite du code>

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 qualit du code dans les traitements d'exception car toute erreur provoquera l'affichage de la fentre / page standard du mcanisme de scurit du WLangage. 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

7.2.3 Dclaration de plusieurs traitements d'exceptions gnrales


Dclaration des traitements d'exceptions gnrales dans un mme traitement Le second traitement d'exception remplacera le premier traitement d'exception partir de la dclaration 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 fentre 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
PROCEDURE Exemple() <Code 1> QUAND EXCEPTION <Traitement exception 1> FIN <Code 2> QUAND EXCEPTION <Traitement exception 2> FIN <Code 3>

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 rendre la main l'utilisateur. soit dutiliser la fonction FinProgramme pour fermer 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'exception sera dclenche si une erreur de programmation 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 prioritaire 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>

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 survient, le traitement d'exception ne sera pas excut. Si un traitement d'exception d'un niveau suprieur existe, ce traitement d'exception sera excut. Pour r-activer un traitement d'exception aprs utilisation, utilisez la fonction ExceptionActive. Attention, 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.

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>

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 traitement d'exception principal pendant la dure de vie de cet objet. Exemple, si les deux traitements d'exception suivants sont dclars : traitement d'exception A dclar dans le code d'initialisation d'un projet

7.4 Mcanisme des exceptions automatises


La gestion des exceptions peut tre personnalise par traitement. Vous pouvez choisir d'utiliser un traitement automatique d'exception, ou opter pour une gestion avance grce diffrentes fonctions WLangage. Partie 2 : Syntaxe de base du WLangage 107

106

Partie 2 : Syntaxe de base du WLangage

Important : La gestion automatique des erreurs et des exceptions fonctionne uniquement pour le traitement pour lequel elle est dfinie.

7.4.3 Excuter une procdure de traitement d'exception


Si cette option est slectionne, lorsqu'une exception sera rencontre dans le traitement en cours (ou dans les traitements appels par le traitement en cours), la procdure indique sera automatiquement 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 cidessous. En fonction de la constante renvoye, WinDev/WebDev effectuera le traitement correspondant. OpAnnuler OpFinTraitement OpFinProgramme Relance l'exception La fonction ayant dclench l'erreur renvoie une erreur et le traitement en cours s'arrte. quivalent RepriseSaisie La fonction ayant dclench l'erreur renvoie une erreur et le programme s'arrte. quivalent FinProgramme

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 ensembles d'objets. Chaque objet reprsente une instance 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 dclarer les classes, les mthodes et les objets en WLangage. Ce chapitre donne les syntaxes de la POO en WLangage et le principe de la cration d'un programme orient objet en WLangage. Le lecteur est suppos connatre les classes, les objets, les hritages, ... Si vous ne connaissez pas la POO, nous vous conseillons de lire des manuels spcialiss sur la POO avant de lire la suite de ce chapitre.

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 EXCEPTION:" dans le code) Excuter une procdure de traitement d'exception.

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 tiquette 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.

8.2 Concepts de la POO


8.2.1 Classe
Une classe rassemble la description d'une structure 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.

OpRelancePro- Termine l'application et relance gramme automatiquement l'application.

7.5 Fonctions de gestion des exceptions


Les fonctions suivantes permettent de grer les exceptions : R-active le traitement d'exception en cours si l'exception a pu tre corrige. Affiche la fentre standard des exceptions avec le contenu de l'exception courante. Paramtre le comportement automatique adopter en cas d'exception dans le traitement en cours. 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- Rtablit le traitement d'exception d'un traitement. Ce traitement d'exception a t mtre modifi dans le traitement en cours par un appel la fonction ExceptionChangeParamtre. Ces fonctions sont dtailles dans laide en ligne. 108 Partie 2 : Syntaxe de base du WLangage ExceptionActive ExceptionAffiche ExceptionChangeParamtre ExceptionDclenche

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 communes 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.

Partie 2 : Syntaxe de base du WLangage

109

8.2.3 Constructeur et destructeur


La notion de Constructeur et Destructeur est importante 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 dclaration d'un objet de la classe. Cela permet de s'assurer 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.

connu, dans le but de lui ajouter des fonctionnalits, 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 Hritage de classe, page 115.

8.3.2 Dclaration des membres


[<Accs>] [CONSTANT] [GLOBAL] <Nom du membre> est un <Type du membre>
ClasseSystme est une classe Nom est une chane Priv Taille est un entier FIN

ou
CONSTANT <Nom constante> = <Valeur de la constante> <Nom constante> = <Valeur de la constante> FIN
CONSTANT K=5 CONSTANT K=5 J=10 FIN

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 projet. 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 uniquement lue depuis un autre code de l'application. 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 disponibles du WLangage.

Les paramtres importants de cette syntaxe sont les suivants : <Nom de la constante> Nom de la constante. Une constante est publique. <Valeur de la constante> Valeur associe la constante. Cette valeur ne variera pas au cours du programme.

8.2.5 Encapsulation de donnes


L'encapsulation des donnes est sans aucun doute la notion la plus importante de la POO. Cette technique 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 membres dont l'accs est interdit sont appels membres privs. Il n'est possible d'y accder qu' partir des mthodes prvues cet effet dans la classe.

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

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>]])
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

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 plusieurs objets. Tous les objets d'une classe donne sont identiques par leur forme et leur comportement, mais leurs membres contiennent des donnes 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 110 Partie 2 : Syntaxe de base du WLangage TailleFichier() pour connatre la taille du fichier de l'objet Fichier

Membre Mthode

8.3.1 Dclaration de la classe


<NomClasse> est une classe <Dclaration des membres> FIN
ClasseSystme est une classe Nom est une chane FIN

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 uniquement depuis un code de la classe Protg : la mthode peut tre appele uniquement 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 Partie 2 : Syntaxe de base du WLangage 111

8.3.3 Dclaration des constantes


CONSTANT <Nom constante> = ... <Valeur de la constante>

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, prive 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 projet" (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 variable ou un membre (rcupration directe de la valeur, affectation par le symbole '=', ...). Lors de l'excution : Toute opration ncessitant la lecture de la proprit 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 diffrentes 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 traitement permet de donner une valeur la proprit. Cette valeur est passe en paramtre. Ce traitement 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 compilation apparatra sous l'diteur et une erreur se produira 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 doivent l'tre sinon une erreur de compilation est affiche. Pour plus de dtails, consultez laide en ligne.

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 peuvent pas contenir les fonctions Evnement, Timer, Multitache, DnDEvnement, DDEEvnement, AppelDLL32, ...

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 paramtres 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>)

8.4.1 Constructeur de la classe


Dclaration du constructeur Syntaxe :
PROCEDURE [<Accs>] Constructeur([<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>)

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 uniquement dans la classe. <Paramtres> Paramtres optionnels du constructeur.

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

112

Partie 2 : Syntaxe de base du WLangage

Partie 2 : Syntaxe de base du WLangage

113

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 fonction ou une procdure. Remarque : Il est possible d'instancier dynamiquement 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"... 1. Appeler une mthode appartenant un objet diffrent de l'objet en cours
<Nom Objet> : <Nom Mthode> ([<Paramtres>])

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).
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

8.6.1 Dclaration d'un objet dynamique


<NomObjet> est [un][objet] <NomClasse> dynamique

La mthode est recherche parmi les mthodes de la classe de l'objet. Si la mthode n'est pas trouve, 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>])

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.

3. Appeler une mthode d'une classe anctre qui a t redfinie


<Nom Objet> : <Nom Classe> :: <Nom Mthode> ([<Paramtres>])

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 constructeur.

4. Appeler une mthode de classe gnrale


<Nom Classe>::<Nom Mthode>([<Paramtres>])
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

8.5.1 Dclaration d'un objet


<NomObjet> est [un] [objet] <NomClasse> ([<Paramtres>])
FichierSource est un objet Fichier FichierSource est un Fichier

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 cration de la classe sous l'diteur de code. <Paramtres> Paramtres optionnels du constructeur.

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 caractristiques de la classe B sans qu'il soit ncessaire de dupliquer les programmes dans l'objet de la sousclasse A. Ainsi le nombre de lignes de code diminue. 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 faisaient 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. Partie 2 : Syntaxe de base du WLangage 115

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.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 dclaration 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'initialisation d'un projet sera dtruit la fermeture du projet.

8.5.3 Les mthodes d'un objet


Les mthodes d'un objet sont des fonctionnalits associes l'objet. Un objet possde ncessairement toutes les mthodes dcrites dans la classe. Ces mthodes peuvent tre appeles de diffrentes faons selon le lieu de l'appel. 114 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
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

l'hritage est public. <NomClasseAnctre> : Nom de la classe anctre. <Nom Membre classe Drive> : Nom du membre de la classe drive. Ce membre sera utilisable 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 ventuellement 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.

PARTIE 3 Gestion des champs, des fentres et des pages

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,

116

Partie 2 : Syntaxe de base du WLangage

1. GESTION DES FENTRES


1.1 Prsentation
Les fentres constituent l'interface principale d'une application WinDev. En effet, c'est grce aux fentres que les utilisateurs vont pouvoir consulter et manipuler des informations. Ces informations peuvent tre dynamiques et provenir par exemple de fichiers de donnes, de requtes ou tre statiques, saisies directement dans les champs de la fentre.

WD WDMobile

WinDev et WinDev Mobile proposent plusieurs fonctions 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 : Abandonne ChangeFentreSource ChangeGabarit DlaiAvantFermeture DsactiveFAA EnumreElment EnumreSousElment ExcuteFAA Ferme la fentre en cours en excutant ventuellement le code du bouton de type "ABANDON" Change dynamiquement la fentre affiche dans un champ fentre interne Change le gabarit d'une fentre. Limite le temps d'affichage d'une fentre (lorsque le temps spcifi est coul, le code d'un bouton de la fentre est excut) Dsactive une Fonctionnalit Automatique d'une Application (FAA) sur un champ, sur une fentre ou sur l'application en cours. Enumre les fentres d'un projet Enumre les groupes ou les menus d'une fentre.

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- Modifie le type et la dure des animations utilises lors de la fermeture des fentres meture de l'application FenAnimationOuver- Modifie le type et la dure des animations utilises lors de louverture des fentres de ture l'application FenAnimationSui- Modifie le type et la dure de la prochaine animation de fentre vante 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 graphiques limites ou pour le mode TSE si la bande passant est limite. FenDonneHauteurA- Renvoie la hauteur d'une fentre, adapte au contenu des champs. dapte Partie 3 : Gestion des fentres, des pages et des champs 119

FenDonneLargeurAdapte FenEffetInactif FenEnCours FenEnExcution FenEtat FenExtHaut FenExtLarg FenExtPosX

Renvoie la largeur d'une fentre, adapte au contenu des champs.

StyleDessin TitreEnCours TitreSuivant Utilise

Active ou dsactive le GFI Identifie la fentre en cours de saisie Identifie la fentre contenant le code du WLangage en cours d'excution Identifie ou modifie l'tat d'une fentre Renvoie la hauteur totale d'une fentre Renvoie la largeur totale d'une fentre 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 fentre n'est pas inaccessible. FenHauteurBarreI- Renvoie ou modifie la hauteur actuelle de la zone "Barre d'icnes" de la fentre mre cone 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 graphique FenTaille Renvoie ou modifie le mode d'affichage d'une fentre, modifie la hauteur et/ou la largeur 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 graphique 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

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. Modifie le titre de la fentre en cours et la barre de titre Modifie le titre de la prochaine fentre ouvrir 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.

1.3 Fonctions MDI


Les fonctions permettant de grer les fentres MDI sont les suivantes : MDIActive MDIEnumreFille MDIMenuFentre MDIMre MDIOuvre Identifie ou active une fentre fille MDI en avant-plan Renvoie l'alias de la fentre fille MDI spcifie Modifie l'agencement des fentres filles MDI Identifie le nom de la fentre mre MDI Ouvre une fentre fille MDI

Pour plus de dtails sur ces fonctions, consultez laide en ligne. Ces fonctions sont disponibles uniquement sous WinDev.

1.4 Fonctions de gestion des menus


WinDev et WinDev Mobile proposent plusieurs fonctions du WLangage spcifiques aux options de menu : ChampContextuel EnumreMenu EnumreSousElment grMenu MenuAjoute MenuAjouteMenu MenuAjouteOption MenuAjouteOptionURL Identifie le champ sur lequel le menu contextuel a t ouvert Renvoie le nom de la nime option de menu Utilise dans une boucle, cette fonction permet d'numrer les menus droulants ou les menus contextuels d'une fentre ou d'un champ. Active ou dsactive le menu contextuel d'un graphe. Ajoute un menu contextuel dans un menu Ajoute un nouveau menu dans une fentre. Ce menu pourra contenir d'autres menus, des options de menu, des sparateurs, Ajoute une nouvelle option de menu la fin d'un menu. Cette option de menu excute une procdure passe en paramtre. 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. Ajoute un nouveau sparateur dans un menu. Clone un menu ou une option de menu ainsi que le code associ. Enlve la marque devant l'option de menu Identifie l'tat d'une option de menu : active, inactive ou invisible Indique si une option de menu existe dans un menu.

MenuAjouteSparateur MenuClone MenuDmarque MenuEtat MenuExiste

120

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

121

MenuInsreMenu MenuInsreOption MenuInsreSparateur MenuInvisible MenuLibell MenuMarquage MenuMarque MenuSelectMoins MenuSelectPlus MenuSupprime OuvreMenuContextuel PiloteMenu

Insre un menu avant un autre menu dans une fentre. Le menu insr pourra contenir d'autres menus, des options de menus, des sparateurs, Insre une nouvelle option une position spcifique. Cette option de menu excute une procdure passe en paramtre. Insre un sparateur dans un menu. Rend une option de menu invisible Identifie ou modifie le libell d'une option de menu Permet de savoir si la marque Positionne la marque est prsente devant l'option de menu devant l'option de menu

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

WB

varient en fonction des demandes des internautes. statiques. Ces informations sont fixes et ne changent pas.

Dsactive (grise) une option de menu Active une option de menu Supprime un menu ou une option de menu Ouvre automatiquement un menu contextuel pour le champ ou la fentre en cours Pilote le prochain menu qui sera ouvert, puis excute automatiquement une option de ce menu indique en paramtre.

2.2 Fonctions de gestion des pages


Les fonctions permettant de grer les pages sont les suivantes : AnnuleContexteAWP Supprime du contexte AWP une variable ajoute par la fonction DclareContexteAWP. CelluleAfficheDialogue Affiche une cellule dans la page avec un effet de GFI (Grisage des Fentres Inaccessibles). 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'excution 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 contexte 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

Pour plus de dtails sur ces fonctions, consultez laide en ligne. Ces fonctions sont disponibles uniquement sous WinDev.

122

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

123

PageFermeDialogue

Ferme la page courante. Cette page a t ouverte avec la fonction PageAfficheDialogue. 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'initialisation 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 PageSemiDynamiAffiche une page semi-dynamique dans le navigateur de l'internaute partir d'une queAffiche 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 contextes 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 Inaccessibles). 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 Navigateur), consultez laide en ligne.

3. GRER LE BOUTON "PRCDENT" DANS


UNE PAGE
3.1 Prsentation
Le bouton "Prcdent" ou "Back" du navigateur permet 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 effectue 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. reli au fichier de donnes ITEM et un lien "Suivant". 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 premiers 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 enregistrements suivants de ITEM et renvoie au navigateur 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 enregistrements suivants de ITEM (donc de M R). Le navigateur se synchronise avec le serveur et affiche les mmes lments : linternaute a l'impression que certaines informations ne sont pas affiches. Ce dysfonctionnement peut avoir des consquences inattendues lors dune modification dun enregistrement 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

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 (solution par dfaut) Pour chaque action effectue dans une page depuis le navigateur, un test de synchronisation entre la page HTML et son contexte est automatiquement 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.

2.3 Fonctions de gestion des menus


WebDev propose plusieurs fonctions du WLangage spcifiques aux options de menu : ChampContextuel EnumreMenu MenuAjouteMenu MenuAjouteOption MenuAjouteOptionURL Identifie le champ sur lequel le menu contextuel a t ouvert Renvoie le nom de la nime option de menu Ajoute un nouveau menu dans une fentre. Ajoute une nouvelle option de menu la fin d'un menu. Cette option de menu excute une procdure passe en paramtre. 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. Ajoute un nouveau sparateur dans un menu. Insre un sparateur dans un menu. Supprime un menu ou une option de menu

MenuAjouteSparateur MenuInsreSparateur MenuSupprime

3.1.2 Exemple de dsynchronisation


Voici un exemple de site : Une page du navigateur contient une table fichier

Pour plus de dtails sur ces fonctions, consultez laide en ligne. 124 Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

125

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.2 Mise en place


Pour dsactiver le bouton "Prcdent" du navigateur pour une page prcise : 1. Affichez la fentre de description de la page. Pour cela, sous le volet "Page", cliquez sur le bouton du groupe "Edition". 2. Dans l'onglet "Dtail", cochez loption "Empcher le retour sur cette page depuis le bouton "Prcdent" du navigateur". 3. Validez. Pour dsactiver le bouton "Prcdent" du navigateur pour un frameset : 1. Affichez l'onglet "Dtail" de la fentre de description du frameset (option "Description" du menu contextuel de la frame). 2. Cochez loption "Empcher le retour sur ce frameset depuis le bouton "Prcdent" du navigateur". 3. Validez. Pour dsactiver le bouton "Prcdent" du navigateur pour toutes les pages du projet : 1. Affichez la description du projet (sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description"). 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.

incluse dans l'historique des pages du navigateur : il sera possible de revenir sur cette page par la touche "Prcdent" du navigateur. Pour mettre en place la gestion de la synchronisation 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 automatiquement incluses dans l'historique des pages du navigateur : il sera possible de revenir sur ces pages par la touche "Prcdent" du navigateur.

3.2.1 Fonctionnement
La dsactivation de la fonction "Page prcdente" du navigateur entrane l'insertion du code Javascript suivant dans la page HTML gnre :
<SCRIPT LANGUAGE="JavaScript"> history.forward() </SCRIPT>

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 "Fermer" par exemple) il est possible de dbrancher le mcanisme de synchronisation : il suffit de cocher l'option "Dsactiver le mcanisme de synchronisation des pages pour ce champ" dans longlet "Avanc" de la description du champ. Le message d'avertissement peut tre personnalis (voir le paragraphe suivant).

Lors de l'excution de la page sous un navigateur, il sera impossible de revenir sur cette page par la touche "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.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 bouton 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 suffit 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 personnalise de la synchronisation dans le code de synchronisation 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 WLangage permettant d'afficher ou de rafficher une page est utilise dans le code de synchronisation de la page. Pour personnaliser le message de dsynchronisation, il suffit de saisir dans le code de synchronisation de la page : 1. le message personnalis. 2. le raffichage de la page en cours sur le serveur (avec la fonction PageActualise par exemple). Pour raliser une synchronisation partir des informations prsentes sur le poste de l'internaute, 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.

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 automatiquement ralise. Cette vrification consiste vrifier si la page affiche sur le navigateur correspond bien au contexte de page prsent sur le serveur. Deux modes de gestion de la synchronisation sont disponibles : 1. Gestion de la synchronisation par dfaut. 2. Gestion de la synchronisation par programmation, 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 mcanisme de synchronisation des pages" est slectionne pour la page. En cas de dsynchronisation, un message davertissement informe l'internaute que laction demande 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 synchronisation dans une page : 1. Affichez la fentre de description de la page. Pour cela, sous le volet "Page", cliquez sur le bouton du groupe "Edition". 2. Dans l'onglet "Dtail", cochez l'option "Utiliser le mcanisme de synchronisation des pages". 3. Validez. Cette page sera automatiquement

126

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

127

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 standard (composes dune image, dun texte et de plusieurs 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.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 fentres permettent de grer : l'interrogation directive : l'utilisateur rpond une question grce des boutons contenant le texte de l'action effectuer.

WD
soit de crer un nouveau message grce une fentre trs simple. Lorsque les diffrentes caractristiques du message sont saisies, le code correspondant est automatiquement gnr. Remarque : Le code gnr utilise la fonction Dialogue.

4.3.3 Saisie immdiate


Dans une application, il est souvent long et fastidieux 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 manipulation. La fentre cre avec cette fonction permet de saisir une donne (champ de saisie ou case cocher) et de valider ou d'annuler la saisie.

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'utilisateur / 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 correspondant au message destin l'utilisateur/linternaute. 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).

la saisie immdiate, en proposant l'utilisateur de saisir directement dans la bote de dialogue la valeur voulue.

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", droulez "Options" puis slectionnez "Options gnrales de WinDev". 2. Dans longlet "Rpertoires", modifiez le rpertoire 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 slectionnez loption "Interrogation directive". 3. Dans la fentre qui saffiche, slectionnez le message supprimer et cliquez sur licne "-".

Les botes de confirmation (fonction Confirmer du WLangage).

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 suppression en cours ?" avec les boutons "Oui" ou "Non". Pour simplifier l'criture de ces messages, chaque utilisation d'une fonction de dialogue avec l'utilisateur, WinDev propose : soit de slectionner un message dj existant

Par dfaut, les botes de dialogue sont fermes uniquement lors de l'action de l'utilisateur / linternaute sur un des boutons de la bote. Si aucun bouton n'est enfonc, l'application / le site est bloqu(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.

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 application ? WinDev permet d'intgrer facilement la fentre "WinDevMessageBox" dans vos applications. Cette fentre est une fentre d'information systme (une 128 Partie 3 : Gestion des fentres, des pages et des champs

WD

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, OuiNon, Confirmer et Erreur affichent automatiquement la fentre "WinDevMessageBox".

Partie 3 : Gestion des fentres, des pages et des champs

129

Rappel : Par dfaut, les botes de dialogue affiches sont des botes de dialogue standard et possdent 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 (images, libell des boutons, ...). Par dfaut, cette fentre 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 dialogues multilingues".

Ne supprimez pas de champs. Si vous ajoutez des champs aux fentres "WinDevMessageBox" 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 modifications.

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 inactive est assombrie, et ainsi les pages actives sont plus visibles par l'internaute.

WB
PageTauxGFI Dfinit et renvoie le taux de grisage utilis par le GFI.

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 dialogue. un bouton permettant de valider la bote de dialogue. 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 :
CelluleFermeDialogue("MaCellule")

4.4.2 Ne plus personnaliser les fentres dinformation systme


Pour ne plus personnaliser les fentres d'information systme : 1. Sous WinDev, affichez la description du projet (sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description"). 2. Dans l'onglet "Style", dcochez l'option "Appliquer le thme de gabarit sur les fentres d'information 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 correspondant aux fentres "WinDevMessageBox" et "WinDevDialogBox" du rpertoire de votre projet).

4.6.2 Les fonctions WLangage disponibles


WebDev met votre disposition plusieurs fonctions permettant de dialoguer avec linternaute : CelluleAfficheDialo- Affiche une cellule dans la gue page avec un effet de GFI (Grisage des Fentres Inaccessibles). Permet de simuler simplement une bote de dialogue en code navigateur. CelluleFermeDialo- Masque une cellule affiche gue 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- Affiche une page de manire gue 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- Ferme la page courante. gue Cette page a t ouverte avec la fonction PageAfficheDialogue. Une valeur de retour peut tre renvoye la page appelante. Toutes ces fonctions permettent de dialoguer avec l'utilisateur et prennent en compte les paramtres du GFI dfinis par les fonctions suivantes : PageActiveGFI Active ou dsactive le GFI (Grisage des pages inaccessibles).

4.4.1 Personnaliser les fentres dinformation systme


Pour personnaliser les fentres d'information systme : 1. Sous WinDev, affichez la description du projet (sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description"). 2. Dans longlet "Style", cochez l'option "Appliquer le thme de gabarit sur les fentres d'information systme" et validez. Les fentres "WinDevMessageBox" et "WinDevDialogBox" sont automatiquement intgres dans votre application. Le gabarit de votre projet est appliqu sur ces fentres. La fentre "WinDevMessageBox" remplace la fentre 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 "WinDevMessageBox"et "WinDevDialogBox", ni le code de leurs champs.

4.4.3 Botes de dialogues multilingues


Pour obtenir des botes de dialogues multilingues : 1. Personnalisez les fentres d'information systme (voir le paragraphe prcdent). 2. Saisissez les libells multilingues des diffrents boutons (option "Description" du menu contextuel). 3. Slectionnez les images multilingues des diffrents 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, ...

La fonction CelluleFermeDialogue permet de rendre invisible la cellule prcdemment affiche. 5. Pour dialoguer avec l'internaute depuis la page (par exemple partir d'un bouton de la page) il suffit d'utiliser la fonction CelluleAfficheDialogue, en prcisant le nom de la cellule utiliser pour le dialogue.

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 conseille 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 dialogue. 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 naviga131

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 dialogue 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 bloque.

WD WDMobile

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.

130

Partie 3 : Gestion des fentres, des pages et des champs

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 :
PageFermeDialogue()

La fonction PageFermeDialogue permet de renvoyer 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 PageAfficheDialogue, 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'internaute. 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 doivent tre enregistres dans votre projet avec le nom propos par dfaut. 2. Utiliser les fonctions OuiNon et OKAnnuler dans le code de l'application.

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 dplaces entre plusieurs champs d'une mme application 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.

4.7 Fonctions de gestion des botes de dialogue


Les fonctions permettant de grer les messages et les botes de dialogue sont les suivantes : Avertissement BulleActive Confirmer Affiche un message personnalis dans une fentre d'avertissement systme Active ou non l'affichage des bulles d'aide 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.

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 ncessaire. 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. 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 (conversions automatiques). Dans ce cas, il est conseill d'utiliser le Drag and Drop programm.

5.2.1 WinDev : Champs concerns par le Drag and Drop automatique


En WinDev, le Drag and Drop automatique est disponible sur les champs suivants : les champs de saisie, les listes, les listes image,

5.2.2 WebDev : Champs concerns par le Drag and Drop automatique


En WebDev, le Drag and Drop automatique est disponible sur les champs suivants : Champ Upload, Champ Libell, 133

132

Partie 3 : Gestion des fentres, des pages et des champs

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" permet de dfinir le champ comme "source" du "Glisser/Dplacer". L'utilisateur pourra slectionner le contenu 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.

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'explorateur 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. lit de faire du "Drag and Drop" depuis lexplorateur 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.
ExplorerAccepte(Vrai, "") Evnement("RecupFichiers", ... "*.", 563)

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 saisie, liste, liste image, arbre, table, image et codebarres. 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, effectuez 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'vnement DndSurvol). Dfinissez la procdure excute lors du "Lcher" sur le champ (fonction DndEvnement pour l'vnement DndLcher). 3. Dans chacune des procdures WLangage appeles, dfinissez l'action excuter grce aux fonctions "Drag and Drop" du WLangage.

5.4.1 Principe
Pour permettre un "Drag and Drop" depuis l'explorateur vers une application WinDev, les diffrentes tapes sont les suivantes : 1. Activez la possibilit de raliser un "Drag and Drop" depuis l'explorateur (fonction ExplorerAccepte). 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 caractristiques des fichiers "dropps" grce la fonction ExplorerRcupre.

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.
// 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

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.

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-

134

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

135

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/dplacer 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 Windows 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.

6. GESTION DES CHAMPS


6.1 Prsentation
WinDev, WebDev et WinDev proposent de nombreux 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 exemple, les fonctions prfixes par le mot "Arbre" permettent de grer les champs "Arbre", le prfixe "Table" est utilis pour grer les champs Table, ... Ce chapitre prsente toutes les fonctions WLangage 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 gnrales, pouvant tre utilises avec tout type de champs. ActiveXEvnement AjouteLien AscenseurAffiche BulleActive BulleCouleur BulleDlai ChampActif ChampAlias ChampCauseEntreSortie ChampClone ChampContextuel ChampEnCours ChampErreur ChampExiste ChampGris ChampInvisible ChampPrcdent ChampPremier 136 Partie 3 : Gestion des fentres, des pages et des champs Associe une procdure crite en WLangage un vnement d'un contrle ActiveX Ajoute un lien sur une portion de texte dans un champ de saisie Affiche ou non un ascenseur dans un champ (champ de saisie ou liste) Active ou dsactive le mcanisme d'affichage des bulles d'aide sur les champs Modifie les couleurs des bulles d'aide pour la fentre en cours Permet de modifier le dlai attendre avant l'affichage des bulles d'aide et la dure d'affichage des bulles d'aide des champs Dgrise un champ ou un groupe de champs d'une fentre. Pendant cette opration, une animation sur les champs peut tre effectue. Identifie, modifie ou restaure la liaison fichier d'un champ ou d'un ensemble de champs Indique l'origine de la modification du champ en cours de saisie Cre un nouveau champ (ce nouveau champ est une copie d'un champ existant dans la fentre en cours) Identifie le champ sur lequel le menu contextuel a t ouvert Renvoie le nom du champ en cours de saisie Personnalise le message d'erreur affich dans les champs, en cas d'impossibilit d'afficher la valeur Teste l'existence d'un champ dans une fentre / une page Grise un champ ou un groupe de champs. Pendant cette opration, une animation sur les champs peut tre effectue. Rend invisible un champ ou un groupe de champs dans une fentre. Pendant cette opration, une animation sur les champs peut tre effectue. Renvoie le nom du champ prcdemment en cours de saisie dans la fentre en cours Renvoie le nom du premier champ en saisie dans la fentre spcifie Partie 3 : Gestion des fentres, des pages et des champs 137

ChampSansEspace ChampSuivant ChampSupprime ChampSurvol ChampVisible ChangeStyle ChargeParamtre ColonneEnCours CouleurSlection DonneFocus EcranPremier EnumreChamp HTMLNavigue IndiceEnCours IndiceSuivant InitParamtre Occurrence OngletDuChamp OuvreMenuContextuel ParamtreOrthographe ParentObjet RAZ RepriseSaisie RTFAjoute RTFCharge RTFInsre RTFRecherche RTFRemplace RTFSlection RTFVersTexte SaisieAssisteAjoute

Indique si les espaces droite de la valeur prsente dans le champ sont supprims Identifie le champ suivant en saisie Supprime dfinitivement un champ ou une colonne de table Identifie le champ survol par le curseur de la souris Rend visible un champ ou un groupe de champs dans une fentre. Pendant cette opration, une animation sur les champs peut tre effectue. Modifie dynamiquement le style dun champ Lit une valeur persistante. La valeur persistante a t sauvegarde grce la fonction SauveParamtre dans le fichier spcifi avec la fonction InitParamtre Connatre l'indice de la colonne indice en cours dans une table fichier ou une table mmoire Change les caractristiques du bandeau de slection dans une table, une combo ou une liste Donne le focus au champ spcifi Dfinit le prochain champ qui sera en saisie dans la fentre en cours numre les champs d'une fentre, dune page, d'un groupe, d'un onglet ou d'un superchamp Lance une opration de navigation dans un champ HTML Obtenir l'indice du champ en cours Renvoie le numro de la ligne suivante affiche dans la table en cours. Initialise la gestion des valeurs persistantes dans la base de registres Obtenir le nombre d'occurrences d'un champ dans une fentre / une page Renvoie le nom du champ Onglet qui contient le champ spcifi Ouvre automatiquement un menu contextuel pour le champ ou la fentre en cours Permet de configurer la gestion du correcteur orthographique Open Office pour tous les champs de saisie de lapplication Identifie le "Parent" d'un objet graphique : champ, colonne, fentre, page, etc. R-initialise tous les champs de la fentre / page en cours Permet de reprendre la saisie sur le champ ou la fentre / page spcifie Ajoute une chane de caractres (au format RTF ou non) la fin du contenu dun champ de saisie RTF Charge un fichier au format RTF dans un champ de saisie RTF Insre une chane de caractres au format RTF dans le contenu dun champ de saisie RTF Recherche une chane de caractres dans un champ de saisie de type RTF Remplace ou insre une chane de caractres dans un champ de saisie de type RTF Change ou liste les attributs du texte actuellement slectionn dans un champ de saisie de type RTF Renvoie le texte prsent dans un champ de saisie au format RTF sans les caractristiques de formatage propres au RTF Ajoute une ligne dans la liste des valeurs disponibles pour la saisie assiste dun champ de saisie. Ferme la liste des valeurs proposes par la saisie assiste dun champ de saisie. Ouvre la liste des valeurs proposes pour la saisie assiste dun champ de saisie. Vide la liste des valeurs proposes pour la saisie assiste dun champ de saisie.

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

TexteHauteur

SaisieAssisteFerme SaisieAssisteOuvre SaisieAssisteSupprimeTout SauveParamtre Sauve une valeur persistante dans la base de registres (ou dans un autre fichier spcifi avec la fonction InitParamtre) SupprimeParamtre Supprime un paramtre ou une srie de paramtres sauvs prcdemment.

138

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

139

7. PROPRITS DES FENTRES, DES PAGES ET


DES CHAMPS
Les proprits sappliquant aux fentres, aux pages et leurs champs sont les suivantes : Adresse Affichage AffichageActif Alias Altitude Ancrage AngleObservateur AngleTitre Animation AnimationInitiale AvanceRapide AvecSaisie AxeXMax AxeXMin AxeYMax AxeYMin BandeauVisible BarreDeMessage BorneMax BorneMin BoutonCalculatrice BoutonCalendrier Bulle 140 Permet de connecter le flux avec un correspondant et de connatre l'adresse de la dernire demande de connexion Permet de connatre et de modifier la vido actuellement affiche par le champ Confrence 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 WinDev : Permet de connatre et de modifier l'alias d'une fentre WebDev : Renvoie le nom interne HTML/Javascript dun champ ou dune page Permet de connatre et de modifier l'altitude d'un champ Permet de connatre l'ancrage actuel d'un champ et de modifier les caractristiques d'ancrage d'un champ Permet de connatre et de modifier l'angle secondaire d'un champ carrousel. Permet de faire "pivoter" le champ. 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%). 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 Permet de connatre l'tat initial de l'animation dans un champ image ou dans un champ libell Permet de connatre et de modifier la valeur de l'avance rapide d'un ascenseur Permet de savoir si un champ Combo est avec ou sans saisie et permet de modifier cet tat. Permet de connatre la borne maximale des abscisses (axe X) d'un champ de type graphe. Permet de connatre la borne minimale des abscisses (axe X) d'un champ de type graphe. Permet de connatre la borne maximale des ordonnes (axe Y) d'un champ de type graphe. Permet de connatre la borne minimale des ordonnes (axe Y) d'un champ de type graphe. Permet de savoir si le bandeau est visible sur une colonne de table (ou table hirarchique) et permet de rendre visible ou invisible le bandeau de slection sur une colonne de table. 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 Permet de connatre et de modifier la borne maximale d'un champ Permet de connatre et de modifier la borne minimale d'un champ Permet de savoir et d'indiquer si un champ de saisie numrique ou montaire propose un bouton pour afficher une calculatrice en popup. Permet de savoir et d'indiquer si un champ de saisie de type Date propose un bouton pour afficher un calendrier en popup. Permet de connatre/modifier le texte affich dans la bulle d'aide associe un champ

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- Permet de savoir si les barres d'outils de la fentre sont compactes et de compacter ou tils 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- Permet de savoir si la fentre est dplaable par le fond et de rendre ou non la fentre Fond 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 prsent dans une fentre.

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

141

DureNonRponse Permet de connatre et de modifier dlai partir duquel la tentative de connexion sera considre comme "ayant chou" EffacementAuto- Permet de grer le mode "Effacement automatique" d'un champ de saisie. matique 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- Permet de connatre et de modifier la taille de la grille pour le dplacement des rendezcement 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 redimensionnement 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) 142 Partie 3 : Gestion des fentres, des pages et des champs

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- Permet de connatre et de modifier la hauteur des ruptures entre les jours dans un Jour champ Planning avec les jours en ligne et les ressources en colonne. HeureOuvrableD- Permet de connatre et de modifier l'heure de dbut des heures ouvrables utilises par but 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 associe 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 associe 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- Permet de connatre et de modifier le mode d'interprtation du caractre '& mercial 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 multicolonnes 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. Partie 3 : Gestion des fentres, des pages et des champs 143

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- permet de connatre et de modifier le nombre maximum d'lments en ligne dans un gne 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 classique 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. ModificationDuPermet de savoir et d'indiquer si lutilisateur peut modifier la dure dun rendez-vous reRDV 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

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 multicolonnes NombrePage Permet de connatre le nombre de pages prsentes dans un fichier image de type "multipages" NomComplet Permet de connatre le nom complet d'un champ, d'un groupe de champs ou d'une fentre NomFichierNaviga- Permet de connatre le nom original du fichier uploader prsent sur le poste de l'interteur 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 TableInsreLigne Num1erJourDeLaS Permet de connatre et de modifier le 1er jour de la semaine affich dans un champ emaine 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 OrientationElPermet de connatre et modifier l'orientation dun champ Organigramme. ment OrientationVerti- Permet de connatre et de modifier lorientation dun champ liste image cale 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 condenser 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

144

Partie 3 : Gestion des fentres, des pages et des champs

Partie 3 : Gestion des fentres, des pages et des champs

145

Ressource RessourceSlectionne RetraitGauche RichEdit RubriqueAffiche RubriqueAfficheImage RubriqueMmorise RubriqueParcourue SaisieDirecteRDV SaisieManuscrite ScrollAuDoigt ScuritHTML Slectionne SlectionPriode SensEcriture SousLibell StyleFond Taille TauxAncrageBas TauxAncrageDroite

TauxAncrageHauteur TauxAncrageLar- Permet de connatre et de modifier le taux d'ancrage en agrandissement d'un champ geur 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 146 Partie 3 : Gestion des fentres, des pages et des champs

Permet de connatre les ressources visibles dans un champ Planning et permet deconnatre la ressource du champ Planning correspondant l'indice spcifi Renvoie le nom de la ressource correspondant la slection de lutilisateur dans un champ Planning Permet de connatre et de modifier l'espace laiss gauche du texte dans les colonnes de table Permet de savoir si un champ d'une fentre est de type RTF (Rich Text Format) Permet de connatre ou de modifier la rubrique affiche dans une table, une zone rpte, une liste ou une combo Permet de connatre ou de modifier la rubrique correspondant l'image affiche dans une liste image Permet de connatre ou de modifier la rubrique mmorise d'une table, dune zone rpte, d'une liste ou d'une combo Permet de connatre et de modifier la rubrique utilise pour le parcours automatique des tables, des zones rptes, des listes ou des combos Permet de savoir et d'indiquer si lutilisateur peut modifier directement le titre dun rendez-vous dans un champ Planning ou dans un champ Agenda. Permet de connatre et de modifier le mode de saisie manuscrite dans les champs de saisie RTF. 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 Permet de connatre et de modifier l'tat du mcanisme de scurit des champs de saisie au format HTML Permet de savoir si une ligne dune liste ou dune table est slectionne et de slectionner une ligne dune liste ou dune table Permet de savoir et d'indiquer si l'utilisateur peut slectionner une priode dans un champ Planning ou dans un champ Agenda. 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). Permet de connatre et de modifier le libell secondaire d'une option de slecteur. Permet de modifier le style d'affichage du fond des cellules de tables et / ou de tables hirarchiques. Permet de connatre et de modifier le nombre maximum de caractres contenus dans un champ d'une fentre ou dune page Permet de connatre et de modifier le taux d'ancrage en dplacement d'un champ sur l'axe vertical Permet de connatre et de modifier le taux d'ancrage en dplacement d'un champ sur l'axe horizontal Permet de connatre et de modifier le taux d'ancrage en hauteur d'un champ

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.

Partie 3 : Gestion des fentres, des pages et des champs

147

PARTIE 4 Fonctions standard

148

Partie 3 : Gestion des fentres, des pages et des champs

1. MANIPULER LES NUMRIQUES


1.1 Prsentation
De nombreuses fonctions de programmation permettent 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 permettant de simplifier et de rsoudre de nombreux problmes. Les calculs sur les matrices sont utiliss dans de nombreux domaines : conomie, physique, etc. Dans ces domaines, les problmes rencontrs peuvent souvent se mettre sous la forme d'un systme d'quations. Le rsultat de ce systme d'quations peut tre calcul grce aux matrices. 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 dynamiquement. 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.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 lments de la matrice. Chaque lment est identifi par sa ligne et sa colonne. Une valeur est associe chaque lment.

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, inversion, compression, suppression), initialiser les lments des matrices, lire la valeur des lments des matrices, effectuer divers calculs sur les matrices (addition, multiplication, transpose, dterminant, etc.), obtenir diverses informations sur les matrices (nombre de lignes, nombre de colonnes, etc.). Exemple Pour effectuer des calculs financiers, votre programme cre plusieurs matrices. Les lments des matrices peuvent tre initialiss. Plusieurs calculs sont possibles sur ces matrices.

Dans cette matrice, n = 2 lignes et p = 4 colonnes. La valeur de l'lment (ligne 2 , colonne 3) est 7.

Partie 4 : Fonctions standard

151

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 statistiques 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 prises 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 plusieurs mthodes, calculer lcart-type, etc.

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.

1.5.2 Fonctions Binaire


Les fonctions de gestion des valeurs binaires sont les suivantes : ETBinaire NONBinaire OUBinaire OUExclusifBinaire Renvoie le rsultat du ET logique (bit bit) entre deux valeurs Renvoie le rsultat du NON logique (bit bit) d'une valeur Renvoie le rsultat du OU logique (bit bit) entre deux valeurs Renvoie le rsultat du OU Exclusif logique (bit bit) entre deux valeurs

1.5 Fonction de gestion des numriques


1.5.1 Fonctions diverses
Les fonctions de gestion des valeurs numriques sont les suivantes : Abs ArcCosinus ArcSinus ArcTang ArcTang2 Arrondi ArrondiInfrieur ArrondiSuprieur Conversion Cosinus CoTang EstImpair EstPair Exp Factorielle Hasard 152 Calcule la valeur absolue d'une expression numrique (entire ou relle) Calcule l'arc cosinus d'une valeur numrique (entire ou relle) Calcule l'arc sinus d'une valeur numrique (entire ou relle) Calcule l'arc tangente d'une valeur numrique (entire ou relle) Renvoie l'arc tangente 2 des valeurs passes en paramtre Calcule la valeur arrondie d'une valeur numrique selon le nombre de dcimales prcis Renvoie la valeur arrondie d'une valeur numrique l'entier infrieur le plus proche Renvoie la valeur arrondie d'une valeur numrique l'entier suprieur le plus proche Convertit une valeur d'une unit dans une autre Calcule le cosinus d'un angle Calcule la co-tangente d'un angle Identifie un nombre impair Identifie un nombre pair Calcule lexponentielle dune valeur numrique Renvoie la factorielle d'un nombre entier Renvoie un nombre alatoire

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.

1.5.3 Fonctions Matrice


Les fonctions de gestion des matrices sont les suivantes : MatAdditionne MatCompresse MatCopie MatCre MatDterminant MatEcrit MatErreur MatExiste MatInverse MatLit MatLitColonne MatLitLigne MatMultiplie MatNbColonne MatNbLigne MatRelAdditionne MatRelMultiplie MatRemplit MatSupprime MatTranspose Additionne deux matrices de mme dimension Compresse la place mmoire occupe par une matrice Cre la copie d'une matrice Cre une matrice Calcule le dterminant d'une matrice carre crit un lment dans une matrice Identifie le type de la dernire erreur due une fonction de gestion de matrices Teste l'existence d'une matrice en mmoire Inverse une matrice carre Lit la valeur d'un lment d'une matrice Lit la valeur de tous les lments d'une colonne d'une matrice Lit la valeur de tous les lments d'une ligne d'une matrice Multiplie deux matrices Renvoie le nombre de colonnes d'une matrice Renvoie le nombre de lignes d'une matrice Additionne une valeur chaque lment d'une matrice Multiplie chaque lment d'une matrice par une valeur Initialise tous les lments d'une matrice d'une taille donne Supprime une matrice existante Calcule la transpose d'une matrice Partie 4 : Fonctions standard 153

Partie 4 : Fonctions standard

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.

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.

1.5.4 Fonctions Financires


Les fonctions financires sont les suivantes : 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 investissement 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.

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 (fonction Position ou Remplace par exemple). Certaines fonctionnalits proposes par les fonctions 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 chanes 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 phontique (fonction Phontique). Remarque : Pour toutes les conversions de type Chane/Date ou Chane/Heure, consultez le chapitre Manipuler des dates et des heures, page 159. Pour plus de dtails, consultez le paragraphe Oprateurs 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 utilise. L'UNICODE peut prendre en compte tous les systmes d'criture de la plante. 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).

1.5.5 Fonctions Statistiques


Les fonctions statistiques sont les suivantes : StatCorrlation StatCovariance StatEcartMoyen StatEcartType StatEcartTypeP StatErreur StatMax StatMin StatMoyenne StatSomme StatVariance StatVarianceP Calcule le coefficient de corrlation entre deux sries de valeurs Calcule la covariance entre deux sries de valeurs Calcule la moyenne des carts absolus des valeurs par rapport leur moyenne arithmtique Calcule l'cart type d'une srie de valeurs Calcule l'cart type d'une srie complte de valeurs Calcule le numro de la dernire erreur due une fonction statistique Calcule la valeur maximale d'une srie de valeurs Calcule la valeur minimale d'une srie de valeurs Calcule la moyenne arithmtique, gomtrique ou harmonique d'une srie de valeurs Calcule le cumul d'une srie de valeurs Calcule la variance d'une srie de valeurs Calcule la variance d'une srie complte de valeurs

2.2.2 WinDev et l'unicode


Pour grer l'UNICODE, WinDev propose : le type Chane UNICODE deux fonctions de conversion : AnsiVersUnicode Convertit une chane de caractres au format ANSI (Windows) en une chane de caractres au format UNICODE. UnicodeVersAnsi Convertit une chane de caractres au format Unicode en une chane de caractres au format ANSI (Windows).

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. 154 Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

155

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 Windows 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 caractres au format UNICODE. Chane de caractres Dans la plupart des cas, la manipulation des chanes 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 chanes de caractres au format UNICODE. Cette conversion est effectue mme si l'ouverture de ce fichier au format ANSI est explicitement demande. Cette conversion est totalement transparente.

Crypte DcomplteRep Dcompresse

2.4 Fonctions de gestion des chanes de caractres


Les fonctions permettant de grer les chanes de caractres sont les suivantes : AnsiVersOem AnsiVersUnicode Asc BufferVersHexa Caract CaractOccurrenceType CaractType CaractUnicode ChaneCommencePar ChaneCompare ChaneConstruit ChaneFinitPar Convertit une chane de caractres au format ANSI (Windows) en une chane de caractres au format OEM (DOS) Convertit une chane de caractres au format ANSI (Windows) en une chane de caractres au format UNICODE Calcule le code ASCII du caractre spcifi (le code ASCII utilis correspond la norme ANSI utilise par Windows) Convertit un buffer en une chane hexadcimale affichable (par exemple : "4A 5B 00"). Renvoie le caractre correspondant au code ASCII spcifi (le code ASCII utilis correspond la norme ANSI utilise par Windows) Renvoie le nombre de caractres vrifiant les informations de type donnes.

Renvoie des informations sur le type d'un caractre. Renvoie le caractre Unicode correspondant au code ASCII spcifi Vrifie si une chane de caractres commence par une chane de caractres spcifique ou par une des chanes de caractres prsentes dans une liste. Compare deux chanes de caractres Construit une chane de caractres en fonction d'un format et de paramtres 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. 156 Partie 4 : Fonctions standard

Crypte une chane de caractres sous forme binaire ou sous forme ASCII Enlve si ncessaire le caractre "\" ou "/" la fin d'une chane de caractres 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- Transforme un numrique (entier, rel ou montaire) en une chane de caractres Chane 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 phontique franaise) Position Recherche la position d'une chane de caractres dans une autre chane de caractres PositionOccurRecherche la X me position d'une chane de caractres dans une autre chane de rence 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 kilooctets, mga-octets ou tera-octets TexteVersXML Convertit une chane de caractres au format ANSI en une chane de caractres au format XML Partie 4 : Fonctions standard 157

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- Vrifie si une chane de caractres correspond un format spcifique, et rcupre les Rgulire diffrentes sous-chanes constituant le format XMLVersTexte Convertit une chane de caractres au format 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.

3. MANIPULER DES DATES ET DES HEURES


3.1 Prsentation
De nombreux moyens vous permettent de manipuler 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'utiliser 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 (conversion 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 AnneEnCours ChaneVersDate ChaneVersDure ChronoDbut ChronoFin ChronoPause ChronoReprend ChronoValeur DateDiffrence 158 Partie 4 : Fonctions standard Renvoie lge partir dune de naissance Renvoie l'anne en cours sous forme d'entier Transforme une date sous forme de chane de caractres en une date au format AAAAMMJJ Transforme une dure sous forme de chane de caractres en une dure utilisable par une variable de type Dure Dmarre un chronomtre afin de mesurer la dure d'un traitement (en millisecondes) et permet de remettre zro un chronomtre existant Arrte un chronomtre et renvoie le temps coul (en millisecondes) depuis le dbut du chronomtrage (appel de la fonction ChronoDbut). Interrompt un chronomtre afin de mesurer la dure dun traitement. Redmarre un chronomtre prcdemment arrt Indique le temps coul depuis l'appel la fonction ChronoDbut Calcule la diffrence de jours entre deux dates Partie 4 : Fonctions standard 159

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 DateHeure DateHeureSys Renvoie ou modifie la date systme (date et heure du jour dfinies pour le poste en cours) DateHeureUTCVersLo- Convertit une date et une heure exprime en date et heure UTC (temps universel) cale 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 DateVersNumroDeSeRenvoie le numro de la semaine dans l'anne correspondant la date spcifie maine 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- Renvoie le numro de la semaine dans l'anne correspondant la date Semaine 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- Renvoie le nom du jour de la semaine en fonction de son numro. tre NumroDeMoisVersLe- Renvoie le nom du mois en fonction de son numro. trre 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 PremierJourDeLaSeRenvoie la date du premier jour de la semaine (c'est--dire le Lundi). maine PremierJourDuMois Renvoie le premier jour du mois 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. 160 Partie 4 : Fonctions standard

4. MANIPULER LES GRAPHES


4.1 Prsentation
WinDev / WebDev / WinDev Mobile mettent votre disposition un champ graphe (utilisable dans l'diteur 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-

WD WM WebDev

phes permettent une visualisation rapide et concrte 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.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 comparaisons entre des lments. Les catgories sont organises horizontalement et les valeurs verticalement afin de mettre en vidence leur variation dans le temps.

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. Libell des donnes. 2. Titre de l'axe vertical. 3. Graduation. 4. Titre du graphe. 5. Lgende. 6. tiquette de srie. 7. Couleur de srie. 8. Libell de catgorie. 9 Espacement. 10. Relief. 11. Quadrillage.

1. Angle de dpart. 2. Titre du graphe. 3. Lgende. 4. tiquette de secteur. 5. Couleur de secteur. 6. Relief. 7. Libell de secteur.

Partie 4 : Fonctions standard

161

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.

4.2.5 Les graphes de type "Boursier"


Les graphes de type bousier permettent de reprsenter les variations du cours d'une action. Trois types de graphes boursiers sont disponibles : Chandelier

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 Graphe. Il suffit d'indiquer le nom du champ Graphe dans les diffrentes fonctions.

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 automatiquement 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 (paramtrable avec la fonction grCouleurSrie). Les couleurs sont dgrades (paramtrable avec la fonction grDgrad). Taille fichier WinDev (paramtrable avec la fonction grFenTaille). Taille fentre WinDev (paramtrable avec la fonction grFenTaille). Taille image WebDev (paramtrable avec la fonction grTailleImage). Pas d'tiquette pour les sries (paramtrable avec la fonction grEtiquetteSrie). Pas de libell pour les lments (paramtrable avec les fonctions grEtiquetteCatgorie et grLibell). 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 fonction grAjouteDonne). Pas de destination (paramtrable avec les fonctions grDestinationChamp, grDestinationFen et grDestinationWMF). Pas d'affichage du graphe (pour dessiner le graphe, utilisez la fonction grDessine). Partie 4 : Fonctions standard 163

Barcharts 1. Titre du graphe. 2. Titre de l'axe vertical. 3. Graduation. 4. Lgende. 5. tiquette de srie. 6. Couleur 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.3.2 Crer des graphes par programmation


Une cinquantaine de fonctions WLangage permettent de manipuler les graphes. Ces fonctions permettent 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 grDestinationWMF pour enregistrer directement le graphe dans des fichiers respectivement au format BMP, EMF ou WMF. 4. Dessinez le graphe avec la fonction grDessine. De nombreuses fonctions permettent de paramtrer et de modifier l'apparence du graphe. Il est ainsi possible d'afficher une lgende, le titre des axes, etc.

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 donnes. 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 irrguliers, ils permettent aussi de grouper les donnes. Les graphes "nuage de points" sont couramment utiliss pour reprsenter des donnes scientifiques. Minmax

4.2.6 Les graphes en 3 dimensions


Tous les types de graphes peuvent tre affichs en 3 dimensions.

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. 162 Partie 4 : Fonctions standard

Pas de relief (paramtrable avec la fonction grRelief). 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 fonctions grNuageReliePoint et grNuageTaillePoint).

4.4 Exemples livrs avec WinDev


WinDev est livr en standard avec plusieurs exemples 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.

grLibell grLissage grMAJAutomatiqueEtiquetteCatgorie grMAJAutomatiqueSrie grMasque grMenu grNuageAjouteDonnesXY grNuageCouleurSrie grNuageEtiquetteSrie

Indique divers paramtres de lgende complmentaire dans un graphe Lisse un graphe par la mthode des splines cubiques Identifie ou dfinit si les tiquettes de catgorie est mise jour chaque dessin du graphe Lit et dfinit si une srie est mise jour chaque dessin du graphe Dfinit un masque daffichage des valeurs de la lgende complmentaire Active ou dsactive le menu contextuel d'un graphe Ajoute une donne dans un graphe de type "Nuage de points"

4.5 Fonctions de gestion des graphes


Les fonctions de gestion des graphes sont les suivantes : grAjouteDonne grBourseAjouteDonne grBulle grChargeParamtre grCouleur grCouleurSrie grCre grCrePolice grDgrad grDessine grDestinationBMP grDestinationChamp grDestinationEMF grDestinationFen grDestinationWMF grDonutPourcentageTrou grEffaceDessin grEpaisseurTrait grEtiquetteCatgorie grEtiquetteSrie grExiste grFenTaille grGraduation grHistoEspacement grImprime grIncrmenteDonne grInfoPoint grInfoXY grLgende 164 Ajoute une donne dans un graphe Ajoute une donne dans un graphe boursier Affiche et met en forme la bulle d'aide associe un graphe Restaure les paramtres de dessin d'un graphe. Renvoie et initialise la couleur de diffrents lments du graphe. Initialise la couleur d'une srie ou d'une part de secteur Cr un graphe d'un type spcifi Cre une police pour les graphes Affiche les couleurs en mode dgrad ou non Dessine un graphe selon l'ensemble des paramtres fournis Dfinit un fichier au format BMP comme destination du graphe Dfinit un champ image comme destination d'un graphe Dfinit un fichier au format EMF comme destination du graphe Dfinit une fentre comme destination d'un graphe Dfinit un mta fichier comme destination d'un graphe Modifie le pourcentage correspondant au rayon du trou d'un graphe de type beignet (ou donut). Efface le dessin d'un graphe Change la valeur de lpaisseur du trait dans un graphe de type courbe Initialise l'tiquette d'une catgorie de donnes (ou d'un secteur) d'un graphe Initialise l'tiquette d'une srie de donnes d'un graphe Teste l'existence d'un graphe en mmoire Dfinit la taille de la fentre contenant le graphe Indique la frquence des graduations sur l'axe vertical/horizontal d'un graphe Indique l'espacement entre chaque catgorie de donnes dans un histogramme Imprime un graphe Ajoute une valeur une donne dans un graphe Renvoie les coordonnes l'cran d'un point ou d'une valeur prsent dans un graphe. Renvoie des informations sur la srie prsente en un point du graphe Indique la prsence et la position de la lgende dans un graphe

Initialise la couleur d'une srie pour un graphe de type "Nuage de points" 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 Spatiale 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.

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

165

5. MANIPULER LES ZONES MMOIRE


Les fonctions permettant de grer les zones mmoire sont les suivantes : MemAjoute MemCre MemDernier MemEnCours MemEnDehors MemExiste MemModifie MemOccurrence MemPositionne MemPrcdent MemPremier MemRecherche MemRcupre MemSuivant

WD WebDev

6. MANIPULER DES FICHIERS EXTERNES


6.1 Prsentation
De nombreuses fonctions WLangage vous permettent de grer des fichiers externes. Un fichier externe est un fichier accs direct, appel galement "fichier texte" par abus de langage. Les fichiers externes peuvent tre de tout type (".TXT", ".INI", etc.). Les fichiers externes peuvent contenir : des caractres lisibles (sous forme de chane de caractres), des caractres non lisibles (sous forme binaire). Attention : Il ne faut pas confondre fichiers externes et fichiers HyperFileSQL. Les fichiers HyperFileSQL 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).

MemSupprime MemSupprimeTout 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.

Ajoute un lment dans une zone mmoire Cre une zone mmoire Positionne sur le dernier lment d'une zone mmoire et renvoie la valeur de retour de cet lment Renvoie l'indice de l'lment en cours Permet de savoir si le parcours effectu sur la zone de mmoire est en dehors de la zone de mmoire Teste l'existence d'une zone de mmoire Modifie un lment dans une zone mmoire Renvoie le nombre d'lments prsents dans une zone de mmoire Positionne la zone mmoire sur un lment Positionne sur l'lment prcdent d'une zone mmoire et renvoie la valeur de retour de cet lment Positionne sur le premier lment d'une zone mmoire et renvoie la valeur de retour de cet lment Recherche un lment dans une zone mmoire Rcupre la valeur de retour d'un lment dans une zone mmoire Positionne sur l'lment suivant d'une zone mmoire et renvoie la valeur de retour de cet lment Supprime un lment dans une zone mmoire Vide et supprime une zone mmoire

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 portion 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 importante contenant des informations confidentielles. Cryptez et compressez ces fichiers avant de les transfrer sur votre rseau. Effectuez une recherche sur vos fichiers et excutez une procdure spcifique sur les fichiers trouvs.

166

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

167

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.

fEcrit fEcritLigne fEstUneImage

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'incertitude 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- Copie un fichier image depuis le rpertoire des donnes de l'application (ou un de reWeb ses sous-rpertoires) vers le rpertoire "_WEB" de l'application (ou un de ses sousrpertoires). 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 modification 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- Dtecte si une unit de stockage amovible (par exemple CD, cl USB, appareil vible 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 168 Partie 4 : Fonctions standard

crit une chane de caractres ou une portion de mmoire dans un fichier externe crit une ligne dans un fichier externe Permet de savoir si un fichier prsent sur disque ou un fichier contenu dans un buffer correspond un format d'image reconnu fExtraitChemin Renvoie les diffrents lments d'un chemin : disque, rpertoire(s), nom et extension 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 modification 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 nombre 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- Lit une ligne dun fichier externe et rcupre dans des variables les morceaux de Rgulire 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 temporaire 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 courante. 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 partags fRepExe Renvoie le chemin complet du rpertoire dexcution du projet

Partie 4 : Fonctions standard

169

fRepGlobalCommun

Renvoie un chemin de rpertoire pour les donnes globales de l'application courante (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 courante (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 compact ou dcompact n'est pas cr fSupprime Supprime un fichier accessible depuis le poste en cours fSupprimeFichierR- Supprime un fichier image du rpertoire "_WEB" de l'application (ou de un de ses pertoireWeb 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.

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 mcanisme de communication entre plusieurs applications 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 facilitent l'interoprabilit entre les applications WinDev/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 provoquera 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.
// 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)

Par exemple, une application permettant de paramtrer 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 partage particulire. Si la zone n'existe pas, l'application 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.
// 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

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'criture des fichiers externes pour transmettre les lments. Cette solution est conseille pour la transmission par exemple de classes dont les membres correspondent aux lments transmettre

7.2.2 Savoir si une zone de mmoire partage existe dj


Dans certains cas, il est ncessaire de savoir si une zone de mmoire partage existe dj.

170

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

171

7.2.4 Fonctions WLangage


Les fonctions de gestion des fichiers externes utilisables avec les zones de mmoire partages sont les suivantes : fEcrit fEcritligne fLit crit une chane de caractres dans un fichier externe et dans une portion de mmoire. crit une ligne dans un fichier texte (au format ANSI ou UNICODE). 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. Lit une ligne dans un fichier externe (au format ANSI ou UNICODE). Renvoie et modifie la position en cours dans un fichier externe.

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 smaphores 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.

fLitLigne fPositionne

7.4 Nommage des zones de mmoire partages


Les zones de mmoires partages sont identifies par leur nom. geUtilisateur. Des applications situes dans des sessions diffrentes peuvent partager une zone de mmoire partage cre avec la constantepartageGlobal.

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.

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 fonction fMemOuvre est effectif si le service de changement rapide d'utilisateur est actif, sinon il est ignor. Windows Vista et postrieur : le paramtre <Partage> de la fonction fMemOuvre est gr. Les services sont dans un espace diffrent des utilisateurs. Pour partager une zone mmoire entre un service et une application dans la session 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-

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 fonctions de callback) la synchronisation manuelle au moyen de smaphore
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.")

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).
// Code en WLangage // IdZone est un entier IdZone = fMemOuvre("mazone",1024... partageGlobal);
.

7.3.1 Notification automatique des modifications


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 WLangage en dernier paramtre de la fonction fMemOuvre. Cette procdure sera appele automatiquement chaque modification du contenu de la zone de mmoire partage. Pour attendre que les autres applications aient fini de traiter la notification (avant d'effectuer une nouvelle modification de la zone mmoire par exemple), il faut utiliser la fonction fMemAttend.
// Ouverture zone mmoire // dans l'application 1 IdZone est un entier IdZone = fMemOuvre... ("ZonePartage",200,... partageGlobal,"ModifMemoire") -- Procdure utilise pour callback (application 1)

// 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);

7.5 Fonctions de gestion des zones mmoires partages


Les fonctions permettant de grer les zones mmoires sont les suivantes : fMemAttend fMemExiste fMemOuvre Attend la fin du traitement des notifications de modification d'une zone de mmoire partage Teste l'existence d'une zone de mmoire partage Ouvre une zone de mmoire partage entre plusieurs applications

7.3.2 Synchronisation manuelle


La synchronisation peut tre ralise de faon manuelle selon le principe suivant : Les applications ouvrent la zone de mmoire partage et le smaphore de dialogue. La premire application "prend" le smaphore (fonction SmaphoreDbut). La premire application crit ses donnes dans la zone de 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. Partie 4 : Fonctions standard 173

172

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 imprims (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'diteur d'tats ne permet pas de crer les tats souhaits. Dans ce cas, il faut utiliser les fonctions d'impression du WLangage. De plus, pour des impressions trs simples (de textes ou d'images), il n'est pas ncessaire de passer par l'diteur d'tats. Remarques : Les fonctions d'impression ne sont pas disponibles en langage externe. Ce chapitre dcrit uniquement le principe des impressions en WLangage.

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 configuration 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 imprimantes 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 fonctions doivent tre les premires fonctions d'impression appeles. Toutes les fonctions d'impression appeles avant ces deux fonctions ne seront pas prises en compte.

Police d'impression Les polices d'impression sont cres avec la fonction 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'utiliser la fonction iPolice. Police dimprimante Les constructeurs d'imprimante installent des polices 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 tlcharges. Dans les listes des polices, les polices imprimantes sont identifies par une icne "imprimante" prsente 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 polices ne sont interprtes que par l'imprimante. Lors de l'aperu avant impression, l'affichage des polices est gr par Windows. Ne sachant pas grer ces polices spcifiques, Windows utilise la police cran la plus proche.

WB Important : L'utilisation des fonctions

d'impression du WLangage ncessite une configuration particulire de votre serveur. Pour plus de dtails, consultez laide en ligne.

8.2 Principe de l'impression en WLangage


Les tapes pour imprimer en WLangage sont : Etape 1 (optionnelle) : Configuration des paramtres 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. 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 format 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 programme en cours) ou dfinitive (modification de l'imprimante par dfaut dans le panneau de configuration 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 (diffrentes selon l'imprimante) seront utilises.

8.2.2 Etape 2 : Cration des polices d'impression


Cette tape permet de dfinir et de choisir les diffrentes polices qui seront utilises dans le document imprim. Il est possible de choisir et de dfinir : des polices spcifiques l'impression : ces polices 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 dessins, 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

8.2.1 Etape 1 : Configuration des paramtres d'impression


Cette tape permet de choisir selon le cas : Les paramtres d'impression du document (qualit 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 (paramtres dfinis dans le panneau de configuration de Windows) ne conviennent pas pour l'impression 174 Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

175

8.2.3 Etape 3 : Impression


Cette tape consiste "envoyer l'impression" les diffrents lments imprimer : texte, images, dessins, 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 permettant 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 imprimer en millimtres, en fonction de la police spcifie. 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 considre comme transparente ou non lors des prochaines 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 diffrentes formes grce aux fonctions suivantes : iCadre : Imprime un cadre aux coordonnes spcifies. 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 considre comme transparente ou non lors des prochaines 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 spcifies. iTraitH : Imprime un trait horizontal aux coordonnes spcifies. iTraitV : Imprime un trait vertical aux coordonnes spcifies.

Autres fonctions Le WLangage propose diverses fonctions permettant d'optimiser les impressions ralises en WLangage. 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 imprimer 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 dfinies. iHauteurRestantePage : Calcule la hauteur disponible 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 limpression du document en cours (WinDev uniquement). iImpressionDemande : Permet de savoir si lutilisateur a demand limpression du document depuis laperu avant impression (WinDev uniquement). iLargeurPage : Calcule la largeur de la page imprimable en tenant compte des marges dfinies. 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 iAperu iCadre iCadreArrondi IChangeSousEtatSource iConfigure iConfigureEtat iCrePolice iDernierFichier Ajoute un signet dans laperu avant impression ou lors de l'export en PDF. Paramtre la destination de l'impression Imprime un cadre aux coordonnes spcifies Imprime un cadre avec des bords arrondis aux coordonnes spcifies Modifie par programmation l'tat associ un sous-tat dans un tat composite Configure l'imprimante Configure l'imprimante en ouvrant directement la fentre de configuration Cre une nouvelle police d'impression 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- Imprime ou non les hauts et bas de page de l'tat imbriqu qu iHauteurImage Calcule la hauteur de l'image imprimer (en millimtres)

176

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

177

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- Permet de savoir si l'utilisateur a demand l'abandon de l'impression du docune ment en cours iImpressionDemanPermet de savoir si l'utilisateur a demand l'impression du document depuis de 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- Force l'impression d'un bloc de complment de corps en spcifiant la hauteur du Corps 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- Initialise la requte lie l'tat (cas d'une requte base sur une connexion spcinexion 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 spcifie 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

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 (notamment 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 prendre en compte la mise en forme actuelle (couleur et police) ou non. iPicaVersMM Convertit les coordonnes d'un point (exprimes en coordonnes systme) en millimtres 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'impression 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.

8.4 Fonctions PDF


WinDev permet dimprimer des fichiers PDF grce aux fonctions dimpression. Ces fichiers PDF peuPDFEstProtg PDFFusionne PDFFusionneAvecMotdePasse PDFNombreDePages PDFVersTexte vent tre manipuls par programmation grce aux fonctions PDF :

Vrifie si le fichier PDF ncessite un mot de passe pour tre lu. Fusionne plusieurs fichiers PDF existant en un seul fichier PDF Fusionne plusieurs fichiers PDF existants et protgs par un mot de passe d'ouverture en un seul fichier PDF Renvoie le nombre total de pages d'un fichier PDF. 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.

178

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

179

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.

PressePapierRTF PressePapierUnicode TableVersPressePapier TwainVersPressePapier VersPressePapier VersPressePapierRTF

Rcupre une chane RTF dans le presse-papiers. Retourne le texte contenu dans le presse-papiers au format UNICODE. Copie dans le presse-papiers le contenu d'une table. Permet soit de copier le document provenant du priphrique Twain dans le presse-papiers, soit de visualiser le document provenant du priphrique Twain. crit des informations de type texte dans le presse-papiers de Windows 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.

9.4 Fonctions de gestion de la corbeille


Les fonctions permettant de grer la corbeille sont les suivantes : CorbeilleListeFichier CorbeilleRestaure CorbeilleSupprime CorbeilleVide Liste les fichiers prsents dans la corbeille Restaure un fichier prsent dans la corbeille Supprime un fichier prsent dans la corbeille Vide la corbeille.

WD

9.2 Fonctions de gestion de la base de registres


Les fonctions permettant de grer la base de registres sont les suivantes : RegistreCherche RegistreClSuivante RegistreCopiecl RegistreCreCl RegistreEcrit RegistreExiste RegistreListeCl RegistreListeValeur RegistreLit RegistrePremireSousCl RegistreRenomme RegistreSupprimeCl RegistreSupprimeValeur RegistreTypeValeur Cherche une chane de caractres dans la base de registres Identifie la cl suivant la cl spcifie dans la base de registres de Windows Copie une cl de registre avec toutes ses sous-cls et ses valeurs Cre une cl dans la base de registres de Windows crit une valeur dans un registre de la base de registres de Windows Teste l'existence d'une cl de la base de registres de Windows Liste les sous-cls d'une cl de la base de registres. Renvoie le nom et le type des valeurs d'une cl de la base de registres. Lit la valeur d'un registre dans la base de registres de Windows Identifie le chemin de la premire sous-cl de la cl spcifie dans la base de registres de Windows Renomme une cl de la base de registres. Supprime une cl dans la base de registres de Windows Supprime une valeur dans la base de registres de Windows 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.

9.5 Fonctions de gestion de la souris


Les fonctions permettant de grer la souris sont les suivantes : ChampSurvol CurseurAffiche CurseurCapture CurseurPos Sablier SourisPosX SourisPosY

WD WDMobile

Identifie le champ survol par le curseur de la souris. Affiche ou masque le curseur de la souris Dirige tous les vnements associs la souris vers une fentre spcifique ou un champ Renvoie et modifie la position du curseur de souris Transforme le curseur souris en sablier et inversement Renvoie la position horizontale (X) du curseur de souris par rapport au champ 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.

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.

9.6 Fonctions de vrification de l'orthographe


Les fonctions permettant de grer la correction orthographique sont les suivantes : OrthoAjouteDictionnaire OrthoDisponible OrthoSuggre OrthoVrifie Ajoute un mot au dictionnaire orthographique de OpenOffice pour l'instance de l'application en cours. Indique si un dictionnaire OpenOffice est disponible pour la vrification orthographique. Renvoie la liste des mots possibles prsents dans le dictionnaire de OpenOffice.. Indique si un mot est correctement orthographi.

9.3 Fonctions de gestion du presse-papiers


Les fonctions permettant de grer le presse-papiers sont les suivantes : PressePapier PressePapierFormat PressePapierHauteur PressePapierLargeur 180

WD WDMobile

Rcupre le texte ou l'image contenu dans le presse-papiers de Windows Identifie le format des informations contenues dans le presse-papiers Calcule la hauteur de l'image (au format Bitmap) contenue dans le presse-papiers Calcule la largeur de l'image (au format Bitmap) contenue dans le presse-papiers

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

181

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.

TwainListeSource TwainSelectSource TwainSourceEnCours TwainVersBMP

9.7 Fonctions Reconnaissance vocale


Les fonctions permettant de grer la reconnaissance vocale sont les suivantes : ReconnaissanceVocaleAjouteCommande ReconnaissanceVocaleDclenche ReconnaissanceVocaleSupprimeCommande

Liste les drivers des priphriques Twain connects au poste en cours. Affiche la liste des priphriques Twain disponibles sur le poste en cours et permet de choisir le priphrique Twain utilis par dfaut. Permet de connatre et de changer le priphrique Twain utilis par dfaut. 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 utilisateur du priphrique.

WD WDMobile

Ajoute une commande vocale dans la fentre en cours. Dclenche le service de reconnaissance vocale de lappareil. Supprime une commande vocale ajoute par AjouteCommandeVocale

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 utilisateur 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 utilisateur du priphrique.

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.

9.8 Fonctions de gestion des ports srie et parallle


sCalculeCrc16 sCalculeCrc32 sDansFileEntre sDansFileSortie sEchap sEcrit sEvenement sFerme sFinEvnement sFixeParamtre sLit sOuvre

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 utilisateur du priphrique.

WD WDMobile

Les fonctions permettant de grer les ports srie et les ports parallle sont les suivantes : Contrle une chane de caractres avant et aprs transmission entre applications WinDev Contrle une chane de caractres avant et aprs transmission entre application WinDev Rcupre le nombre d'octets en attente dans le buffer d'entre du port srie spcifi Rcupre le nombre d'octets en attente de transfert dans le buffer de sortie du port srie ou du port parallle spcifi Lance diverses fonctions agissant directement sur les bits du port srie et du port parallle, indpendamment du protocole de communication crit une chane de caractres dans le buffer de sortie du port srie ou du port parallle spcifi Branche un vnement sur un port srie. Ferme le port srie ou le port parallle spcifi Dbranche la dtection d'un vnement sur un port srie. Fixe ou modifie les paramtres de configuration du port srie ou du port parallle spcifi Lit une chane de caractres dans le buffer d'entre du port srie spcifi Ouvre et initialise le port srie (ou le port parallle) spcifi TwainVersPressePapier TwainZoneScan

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 utilisateur du priphrique.

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.

9.10 Fonctions USB


Les fonctions permettant de grer les priphriques USB sont les suivantes : USBDeconnecte USBDtecteStockageAmovible USBListePriphrique USBProprit USBRecherche

WD

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.

Dconnecte ou jecte un priphrique USB Dtecte si une unit de stockage amovible (par exemple CD, cl USB, appareil photo USB, ) a t ajoute ou enleve Liste les priphriques USB actuellement branchs sur le poste en cours Rcupre la valeur d'une proprit d'un priphrique USB Recherche un priphrique USB d'aprs certains mots-cls

9.9 Fonctions de gestion des priphriques Twain


Les fonctions permettant de grer les priphriques Twain sont les suivantes : TwainEtat TwainHauteurSource TwainLargeurSource 182 Renvoie l'tat de la source en cours. Renvoie la hauteur de la zone scanner. Renvoie la largeur de la zone scanner.

WD

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.

9.11 Fonctions MCI


Les fonctions permettant de grer le MCI (Media Control Interface) sont les suivantes : MCIArrt Arrte lexcution dun fichier multimdia

WD

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

183

MCIDbut MCIErr MCIEtat MCIExcute MCIFerme MCIFin MCIFormatPosition MCIHauteur MCIJoue MCILargeur MCIMsgErr MCINombrePiste MCIOuvre MCIPause MCIPiste MCIPosition MCIRcupre MCITaille MCITailleFentre MCIVolume

Permet de se positionner au dbut dun fichier multimdia Renvoie le numro de la dernire erreur survenue sur une fonction MCI Permet dobtenir ltat dun fichier multimdia Excute une commande MCI Ferme un fichier multimdia Permet de se positionner la fin dun fichier multimdia Fixe le format de la position dun fichier multimdia Retourne la hauteur dun fichier multimdia (en pixels) Joue un fichier multimdia Retourne la largeur dun fichier multimdia (en pixels) Renvoie le libell de la dernire erreur survenue sur une fonction MCI Renvoie le nombre de pistes du fichier multimdia Ouvre un fichier multimdia Permet de faire une pause dans lexcution dun fichier multimdia Renvoie le numro de la piste en cours Permet de connatre ou de modifier la position dun fichier multimdia Renvoie le dernier rsultat retourn par la fonction MciExcute Permet dobtenir la taille dun fichier multimdia (exprime dans lunit dfinie par MciFormatPosition) Modifie la taille et la position de la fentre daffichage dun fichier multimdia Modifie ou identifie le volume sonore pour les fichiers de type "MID" ou "WAV"

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.

9.13 Fonctions systme


Les fonctions systme sont les suivantes : SysArrte SysChangeEnvironnement SysChangeRsolutionEcran SysCouleur SysCouleurRes SysDocRcentAjoute SysDocRcentListe SysDonneFocus SysEnvironnement SysEspace SysEtatCarteStockage SysFenActive SysFenAffiche SysFenHandle SysFenTitre SysHandleValide SysIconeAjoute SysIconeAjouteImage Arrte le systme ou ferme la session Windows en cours Modifie les variables d'environnement du systme d'exploitation du poste en cours Modifie la rsolution d'un cran. Identifie ou modifie la couleur d'un lment Windows Renvoie la rsolution de l'cran en nombre de couleurs Ajoute un fichier dans la liste des documents rcemment ouverts. Cette liste est gre par le shell de Windows. Renvoie la liste des documents rcemment ouverts. Donne le focus une fentre ou un champ Renvoie les variables d'environnement du systme d'exploitation Renvoie l'espace mmoire total du poste en cours Renvoie l'tat de disponibilit de la carte de stockage de l'appareil.

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.

9.12 Fonctions Service


Les fonctions de gestion des services Windows sont les suivantes : FinService ServiceActualise ServiceArrte ServiceAttendEtat ServiceContrle ServiceDmarre ServiceDsinstalle ServiceEcritEvnementJournal ServiceEtat ServiceExiste ServiceInfo ServiceInstalle ServiceListe ServiceModifie ServicePause ServiceRedmarre ServiceRelance 184 Termine l'excution du service en cours. Demande un service de relire ses informations de configuration. Arrte un service. Attend qu'un service soit dans un tat spcifique. Envoie un message de contrle un service. Dmarre un service. Dsinstalle un service. Ecrit un vnement dans le journal des vnements Windows. Renvoie l'tat actuel d'un service Teste si un service est install. Renvoie les caractristiques d'un service Installe un service grce aux informations donnes dans les membres de la variable Service. Liste les services prsents sur le poste en cours ou sur le poste distant indiqu. Modifie la configuration d'un service grce aux informations donnes dans les membres de la variable Service. Met en pause un service. Redmarre un service prcdemment arrt. Relance un service en pause.

Renvoie le handle de la fentre active ou active une fentre Modifie l'tat d'affichage d'une fentre Renvoie le numro de handle d'une fentre identifie par son titre Renvoie le titre d'une fentre Teste la validit d'un handle de fentre Ajoute une icne dans la barre des tches Ajoute une icne en surimpression de l'icne de l'application dans la barre des tches. Cette icne pourra tre supprime grce la fonction SysIconeSupprimeImage. 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- Supprime l'icne en surimpression de l'icne de l'application dans la barre des mage 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- Renvoie le nom des cartes graphiques connectes au poste en cours. que SysListeEcran Renvoie la liste des crans connects sur une ou plusieurs cartes graphiques. SysListeOrientationE- Permet de connatre les orientations possibles de l'cran d'un Pocket PC. cran SysListeRsolutionE- Renvoie la liste des rsolutions possibles pour un cran. cran SysMtrique Renvoie la rsolution d'un lment spcifique Partie 4 : Fonctions standard 185

Partie 4 : Fonctions standard

SysMiniatureAjouteBouton SysMiniatureModifieBouton SysMiniatureSupprimeBouton SysMiniatureSupprimeTout SysMiseEnVeille

Ajoute un bouton sur la miniature de l'application dans la barre de tches.

Modifie un des boutons prsents sur la miniature de l'application dans la barre des tches. Supprime un des boutons prsents sur la miniature de l'application dans la barre des tches. Supprime tous les boutons associs la miniature de l'application dans la barre des tches. 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- Renvoie le nom de l'cran principal pal 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 SysRepCarteStocRenvoie la liste des cartes de stockages prsentes dans le Pocket PC en cours kage 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.

ConstruitEntier CreRaccourci DchargeDLL EnvoieTouche InstalleIcone Instance Ping PoidsFaible PoidsFort sCalculeCrc16 sCalculeCrc32 SortieStandard

SupprimeRaccourci 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

Construit un entier partir de 2 entiers sur 2 octets Cre un raccourci sur le bureau de Windows, dans le menu "Dmarrer" de Windows ou dans un rpertoire spcifique Dcharge la librairie 32 bits (DLL) qui a t prcdemment charge en mmoire avec la fonction ChargeDLL Simule des manipulations de touches au clavier Cre une icne (associe un programme) dans un groupe de programme de Windows, avec la ligne de commande associe Renvoie le "Handle systme" (HINSTANCE) du programme en cours Teste si une adresse est accessible (quivalent de lutilitaire rseau PING) Renvoie les deux octets de poids faible d'un entier Renvoie les deux octets de poids fort d'un entier Contrle une chane de caractres avant et aprs transmission entre applications WinDev / entre sites WebDev Calcule le code de redondance cyclique (CRC) d'un tampon. crit une information dans le flux de sortie standard "stdout" (galement appel "console") Supprime un raccourci prcdemment cr avec CreRaccourci

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.

9.15 Evnement Windows


Les fonctions permettant de grer les vnements Windows sont les suivantes : 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- Force le parent de la prochaine fentre ouvrir. Cette fonction permet une fentre Winvant 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.

9.14 Fonctions diverses Windows


Les fonctions Windows sont les suivantes : 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- Excute une mthode d'une interface d'un objet COM instanc grce la fonction COMCreInstance. thode COMCreInstance Instancie un objet COM (Component Object Model). COMRcupreInter- Appelle la mthode QueryInterface de l'objet COM spcifi pour obtenir une interface face spcifique de cet objet afin de l'utiliser avec la fonction COMAppelleMthode. ComposantCharge Charge en mmoire le composant spcifi 186 Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

187

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.

DsactiveFAA diffApplique diffCre

9.16 Fonctions Java


Les fonctions permettant de grer des applications Java sont les suivantes : JavaCharge

WebDev WD

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.

9.17 Fonctions diverses WinDev / WebDev


Les fonctions diverses sont les suivantes : AnalyseurDbut AnalyseurFin AppliContrle Lance la "collecte d'informations" pour l'analyseur de performances Arrte la "collecte d'informations" pour l'analyseur de performances 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, fentres 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 projet. ComposantInfo Renvoie des informations sur un composant ConnexionOccurRenvoie le nombre d'instances du site WebDev en cours d'excution sur le serveur rence ConstruitVariantAuto- Construit un paramtre de type variant Automation mation 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 188 Partie 4 : Fonctions standard

Dsactive une fonctionnalit automatique de WinDev sur un champ ou une fentre Applique un buffer de diffrences sur un buffer spcifique 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 composant EnModeEmulateuIdentifie si le code est excut dans l'mulateur Android ou non rAndroid EnModeEmulateuIdentifie si le code est excut dans lmulateur iOS (iPhone, iPad) ou non. riOS EnModeEmulaIdentifie si le test est excut grce l'mulateur Windows Phone ou non teurWindowsPhone EnModeEtatsEtRequ- Identifie si le code est excut lors du test d'un tat ou d'une requte sous le logiciel tes 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- Identifie si le code est excut sur un serveur HyperFileSQL ke 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- Identifie si le code est excut dans le simulateur Android ou non droid 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- Identifie si le code est excut dans le simulateur Pocket ou non ket EnModeSimulateurWin- Identifie si le code est excut dans le simulateur Windows Phone ou non dowsPhone EnModeTest Identifie le mode de lancement de l'application ou du site

Partie 4 : Fonctions standard

189

EnModeTestAutomatique EnModeTSE EnModeVGA EnModeWeb EnModeWebservice EnModeWindows EnModeWindowsMobile EnModeWindowsPhone ErreurInfo EstNumrique

Permet de savoir si un test automatique est en cours ou non Identifie si le code est excut depuis un poste en TSE ou depuis un bureau distant. Indique si lapplication sexcute sur un mobile en mode VGA Identifie le mode de lancement du code en cours Permet de savoir si l'excution est en cours dans le moteur AWWS. Identifie si le code est excut en mode Windows ou non Identifie si le code est excut depuis une application Windows Mobile. Identifie si le code est excut en mode Windows Phone ou non.

JSProprit

Rcupre des informations sur la dernire erreur d'une fonction d'une composante 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- Excute une action prdfinie de WinDev nie 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 spcifique 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 fentre. FichierAffiche Renvoie un fichier spcifique sur le navigateur du client FinAutomatismeProc- Arrte l'excution (en cours ou venir) d'une procdure automatique (dfinie par les dure 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- Interrompt le traitement de l'vnement en cours ment 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 190 Partie 4 : Fonctions standard

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 comportant 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'internaute 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'valuation" 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. Partie 4 : Fonctions standard 191

9.18 Fonctions de gestion des excutables


Les fonctions suivantes permettent de manipuler et d'obtenir des renseignements sur les excutables accessibles ou lancs sur le poste en cours : AutoLanceAjoute Permet de lancer automatiquement une application WinDev Mobile lors d'un vnement 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 WinDev 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 consommation 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.

HaspHLEcrit HaspHLInfo HaspHLLit

Ecrit des donnes (chanes de caractres ou buffer) dans la mmoire interne de la cl Hasp. Rcupre des informations sur la cl lectronique Hasp. 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.

9.20 Fonctions de gestion du DDE


Les fonctions permettant de grer le DDE (Dynamic Data Exchange) sont les suivantes : DDEChane DDEConnecte

WebDev WD

Retourne les informations rcupres par la fonction DDERcupre 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.

9.21 Fonctions de gestion des applications avec "live update"


Les fonctions permettant de grer les applications avec "Live update" sont les suivantes : AppliActiveVersion Active une des versions de l'application disponible dans l'historique des versions sur le serveur d'installation de rfrence. AppliChangeParam- Change une information du mcanisme de mise jour automatique de l'applicatre tion spcifie. AppliContrle Active (ou dsactive) le contrle distance de l'application WinDev multi-utilisateurs 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 versions 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'application spcifie.

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 : 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.

192

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

193

AppliSupprimeVersion

Supprime une version de l'historique des versions prsent sur le serveur d'installation de rfrence.

9.24 Fonctions de gestion des projets


Ces fonctions permettent de manipuler facilement les lments dun projet : 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- Permet d'numrer les sous-lments d'un lment du projet (fentres, tats, ment 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.

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.

9.22 Fonctions de gestion des rseaux


Les fonctions permettant de grer les rseaux sont les suivantes : RseauConnecte RseauDconnecte RseauNomDomaine RseauNomRep RseauUtilisateur Associe un lecteur un rpertoire rseau partag Dconnecte un lecteur rseau Renvoie le nom du domaine auquel est associ le poste en cours Identifie le rpertoire associ un lecteur rseau 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.

9.23 Fonctions de gestion du protocole SNMP


Les fonctions permettant de grer le protocole SNMP sont les suivantes : 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.

9.25 Fonctions de gestion du planificateur


Les fonctions permettant de grer le planificateur Windows sont les suivantes : PlanificateurAjouteHoraire PlanificateurAjouteTche PlanificateurEtatTche

WD

Cre un horaire pour une tche planifie Cre une tche dans le planificateur de tches Windows 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.

194

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

195

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.

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 variables ainsi que des fonctions WLangage. Cette mthode permet de grer les fichiers Excel

WebDev WD

(fichiers XLS ou XLSX) en lecture et en criture. Mthode 2 (conserve par compatibilit) : Utilisation de fonctions WLangage pour grer les fonctions XLS. Cette mthode permet de grer uniquement les fichiers XLS en lecture.

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'instant de la demande. Le client peut alors effectuer une demande d'activation (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. 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'activation 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.

11.2 Mthode 1 : Manipulation dynamique des fichiers XLS et XLSX


Pour manipuler les fichiers XLS et XLSX, le WLangage met votre disposition : diffrents types de variables. Ces types de variables 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 xlsDocument). 3. Vous pouvez manipuler les diffrents lments du document Excel : soit avec les fonctions WLangage. soit avec les proprits du type xlsDocument. Exemple :
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

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 initiale (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 proposes par un site WebDev ou un Webservice permettant une activation immdiate en ligne.

10.2.2 Mise en place dans l'application cliente


L'application qu'utilise le client doit prvoir les tapes 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 fournisseur de l'application peut tre effectue par

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. 196 Partie 4 : Fonctions standard

Remarque Si le fichier Excel est ouvert en mode lecture/criture (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'installation du logiciel "Microsoft Excel" sur le poste des utilisateurs. Les fichiers XLS et les fichiers spcifiques Office 2007 (fichiers .xlsx) sont grs.

Partie 4 : Fonctions standard

197

11.3 Mthode 2 : Lecture des fichiers Excel (mthode conserve par compatibilit)
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 renvoie l'identifiant du fichier XLS manipul. 2. Utilisez les fonctions XLS pour rcuprer les diffrentes informations voulues sur le fichier Excel et ses donnes. Remarques : Les fonctions XLS ne ncessitent pas l'installation 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 classeur est accessible. Nouveau mode de fonctionnement multifeuilles : dans ce mode, il est possible de slectionner la feuille du classeur o les manipulations sont effectues. La fonction permettant de modifier le mode de manipulation des fonctions XLS est la fonction xlsOuvre.

11.5 Fonctions XLS


Les fonctions permettant de grer les fichiers Excel sont les suivantes : xlsAjouteFeuille xlsDonne xlsFerme xlsFeuilleEnCours xlsMsgErreur xlsNbColonne xlsNbFeuille xlsNbLigne xlsOuvre xlsSauve xlsSupprimefeuille xlsTitreColonne xlsTypeColonne xlsVersion Ajoute ou insre une nouvelle feuille dans un document Excel. Rcupre les donnes d'une cellule d'un fichier XLS Ferme un fichier XLS Permet de connatre ou de modifier la feuille courante dun fichier XLS Renvoie le libell de la dernire erreur due une fonction XLS Renvoie le nombre de colonnes d'un fichier XLS Renvoie le nombre de feuilles dun fichier XLS Renvoie le nombre de lignes d'un fichier XLS Ouvre un fichier XLS Sauve un document Excel. Supprime une feuille dans un document Excel. Rcupre l'intitul d'une colonne d'un fichier XLS Renvoie le type des donnes saisies dans une colonne d'un fichier XLS Renvoie la version d'Excel utilise

11.4 Fonctions WLangage


Ces fonctions permettent de : manipuler des fichiers ".XLS" : ouverture et fermeture. 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 diffrentes manipulations sur un fichier ".XLS".

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. Remarque : La fonction TableVersExcel permet de crer un fichier XLS avec les donnes d'une table.

198

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

199

12. LES ARCHIVES


12.1 Prsentation
Des fonctions WLangage permettent de compresser et de regrouper vos fichiers sous forme d'archives. 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 compresss.

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 sauvegarder plusieurs fichiers de taille importante. Votre programme ou votre site peut crer une archive contenant l'ensemble des fichiers sauvegarder. 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 extension. Pour les archives au format WinDev (WDZ), les sous-parties ont pour extension : ".001", ".002", ..., ".NNN". Pour les archives au format ZIP standard, les sousparties 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 (zipAjouteFichier, zipAjouteRpertoire). 3. Dcoupez cette archive en plusieurs sous-archives (zipDcoupe). Les sous-archives sont de taille identique. Vous dcidez de la taille des sous-archives. Vous pouvez stocker les sous-archives sur diffrents supports (disquettes, CD, ....). Les sous-archives peuvent tre regroupes (fonction zipRegroupe) : l'archive redevient mono-partie. Remarque : Toutes ces manipulations peuvent galement tre ralises grce WDZip (pour plus de dtails, consultez laide en ligne). Attention : Certaines fonctions d'archivage sont utilisables uniquement sur des archives mono-partie (ajout de fichiers, suppression de fichiers, cration d'un excutable auto-extractible, etc.). Pour effectuer 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 uniquement possible de : Regrouper les diffrentes parties (zipRegroupe), Obtenir diverses informations sur l'archive et sur les fichiers de l'archive (zipExtraitChemin, zipInfoFichier, zipListeFichier, etc.), Extraire les fichiers (zipExtraitFichier, zipExtraitTout).

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 Internet/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, fermeture), manipuler les fichiers de l'archive (ajout et compression de fichiers (fichiers isols ou ensemble de fichiers d'un rpertoire), extraction et dcompression d'un fichier, suppression des fichiers d'une archive), obtenir diverses informations sur les archives et 200 Partie 4 : Fonctions standard sur les fichiers compresss (taille avant et aprs compression, etc.), dcouper et/ou regrouper des volumes d'archives, crer des excutables auto-extractibles. Exemple Pour sauvegarder la base de donnes de votre client, votre programme cre une archive de sauvegarde. Les fichiers sauvegarder sont alors compresss dans l'archive.

Partie 4 : Fonctions standard

201

12.3.3 Exemples
Votre programme WinDev doit stocker une grande quantit d'informations sur disquette. Votre programme peut crer une archive contenant toutes les donnes voulues. Une fois cre, cette archive peut tre dcoupe en plusieurs parties. Ces volumes sont de la taille d'une disquette (1,44 Mo). Il ne reste plus qu' copier ces diffrentes parties sur des disquettes. Votre site WebDev doit proposer en tlchargement un fichier dont la taille est importante. Pour

les Internautes possdant une connexion bas dbit (ligne tlphonique par exemple), il est souvent propos de tlcharger un fichier en plusieurs parties. Votre site peut crer une archive contenant toutes les donnes voulues. Une fois cre, cette archive peut tre dcoupe en plusieurs 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.

zipRegroupe zipSupprimeFichier zipSupprimeListeFichier zipSupprimeTout zipTaille zipTailleFichier

Regroupe les diffrentes parties d'une archive pour en faire une archive mono-partie Supprime un fichier d'une archive Supprime un ensemble de fichiers contenu dans une archive Supprime la totalit des fichiers d'une archive Renvoie la taille totale de l'ensemble des fichiers d'une archive (avant ou aprs compression) Renvoie la taille d'un fichier d'une archive (avant ou aprs compression)

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 zipNbPartieNcesRenvoie le nombre de parties d'une taille donne ncessaires pour contenir saire l'archive zipNiveauCompres- Change le niveau de compression utilis dans la cration d'une archive au format sion ZIP zipOuvre Ouvre une archive existante zipOuvreCAB Ouvre une archive CAB existante zipOuvreRAR Ouvre une archive RAR existante 202 Partie 4 : Fonctions standard

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.

Partie 4 : Fonctions standard

203

13. GRAVER UN CD OU UN DVD


13.1 Prsentation
Plusieurs fonctions WLangage sont votre disposition 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-

WebDev WD

13.3 Fonctions de gravure


Les fonctions permettant de grer les archives sont les suivantes : GraveurAjouteFichier GraveurAjouteRpertoire GraveurAnnuleGravure GraveurChemin GraveurEfface GraveurEjecte GraveurEnregistre GraveurEtat GraveurInfoCompilation GraveurInfoMdia GraveurListe GraveurMdiaPrsent GraveurNomVolume GraveurProprit GraveurSlectionne GraveurTypeMdia Ajoute un fichier la compilation Ajoute la totalit des fichiers d'un rpertoire la compilation Annule la gravure en cours de ralisation Renvoie le chemin du graveur en cours Efface les fichiers prsents sur un CD rinscriptible Ouvre ou ferme le tiroir du graveur en cours Grave les fichiers prsents dans la compilation sur le CD Renvoie l'tat actuel du graveur en cours Rcupre les caractristiques de la compilation en cours Rcupre les caractristiques du CD prsent dans le graveur en cours Liste les graveurs installs sur le poste en cours Permet de savoir si le graveur est plein ou vide. Permet de connatre ou de modifier le nom du CD graver Permet de connatre ou de modifier les proprits du graveur en cours Permet de slectionner le graveur utilis par dfaut Permet de connatre ou de modifier le format du CD graver

ble de copier directement un CD ou un DVD. En WinDev, les fonctions de gravure sont disponibles 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 :
GraveurChemin GraveurEtat GraveurListe GraveurProprit Renvoie le chemin du graveur en cours Renvoie l'tat actuel du graveur en cours Liste les graveurs installs sur le poste en cours Permet de connatre ou de modifier les proprits du graveur en cours

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 :
GraveurAjouteFichier Ajoute un fichier la compilation GraveurAjouteRper- Ajoute la totalit des fichiers d'un toire rpertoire la compilation

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.

GraveurSlectionne Permet de slectionner le graveur utilis par dfaut

2. Ouvrez si ncessaire le tiroir du graveur en cours, fonction GraveurEjecte. 3. Spcifiez si ncessaire le type du CD/DVD crer :
GraveurInfoMdia GraveurTypeMdia Rcupre les caractristiques du CD /DVD prsent dans le graveur en cours Permet de connatre ou de modifier le format du CD / DVD graver

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 (fonction GraveurAnnuleGravure).

204

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

205

14. FONCTIONS DACCS AU POCKET PC


Ces fonctions permettent d'accder aux Pockets PC partir d'une application WinDev standard. ceConnecte ceCopieFichier

WD

ceSysRep

Connecte le poste en cours un Pocket PC 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 modification 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- Identifie la cl suivant la cl spcifie dans la base de registres du Pocket PC vante 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- Renvoie le nom et ventuellement le type des valeurs d'une cl de la base de regisleur tres du Pocket PC ceRegistreLit Lit la valeur d'un registre dans la base de registres du Pocket PC ceRegistrePremire- Identifie la cl suivant la cl spcifie dans la base de registres du Pocket PC SousCl ceRegistreSousCl Identifie le chemin de la Nime sous-cl spcifie dans la base de registres du Pocket PC ceRegistreSuppri- Supprime une sous-cl dans la base de registres du Pocket PC meCl ceRegistreSuppri- Supprime une valeur dans la base de registres du Pocket PC meValeur 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 ceSupprimeRacSupprime un raccourci prcdemment cr avec la fonction ceCreRaccourci courci

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 connect 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.

206

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

207

15. FONCTIONS SPCIFIQUES WINDEV MOBILE


15.1 WinDev Mobile et les cartes SIM
15.1.1 Prsentation
WinDev Mobile permet de manipuler les informations 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. Indispensable pour accder au rseau tlphonique, cette carte puce identifie personnellement le consommateur 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 personnel. Les fonctions SIM du WLangage permettant de grer les informations contenues dans ce rpertoire. Remarque : Le rpertoire personnel prsent sur la carte SIM contient uniquement le nom des personnes et leur numro de tlphone. Seules ces informations peuvent donc tre manipules. et/ou sur un smartphone.

reconnatre automatiquement les diffrents mots crits directement sur l'cran l'aide du stylet (mthode appele "Transcriber"). Par exemple :

Par exemple :

15.1.3 Fonctionnement diffrent en mode GO et en utilisation relle


En mode GO (simulation sur le poste de dveloppement), une erreur WLangage est gnre lors de l'appel d'une fonction de gestion de la carte SIM. WinDev Mobile permet de grer simplement ce clavier grce aux fonctions WLangage. Remarque : D'autres types de clavier peuvent galement tre disponibles.

15.1.4 Fonctions WLangage


Ces fonctions permettent de grer facilement les informations contenues dans le rpertoire personnel prsent sur une carte SIM : 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

reconnatre automatiquement des lettres saisies avec un certain alphabet (mthode appele "Reconnaissance des lettres"). Par exemple :

15.2.2 Fonctions WLangage


Les fonctions permettant de manipuler le clavier dun Pocket PC sont : ClavierListe Renvoie la liste des types de claviers disponibles sur le Pocket PC ClavierMode Permet de connatre et/ou de changer le clavier en cours d'utilisation ClavierVisible Permet de savoir si le clavier en cours est activ et de rendre le clavier actif

15.1.2 Configuration ncessaire


Pour pouvoir utiliser les fonctions SIM, l'application doit tre installe : sur un Pocket PC disposant d'un accs tlphonique (type GSM).

15.2 Clavier du Pocket


15.2.1 Prsentation
Pour permettre aux utilisateurs de vos applications de saisir des informations, il est ncessaire d'utiliser 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 informations. Par exemple :

reconnatre automatiquement des blocs de mots saisis avec un certain alphabet (mthode appele "Reconnaissance des blocs").

208

Partie 4 : Fonctions standard

Partie 4 : Fonctions standard

209

PARTIE 5 Fonctionnalits spcifiques au Web

210

Partie 4 : Fonctions standard

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'internaute 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 nouveau 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 documents sont slectionns sur le poste de l'internaute 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 automatiquement 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 proprits de type Valeur sur ce champ. Pour obtenir le nom du fichier upload, il est ncessaire d'utiliser la fonction UploadNomFichier. deux fonctions serveur du WLangage : UploadCopieFi- Enregistre un fichier "upload" chier sur le serveur. Lors de cet enregistrement, il est possible de renommer le fichier enregistr sur le serveur. UploadNomFi- Renvoie le nom d'un fichier chier "upload" (nom d'origine du fichier, ou nom du fichier enregistr sur le serveur). un ensemble de fonctions navigateur du WLangage permettant de manipuler le champ Upload : UploadCopieFi- Indique le nom du fichier en chierEnCours cours d'envoi par le champ upload. UploadLance Lance l'envoi des fichiers slectionns dans un champ upload. UploadSupSupprime un fichier de la liste prime des fichiers uploader : le fichier ne sera pas upload sur le serveur. UploadSuppri- Vide la liste des fichiers meTout uploader : aucun fichier ne sera upload sur le serveur. UploadTailleEn- Renvoie la taille (en octets) dj voyeFichieenvoye du fichier en cours rEnCours d'upload via un champ Upload. UploadTailleEn- Renvoie la taille totale (en octets) voye des fichiers dj envoys par l'upload en cours via un champ Upload. UploadTailleFi- Renvoie la taille totale (en octets) chierEnCours 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.

Partie 5 : Fonctionnalits spcifiques au Web

213

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 "Submit". 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 UploadNomFichier(<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 renommer 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 fonctionne 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 navigateur sont machines diffrentes. Le serveur ne voit pas les fichiers du navigateur. Pour obtenir les noms de fichiers manipuler, utilisez UploadNomFichier.

2. Dans le code de la page, ajoutez le code navigateur optionnel "souris dplace" (OnMouseMove)". 3. Saisissez le code suivant dans ce code :
SI SAI_ChampUpLoad <> "" ALORS SI IMG_ChampImage<> SAI_ChampUpLoad ALORS IMG_ChampImage = SAI_ChampUpLoad FIN FIN

2. DOWNLOAD DE FICHIERS
2.1 Prsentation
Le download (ou tlchargement) est l'opration qui consiste enregistrer sur le poste de l'internaute un fichier stock sur le serveur. Le fichier est "download" ou "tlcharg" sur le poste de l'internaute. 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.

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 illimite dans le moteur WebDev. Cette taille peut tre limite : par le serveur Web utilis. Pour plus de dtails, consultez la documentation du serveur Web utilis. 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 centaines 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).

2.2 Mettre en place le tlchargement dun fichier dans un site WebDev


WebDev propose plusieurs mthodes pour effectuer un tlchargement de fichier dans un site : fentre de description du bouton ou lien permettant d'effectuer le tlchargement. programmation en WLangage. 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 directement.

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 directement.

2.2.3 Forcer le tlchargement du 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.2.2 Programmation
Pour proposer le tlchargement d'un fichier par programmation, il suffit d'utiliser la fonction FichierAffiche dans le code de clic serveur du bouton ou du lien permettant de tlcharger le fichier. Exemple :
// Affiche dans le navigateur FichierAffiche(ComplteRep(... fRepWeb()) + "NOTES.TXT", .. "text/plain")

Pour ouvrir cette bote de dialogue quel que soit le type du fichier tlcharger, saisissez la ligne de code suivante :
FichierAffiche(ComplteRep(... fRepWeb()) + "NOTES.TXT", ... "application/unknown")

Cependant, le nom du fichier propos en tlchargement ne correspond pas un nom valide. Pour proposer immdiatement le nom du fichier tlcharger, il suffit de rajouter ce nom la suite des paramtres de la fonction FichierAffiche :
FichierAffiche(ComplteRep(fRepWeb()) + "NOTES.TXT",... "application/unknown", "Notes.TXT")

214

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

215

3. COOKIES
3.1 Prsentation
Un cookie est un moyen simple de stocker temporairement une information chez un internaute. Cette information pourra tre rcupre ultrieurement. Lorsque linternaute retourne sur un site quil a dj consult, le site "reconnat" linternaute grce aux cookies. Il est ainsi possible dviter de demander des renseignements dj fournis lors dune prcdente connexion, et de proposer des pages personnalises. Remarque : Un cookie possde une date dexpiration (par dfaut 30 jours aprs la cration du cookie). 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 cookies, pourront tre lues par le site lors de la prochaine 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 connexion, affichage de promotions correspondant aux recherches effectues lors de la dernire visite, ...

3.3.2 Ecrire un cookie sur le poste de linternaute


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 validit. 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 utilise 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 validit. Le cookie est immdiatement cr.

3.3.3 Lire un cookie sur le poste de linternaute (code serveur et code navigateur)
Pour lire un cookie sur le poste de l'internaute, utilisez la fonction CookieLit, en prcisant le nom du cookie. Remarques : Lors de la connexion au site Web, le serveur lit automatiquement tous les cookies associs 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'administrateur WebDev. avec un simple test par un "GO" du projet depuis l'diteur de pages de WebDev.

3.2 Que contient un cookie ?


Un cookie est un fichier texte conserv sur le poste de linternaute (gnralement dans le "cache" Internet 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 spcifique 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.

216

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

217

4. VALIDIT DES PAGES DUN SITE


4.1 Prsentation
Lors de la cration d'une page, il est possible d'indiquer 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 partir d'une date donne. Pour ne pas oublier de le faire : WebDev prviendra le dveloppeur lors de l'ouverture du projet avec une frquence paramtrable. 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.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'application 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 serveur SMTP (pour les serveurs avec authentification). 5. Validez grce au bouton "Appliquer".

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 galement utilise pour afficher une erreur de compilation d'IHM. Cette erreur de compilation indiquera si la date limite de validit de la page a t atteinte. 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 automatiquement. 4. Indiquez : lheure de lancement de la recherche des pages primes. A l'heure indique, le serveur d'application effectuera une recherche des pages primes 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 serveur SMTP (pour les serveurs avec authentification). 5. 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

218

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

219

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 projet 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. Si ncessaire slectionnez l'encodage voulu. Si l'encodage correspond "<Non dfini>", la dtection de l'encodage est automatique. 6. Validez

5.2.3 Dtection automatique de l'encodage


Si l'encodage est <Non dfini>, une dtection automatique de l'encodage est effectue : cas d'une rfrence Web : le serveur est interrog. 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'interface avec les API Web telles que celles proposes par Google ou Yahoo. L'interaction avec les composants externes proposs par ces sites est simplifie. Il est possible d'allouer des objets Javascript externes en code Navigateur crit en WLangage. L'utilisation d'objets Javascript externes ne ncessite 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 programmation de l'agenda Google. Affichez l'onglet "Avanc" de la description de la page. Dans l'onglet "HTML", ajoutez la ligne de code suivante dans le code HTML de l'en-tte de page : <script type="text/javascript">google.load("gdata", "1");</script>. Ce code est fourni dans la documentation Google. Dans l'onglet "Javascript", cliquez sur le bouton "Ajouter une ressource Web". Saisissez l'adresse permettant d'inclure le service d'agenda : http://

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 dtection 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 dtection 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 programmation) proposs par des services externes (API Web) sur le WEB. Il est alors possible de s'interfacer avec ces services externes en code navigateur. 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 dtection 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.

code personnel). 2. Saisissez le code navigateur permettant de rcuprer la liste des tches.
MonServiceAgenda est ... un objet dynamique MonServiceAgenda = ... allouer un objet ... "google.gdata.calendar.CalendarService" 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

www.google.com/ jsapi?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx (le code de la cl correspond votre

220

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

221

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) permet de rafrachir uniquement les donnes modifies dans une page HTML sans rafficher la totalit de la page. Par exemple, si certains lments 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 supporter un plus grand nombre de connexions simultanes. 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 supportent 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 suprieur, ). La fonction AJAXDisponible permet de savoir si le navigateur en cours supporte la technologie 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). Pour utiliser AJAX dans ce site, le traitement serveur "A chaque modification" du champ "Slectionner le pays souhait" est pass en mode AJAX. Un simple clic ! Le code reste le mme.

Pour passer un traitement en mode AJAX automatique, cliquez simplement sur le terme "AJAX" prsent dans le bandeau du traitement :

Traitement n'utilisant pas la technologie AJAX

6.2.2 Traitements permettant dutiliser automatiquement 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. Traitement utilisant la technologie AJAX Remarque : 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.3 lments et caractristiques pouvant tre manipuls automatiquement par AJAX


Grce AJAX et sans aucune programmation spcifique, il est possible de modifier les caractristiques des lments suivants : Valeur Couleur de la police Couleur de fond Champ de saisie X X X (Texte saisi) (Couleur du texte (Couleur de fond du saisi) texte saisi) Champ d'affichage X X X format (Texte affich) (Couleur du texte affi- (Couleur de fond du ch) texte affich) Table X X X (Contenu des lignes) (Couleur du contenu (Couleur de fond des des lignes) lignes paires et impaires) Zone rpte X X X (Contenu des (Couleur du contenu (Couleur de fond des champs) des champs) champs) Liste X X X (lments lists et (Couleur des llments slectionments lists) ns) Combo X X X (lments lists et (Couleur des llments slectionments lists) ns)

6.2 AJAX automatique et immdiat


6.2.1 Prsentation
Le schma suivant prsente l'utilisation automatique et immdiate de AJAX dans un site WebDev : Action de l'internaute. Dans notre exemple, slection du pays dans la combo "Slectionner 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. Par exemple, une page d'un site permet de connatre diffrentes caractristiques d'un pays (capitale, devise, drapeau, situation, ). En fonction du pays slectionn par l'internaute, les informations correspondantes sont affiches. Affichage des caractristiques du pays : sans AJAX : toute la page est raffiche. avec AJAX : seuls les champs contenant les caractristiques du pays sont rafrachis.

Visibilit X

222

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

223

Interrupteur

Slecteur Image Image clicable Vignette Graphe Libell Libell HTML Bouton Lien Rglette * Champ cellule Page Arbre

X X (Options slection- (Couleur des options) nes) X X (Option slectionne) (Couleur des options) X (Image) X (Image) X (Image) X (Graphe) X X X X X X (Libell) (Couleur du libell) X X (Libell) (Couleur du libell) X (Contenu)

X X X X X

Remarque : Pour que les clics sur la rglette soient galement en mode AJAX, il suffit : soit de cocher l'option "Mode AJAX" dans la fentre 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 traitement). 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 automatiquement remplacs par une chane vide ("") en mode AJAX. Ces caractres sont les caractres dont le code ASCII est strictement infrieur 32, l'exclusion des caractres 9, 10 et 13 (respectivement TAB et RC). Ces caractres spciaux sont gnralement inutiliss dans les chanes.

X X X X

X X X X

6.3 AJAX Programm


6.3.1 Prsentation
Le schma suivant prsente l'utilisation de "AJAX programm" dans un site WebDev : Affichage des informations modifies. Seuls les champs ncessaires sont rafrachis.

6.3.2 Fonctions de gestion AJAX


X X X X X Pour grer les traitements plus complexes, WebDev propose plusieurs fonctions AJAX (classes ici par ordre d'intrt) : AJAXDisponi- Permet de savoir si la technologie ble AJAX est utilisable dans le navigateur en cours. AJAXExcute Excute une procdure serveur sans rafrachir la page. Cette fonction est bloquante. Tant que le rsultat de la procdure excute n'est pas rcupr, aucun autre traitement n'est excut. AJAXExcuteA- Excute une procdure serveur synchrone 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- Permet de savoir si une procsynchroneEn- dure serveur appele par la foncCours tion AJAXExcuteAsynchrone est en cours d'excution AJAXAnnuleAp- Annule l'excution automatique pelAsynchrone de la procdure navigateur appele par la fonction AJAXExcuteAsynchrone. Partie 5 : Fonctionnalits spcifiques au Web 225

Remarques : Le nombre de caractristiques gres automatiquement 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 paragraphe "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 contenir 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", slectionnez le champ que vous avez ajout et dfinissez sa position.

Excution d'un traitement navigateur (fonction AJAXExcute ou AJAXExcuteAsynchrone). Demande d'excution d'une procdure serveur. Excution de la procdure serveur. Gnration du rsultat. Le rsultat de la procdure 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.

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 automatiquement.

224

Partie 5 : Fonctionnalits spcifiques au Web

Grce ces fonctions, il est possible d'excuter une procdure serveur partir d'un traitement navigateur. Attention : Il est ncessaire d'assurer la cohsion des informations stockes sur le serveur et celles affiches sur le poste des internautes. Par exemple, si des donnes sont modifies, il est ncessaire de modifier ces donnes la fois sur le serveur et la fois sur la page affiche dans le navigateur.

ContexteOuvre

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 procdure par AJAX. Pour permettre l'appel d'une procdure serveur par AJAX, cliquez simplement sur le terme "AJAX" prsent 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 serveur sont utilisables en AJAX. Cependant, les fonctions suivantes n'ont aucun intrt en AJAX. Ces fonctions ne sont donc pas disponibles en AJAX. ChaneAffiche Affiche une chane de caractres (ou un buffer) dans le navigateur Ferme un contexte de page

Ouvre un nouveau contexte de page sans renvoyer les informations vers le navigateur FichierAffiche Affiche un fichier sur le navigateur de l'internaute FramesetActualise Actualise un frameset affich dans le navigateur de l'internaute partir du contexte prsent sur le serveur FramesetAffiche Affiche un frameset WebDev dans le navigateur de l'internaute FramesetUtilise Affiche un frameset WebDev dans le navigateur de l'internaute et ferme tous les contextes de pages et de frameset en cours InitFentre Remet zro (ou non) les champs de la page en cours et lance les traitements d'initialisation des champs PageInitialisation Remet zro (ou non) les champs de la page en cours et lance les traitements d'initialisation des champs PageUtilise Affiche une page WebDev dans le navigateur de l'internaute et ferme tous les contextes 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'internaute UploadNomFichier Connatre le nom d'un fichier "upload" par l'internaute Utilise Affiche une page dans le navigateur de l'internaute 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.

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 respecter 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 optionnelle. 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 dveloppement de votre Gadget Vista. Pour cela, sous le volet "Projet", dans le groupe "Configuration de projet", droulez "Nouvelle configuration" et slectionnez 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 fonctionnent, 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 correspondant 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 Navigation. Le champ image dans une zone rpte en mode gnr ou en mode base de donnes (mmo) n'affiche pas d'image.

ContexteFerme

226

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

227

7.2.2 Gnration du gadget


Pour gnrer un gadget Vista : 1. Affichez si ncessaire la configuration correspondant 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 slectionne. 5. Slectionnez les langues du gadget. 6. Si le gadget Vista utilise des pages AWP, indiquez les caractristiques du serveur (nom du serveur, rpertoire virtuel, ...). 7. Validez. Le gadget est cr dans le sous-rpertoire "EXE" du projet (dans le rpertoire correspondant la configuration de projet). Le gadget est un fichier d'extension ".gadget". Si le poste de dveloppement est un poste sous Windows Vista, vous avez la possibilit d'installer directement le gadget pour le tester.

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 automatiquement un bouton de validation et un bouton d'annulation. 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'dition 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 GadgetChargeParamtre 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 fonctions GadgetAfficheFlyout et GadgetFermeFlyout.

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 diffrents types de pages d'un gadget Vista. des fonctions WLangage spcifiques permettant de grer certaines spcificits des gadgets Vista. 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 bouton concern l'appel la fonction GadgetAfficheFlyout. 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 gadgets. Aprs la fermeture de la fentre de configuration 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

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 traitements 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 228 Partie 5 : Fonctionnalits spcifiques au Web

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 GadgetSauveParamtre. 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.

Partie 5 : Fonctionnalits spcifiques au Web

229

8. UTILISATION DE SITES DCONNECTS


8.1 Prsentation
WebDev permet dindiquer quun site ou un ensemble de pages peuvent fonctionner en mode dconnect (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 permet de savoir si le navigateur est en mode connect ou en mode dconnect et d'adapter le comportement du site. Cette fonctionnalit utilise la gestion des manifestes 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 premire connexion un site. Un fichier manifeste spcifique permet de lister toutes les ressources mettre en cache.

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 permet aux sites Internet d'utiliser une base de donnes 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 connect et dconnect, il est possible d'utiliser la fonction NavigateurEstConnect en code navigateur pour savoir si un code serveur peut tre ou non effectu. En cas de dconnexion, une procdure 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 transmettre au serveur ds que la connexion Internet sera rtablie. Attention : Cette fonctionnalit est disponible uniquement sous certains navigateurs : Chrome, Safari, Opra 11, ... 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 fonction SQLInfoGene est automatiquement excute l'appel de la procdure. Les variables SQL sont donc toutes positionnes. Si une erreur est survenue, 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 enregistrements), 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 crases. Pour connatre les ordres SQL utilisables, consultez la documentation des bases de donnes de type "Web SQL database".

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 automatiquement dans le sous-rpertoire de la langue prsent dans le rpertoire _WEB du projet. Ce fichier va contenir les pages spcifies et toutes leurs dpendances (images, feuilles de styles CSS, fichiers Javascript, ...). 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 uniquement en mode hors connexion). pour grer un site qui perdrait la connexion Internet. 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'utiliser 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, bouton, champ de saisie, libell, image, lien, menu,

8.3.1 Comment grer une base de donnes locale ?


1. Utilisez la fonction SQLConnecte en code navigateur pour vous connecter la base de donnes locale. Par exemple :
// Connexion une base navigateur // nomme "BaseLocale" // La base est cre si elle // n'existe pas SQLConnecte("BaseLocale",... "","","","Web SQL database"))

8.2.2 Configuration du serveur


L'utilisation d'un manifeste ncessite une configuration 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 230 Partie 5 : Fonctionnalits spcifiques au Web

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.

Partie 5 : Fonctionnalits spcifiques au Web

231

8.3.2 Les fonctions SQL

Les fonctions SQL disponibles en code Navigateur sont les suivantes : 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.

ou la base distante (en mode connect). Tous les accs (cration, modification, suppression, ...) la base locale doivent tre effectus 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 navigateur, donc en AJAX, via la fonction AJAXExcute. d'tre sr que le navigateur est connect (fonction NavigateurEstConnect). Par exemple :
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)

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 :
// 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)

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 fonction AjaxExcute. Dans notre exemple, la procdure navigateur __SynchoniseBase est lance :
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

8.3.3 Enregistrer en local les donnes d'un site dconnect


WebDev permet la mise en place de sites dconnects. Si ce type de site doit enregistrer des donnes 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 :
SQLConnecte("","","", ... "RDVClients", "Web SQL database")

Par exemple :
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)

Pour rcuprer des enregistrements de la base distante (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 procdure Serveur.
PROCEDURE RecupereEnreg() POUR TOUT MonFichier sListe += [RC]+ ... MonFichier.Rubrique1 +TAB + ... MonFichier.Rubrique2 +TAB+ ... MonFichier.Rubrique3 FIN RENVOYER sListe

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 excute via la fonction SQLExec.

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)

2. Rcuprer cette liste en code navigateur :


// Rcupre la liste sListe = AJAXExecute(RecupereEnreg)

3. Parcourir la chane et extraire les informations laide de la fonction ExtraitChane. Les enregistre-

Remarque : La mise jour de la base de donnes distante peut tre provoque lors de la re-connexion au serveur. Lors de la reconnexion au serveur, 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 connect". Saisissez le code de mise jour de la base de donnes distante.

232

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

233

9. STOCKAGE LOCAL
9.1 Prsentation
Dans un site Web, le stockage local permet de stocker 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 perdues lors de la fermeture de la fentre du navigateur. 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 disponible par page. Le stockage de paramtres locaux est disponible uniquement sur les navigateurs rcents (supportant 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 FireFox).

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 changes n'est pas certifie. Pour assurer la confidentialit des donnes changes, plusieurs systmes existent. Le plus courant est l'utilisation du protocole SSL (Secure Socket Layer). SSL est un protocole de communication d'informations qui permet d'assurer l'authentification, la confidentialit 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 premiers. 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.

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.

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 (opration 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 paragraphe suivant). Note : "Verisign" dlivre des certificats de test valables 14 jours, qui permettent de tester si la connexion HTTPS est correcte. Ces cls de test permettent de tester le bon fonctionnement des transactions scurises. La procdure complte suivre pour obtenir un certificat SSL est dtaille dans la suite de ce chapitre.

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.

234

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

235

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.verisign.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 "Continue" 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 coordonnes (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.

QQDFANtcjIwXDANBgkqhkiG9w0BAQEFAANLADBIA kEAmqKCTidFBZEwI0Q7WPTBlQzlacQi5nwjNndrW. U2tjGMElrY0IxoduwTgRX+DY42IuptGERQApb5NCx /4/3iBrQIDAQABMA0GCSqGSIb3DQEBBAUAA0 EABT7REV9bLiq3EFiug+a/ irlbYI7aNiuITsdSVO7j34baFtx aa2jTE4JoGrNhrWTQZgBl1GOMpuMef/ MuwXHO1A== -----END CERTIFICATE----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 certificat"). Changez le nom de votre machine (car 2 certificats de tests ne peuvent pas tre dlivrs pour la mme machine = mme nom). Recommencez partir de ltape 1.

10.4 Insrer des transactions scurises par SSL dans un site WebDev
Dans un site Internet / Intranet, toutes les transactions ne contiennent pas obligatoirement des donnes 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 scurise dans un site WebDev suppose que toutes les formalits lies au protocole SSL ont t effectues. 3. Si ncessaire (action non dfinie dans la description 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.1 Principe
La mise en place d'un mode scuris est ralise lors de l'ouverture d'une nouvelle page par un bouton 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'utilisation de la fonction SSLActive dans le code d'un bouton ou dun lien permettant d'ouvrir une nouvelle page.

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 programmation 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 :
SSLActive(Faux)

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 programmation 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 :
SSLActive(Vrai)

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 -----BEGIN CERTIFICATE----MIICBzCCAbECEFi+J6vFjN+EkkfCKLgi6uUwDQYJKoZIhvc NAQEEBQAwgakxFjAUBgNVBAoTDVZlcmlTaWduLCB JbmMxRzBFBgNVBAsTPnd3dy52ZXJpc2lnbi5jb20v cmVwb3NpdG9yeS9UZXN0Q1BTIEluY29ycC4gQnk gUmVmLiBMaWFiLiBMVEQuMUYwRAYDVQQLEz1G b3IgVmVyaVNpZ24gYXV0aG9yaXplZCB0ZXN0aW5 nIG9ubHkuIE5vIGFzc3VyYW 5jZXMgKEMpVlMxOTk3MB4XDTAwMDkwMTAwMD AwMFoXDTAwMDkxNTIzNTk1OVowZDELMAkGA1U EBhMCRlIxEjAQBgNVBAgTCUxBTkdVRURPQzEUMB IGA1UEBxQLTU9OVFBFTExJRVIxDDAKBgNVBAoUA 1BDUzEPMA0GA1UECxQGV0VCREVWMQwwCgYDV

3. Si ncessaire (action non dfinie dans la description 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 exemple) dans la page de dpart (non scurise). 2. Initialisez cette variable avec l'adresse scurise de la page :
adrPage = PageAdresse(... <NomPageDpart>, paScurise)

3. Dans le code voulu, utilisez la fonction :


NavigateurOuvre(AdrPage)

236

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

237

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, interprte 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 informations au format JSON. Il est par exemple possible de crer un site fournisseur de services JSON (par exemple service de suivi de colis).

Exemple : Dans cet exemple, une page AWP est appele et le traitement des donnes est ralis dans la procdure RponseFonction :
JSONExcuteExterne(... "http://MonSite/MonSite_WEB/FR/ PAGE_Objet.awp?id=12",... "JsonCallback",RponseFonction)

11.3 Crer des pages renvoyant des donnes JSON


WebDev offre la possibilit de crer un site fournisseur de services JSON. Les pages permettant d'obtenir les donnes JSON doivent renvoyer une chane de caractres d'un format spcifique. Ces pages peuvent tre des pages AWP ou PHP. L'exemple suivant permet de grer l'appel avec JSONExcute et JSONExcuteExterne. Pour le cas d'un appel externe, il est ncessaire de vrifier la prsence d'un paramtre spcifique prsent sur l'URL. Ce paramtre a t fourni l'utilisateur du service JSON.
sObjet est une chane = [ {id: 12, liste: [ {nom: "smith", prnom: "john"}, {nom: "dupond", prnom: "marie"}, {nom: "martin", prnom: "laura"}] } ] // // // SI Gestion d'un appel externe. Vrifie la prsence d'un nom de procdure sur l'URL PageParamtre(... "JsonCallback") <> "" ALORS sObjet = PageParamtre(... "JsonCallback") + "("+ ... sObjet + ");" FIN // ChaneVersUTF8 permet de grer // les accents ChaneAffiche(ChaneVersUTF8(sObjet))

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 format 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. Prenons un exemple simple : les donnes JSON sont renvoyes sous la forme :
{id: 12, liste: [ {nom: "smith", prnom: "john"}, {nom: "dupond", prnom: "marie"}, {nom: "martin", prnom: "laura"}] }

11.3.1 Cas d'une page appele par la fonction JSONExcute


Le code suivant permet de renvoyer un identifiant et une liste de valeurs :
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(sObjet))

Il est possible par exemple de : Rcuprer la valeur dun membre de lobjet dynamique. Par exemple :
MesContacts:id

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.
MesContacts est un objet dynamique

Rcuprer les diffrents lments dune liste de valeurs. Par exemple :


POUR i=1 _A_ Dimension(... MesContacts:liste) Listejoute(LISTE_Liste_contacts,... MesContacts:liste[i]:nom+" "+ ... MesContacts:liste[i]:prnom) FIN

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.

2. Appel de la fonction JSONExcute :


MesContacts = JSONExcute(... RpertoireWeb()+ ... "FR/PAGE_Objet.awp?id=12")

11.2.3 Exemple dutilisation de la fonction JSONEXcuteExterne


Le principe d'utilisation de la fonction JSONExcuteExterne est le mme que pour la fonction JSONExcute. 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 JSONExcuteExterne permet donc d'indiquer le nom de la procdure excute pour traiter les donnes JSON.

11.3.2 Cas d'une page appele par la fonction 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 procdure est indiqu en paramtre sur l'URL de la page.

Pour que les utilisateurs de sites WebDev puissent utiliser les services JSON, il suffit donc de leur indiquer 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 consulter une documentation spcifique.

3. Traitement des donnes JSON obtenues : Ce traitement est effectu en code navigateur.

238

Partie 5 : Fonctionnalits spcifiques au Web

Partie 5 : Fonctionnalits spcifiques au Web

239

PARTIE 6 Communication

240

Partie 5 : Fonctionnalits spcifiques au Web

1. LA COMMUNICATION
1.1 Communication avec WinDev / WebDev
Le WLangage offre de nombreuses possibilits de communication. Moyen de communication emails Lotus Notes Outlook tlphone fax Internet Possibilits offertes par WinDev/WebDev Pour plus de dtails ... Envoi et rception demails. Consultez Communiquez emails, page 245. par

Accs aux diffrentes donnes manipu- Consultez Accder Lotus Notes et Outlook, page 253 les par Lotus Notes. Accs aux diffrentes donnes manipu- Consultez Accder Lotus Notes et les par Outlook. Outlook, page 253 Informatisation de la manipulation du tl- Consultez WinDev et la tlphonie, phone. page 271. Envoi et rception de fax. Consultez page 278. Envoyer des fax,

Rcupration de pages HTML grce aux Consultez Rcuprer des pages fonctions HTTP. HTML, page 281.

transfert de donnes Envoi et rception de donnes grce aux Consultez Gestion de fichiers sur fonctions FTP/RPC WinDev. Internet, page 282. transfert de fichiers sockets Manipulation de fichiers sur un serveur Consultez Communiquer avec un FTP. serveur FTP, page 285. Communication dapplications et de sites Consultez Gestion des sockets, au travers du rseau grce aux fonctions page 287. Socket. Communication entre un PC et un Mobile. Consultez Gestion des cls bluetooth on page 292.

Bluetooh et OBEX

gestion du multit- Excution en parallle de diverses tches Consultez Gestion des threads, che dans une mme application ou dans un page 294. mme site. serveur SOAP Cration dapplications clientes et serveur Consultez SOAP, page 302. SOAP. Webservices XML,

procdures sur un Gestion de l'excution de procdures sur Consultez serveur de services un serveur de services Web .Net. page 306. Web .Net services Web XML fichiers XML assemblages .NET Importation et/ou gnration des services Consultez Web XML de type .Net et J2EE. page 306. Gestion des fichiers au format XML. Cration et utilisation dassemblages Consultez .NET. page 316.

Webservices

XML,

Consultez XML, page 312. Assemblages .NET,

Partie 6 : Communication

243

1.2 Communication avec WinDev Mobile


WinDev Mobile permet de faire communiquer deux Pockets PC entre eux, un Pocket PC avec un Smartphone, un Pocket PC avec un PC, ... Ces "dialogues" se font par infrarouge, par Wi-Fi, par GPRS. Accs distant (RPC sur HyperFileSQL) ActiveSync Carte rseau GPRS Infrarouge Smartphone ou accs tlphonique (type GSM) Wi-Fi X X X X X X X X Email FTP Le tableau ci-dessous prsente les diffrents modes de communication disponibles pour chaque fonctionnalit propose par WinDev Mobile :

2. COMMUNIQUEZ PAR EMAILS


2.1 Prsentation
WinDev et WebDev permettent de grer directement 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 manipuler 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, EmailSessionSMTP, EmailSessionNotes, EmailSessionOutlook et EmailSessionIMAP permettent de grer les connexions aux serveurs de messagerie.

HTTP

Tlphonie

SOAP J2EE .NET X X X

Socket

SMS

X X X

X X X

X X X

X X X X X

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 gestion des emails reconnu par tous les fournisseurs de service. Ce protocole vous permet de dialoguer 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 Microsoft, 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 EmailSessionIMAP.

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'excution 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'excution des diffrents traitements. Pour utiliser le mode asynchrone, il faut : 1. Dcocher l'option "Dsactiver le spooler de mail" dans l'administrateur WebDev (onglet "Configuration). 2. Activer le mode asynchrone l'ouverture de la session SMTP (avec la fonction EmailOuvreSessionSMTP 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 bloquante 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 continue de les envoyer, mais aucun nouveau mail ne sera accept par le spooler. Attention : Le mode asynchrone est utilisable uniquement 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.

244

Partie 6 : Communication

Partie 6 : Communication

245

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 fournisseurs de service. Ces protocoles vous permettent 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 galement tre prise en charge en utilisant le protocole IMAP. Exemple d'ouverture de session en utilisant une variable de type EmailSessionPOP3 :
// Ouverture de la session // de messagerie MaSession est un EmailSessionPOP3 MaSession.AdresseServeur = ... "pop.masociete.fr" MaSession.Nom = "utilisateur" MaSession.MotDePasse = "secret" EmailOuvreSession(MaSession)

Principe d'utilisation et particularits en WinDev

2. Lire les messages sur le serveur de messagerie : avec la fonction EmailRcupreTout, avec une boucle de la forme :
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

Principe pour un site WebDev :

2.4.2 Principe d'utilisation


Envoi de messages en utilisant le protocole SMTP. Pour envoyer des messages en utilisant le protocole SMTP, il faut : 1. Ouvrir une session SMTP : soit en utilisant une variable de type EmailSessionSMTP et la fonction EmailOuvreSession. soit en utilisant la fonction EmailOuvreSessionSMTP. 2. Construire le message envoyer dans une variable de type Email ou dans la structure Email. 3. Envoyer le message avec la fonction EmailEnvoieMessage. 4. Fermer la session SMTP avec la fonction EmailFermeSession. 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 EmailOuvreSession soit en utilisant la fonction EmailOuvreSessionPOP3.

Principe pour une application Mobile :

ou avec une boucle de la forme :


MonMessage est un Email POUR TOUT MonMessage DE MaSession // Placer ici le traitement // du message lu ... FIN

3. Fermer la session POP3 avec la fonction EmailFermeSession. Remarque : Il est possible d'ouvrir simultanment une session POP3 et une session SMTP avec la fonction EmailOuvreSession.

246

Partie 6 : Communication

Partie 6 : Communication

247

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 messagerie supportent la fois le protocole IMAP et le protocole POP3. avec une boucle de la forme :.
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

l'application de gestion des emails (MS Exchange 4 par exemple) grce la fonction EmailOuvreSession. 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.5.2 Utilisation du protocole IMAP


Pour recevoir des emails en utilisant le protocole IMAP : 1. Ouvrez une session IMAP en utilisant une variable de type EmailSessionIMAP et la fonction EmailOuvreSession. Exemple d'ouverture de session en utilisant une variable de type EmailSessionIMAP :.
// Ouverture de la session ... // de messagerie MaSession est un EmailSessionIMAP MaSession.AdresseServeur = ... "pop.masociete.fr" MaSession.Nom = "utilisateur" MaSession.MotDePasse = "secret" EmailOuvreSession(MaSession)

2.6.2 tape 1 : Crer un profil utilisateur


Le profil utilisateur permet de configurer l'application 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 utiliss. Pour utiliser les fonctions "email" du WLangage, 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 Server". 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 ralise grce la fonction EmailOuvreSession. Cette fonction doit tre la premire fonction "email" utilise dans votre application WinDev (ou votre site WebDev). La fonction EmailOuvreSession renvoie l'identifiant de la session. Cet identifiant sera utilis dans toutes les fonctions de gestion des emails du WLangage. 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'identifier l'erreur survenue.
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

ou avec une boucle de la forme (les mots-cls "NON LU" sont optionnels et permettent de parcourir uniquement les messages non lus ou bien tous les messages) :.
MonMessage est un Email POUR TOUT MonMessage NON LU DE ... MaSession // Placer ici le traitement // du message lu ... FIN

2. Lisez les messages sur le serveur de messagerie : avec la fonction EmailRcupreTout,

3. Fermez la session IMAP avec la fonction EmailFermeSession.

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 applications 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 utilisateur". 248 Partie 6 : Communication Grce aux fonctions email du WLangage, une application ou un site peut manipuler directement les emails grs dans une application ou un site utilisant "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 Microsoft de gestion des emails (MS Exchange par exemple). 2. Se connecter depuis l'application ou le site

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'application de gestion des emails (bote d'envoi de MS Exchange 4 par exemple). Partie 6 : Communication 249

EmailMiseAJour : cette fonction permet de synchroniser 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.
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

aux fonctions de lecture des emails (EmailLitPremier, EmailLitSuivant, etc.) : ces fonctions permettent 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 session. Dans cet exemple, les messages reus sont supprims de la bote de rception et du serveur d'emails par la fonction EmailSupprimeMessage.
// 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

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 ralise avec la fonction EmailFermeSession. Cette fonction doit tre la dernire fonction "email" utilise.

Exemple : Le code suivant est une procdure permettant de fermer une session de messagerie. Dans ce code, la variable NumSession correspond l'identifiant de session renvoy par la fonction EmailOuvreSession..
Procedure FermetureSession(... NumSession) // Fermeture de la session EmailFermeSession(NumSession)

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 gnralement). 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 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 "Compte utilisateur". Grce aux fonctions email du WLangage, une application 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 ralises : soit via la structure email (conserve par compatibilit) 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 : 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- Ajoute un fichier en attachement d'un email. ch EmailCherchePremierNo- Recherche un ou plusieurs emails selon des critres spcifis, dans une base tes 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

2.6.5 tape 3bis : Lecture des emails


La lecture d'emails par Simple MAPI est ralise grce : la fonction EmailMiseAJour : cette fonction permet de synchroniser le serveur d'emails et le logiciel 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.

250

Partie 6 : Communication

Partie 6 : Communication

251

EmailFermeSession EmailImporteHTML EmailImporteSource EmailJauge EmailLanceAppli EmailLitDernier EmailLitEntteDernier EmailLitEntteMessage EmailLitEnttePrcdent EmailLitEnttePremier EmailLitEntteSuivant EmailLitMessage EmailLitPrcdent EmailLitPremier EmailLitSuivant EmailLitTimeOut EmailMiseAJour

EmailMsgErreur EmailNbMessage EmailOuvreMessagerie EmailOuvreSession EmailOuvreSessionPOP3 EmailOuvreSessionSMTP EmailRaz EmailSauveFichierAttach 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

Ferme la session POP3 Permet d'envoyer simplement un mail au format HTML avec des images inclues Replit les diffrentes variables de la structure email partir du contenu de la variable Email.Source. Gre une jauge de progression pour l'envoi et la rception d'emails Lance l'application native d'envoi d'emails de l'appareil Android Lit le dernier message en attente sur le serveur Lit len-tte du dernier message en attente sur le serveur (protocole POP3 uniquement) Lit len-tte dun message identifi par son numro (protocole POP3 uniquement) Lit len-tte du message prcdent en attente (protocole POP3 uniquement) Lit len-tte du premier message (protocole POP3 uniquement) Lit len-tte du message suivant (protocole POP3 uniquement) Lit un message identifi par son numro Lit le message prcdent en attente Lit le premier message Lit le message suivant Lit la valeur du "timeout" de connexion aux serveurs de messagerie SMTP et POP3 Envoie les messages vers le serveur d'email Internet et reoit les messages en attente sur le serveur Internet Retourne le message correspondant l'identifiant de l'erreur Permet de connatre le nombre de messages actuellement sur le serveur Ouvre le logiciel de messagerie par dfaut de l'internaute sur le poste navigateur Ouvre une session de gestion des emails Ouvre une session de lecture demails avec le protocole POP3 Ouvre une session denvoi demails avec le protocole SMTP Re-initialise les variables de la structure email Copie les fichiers attachs au mail sur le poste local

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 contenant les contacts et les groupes de contacts. Plusieurs bases de donnes contenant des documents. 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. 4. Changement de la base Lotus Notes utiliser : fonctions NotesFermeBase et NotesOuvreBase. 5. Fermeture de la connexion avec le serveur Domino : fonction FermeSession ou EmailFermeSession.

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.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 indiquant l'identifiant de la connexion et la base locale ou distante Lotus Notes utiliser).

Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

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 FermeSession ou EmailFermeSession.

252

Partie 6 : Communication

Partie 6 : Communication

253

3.2.3 Envoi et rception des emails


Pour envoyer et recevoir les emails, il est ncessaire 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 minutes voulu. Envoi et rception manuels : Cliquez sur le bouton "Envoyer / Recevoir".

Attention : Sous Outlook Express, il est possible uniquement d'accder aux emails. Dans ce cas, utilisez 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)

EmailOuvreSessionNotes Permet d'accder aux diffrentes donnes manipules par le logiciel de messagerie Lotus Notes (emails, contacts, groupes de contacts, tches, rendez-vous). Rinitialise les variables de la structure email. EmailRaz EmailSupprimeMessage Supprime un message. Ferme la session. FermeSession Vrifie la validit d'une adresse email. EmailVrifieAdresse Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

3.3.2 Fonctions emails pour Outlook


Ajoute un dossier dans le logiciel de messagerie Outlook Modifie le dossier en cours dans le logiciel de messagerie Outlook Recherche un ou plusieurs emails selon des critres spcifis dans le logiciel de messagerie Outlook Gnre le code source de l'email envoyer partir des variables actuellement EmailConstruitSource prsentes dans la structure email. Le code source est gnr dans la variable Email.Source. Renvoie le nom du dossier en cours dans le logiciel de messagerie Outlook EmailDossierCourant Permet d'envoyer un message EmailEnvoieMessage Ferme la session EmailFermeSession Remplit les diffrentes variables de la structure email partir du contenu de la EmailImporteSource variable Email.Source. Permet d'envoyer simplement un mail au format HTML avec des images inclues EmailImporteHTML Renvoie la liste des dossiers prsents dans le logiciel de messagerie Outlook EmailListeDossier Lit le dernier email reu EmailLitDernier Lit l'en-tte du dernier email reu EmailLitEntteDernier EmailLitEntteMessage Lit l'en-tte d'un email reu EmailLitEnttePrcdent Lit l'en-tte de l'email prcdant l'email en cours Lit l'en-tte du premier email reu EmailLitEnttePremier Lit l'en-tte de l'email suivant l'email en cours EmailLitEntteSuivant Lit un email reu EmailLitMessage Lit l'email prcdent l'email en cours EmailLitPrcdent Lit le premier email reu EmailLitPremier Lit l'email reu suivant l'email en cours EmailLitSuivant Renvoie le nombre de messages reus actuellement prsents EmailNbMessage EmailOuvreSessionOut- Permet d'accder aux diffrentes donnes manipules par le logiciel de messagerie Outlook look EmailSauveFichierAttach Copie les fichiers attachs au mail sur le poste local Supprime un dossier dans le logiciel de messagerie Outlook EmailSupprimeDossier EmailSupprimeMessage Supprime un message Vrifie la validit d'une adresse email. EmailVrifieAdresse Ferme la session FermeSession Liste les profils Outlook disponibles. OutlookListeProfil EmailAjouteDossier EmailChangeDossier EmailCherchePremier

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 possible d'y accder dans cette version de Outlook.

3.3 Fonctions Lotus Notes et Outlook


3.3.1 Fonctions emails pour Lotus Notes
EmailCherchePremierNo- Recherche un ou plusieurs emails selon des critres spcifis, dans une base locale ou distante Lotus Notes ou Domino. tes Gnre le code source de l'email envoyer partir des variables actuellement EmailConstruitSource prsentes dans la structure email. Le code source est gnr dans la variable Email.Source. Permet d'envoyer un message. EmailEnvoieMessage Ferme la session. EmailFermeSession Remplit les diffrentes variables de la structure email partir du contenu de la EmailImporteSource variable Email.Source. Gre une jauge de progression pour l'envoi et la rception d'emails. EmailJauge Lit le dernier email reu. EmailLitDernier Lit l'en-tte du dernier email reu. EmailLitEntteDernier 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. Lit l'email reu suivant l'email en cours. EmailLitEntteSuivant Lit un email reu. EmailLitMessage Lit l'email prcdent l'email en cours. EmailLitPrcdent Lit le premier message. EmailLitPremier Lit le message suivant. EmailLitSuivant 254 Partie 6 : Communication

Partie 6 : Communication

255

OutlookOuvreSession OutlookProfilDfaut

Permet d'accder aux diffrentes donnes manipules par le logiciel de messagerie Outlook (emails, contacts, groupes de contacts, tches, rendez-vous et dossiers). Rcupre le profil dfini par dfaut dans Outlook

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 : Ouvre la fiche d'un contact dans l'application native de gestion des contacts de l'appareil (tlphone Android). Ajoute un contact dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook ContactAjoute Recherche un contact dans le carnet d'adresses d'une messagerie Lotus Notes ou OutContactCherche look Affiche la fentre de cration de contact de l'application native de gestion des contacts ContactCre de l'appareil (tlphone Android) Lit le dernier contact prsent dans le carnet d'adresses d'une messagerie Lotus Notes ContactDernier ou Outlook Ouvre en dition la fiche d'un contact en cours dans l'application native de gestion des ContactEdite contacts de l'appareil (tlphone Android) Lit un contact prcdemment lu, prsent dans le carnet d'adresses d'une messagerie ContactLit Lotus Notes ou Outlook Modifie le contact en cours dans le carnet d'adresses d'une messagerie Lotus Notes ou ContactModifie Outlook ContactPrcdent Lit le contact prcdent le contact en cours, dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Lit le premier contact prsent dans le carnet d'adresses d'une messagerie Lotus Notes ContactPremier ou Outlook Rinitialise la structure Contact ContactRAZ ContactSlectionne Affiche la liste des contacts de l'appareil (tlphone Android) Lit le contact suivant du contact en cours, dans le carnet d'adresses d'une messagerie ContactSuivant Lotus Notes ou Outlook ContactSupprime Supprime le contact en cours du carnet d'adresses d'une messagerie Lotus Notes ou Outlook ContactAffiche Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

3.3.3 Fonctions Tche


Les fonctions de gestion des tches prsentes dans la liste des tches d'une messagerie Lotus Notes ou Outlook sont les suivantes : TcheAjoute TcheDernier TcheLit Ajoute une tche dans la liste des tches d'une messagerie Lotus Notes ou Outlook Lit la dernire tche de la liste des tches d'une messagerie Lotus Notes ou Outlook 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 Outlook 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 Outlook Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

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 : Ajoute un rendez-vous dans l'agenda d'une messagerie Lotus Notes ou Outlook Lit le dernier rendez-vous prsent dans l'agenda d'une messagerie Lotus Notes ou Outlook Lit un rendez-vous prsent dans l'agenda d'une messagerie Lotus Notes ou Outlook RendezVousLit RendezVousModifie Modifie le rendez-vous en cours dans l'agenda d'une messagerie Lotus Notes ou Outlook RendezVousPrcdent Lit le rendez-vous prcdent le rendez-vous en cours, dans l'agenda d'une messagerie Lotus Notes ou Outlook RendezVousPremier Lit le premier rendez-vous prsent dans l'agenda d'une messagerie Lotus Notes ou Outlook Rinitialise la structure RendezVous RendezVousRAZ 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 Outlook RendezVousAjoute RendezVousDernier Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. 256 Partie 6 : Communication

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 : GroupeAjoute GroupeDernier GroupeLit GroupeModifie GroupePrcdent GroupePremier GroupeRAZ Ajoute un groupe de contacts dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Lit le dernier groupe de contacts prsent dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Lit un groupe de contacts prcdemment lu, prsent dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Modifie le groupe de contacts en cours dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Lit le groupe de contacts prcdant le groupe en cours, dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Lit le premier groupe de contacts prsent dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Rinitialise la structure Groupe

Partie 6 : Communication

257

GroupeSuivant GroupeSupprime

Lit le groupe de contacts suivant le groupe en cours, dans le carnet d'adresses d'une messagerie Lotus Notes ou Outlook Supprime le groupe de contacts en cours du carnet d'adresses d'une messagerie Lotus Notes ou Outlook

4.GOOGLE
4.1 Gestion des contacts Google
4.1.1 Prsentation
Le service Google Contact permet de grer des contacts sur Internet. WinDev et WebDev permettent par exemple de raliser une application qui synchronise 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. 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.

Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

3.3.7 Fonctions Notes


Les fonctions de gestion des documents Notes prsents dans Lotus Notes sont les suivantes : Indique la vue manipuler dans Lotus Notes Attache un fichier un champ du document en cours dans Lotus Notes Renvoie la valeur des champs du document en cours dans Lotus Notes Dsactive la vue en cours de manipulation dans Lotus Notes Renvoie la dimension d'un champ du document en cours dans Lotus Notes Recherche un document dans Lotus Notes Positionne sur le dernier document prsent dans Lotus Notes Positionne sur le document prcdant le document en cours dans Lotus Notes Positionne sur le premier document prsent dans Lotus Notes Positionne sur le document suivant le document en cours dans Lotus Notes Supprime le document en cours de la base Lotus Notes Permet de savoir s'il y a un document en cours dans Lotus Notes Enregistre le document en cours dans Lotus Notes Extrait un fichier attach un champ du document en cours dans Lotus Notes Ferme la base locale ou distante Lotus Notes ou Domino utilise Renvoie la liste des champs du document en cours dans Lotus Notes Renvoie la liste des fichiers attachs un champ du document en cours dans Lotus Notes Renvoie la liste des vues prsentes dans la base Lotus Notes en cours NotesListeVue Modifie le champ spcifi du document en cours dans Lotus Notes NotesModifieChamp NotesModifieFichierAttach Modifie un fichier attach un champ du document en cours dans Lotus Notes Renvoie le nombre de fichiers attachs un champ du document en cours NotesNbFichierAttach dans Lotus Notes Permet d'accder aux documents grs par Lotus Notes NotesOuvreBase Ouvre une connexion avec une base locale ou distante Lotus Notes ou Domino NotesOuvreConnexion Cre un document vide dans Lotus Notes NotesRAZ Supprime le champ spcifi du document en cours dans Lotus Notes NotesSupprimeChamp NotesSupprimeFichierAtta- Supprime un fichier attach d'un champ du document en cours dans Lotus Notes ch Recherche le dernier document prsent dans la vue en cours dans Lotus NotesVueChercheDernier Notes NotesVueCherchePremier Recherche le premier document prsent dans la vue en cours dans Lotus Notes Liste les colonnes prsentes dans la vue en cours dans Lotus Notes NotesVueListeColonne Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. NotesActiveVue NotesAjouteFichierAttach NotesChamp NotesDsactiveVue NotesDimensionChamp NotesDocumentCherche NotesDocumentDernier NotesDocumentPrcdent NotesDocumentPremier NotesDocumentSuivant NotesDocumentSupprime NotesEnDehors NotesEnregistre NotesExtraitFichierAttach NotesFermeBase NotesListeChamp NotesListeFichierAttach 258 Partie 6 : Communication

4.1.3 Comment rcuprer un contact Google ?


Pour rcuprer un contact Google : 1. Dclarez un tableau de variables de type gglContact. 2. Utilisez la fonction GglListeContact. Cette fonction permet de lister les contacts. Les contacts trouvs sont affects au tableau de variables de type gglContact. Exemple :
// 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

4.1.2 Comment grer les contacts Google ?


Pour grer les contacts Google : 1. Crez si ncessaire un compte Google. La cration 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 contient 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.

4.1.4 Comment modifier ou supprimer des contacts Google ?


Principe : Le principe est simple : Il est ncessaire de rechercher 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.

Partie 6 : Communication

259

Exemple :
// 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

Pour supprimer un contact : 1. Rcuprez la liste des contacts. 2. Recherchez le contact supprimer. 3. Supprimez le contact grce la fonction GglSupprime. Exemple :
// 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

4.2.2 Comment grer un agenda Google ?


Pour grer un agenda Google : 1. Crez si ncessaire un compte Google. La cration 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 contient 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 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.

Exemple :
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

4.1.5 Fonctions de gestion des contacts Google


Les fonctions suivantes permettent de grer des contacts par le service "Google Contacts" : Cre ou met jour un contact ou un groupe de contacts. GglEcrit Rcupre la liste des contacts associs au compte Google spcifi. GglListeContact Rcupre une liste de contacts partir de paramtres personnaliss. GglListeContactParRequte GglListeGroupeContact GglRequte GglSupprime Rcupre la liste des groupes de contacts associs au compte Google spcifi. Effectue une requte de communication (requte HTTP) un service Google. Supprime un contact ou un groupe de contacts.

2me mthode : rcupration d'un agenda spcifique. 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 :
// 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

Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

4.2.3 Comment rcuprer un agenda Google et ses lments ?


1re mthode : rcupration de la liste des agendas puis de leurs vnements. Pour rcuprer un agenda Google partir de la liste des agendas : 1. Dclarez un tableau de variables de type gglAgenda (pour rcuprer plusieurs agendas). 2. Utilisez la fonction GglListeAgenda. Cette fonction permet de lister les agendas disponibles. Les agendas trouvs sont affects au tableau de variables de type gglAgenda. 3. Utilisez la fonction GglRemplitAgenda pour rcuprer les vnements. Il est possible de rcuprer les vnements d'un seul ou de plusieurs agendas. Il est possible de filtrer les vnements rcuprer (par exemple entre deux dates).

4.2 Gestion des agendas Google


4.2.1 Prsentation
Le service Agenda Google Calendar est une application Internet fournie par Google qui permet de grer un agenda sur Internet. WinDev et WebDev permettent par exemple de raliser une application de synchronisation de planning 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 traitements 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.

4.2.4 Comment ajouter, modifier ou supprimer des vnements dans un agenda Google ?
Principe : Le principe de la modification des vnements est simple : l'agenda est rcupr en local, les modifications 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 agendas sur le serveur

260

Partie 6 : Communication

Partie 6 : Communication

261

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 :
// 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])

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 Google. 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.
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)

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 :
// 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)

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, utilisez une variable de type gglPhoto pour dcrire les caractristiques de la photo. Il est galement possible de dcrire les tags et les commentaires associs 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

4.2.5 Fonctions de gestion des agendas Google


Les fonctions suivantes permettent de grer des agendas par le service Agenda Google Calendar : Cre ou met jour un agenda. GglEcrit Rcupre la liste des agendas Google associs au compte Google spcifi. GglListeAgenda 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- Remplit un agenda prcdemment rcupr : les vnements correspondant l'agenda sont rcuprs partir d'une requte personnalise. ParRequte GglRequte GglSupprime Effectue une requte de communication (requte HTTP) un service Google. Supprime un agenda.

Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. 262 Partie 6 : Communication

Partie 6 : Communication

263

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

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). Diffrentes 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 GglRemplitPhoto. Diffrentes options permettent de spcifier 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 serveur Google. 4. Pour modifier une photo de l'album : modifiez les caractristiques de la photo dans l'album (grce une variable gglPhoto si ncessaire). 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 format PNG depuis une application WinDev Mobile. Les fonctions Google Picasa utilisent les API fournies par Google. Certaines fonctionnalits peuvent fonctionner sur le service en ligne et tre temporairement bloques via les API par Google.

4.4 Gestion des documents Google


4.4.1 Prsentation
Google Docs et Google Spreadsheet sont respectivement le traitement de texte et le tableur en ligne proposs par Google. WinDev et WebDev permettent de grer directement 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. 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 contient les caractristiques de la connexion votre compte Google. 3. Pour grer les documents prsents sur le serveur Google, utilisez une des fonctions suivantes : GglEnvoieDocument Envoie un document sur le serveur Google. GglListeDocument Rcupre la liste des documents disponibles sur le serveur Google pour l'utilisateur en cours GglRcupreDocu- Tlcharge un document depuis le service Google ment Docs. Supprime un document GglSupprime Google du serveur 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, WinDev Mobile), consultez laide en ligne.

4.3.3 Fonctions de gestion des albums Picasa


Les fonctions suivantes permettent de grer des albums de photos Google Picasa : Cre ou met jour un album ou une photo Google Picasa. GglEcrit Rcupre la liste des albums "Google Picasa" disponibles pour l'utilisateur. GglListealbum GglListeCommentaire Rcupre : la liste des commentaires enregistrs pour le compte client Google. la liste des commentaires associs une photo d'un album Google Picasa. Liste les photos des albums Google Picasa correspondant certains critres. GglListePhoto Rcupre : GglListeTag 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 Rcupre un album Google Picasa. GglRcupreAlbum Rcupre dans un album Google Picasa, les donnes correspondantes aux options GglRemplitAlbum demandes. Rcupre dans un album Google Picasa, les donnes sur les photos correspondanGglRemplitPhoto tes aux options demandes. Supprime un album ou une photo Google Picasa. GglSupprimer Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne. 264 Partie 6 : Communication

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 cration de ce compte peut tre ralise grce

4.5 Utiliser le service de cartographie Google Maps


4.5.1 Prsentation
Le service de cartographie Google Maps est un logiciel de cartographie Internet propos par Google. Il permet d'afficher un plan en offrant de nombreuses 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 rcupr lors d'un parcours avec un GPS qui enregistre 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. Partie 6 : Communication 265

4.5.2 Comment le faire ?


Rcuprer une carte dans vos applications ou sites Pour intgrer une carte utilisant le service de cartographie 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 modifie 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 voulue. 3. Dans le code permettant de rcuprer la carte, affectez le rsultat de la fonction GglRcupreCarte 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 service 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 format GIF et n'a pas de marqueurs. La langue affiche 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 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. 2. Dans votre projet WinDev ou WebDev, crez un champ Image. Ce champ va afficher la carte voulue. 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 GglRcupreCarte au champ Image. Dans le paramtre <Paramtres avancs>, indiquez le nom de la variable gglParamtreCarte contenant les options voulues. 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 conseill 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.

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 particuliers 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 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.

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 ralise grce la fonction SFConnecte et une variable 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, contact 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.

4.5.3 Autres Services


Le service Google Maps permet galement d'obtenir 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 gglCoordonne.

4.5.4 Fonctions de gestion des cartes Google


Les fonctions suivantes permettent de grer des cartes par le service de cartographie "Google Maps" : GglAdresseVers- Rcupre les coordonnes (couple latitude/longitude) d'une Coordones adresse. GglRcupre- Rcupre la carte d'un lieu prcis par le service de cartographie Carte Google Maps. Effectue une requte de commuGglRequte nication (requte HTTP) un service Google. Pour connatre la disponibilit de ces fonctions dans les diffrents produits (WinDev, WebDev, WinDev Mobile), consultez laide en ligne.

5.2 Fonctions Salesforce


Les fonctions de gestion des bases de donnes Salesforce sont les suivantes : SFAjoute SFAvanceRequte SFConnecte SFConvertitPiste SFDconnecte SFExcuteRequte Cre un enregistrement dans un fichier d'une base de donnes Salesforce. Continue d'excuter une requte SOQL (Salesforce Object Query Language) sur les enregistrements d'une base de donnes Salesforce Permet de s'authentifier auprs de la plate-forme Salesforce. Convertit des pistes (galement appeles LEAD). Ces pistes peuvent tre converties en compte, en contact ou en opportunit. Dconnecte la plate-forme Salesforce, la session Salesforce en cours ou les sessions Salesforce spcifies. Excute une requte SOQL (Salesforce Object Query Language) sur une base de donnes Salesforce.

266

Partie 6 : Communication

Partie 6 : Communication

267

SFExcuteTraiement SFFusionne SFLit SFModifie SFRecherche SFRechercheModifi SFRechercheSupprim SFRestaure SFSupprime SFVideCorbeille

Demande l'excution d'un traitement spcifique. Il est possible de soumettre des enregistrements au processus d'approbation ou d'effectuer une action d'approbation. Fusionne des enregistrements Salesforce (appels galement objets Salesforce). Rcupre des enregistrements Salesforce partir de leurs identifiants. Modifie les enregistrements d'un fichier dfini dans Salesforce. Effectue une recherche parmi les enregistrements d'une base de donnes Salesforce. La recherche est effectue grce au langage SOSL (Salesforce Object Search Language). Recherche et rcupre les enregistrements (objets Salesforce) modifis pendant la priode spcifie. Recherche et rcupre les enregistrements (objets Salesforce) supprims pendant la priode spcifie. Restaure des enregistrements Salesforce prcdemment supprims. Supprime des enregistrements d'une base de donnes Salesforce. Vide les enregistrements spcifis de la corbeille Salesforce.

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 (produire) 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 plusieurs 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 concernant le flux RSS manipuler. 2. Chargez le flux RSS grce la fonction rssInitialise. La variable de type flux RSS est initialise avec le flux spcifi.
MonRSS est un rssFlux MonRSS = rssInitialise(... "http://blogs.webdev.info/ rss.awp?blog=supporttechnique",... depuisURL)

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 informations RSS sans programmation.

3. Vrifiez que le canal du flux est valide et le charger. Par exemple :


SI MonRSS.Canal..Occurrence >= 1 ALORS MonCanal est un rssCanal MonCanal = MonFluxRSS.Canal[1]

... 6.3 Fonctions de gestion des flux RSS


Les fonctions de gestion des flux RSS sont les suivantes : Construit un flux RSS et affiche directement le rsultat sur le navigateur de l'interrssAffiche naute. rssConstruitChane Construit le flux RSS et renvoie le rsultat au format XML dans une chane de caractres. Charge en mmoire un flux RSS. rssInitialise Construit le flux RSS et sauvegarde le flux RSS dans un fichier XML. rssSauve

268

Partie 6 : Communication

Partie 6 : Communication

269

7. SERVEUR LDAP
7.1 Prsentation
Le protocole LDAP (Lightweight Directory Access Protocol) est de plus en plus utilis dans les entreprises. 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. LDAPAjouteAttribut LDAPConnecte LDAPDbutAjout LDAPDbutModification LDAPDconnecte LDAPListeAttribut LDAPListeFils LDAPMode LDAPNbValeur LDAPRAZ LDAPRecherche LDAPRemplaceAttribut LDAPRemplaceValeurAttribut LDAPRenommeAttribut Selon les informations stockes dans lannuaire LDAP, vous pouvez par exemple utiliser un annuaire LDAP pour identifier un utilisateur lors de sa connexion une application, vrifier les droits de lutilisateur sur lapplication, ...Fonctions de gestion dun serveur LDAP Les fonctions LDAP disponibles sont les suivantes :

8. WINDEV ET LA TLPHONIE
8.1 Prsentation
WinDev permet de grer simplement les appels tlphoniques entrants et sortants grce aux fonctions WLangage de tlphonie. Ces fonctions permettent par exemple de grer une bote vocale, un rpondeur, ... directement dans une application WinDev. Configuration ncessaire WinDev Pour pouvoir utiliser les fonctionnalits de la tlphonie, 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 "Notification du numro appelant" (caller Id). le protocole Tapi 2.0. Cette technologie est utilisable sur tous les systmes, cependant, il est ncessaire : si le systme utilis est Windows NT4, d'installer 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

WD WDMobile

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 tlphonie. 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 priphrique TAPI sur lequel la dtection d'appels ou la composition d'appels doit tre effectue. Utilisez les fonctions : telCapacit Permet de connatre les possibilits d'un priphrique TAPI

Ajoute un attribut ou ajoute une nouvelle valeur un attribut existant. Permet de se connecter un serveur LDAP Initialise l'ajout d'un nouvel objet dans un serveur LDAP. Initialise la modification d'un objet existant dans un serveur LDAP. Permet de se dconnecter d'un serveur LDAP. Liste les attributs d'un objet d'un serveur LDAP. Liste les fils d'un objet d'un serveur LDAP. Modifie le mode de fonctionnement d'une session LDAP Renvoie le nombre de valeurs d'un attribut. R-initialise la structure LDAPSession utilise par la fonction LDAPConnecte. Lance une recherche dans un serveur LDAP. La recherche effectue est toujours rcursive. Remplace toutes les valeurs d'un attribut par une valeur donne. Remplace une valeur donne d'un attribut par une nouvelle valeur donne.

telListePriph- Permet de connatre la liste des rique priphriques compatibles TAPI 2 telPriphrique Permet de slectionner le priphrique utiliser dans les fonctions TAPI. Configuration ncessaire WinDev Mobile Pour pouvoir utiliser les fonctions de tlphonie, l'application doit tre installe : sur un Pocket PC disposant d'un accs tlphonique (type GSM). et/ou sur un smartphone.

Renomme un attribut. Lors de ce renommage, la valeur des attributs est conserve. 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.

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 excute. C'est dans cette procdure que la gestion de l'appel est ralise. Utilisez les fonctions : telCapacit Permet de connatre les possibilits d'un priphrique TAPI

8.2.1 Les diffrentes tapes


Pour grer les appels entrants dans une application WinDev : 1. Dterminez si ncessaire le priphrique TAPI sur lequel la dtection d'appels doit tre effectue.

telListePriph- Permet de connatre la liste des rique priphriques compatibles TAPI 2 telPriphrique Permet de slectionner le priphrique utiliser dans les fonctions TAPI.

270

Partie 6 : Communication

Partie 6 : Communication

271

2. Dmarrez la dtection d'appels entrants grce la fonction telDmarreDtectionAppel. Cette fonction 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 : telLigneOccupe La ligne est actuellement occupe Numrotation en cours La ligne reoit la tonalit

effectuer des oprations spcifiques : telArrte Force l'arrt de la lecture d'un message pr-enregistr (fonction TelJoue) Enregistre la communication en cours sous forme d'un fichier .WAV. Joue un fichier sonore (.WAV) pour la ligne spcifie. Il est par exemple possible de jouer ainsi le message du rpondeur. Permet de simuler l'utilisation des touches du clavier tlphonique. Rpond un appel entrant (pralablement dtect)

telEnregistre

telJoue

telLigneDcroche La ligne est connecte telLigneNumrote telLigneTonalit telNumrote

telLigneRaccroche Le correspondant a raccroch telLigneAttendRponse telLigneSonnerie telNouvelAppel L'appel est compos : recherche du correspondant Sonnerie en cours chez le correspondant Nouvel appel dtect en attente de rponse ou de rejet.

telRpondAppel

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

Procdure de dtection d'appels : Cette procdure 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 PostMessage). Pour dboguer ce type de traitement, vous devez utiliser la fonction Trace.
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

telToucheEnfonce Permet de connatre l'historique des touches enfonces sur le clavier tlphonique. 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 vnements, ...). 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.

Code d'initialisation de la fentre : ce code permet de dmarrer la procdure de dtection d'appels.


// 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

telInformationAppel Les informations supplmentaires (prsentation du numro) sont disponibles. Ces informations ne sont gnralement disponibles qu'aprs la premire sonnerie. grer compltement l'appel grce aux fonctions suivantes : obtenir les caractristiques de l'appel entrant : telAppelDbut Renvoie la date et heure du dbut d'appel

telAppelEstTermin Permet de savoir si l'appel est termin telAppelFin telDureAppel Renvoie la date et heure de la fin de l'appel Renvoie la dure de l'appel

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 permettant de grer les appels dans le thread principal de l'application.
GLOBAL gnIdEvenement est un entier //Evnement pour grer //les appels entrant en popup

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 effectue. Utilisez les fonctions : telCapacit Permet de connatre les possibilits d'un priphrique TAPI telListePriph- Permet de connatre la liste des rique priphriques compatibles TAPI 2 telPriphrique Permet de slectionner le priphrique utiliser dans les fonctions TAPI. 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 Partie 6 : Communication 273

telNumroAppelant Renvoie le numro de tlphone appelant

272

Partie 6 : Communication

l'appel. Dans cette procdure, il est possible de connatre l'tat de la ligne grce aux variables : telLigneOccupe La ligne est actuellement occupe Numrotation en cours La ligne reoit la tonalit

telAppelEstTermin Permet de savoir si l'appel est termin telAppelEstOccup Permet de savoir si le numro appel est occup telAppelFin telDureAppel telAppelPasDeRponse Renvoie la date et heure de la fin de l'appel Renvoie la dure de l'appel Permet de savoir si une rponse a t donne l'appel

telComposeLigne

telLigneDcroche La ligne est connecte telLigneNumrote telLigneTonalit

telLigneRaccroche Le correspondant a raccroch telLigneAttendRponse telLigneSonnerie L'appel est compos : recherche du correspondant Sonnerie en cours chez le correspondant

telNumroAppelant Renvoie le numro de tlphone appelant telNumroAppel Renvoie le numro de tlphone appel Force l'arrt de la lecture d'un message pr-enregistr (fonction telJoue) Enregistre la communication en cours sous forme d'un fichier .WAV. Joue un fichier sonore (.WAV) pour la ligne spcifie. Permet de simuler l'utilisation des touches du clavier tlphonique.

4. Dcrochez le combin du tlphone pour communiquer. 5. Pendant la communication, il est possible d'utiliser les fonctions WLangage permettant de manipuler 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.

effectuer des oprations spcifiques : telArrte

telEnregistre

telJoue telNumrote

Compose un numro de tlphone pour une prise de ligne vocale, en choisissant le priphrique utiliser telDmarreDtectionAppel Dmarre un service de dtection d'appel TelDialerAffiche Ouvre lapplication de tlphonie (dialer) par dfaut et affiche le numro spcifi. 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.

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 : telAppelDbut Renvoie la date et heure du dbut d'appel

telToucheEnfonce Permet de connatre l'historique des touches enfonces sur le clavier tlphonique.

8.4 Fonctions de tlphonie


Ces fonctions permettent de manipuler facilement toutes les fonctions de tlphonie d'un modem depuis une application WinDev : telAppelDbut telAppelEnAttente telAppelEstOccup telAppelEstTermin telAppelFin telAppelPasDeRponse telArrte telCapacit telCompose 274 Renvoie la date et heure du dbut d'appel Permet de savoir si l'appel est en attente Permet de savoir si le numro appel est occup Permet de savoir si l'appel est termin Renvoie la date et heure de la fin de l'appel Permet de savoir si une rponse a t donne l'appel Force l'arrt de la lecture d'un message pr-enregistr (fonction telJoue) Permet de connatre les capacits du priphrique TAPI slectionn Compose un numro de tlphone pour une prise de ligne vocale. Partie 6 : Communication 275

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, ...) correspond un message texte (160 caractres maximum) envoy sur un tlphone portable.

WDMobile

9.2.3 Lecture et suppression de SMS sur un Smartphone


Pour lire et/ou supprimer les SMS sur un Smartphone (fonctions SMSNbMessage, SMSPremier, SMSSuivant ou SMSSupprime), l'excutable de l'application WinDev Mobile et son framework (librairies WinDev Mobile) doivent tre signs lectroniquement. Pour raliser cette opration, il est ncessaire d'acqurir un certificat. Remarque : L'utilisation des fonctions SMSEnvoie et SMSRaz ne ncessite aucune signature spcifique.

9.2.4 Diffrents types de numros


Deux types de numros peuvent tre utiliss pour envoyer des SMS : Les numros courts (galement appels "Nationaux"). Ces numros sont accessibles uniquement 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.

Configuration ncessaire Pour pouvoir utiliser les fonctions SMS, l'application doit tre installe : sur un Pocket PC disposant d'un accs tlphonique (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.5 Fonctionnement diffrent en mode GO et en utilisation relle


En mode GO (simulation sur le poste de dveloppement), une erreur WLangage est gnre lors de l'utilisation d'une des variables de la structure SMS.

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 variables de la structure SMS, utilisez la fonction SMSRAZ. Numro Chane de caractres contenant le numro du correspondant ou de lexpditeur. Chane de caractres contenant le prfixe national (33 par dfaut correspondant 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 spcifi, utilisez directement un numro au format international. Par exemple, 33612345678. Indique le type de numro utilis : smsNumroInternational (valeur par dfaut) : ces numros sont accessibles de partout et sont de la forme 06.xx.xx.xx.xx. smsNumroNational : numro court, accessible uniquement depuis le territoire national.

9.3 Fonctions WLangage


Ces fonctions permettent d'envoyer facilement des SMS : SMSEnvoie SMSNbMessage SMSPremier SMSRAZ SMSSuivant SMSSupprime Envoie un SMS Renvoie le nombre de SMS reus ou le nombre maximal de SMS pouvant tre reus Positionne sur le premier SMS reu R-initialise toutes les variables de la structure SMS Positionne sur le suivant SMS reu Supprime le SMS spcifi

PrfixeNational

9.2.2 Les diffrentes variables de la structure SMS


La structure est compose des membres suivants : DateRception Date et heure de rception du SMS Remarque : Sur Pocket PC 2002, ce membre contient la date et lheure de lecture du SMS. Boolen (Vrai par dfaut) Indique si le message doit tre rgulirement envoy en cas de non-rception. Entier correspondant lindice du SMS reu. Chane de caractres contenant le message envoyer ou reu (160 caractres maximum). TypeNumro

Pour plus de dtails sur ces fonctions, consultez laide en ligne.

Essai

Indice Message

276

Partie 6 : Communication

Partie 6 : Communication

277

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 Windows 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 doivent tre envoys. 2. Crer l'application ou le site d'envoi de fax.

WD WebDev

10.3 Application ou site d'envoi de fax


10.3.1 Envoyer un fax depuis une application ou un site
suffit de dconnecter l'application ou le site du serveur de fax avec la fonction FaxDconnecte.

3. Configurer si ncessaire par programmation les diffrentes options de configuration du serveur de fax. Remarques : La fonction iAperu / iDestination permet galement denvoyer une impression sur un fax. Sous Windows Vista, la gestion des fax est disponible uniquement avec Windows Vista Professionnel 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. 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 cliquez 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 application ou un site. 7. Validez. Remarque : Pour crer un fichier de couverture (.Cov), utilisez l'onglet "Page de garde".

WB Attention : Les manipulations suivan-

tes ne s'appliquent que sur le poste serveur utilis pour envoyer des fax (et non sur les postes des navigateurs).

1. Vrifier la configuration du modem Ouvrez le panneau de configuration de Windows (option "Dmarrer .. Paramtres .. Panneau de configuration") et slectionnez l'option "Modem et tlphonie". 2. Installer un serveur de fax standard Windows version XP et 2000 est livr avec un serveur 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 Windows est en mode rception.

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 "Couverture"). 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 serveur 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 procdure WLangage. Cette procdure sera appele chaque modification de l'tat du fax dans le serveur 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'diteur d'tats. Dans ce cas, il est possible de donner 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 diffrents 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

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.
// Envoie l'tat "FactureCli" // par fax iDestination(iFax,"0006050402") iImprimeEtat(FactureCli)

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'identifiant de cette connexion. Cet identifiant peut tre utilis avec les fonctions Fax pour suivre l'volution de l'envoi du fax.
// Envoie l'tat "FactureCli" // par fax IdConnect est un entier IdConnect = FaxConnecte() IdConnect = iDestination(... iFax,"0006050402",... "MonFax",IdConnect) ... iImprimeEtat(FactureCli)

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".

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 registres. Il est possible de paramtrer et d'obtenir : des informations concernant l'envoi de fax (Windows 2000). La cl de registre correspondante est HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\Fax Nombre d'essais Retries Nombre de minutes entre Retry Delay deux tentatives Nombre de jours avant Dirty Days suppression des tlcopies non envoyes Archiver les tlcopies ArchiveOutgoingFax sortantes Rpertoire des tlcopies ArchiveDirectory sortantes

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 confi278 Partie 6 : Communication

Partie 6 : Communication

279

Impression de la ban- Branding nire du haut Interdire les pages de ServerCoverPageOnly garde personnel Heure de dbut de la StartCheapTime priode de tarif rduit Heure de fin de la priode StopCheapTime de tarif rduit des informations concernant l'expditeur du fax (Windows 2000) : La cl de registres correspondante est HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\F ax\UserInfo : Numro de fax expditeur FaxNumber Adresse Messagerie Socit Titre Nom complet Service Adresse professionnelle Tlphone personnel Tlphone professionnel Mailbox Company Title FullName Department Office HomePhone OfficePhone

Moniteur d'tat toujours AlwaysOnTop Dessus Avertissement sonore Code de facturation SoundNotification BillingCode

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 classique ou sur une URL protge. 2. Rcuprer le rsultat de la requte avec la fonction HTTPDonneRsultat. Grce ces fonctions, il est possible de rcuprer : le contenu complet dune page HTML, des fichiers de donnes, des images, ...

10.4.2 Astuces
Pour raliser un serveur de fax et grer les rexpditions 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 automatiquement car l'option "Pas de re-tentative d'expdition des fax" est vrai).

11.2 Fonctions HTTP


Les fonctions permettant de grer les requtes HTTP sont les suivantes : HTTPAjouteFichier HTTPAjouteParamtre HTTPAnnuleFormulaire HTTPCertificat HTTPCookieEcrit HTTPCookieGre HTTPCookieLit HTTPCookieRAZ Ajoute un fichier dans un formulaire HTTP. Ajoute un paramtre dans un formulaire HTTP. Annule une dclaration de formulaire HTTP et libre toutes ses ressources.

Affiche le moniteur d'tat VisualNotification en envoi ET rception

10.5 Fonctions de gestion des fax


Ces fonctions permettent d'envoyer des fax depuis une application ou un site : FaxBoteEnvoi FaxBoteRception FaxConnecte FaxDeconnecte FaxEnvoie FaxEtat FaxRinitialise FaxReprend FaxSupprime FaxSuspend numre les fax en attente ou en cours d'envoi numre les fax en attente ou en cours de rception Ouvre une connexion un serveur de fax Ferme la connexion un serveur de fax Envoie un fax Renvoie l'tat du fax spcifi Redmarre un fax dans la file d'attente R-active un fax mis en pause dans la file d'attente Supprime un fax de la file d'attente et annule son envoi 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. Remarque : La fonction iAperu / iDestination permet galement denvoyer une impression sur un fax. 280 Partie 6 : Communication

Modifie le certificat client utilis par dfaut pour s'identifier sur un serveur. Ajoute ou modifie un cookie. Active/dsactive la gestion des cookies lors des appels de la fonction HTTPRequete Retourne la valeur d'un cookie reu suite une requte HTTP. 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 HTTPRequte. 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) HTTPEnvoieFormuEnvoie un formulaire HTTP. laire 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. Partie 6 : Communication 281

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 ncessitent l'utilisation d'un serveur FTP / RPC spcifique ralis avec WinDev le FTP standard. Ce protocole ncessite l'utilisation 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

WD

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 serveur FTP ou RPC WinDev. Transmettre une chane de caractres un serveur FTP ou RPC WinDev.

12.1.1 Envoyer et recevoir des fichiers par FTP ou RPC WinDev : les rgles suivre
Pour envoyer et recevoir des fichiers, il faut respecter 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

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

12.2.3 tape 3 : Rcupration d'un fichier depuis un serveur FTP WinDev


La fonction NetRcupreFichier permet de rcuprer 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 NetListeRep.
-- 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

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 fonction NetDeconncete. Le code de dconnexion doit se trouver aprs la dernire instruction "Net". La variable "NumConnexion", ncessaire la dconnexion, contient la valeur retourne par NetConnecte. Le code pour se dconnecter d'un serveur RPC WinDev est le suivant :
//Dconnexion un serveur //RPC WinDev //NumConnexion contient la valeur //retourne par NetConnecte NetDeconnecte(NumConnexion)

12.2 Utilisation dtaille du FTP / RPC WinDev


12.2.1 tape 1 : Etablissement d'une connexion avec un serveur RPC / FTP WinDev
Pour transfrer des fichiers, il est ncessaire d'tablir une connexion avec un serveur RPC ou FTP WinDev. L'tablissement de la connexion est ralis avec la fonction NetConnecte. Le code d'tablissement 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 :
Fonction ConnexionRPC (Adresse,... Utilisateur, Motdepasse) //Connexion un serveur RPC NumConnexion est un entier NumConnexion = NetConnecte(... Adresse, ServeurRPC, ... Utilisateur, Motdepasse) Renvoyer NumConnexion

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 progression du transfert.
- - 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 ...

282

Partie 6 : Communication

Partie 6 : Communication

283

12.3 Fonctions Net


Les fonctions permettant de grer les communications FTP/RPC WinDev sont les suivantes : NetAdresseIP NetAdresseMAC NetConnecte Renvoie l'adresse IP (Internet Protocol) d'un poste Renvoie l'adresse MAC de l'une des cartes rseau de la machine. 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) ralis 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 Protocol) 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 Protocol) 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.

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 distant. 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 proposent des logiciels shareware ou freeware, accessibles au public. Des fonctions WLangage vous permettent de grer des fichiers sur un serveur FTP depuis vos applications ou depuis vos sites. 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 manipulation de fichiers sur le serveur. Il est galement possible de : obtenir les caractristiques sur des fichiers prsents 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.

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 Internet 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 "utilisateur 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 nonanonyme et un mot de passe.

3. Fermeture de la connexion avec le serveur (fonction FTPDconnecte).

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 FTPConnecte).

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 considr comme un chemin absolu : il s'agit du chemin 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. Partie 6 : Communication 285

284

Partie 6 : Communication

Ce rpertoire en cours peut-tre connu ou modifi avec la fonction FTPRepEnCours. Lors de la connexion un site FTP, le rpertoire initial (le "home directory" de l'utilisateur) n'est pas forcment la racine du serveur FTP. Il est donc conseill 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 serveur 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, ...).

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 connecte 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'application 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'application WinDev est un serveur, changeant des informations par sockets avec plusieurs postes client quelconques. Pour plus de dtails, consultez le paragraphe Serveur de socket standard, page 289.

13.2 Fonctions FTP


Les fonctions permettant de grer le FTP (File Transfer Protocol) sont les suivantes : FTPAttribut FTPCommande FTPConnecte FTPDate Identifie les attributs d'un fichier prsent sur un serveur FTP (File Transfer Protocol) Envoie une commande FTP spcifique un serveur Connecte le poste en cours un serveur FTP (File Transfer Protocol) 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 Protocol) 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 Protocol) 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.

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. La socket est identifie par son port et par une adresse.

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 fonction permet d'effectuer une demande de connexion au serveur.

Etape 2 : change de donnes Lorsque deux postes ont connect leur socket, un flux 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.

286

Partie 6 : Communication

Partie 6 : Communication

287

Remarque : Pour ne pas bloquer les applications ou les sites, 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 du poste serveur, l'application cliente WinDev ou le site client WebDev doit utiliser les fonctions SocketLit et SocketEcrit.

Remarque : il est galement possible de terminer la communication depuis le poste serveur.

La connexion est tablie au premier succs de la fonction SocketLit sur le serveur.

14.2.2 Mode de transmission des informations


Le mode de transmission du message dfinit le mode utilis pour dterminer la longueur du message. Plusieurs mthodes sont disponibles pour dterminer la longueur du message lors de la communication 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 : Correspond au mode standard optimis pour les protocoles les plus utiliss sur Internet. La fonction SocketChangeModeTransmission permet de modifier le mode de transmission utilis.

Etape 3 : Fermeture de la socket Pour terminer la communication, le serveur peut fermer la socket avec la fonction SocketFerme.

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.

Etape 2 : change de donnes Lorsque deux postes utilisent la mme socket, un flux 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. 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 SocketEcrit.

Remarque : la socket peut aussi tre ferme par le poste client.

14.3.2 Mode de transmission des informations


Le mode de transmission du message dfinit le mode utilis pour dterminer la longueur du message. WinDev propose plusieurs mthodes pour dterminer la longueur du message lors de la communication 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 : Correspond au mode standard optimis pour les protocoles les plus utiliss sur Internet. La fonction SocketChangeModeTransmission permet 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 communiquer avec un seul poste client simultanment. Ce type d'application est trs utile lorsque deux applications distantes ont besoin de communiquer. Remarque : WinDev offre galement la possibilit de crer un serveur de sockets plus labor (serveur de sockets standard), grant la connexion de plusieurs postes client simultanment. Pour plus de dtails, consultez le paragraphe Serveur de socket standard, page 289.

WD WDMobile

Attention : Pour raliser une lecture, une criture doit avoir t ralise. Par exemple : 1. Le poste client crit sur la socket : il envoie une requte au poste serveur. 2. Le poste serveur effectue une lecture sur la socket dans un thread. Ds 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 SocketClientInfo), et lui envoie une rponse.

14.3.1 Le serveur simplifi


Etape 1 : Cration de la socket Pour crer la socket, le poste serveur utilise la fonction 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 socket 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'informations par le poste serveur).

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.

WD 14.4.1 Le serveur de socket standard


Etape 1 : Cration de la socket Pour crer la socket, le poste serveur utilise la fonction SocketCre. Une socket est associe un port spcifique. Il est possible de crer plusieurs sockets, chaque socket utilisant un numro de port spcifique. A chaque socket est associ un nom (permettant de manipuler la socket par programmation) et un numro de port. Partie 6 : Communication 289

288

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 SocketAttendConnexion dans un thread spcifique. Cette fonction 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 communication spcifique est cr. 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). soit de refuser la connexion (fonction SocketRefuse). 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 ralise dans un thread spcifique. Il y a un thread excut par connexion. Chaque thread utilise la mme fonction de service "ProcdureGestion". Pour autoriser l'excution de la procdure 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).
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

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 : Correspond au mode standard optimis pour les protocoles les plus utiliss sur Internet. La fonction SocketChangeModeTransmission permet de modifier le mode de transmission utilis.

14.5 Fonctions Socket


Les fonctions permettant de grer les sockets sont les suivantes : SocketAccepte SocketAttendConnexion SocketChangeModeTransmission SocketClientInfo SocketConnecte SocketConnecteBluetooth SocketConnecteInfraRouge SocketConnecteSSL SocketCre SocketCreBluetooth SocketCreInfraRouge SocketCreSSL SocketCreUDP SocketEcrit SocketExiste SocketFerme SocketLit SocketRefuse Accepte la connexion d'un poste client sur le poste serveur Teste si une demande de connexion a t effectue par un poste client Change le mode de transmission utilis sur une socket Permet un poste serveur de rcuprer des informations concernant une socket connecte sur un poste client Permet de se connecter une socket donne Connecte un poste client une socket Bluetooth spcifique. Connecte un poste client une socket donne, via le port infrarouge Connecte un poste client un serveur SSL. Cr une socket Cre une socket Bluetooth. Cre une socket utilisant le port infrarouge Cre une socket SSL. Cre une socket utilisant le protocole UDP Transmet un message entre deux sockets Teste l'existence d'une socket Ferme une socket ou ferme une connexion une socket sur le poste serveur Rcupre un message envoy par une socket Refuse la connexion demande par un poste client

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 SocketEcrit. Attention : Pour raliser une lecture, une criture doit avoir t ralise. Par exemple : 1. Le poste client crit sur la socket : il envoie une requte au poste serveur. 2. Le poste serveur effectue une lecture 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 informations


Le mode de transmission du message dfinit le mode utilis pour dterminer la longueur du message. WinDev propose plusieurs mthodes pour dterminer la longueur du message lors de la communication 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.

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.

290

Partie 6 : Communication

Partie 6 : Communication

291

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 rcuprer 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.4 Les fonctions Bluetooth et OBEX


15.4.1 Fonctions Bluetooth
Les fonctions permettant de grer les appareils Bluetooth 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.

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 permettent de grer les changes de fichiers par le protocole OBEX. Les fonctions SocketConnecteBluetooth et SocketCreBluetooth 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 utilise, utilisez la fonction BTPile. Certaines fonctions WLangage ne peuvent tre utilises qu'avec certains types de piles. Ces informations 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 (Bluetooth 2.0 - USB 2.0), (*) Belkin adaptateur Bluetooth 2.0 - F8T013FR1 - Porte 10 mtres (USB 2.0), 292 Partie 6 : Communication (*) Belkin adaptateur Bluetooth 2.0 - F8T012FR1 - Porte 100 mtres (USB 2.0), TrendNet TBW-104UB - Adaptateur USB Bluetooth 2.0, (*) TrendNet TBW-102UB - Adaptateur Bluetooth Class 2 (Bluetooth 1.1), ... Cette liste non exhaustive sera actualise rgulirement. (*) 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.

15.4.2 Fonctions OBEX


Les fonctions permettant de grer les changes de fichiers par le protocole OBEX sont les suivantes : OBEXConnecte OBEXDconnecte OBEXEnvoieFichier OBEXEnvoieVCard OBEXListeFichier OBEXRcupreFichier OBEXRcupreVCard Permet de se connecter un priphrique supportant le protocole OBEX. Permet de se dconnecter d'un priphrique supportant le protocole OBEX. Envoie un fichier sur un priphrique grant le protocole OBEX. Envoie un fichier VCard (carte de visite virtuelle) un priphrique grant le protocole OBEX. Liste les fichiers partags par un priphrique utilisant le protocole OBEX. Rcupre un fichier sur un priphrique grant le protocole OBEX. 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.

Partie 6 : Communication

293

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 traitements 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 vnement, par exemple, une action de l'utilisateur, la rception d'un email, la rception d'un appel tlphonique, ... 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.2.2 Caractristiques des threads


En WLangage, un thread secondaire peut tre associ : une procdure locale la fentre ou la page en cours, une procdure globale au projet, une mthode de classe, une mthode globale de classe

Exemple : Code Thread 1 a=i a++ i=a

Code Thread 2 b=i b++ i=b

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 synchronisation entre plusieurs threads.

16.2.3 Accs aux lments existants et contexte HyperFileSQL


Lors de la cration d'un thread, toutes les dclarations, 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 uniquement dans le thread o elles sont cres. De mme, lors de la cration d'un thread, le contexte 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 informations. Certaines incohrences peuvent apparatre.

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 traitements 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, consultez 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 procdures, 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.

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 ralisables 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 tlphonique ou d'un email, ... 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.

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 termine, 294 Partie 6 : Communication

Partie 6 : Communication

295

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 utiliss 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. 2. Le thread n1 excute la partie de code protge par le smaphore. 3. Pendant que le thread n1 excute le code protg 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.1 Principe
Le smaphore a t cr avec la fonction SmaphoreCre. 1. Le thread n1 excute la fonction SmaphoreDbut : aucun thread n'est actuellement prsent dans le smaphore.

Un smaphore de mme nom peut tre utilis pour protger plusieurs zones de code diffrentes. 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 SmaphoreFin doivent tre utilises dans le mme traitement (par exemple dans une procdure). Les fonctions de gestion des smaphores Les fonctions du WLangage spcifiques la gestion des smaphores sont les suivantes : 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 SmaphoreFin Dtruit explicitement smaphore un

Exemple : Pour raliser une affectation partage par plusieurs threads, il est ncessaire d'encapsuler dans un smaphore aussi bien l'affectation des variables que la lecture de ces variables.

16.3.3 Un smaphore limit : la section critique


Une section critique est un smaphore limit un seul thread sur une seule portion de code (traitement, 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 : SectionCritiqueD- Signale le dbut d'une section but 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

Autorise un ou plusieurs threads de sortir de la zone protge par le smaphore

16.4 Grer les mutex dans les threads


Les mutex permettent de limiter l'excution simultane d'un code (procdure, ligne de code, ...) un thread un instant donn. Un mutex peut tre partag par plusieurs applications. Remarque : D'autres systmes permettent galement 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'excution 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 protge par le mutex. 3. Pendant que le thread n1 excute le code protg 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 Partie 6 : Communication 297

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 SmaphoreCre. 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 dlimiter la portion de code protger. Les lignes de 296 Partie 6 : Communication

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 concerner uniquement des traitements "critiques".

le mutex. 6. Le thread n2 excute la fonction MutexFin : plus aucun thread n'excute le code du mutex.

situes aprs la fonction MutexFin ne seront plus protges. 4. Destruction du mutex avec la fonction MutexDtruit. Remarques : Les parties de code protges par un mutex doivent 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 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 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).

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 :
SI Droite(Saisie1, 1) = " " ALORS ThreadEnvoieSignal(... "ThreadCorrection") FIN

Code du thread secondaire (ThreadCorrection) :


BOUCLE SI ThreadAttendSignal() = Vrai ALORS LanceCorrection() FIN FIN

Fonctions du WLangage Les fonctions suivantes permettent de raliser une gestion simple des signaux : ThreadAttendSignal ThreadEnvoieSignal Le "thread" en cours est bloqu tant qu'il n'a pas reu un signal d'un autre "Thread" Le "thread" en cours envoie un signal au "thread" spcifi pour le dbloquer

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 portion de code protger. 3. Appel de la fonction MutexFin pour dlimiter la portion de code protger. Les lignes de code

16.4.3 Les fonctions de gestion des mutex


MutexCre MutexDbut MutexDtruit MutexFin Cre explicitement un mutex Bloque le thread courant en attendant que le mutex soit libre Dtruit explicitement un mutex. Signale que le thread libre le mutex

16.5.2 Gestion avance des signaux


Une gestion avance des signaux consiste communiquer 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 avance, 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 : SignalAttend Bloque le thread en cours en attendant que le signal spcifi soit ouvert Cre un signal Dtruit explicitement un signal

SignalCre

16.5 Synchroniser des threads laide de signaux


Les signaux permettent de synchroniser les diffrents 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

SignalDtruit

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 orthographique est automatiquement lanc sur le mot prcdent. Dans ce cas, la correction orthographique est gre dans un thread secondaire.

SignalModifie Modifie l'tat d'un signal

16.6 Grer louverture dune fentre WinDev dans un thread secondaire


Un thread secondaire ne peut pas ouvrir directement 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 tlphonique, lorsqu'un appel entrant est dtect ce thread peut afficher une fentre avec les caractristiques de l'appelant. La solution consiste faire ouvrir la fentre par le thread principal.

298

Partie 6 : Communication

Partie 6 : Communication

299

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 spcifique, correspondant la demande d'ouverture de fentre. Lorsque cet vnement survient, la procdure WLangage lance ouvre la fentre spcifie (avec la fonction Ouvre par exemple) avec si ncessaire les paramtres indiqus.

// Ecoute des requtes de // connexion // et de tests de prsence ThreadExcute("ThreadPresence",... threadNormal,... "EcouteDemandePresence") ThreadExcute("ThreadRequete",... threadNormal,... "EcouteDemandeConnexion")

16.7 Fonctions de gestions des threads


Les fonctions permettant de grer les threads sont les suivantes : ExcuteThreadPrincipal MutexCre MutexDbut MutexDtruit MutexFin SectionCritiqueDbut SectionCritiqueFin SmaphoreCre SmaphoreDbut SmaphoreDtruit SmaphoreFin SignalAttend SignalCre SignalDtruit SignalModifie ThreadArrte ThreadAttend ThreadAttendSignal ThreadCourant ThreadEnvoieSignal ThreadEtat ThreadExcute ThreadMode ThreadPause ThreadPriorit ThreadReprend ThreadSuspend Dclenche l'excution de la procdure spcifie par le thread principal de l'application. Cre explicitement un mutex Bloque le thread courant en attendant que le mutex soit libre Dtruit explicitement un mutex Signale que le thread libre le mutex 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 Signale la fin d'une section critique : un autre thread pourra excuter le code Cre un smaphore 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) Dtruit explicitement un smaphore Autorise un ou plusieurs threads de sortir de la sortie de la zone protge par le smaphore Bloque le thread en cours en attendant que le signal spcifi soit ouvert Cre un signal Dtruit explicitement un signal Modifie l'tat d'un signal Arrte un "thread" secondaire Attend la fin de l'excution du "thread" dsign. Un temps maximum d'attente peut tre prcis Le "thread" en cours est bloqu tant qu'il n'a pas reu un signal d'un autre "Thread" Renvoie le nom du thread en cours d'excution Le "thread" en cours envoie un signal au "thread" spcifi pour le dbloquer Renvoie l'tat actuel d'un thread Lance l'excution d'un "thread" secondaire. Ce "thread" est non bloquant Change le mode de gestion des threads Temporise le thread en cours pour la dure indique Renvoie ou modifie le niveau de priorit d'un thread Relance l'excution d'un "thread" prcdemment suspendu par la fonction ThreadSuspend Suspend temporairement l'excution du "thread" dsign. Le traitement en cours n'est pas bloqu

L'ouverture de la fentre est ralise par exemple dans le code de la procdure EcouteRequteDebutMessage. Cette procdure est excute dans un thread. Le code utilis pour ouvrir la fentre depuis le thread est le suivant :
// Demande d'ouverture de // la fentre de "chat" PostMessage(... Handle(Fentre_Principale),... "DebutChat",CONTACT.IDCONTACT,... CONTACT.IDCONTACT)

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'ouverture de la fentre dans le thread principal. dclencher les threads secondaires.
// 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

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. Lorsque le message survient, la procdure OuvertureChat est automatiquement excute. C'est cette procdure qui ouvre la fentre. Le code de cette procdure est le suivant :
PROCEDURE OuvertureChat(nParam,... nContact) OuvreSoeur(Fentre_Message, ... nContact)

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.

300

Partie 6 : Communication

Partie 6 : Communication

301

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 protocoles HTTP et XML. Il peut galement s'utiliser avec le protocole SMTP. De ce fait, le protocole SOAP est indpendant des systmes d'exploitation et des langages de programmation. Le protocole SOAP permet l'inter-oprabilit. 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.

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 procdure, utilisez la fonction SOAPErreur.

Remarque :Actuellement, les transferts ne sont pas scuriss (pas de cryptage des donnes transfres). Il est recommand de ne pas utiliser le protocole 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 serveur SOAP :

Variable SOAP.NameSpace SOAP.Nom SOAP.ParamXML

Type

Dtail

Chane de caractres Espace de nommage (appel "NameSpace") du paramtre optionnelle Chane de caractres Nom du paramtre Chane de caractres Ensemble sous forme XML des structures d'un paramtre. Si optionnelle ce paramtre est spcifi, les autres paramtres (Valeur, Nom, Type, NameSpace et StyleEncodage) sont ignors.

17.1.1 WinDev / WebDev et le protocole SOAP


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. WinDev et WebDev permettent de crer une application 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.

SOAP.StyleEncodage Chane de caractres Style d'encodage (appel "EncodingStyle") du paramtre optionnelle SOAP.Type SOAP.Valeur Constante Tout type Type du paramtre Valeur du paramtre
SOAP.Type[1] = SOAPTypeChane

Cette structure doit tre utilise pour chaque paramtre. Par exemple :
SOAP.Valeur[1] = 94010 SOAP.Nom[1] = "CodePostal"

Cette structure est quivalente :


SOAP.ParamXML[1] = <CodePostal xsi:type="xsd:string">94010</CodePostal>

17.1.2 Exemple
WinDev est livr en standard avec un exemple utilisant 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. 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 SOAPExcuteXML permet de savoir si la connexion a bien t tablie. Si la connexion n'a pas t tablie, utilisez la fonction ErreurInfo pour connatre les causes de l'erreur.

17.3 Crer et installer une application serveur SOAP WinDev


L'application serveur SOAP est une application contenant toutes les procdures excuter. Ces procdures sont excutes par l'application cliente SOAP.

17.3.1 Principe

17.2.1 Principe d'utilisation


L'ensemble des paramtres ncessaires l'excution d'une procdure SOAP est fourni dans la documentation du serveur SOAP et de ses procdures. Pour excuter une procdure sur un serveur SOAP : 1. Initialisez la structure des paramtres de la procdure 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 302 Partie 6 : Communication

Partie 6 : Communication

303

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 procdure 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 respectivement excuts au chargement et au dchargement 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 transfres). Il est recommand de ne pas utiliser le protocole 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 "Configurer 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 WinDev. 2. Crez la procdure dinstallation de votre application. Sous le volet "Projet", dans le groupe "Gnration", droulez "Procdure dinstallation" et slectionnez "Crer la procdure dinstallation". 3. Les fichiers devant tre slectionns pour l'installation 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 application WinDev (configuration pour Apache, IIS5 ou Netscape iPlanet 4.1). Pour plus de dtails, consultez laide en ligne. 6. Configurez ladministrateur SOAP. Pour plus de dtails, consultez laide en ligne. 7. Pour que le client soap puisse contacter le serveur, l'adresse du serveur utilise dans la fonction SoapExcute doit tre de la forme :
<Adresse IP du serveur>\ ... Serveur.soap

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.

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.

304

Partie 6 : Communication

Partie 6 : Communication

305

18. WEBSERVICES XML


WinDev et WebDev permettent dimporter directement 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.

Proprits d'un Webservice modifiables 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-dposer directement depuis l'explorateur de projet dans l'diteur de code pour insrer le nom du Webservice. Les proprits modifiables par programmation sont : Nom Adresse Effet Cette proprit permet de remplacer l'adresse d'appel du Webservice 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'Application WebDev, il s'agit de l'URL du fichier d'extension "awws". Remarques : La modification de cette proprit remplace toutes les URL dcrites dans le WSDL. Si cette proprit reoit une chane vide, les URL dcrites dans le WSDL seront de nouveaux utilises. Utilisateur Cette chane de caractres sera utilise comme nom d'utilisateur pour raliser l'authentification lors des requtes HTTP au Webservice. Cette chane de caractres sera utilise comme mot de passe pour raliser l'authentification lors des requtes HTTP au Webservice.

18.1.5 Utiliser un Webservice import dans le projet


Pour utiliser la collection de procdures du Webservice, il suffit d'appeler les fonctions gnres automatiquement par l'import. Les types de variables dclars automatiquement lors de l'import du WSDL offrent un certain nombre de proprits : Nom Existe Effet Vrai si le type de variable existe dans la rponse du Webservice. Faux sinon. 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. Nom du type de la variable. Cette proprit est utilise lorsquun Webservice est susceptible de retourner des rponses de diffrents types. Valeur de la variable. Cette proprit est accde par dfaut lorsque seul le nom de la variable est utilis, par exemple :
monWebservice.VariableRequete = SAI_Valeur

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 format XML et utilisent les protocoles SOAP (Simple Object Access Protocol) et HTTP. A part