Professional Documents
Culture Documents
Visitez rgulirement le site www.pcsoft.fr, espace tlchargement, pour vrier si des mises
jour sont proposes.
Conseil : Pour recevoir directement des mises jour intermdiaires et des conseils dutilisation, abonnez-vous la LST (revue trimestrielle + DVD), en franais.
Tous les noms de produits ou autres marques cits dans cet ouvrage sont des marques dposes par leurs propritaires respectifs.
PC SOFT 2012 : Aucune reproduction intgrale ou partielle du prsent ouvrage sur quelque support que ce soit ne peut tre
effectue sans lautorisation expresse de PC SOFT.
SOMMAIRE
Introduction
Prliminaires.......................................................................................................................................................... 17
Prsentation du cours dauto-formation ............................................................................................................. 17
Comment accder laide en ligne ? ..................................................................................................................18
Lgende des symboles.......................................................................................................................................... 20
Si vous connaissez WinDev 17.............................................................................................................................. 21
Que fait-on avec WinDev ? .................................................................................................................................... 21
Sommaire
Sommaire
Sommaire
Sommaire
Sommaire
Sommaire
PARTIE 6 - REQUTES
Leon 6.1. Crez une requte de slection
Introduction..........................................................................................................................................................314
Votre premire requte .......................................................................................................................................315
Sommaire
PARTIE 7- ETATS
Leon 7.1. Votre premier tat
Vocabulaire de base ........................................................................................................................................... 336
Prsentation ....................................................................................................................................................... 338
Imprimer avec lditeur dtats ou imprimer en WLangage ................................................................338
Les tats crer ....................................................................................................................................339
Cration de votre premier tat .......................................................................................................................... 339
Cration de ltat : Liste des clients trie par ville ...............................................................................339
Quest-ce quune rupture ?....................................................................................................................342
11
12
Sommaire
Sommaire
13
14
Sommaire
Sommaire
15
Conclusion
16
Sommaire
INTRODUCTION
Prliminaires
Attention : Ce manuel est un cours dauto-formation. Il est conseill de consulter laide en ligne
lorsque vous utilisez WinDev.
Le manuel du cours dauto-formation a pour objectif de vous faire dcouvrir WinDev, de vous familiariser avec les diteurs et de vous apprendre les concepts de WinDev.
Ce manuel nest PAS exhaustif des possibilits de WinDev.
Consacrez au moins quelques heures pour suivre ce cours et pour apprendre WinDev : vous les
rentabiliserez vite !
Si vous essayez de dmarrer le dveloppement dune application sans avoir suivi ce cours, vous
perdrez du temps, beaucoup plus que deux jours.
Le cours a t conu pour tre suivi de deux faons :
soit vous suivez tous les exercices dtaills dans les leons du cours (mthode conseille).
soit, si vous tes press et disposez dune exprience signicative, vous pouvez uniquement
le lire sans excuter les exercices, tous les exercices sont illustrs. Toutefois, pour que les
concepts soient plus rapidement assimils, il est prfrable de suivre les manipulations.
WinDev voluant en permanence, les copies des fentres illustrant le cours peuvent tre diffrentes de celles du produit que vous possdez.
Introduction
17
Notes
Depuis limpression de ce document, le cours dauto-formation a peut-tre volu. Nhsitez pas consulter la version lectronique du cours dauto-formation
(chier PDF accessible directement dans le menu de WinDev : sous le volet "Accueil", dans le groupe "Aide en ligne", droulez "Guide dauto-formation" et slectionnez loption "Guide dauto-formation (PDF)".
18
Introduction
Notes
Laide en ligne de WinDev, WebDev et WinDev Mobile sur Internet est accessible
depuis nimporte quel poste disposant dun accs Internet, sans que le produit
soit forcment install. Cette aide est mise jour rgulirement.
Chaque internaute peut ajouter des commentaires sur les pages de documentation : explications personnelles, exemples, liens, ...
Introduction
19
le contenu de laide : aide commune WinDev, WebDev et WinDev Mobile ou aide du produit en cours dutilisation.
20
Introduction
Introduction
21
22
Introduction
PARTIE 1
A la dcouverte
de WinDev
Dure estime : 5 mn
25
Prsentation
WinDev est un AGL (Atelier de Gnie Logiciel) complet permettant de dvelopper des applications
Windows dans de nombreux domaines : gestion, industrie, mdical, ... Les applications dveloppes peuvent inclure laccs des informations stockes dans des bases de donnes.
Tout au long de ce cours dauto-formation, vous allez apprendre crer vos applications (avec ou
sans base de donnes), et les enrichir en utilisant les nombreuses fonctionnalits proposes
par WinDev.
Lancement de WinDev
26
Environnement de dveloppement
Lditeur
Lenvironnement de dveloppement de WinDev est constitu dune interface spcique, et de
plusieurs diteurs permettant de crer les diffrents lments de vos applications.
Ainsi, lditeur de fentres permet de crer des fentres, lditeur dtats permet de crer des
tats, ...
Tous les diteurs utilisent le mme environnement :
1. Menu des diteurs, afch sous forme de ruban (nous allons voir sa manipulation dans le paragraphe suivant).
2. Editeur en cours (ici, diteur de fentres). Cet espace permet de visualiser de manire WYSIWYG (What You See Is What You Get) llment en cours de cration ou de modication.
3. Volets. Linterface de WinDev dispose de plusieurs volets permettant daccder rapidement
diffrents types dinformations. Quelques exemples :
Le volet "Explorateur de projet" (ici, afch droite) permet de lister tous les lments du projet
par catgorie.
Le volet "Assistant, Exemples et Composant" (ici en bas) permet daccder rapidement des
exemples complets, des fentres dexemples, des champs facilement intgrables dans vos applications.
Si ncessaire, ces volets peuvent tre cachs rapidement en utilisant la combinaison de touches
[CTRL] + [W].
Partie 1 : A la dcouverte de WinDev
27
4. Barre des documents ouverts. Cette barre permet de visualiser rapidement tous les lments
ouverts. Un simple clic sur le bouton correspondant llment lafche dans son propre diteur.
La barre de menu (ruban) en dtail
La barre de menu de WinDev est prsente sous forme dun ruban. Ce ruban est compos de
volets dans lesquels sont regroupes les diffrentes options des diteurs.
Nous allons dtailler ici, les diffrents lments importants du ruban, ainsi que la manire dont
nous le manipulerons dans ce cours.
Les diffrents volets du ruban permettent daccder aux options des diffrents diteurs. Plusieurs
types de volets sont disponibles :
le volet en cours : Longlet du volet apparat en gris clair et un trait orange est afch en haut
de longlet.
les volets contextuels, spciques llment en cours : Le nom du volet est afch en orange.
les volets disponibles : Le nom du volet apparat en blanc.
28
En fonction du volet slectionn, les options afches dans le ruban diffrent. Plusieurs types
doptions sont disponibles :
Options cocher
Boutons cliquer
Boutons che permettant de drouler des options. Deux types de boutons che sont disponibles :
les boutons che permettant uniquement de drouler un menu
les boutons che permettant soit de drouler un menu (clic sur la che), soit deffectuer
une action par dfaut (clic sur licne du bouton).
Les options sont regroupes par groupe. Chaque groupe doptions a un nom et peut avoir un bouton de regroupement
. Ce bouton permet deffectuer une action spcique selon le groupe en
cours : afchage de la description de llment en cours, afchage de laide, ...).
Dans ce cours, pour dsigner une option de menu, nous parlerons donc de volets, de groupes et
doptions.
Par exemple :
Pour afcher laide, sous le volet "Accueil", dans le groupe "Aide en ligne", cliquez sur "Aide".
29
LEON 1.2. MA
PREMIRE FENETRE
Dure estime : 30 mn
30
Prsentation
Note
Pour commencer utiliser WinDev, nous allons simplement crer quelques fentres.
Les fentres permettent dafcher ou de saisir lcran des informations. Lutilisateur peut agir directement sur les fentres par lintermdiaire de champs, de
boutons, ...
Ces quelques exemples vous permettront de connatre les bases de la programmation en WinDev
et vous permettront ensuite daborder des sujets plus complets.
Les leons de cette premire partie vont vous permettre de :
crer des fentres simples,
manipuler des chanes, des numriques, des montaires,
manipuler des dates et des heures.
Ouverture du projet
"Lancez WinDev 18 (si ce nest dj fait). Si ncessaire, fermez le projet en cours pour faire
apparatre la fentre de bienvenue.
Important
Dans cette partie, nous nous concentrons sur la cration de fentres simples. Le
projet "WD Mes Premires Fentres" est un projet vide, dj cr. La cration de
projet sera aborde dans une prochaine leon.
Corrig
Pour cela, dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez
le premier projet "Mes premires fentres (Exercice)".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Mes premires
fentres (Exercice)".
Un projet corrig est disponible. Ce projet contient les diffrentes fentres cres
dans cette leon. Pour ouvrir le projet corrig, sous le volet "Accueil", dans le
groupe "Aide en ligne", droulez "Guide dauto-formation" puis slectionnez "Mes
premires fentres (Corrig)".
31
Cette fentre permet lutilisateur de saisir son prnom et dafcher un message de bienvenue
grce au bouton "Afcher".
Vous pouvez tre tent de dire que cest trop simple, trop basique, mais nous vous conseillons
de raliser cette fentre. Vous risquez dtre surpris par la facilit et lintuitivit de lditeur de
WinDev. De plus, cette fentre vous permettra de dcouvrir des concepts fondamentaux pour la
suite de ce cours.
Cration de la fentre
Note
2. Une fentre en forme de roue safche. Cette fentre permet de crer tous les lments
pouvant tre associs un projet.
3. Cliquez sur "Fentre". Lassistant de cration de fentres safche.
4. Slectionnez "Vierge" dans la liste des fentres "standard" afche sur la gauche. Dans la
liste des gabarits prsente sur la droite, le gabarit "Elegant" est slectionn par dfaut. Vous
pouvez choisir un autre gabarit propos dans la liste.
Les gabarits permettent de crer rapidement des interfaces professionnelles. Un
gabarit dnit le look de la fentre mais galement le look de tous les champs
qui seront utiliss dans cette fentre. Ainsi, aucune faute de got nest possible.
32
"Nous allons dnir les caractristiques de base de la fentre : son nom et le titre qui sera
Note
33
34
"Le libell du champ apparat tronqu sous lditeur. Pour afcher correctement le champ :
1. Slectionnez le champ (il suft de cliquer dessus avec la souris).
2. Dans le menu contextuel (clic droit), slectionnez loption "Adapter la taille".
3. Le champ est immdiatement agrandi.
35
"Nous allons afcher le texte saisi dans une bote de dialogue (une mini-fentre propose par
Notes
le systme). Pour cela, nous allons utiliser notre premire fonction WLangage : la fonction
Info.
Le WLangage est le langage de programmation fourni avec WinDev. Cest un langage de 5 gnration (L5G), possdant des ordres volus.
Notes
Cest pour cela que la charte de programmation est trs importante. Tous les
lments manipuls dans le code de lapplication utilisent la mme norme et
peuvent ainsi tre facilement retrouvs lors de la saisie du code.
Notes
Remarque sur laide la saisie : Ds la saisie des trois premiers caractres, WinDev propose tous
les mots du vocabulaire WLangage contenant ces caractres. Lassistance au dveloppement est
pousse trs loin. Vous ne pouvez plus vous tromper en saisissant le nom dun lment : les
erreurs de syntaxes sont minimises. Il suft de slectionner le mot dsir et de valider par la
touche [Entre]. Vous pourrez ainsi vous concentrer sur lalgorithme.
En saisissant ce code sous lditeur de code, vous constatez que les diffrents
lments saisis utilisent des couleurs diffrentes. Cest la coloration syntaxique.
Lditeur de code permet ainsi didentier rapidement les diffrents lments
manipuls par le code :
les fonctions du WLangage apparaissent en bleu,
les chanes de caractres (entre guillemets) apparaissent en violet,
les noms de champs apparaissent en cyan.
Notes
La fonction Info afche le message pass en paramtre. Notre message est construit partir du
texte "Bonjour " et de la valeur du champ "SAI_Prnom". Le signe "+" indique une opration dite de
"concatnation" entre deux chanes.
36
Dans cet exemple, le texte saisi est afch dans une fentre systme, mais il est
galement possible de lafcher dans une fentre cre avec WinDev.
"Cliquez sur le bouton "x" situ dans la barre de titre pour fermer la fentre.
"Lditeur de WinDev rapparat. Fermez lditeur de code (sous longlet "Accueil", dans le
groupe "Gnral", cliquez sur "Fermer").
Amliorations de la fentre
Lors de ce premier test, vous avez remarqu que :
votre fentre est trop grande,
votre fentre peut tre redimensionne alors quelle ne contient que deux champs,
le prnom saisi est afch avec la casse utilise dans le champ de saisie. Nous allons forcer
lutilisation dune majuscule en dbut de mot.
Nous allons revoir rapidement linterface de cette fentre.
Notes
37
Notes
Vous venez de crer rapidement et avec succs votre premire fentre. Nous allons dans la suite
de ce cours dcouvrir de nouveaux concepts de WinDev.
"Validez le message, et fermez la fentre de test (cliquez sur la croix en haut, droite de la
fentre). Lditeur de WinDev rapparat.
"Fermez la fentre "FEN_Saisie" afche sous lditeur (sous le volet "Accueil", dans le groupe
"Gnral", cliquez sur "Fermer").
"Fermez le projet (sous le volet "Accueil", dans le groupe "Gnral", droulez "Fermer" et
slectionnez "Fermer le projet").
38
PREMIRES FENTRES
Dure estime : 30 mn
39
Prsentation
Dans la leon prcdente, nous avons dj vu comment saisir et afcher un texte.
Dans cette leon, nous allons crer les fentres suivantes :
Une fentre compteur,
Une fentre afchant la date et lheure en temps rel,
Une fentre de calcul,
Un menu pour rassembler les fentres cres prcdemment.
Ces fentres seront regroupes pour des besoins pratiques dans un projet.
Corrig
Pour cela, dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez
le premier projet "Mes premires fentres (Exercice)".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Mes premires
fentres (Exercice)".
40
Un projet corrig est disponible. Ce projet contient les diffrentes fentres cres
dans cette leon. Pour ouvrir le projet corrig, sous le volet "Accueil", dans le
groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez "Mes
premires fentres (Corrig)".
Notes
1. Cliquez sur
parmi les boutons daccs rapide du menu de WinDev.
2. Dans la fentre en forme de roue qui safche, cliquez sur loption "Fentre". Lassistant de
cration de fentres safche.
3. Slectionnez "Vierge" dans la liste des fentres "standard" afche sur la gauche. Dans la
liste des gabarits prsente sur la droite, le gabarit "Elegant" est propos automatiquement.
4. Validez. La fentre est automatiquement cre sous lditeur.
5. Faites un clic droit sur la fentre qui vient dtre cre et slectionnez loption "Description"
dans le menu contextuel afch. La fentre de description safche.
6. Dans longlet "Gnral", indiquez le nom de la fentre ("FEN_Compteur") ainsi que le titre
("Exemple dun compteur"). Validez la fentre de description.
7. Enregistrez la fentre (CTRL + S).
Il est trs important de sauvegarder la fentre ds sa cration.
Lenregistrement de la fentre permet par la suite WinDev :
de proposer le nom des champs automatiquement dans le code.
de proposer le renommage automatique des champs dans le code.
Gestion du compteur
Pour grer le compteur numrique, vous allez crer :
un champ dans lequel va safcher la valeur numrique,
un champ spin (compos de deux boutons) qui va permettre dajouter 1 ou de soustraire 1 au
compteur.
WinDev permet de crer ces diffrents champs en une seule opration grce aux champs prdnis proposs la cration.
"Cliquez dans la fentre. Le champ que nous venons de crer nest plus slectionn.
"Double-cliquez sur le champ de saisie pour afcher la fentre de description du champ.
Cette fentre contient les informations gnres par dfaut.
41
Notes
Notes
Nous voulons donner une valeur initiale au compteur. Pour cela, il suft dinitialiser le contenu du
champ avec cette valeur (onglet "Contenu" de la fentre de description du champ).
42
Notes
"Cliquez sur longlet "Contenu" et saisissez la valeur initiale, par exemple, "100".
Bien entendu, comme partout dans WinDev, vous pouvez procder de manire traditionnelle
en saisissant la ligne suivante en WLangage dans le code dinitialisation du champ :
Notes
SAI_Compteur = 100
Dans cette ligne de code, le signe "=" permet daffecter le champ "SAI_Compteur"
avec la valeur indique. La syntaxe utilise est la suivante :
<Destination> = <Valeur affecter>
Ces erreurs indiquent que le nom "SAI_Entier_Spin" est inconnu. Ce nom est utilis dans un
des traitements de la fentre "FEN_Compteur". WinDev a dtect quun champ a t
renomm (dans notre cas, le nom du champ de saisie a t modi), et afche une erreur de
compilation pour chaque utilisation du champ.
Afchez le menu contextuel de lerreur (clic droit sur lerreur). Ce menu propose de renommer
automatiquement ce champ dans toutes les utilisations qui sont faites dans la fentre
(notamment dans les traitements WLangage).
Slectionnez loption "Renommer toutes les rfrences" du menu contextuel de lerreur.
43
Notes
Cette ligne de code signie que lon ajoute 1 la valeur du champ SAI_Compteur.
Le champ SAI_Compteur est alors manipul comme une variable.
Vous pouvez galement utiliser les syntaxes :
SAI_Compteur += 1
SAI_Compteur = SAI_Compteur + 1
puis sur
daccs rapide).
"Cliquez sur le bouton "x" situ dans la barre de titre pour fermer la fentre. Lditeur de
WinDev rapparat.
"Vous pouvez maintenant rduire la taille de la fentre laide des poignes, et la rendre non
dimensionnable (nous avons vu comment le faire dans la leon prcdente).
Cration dun bouton pour quitter la fentre
Dans une fentre, il y a toujours un bouton ou une option pour quitter la fentre. Bien entendu,
si vous najoutez pas de bouton ou doption, il reste toujours la possibilit de fermer la fentre en
cliquant sur licne "X" de la barre de titre, mais ce nest pas trs convivial.
44
Notes
45
46
puis sur
daccs rapide).
Le champ de saisie est bien initialis avec la date du jour.
Nous allons maintenant ajouter un nouveau champ de saisie permettant dafcher lheure en
temps rel.
47
"De la mme manire que pour le champ Date, nous allons initialiser le champ Heure avec
lheure actuelle.
1. Afchez le code associ au champ que vous venez de crer.
2. Dans le traitement "Initialisation de SAI_Heure", saisissez le code suivant :
MoiMme = Maintenant()
La fonction Maintenant est une fonction WLangage permettant (comme son nom lindique) dobtenir lheure actuelle.
puis sur
). La date et lheure
safchent. Nous allons maintenant actualiser lheure au l du temps.
7. Ce code permet de mettre jour le champ afchant lheure. Nous allons maintenant lappeler toutes les secondes grce au timer.
2. Cliquez dans la fentre daccueil de la fentre (fond vert). Afchez le menu contextuel (clic
droit) et slectionnez loption "Code".
3. Les diffrents traitements associs la fentre safchent.
4. Dans le code "Initialisation de FEN_Timer", saisissez le code suivant :
TimerSys(MiseAheure, 100,1)
5. Ce code permet dindiquer que la procdure "MiseAheure" va tre appele toutes les secondes (100 reprsente les centimes de seconde).
48
puis sur
Notes
Nous avons vu ici la cration dun timer par programmation. Il est galement
possible de crer un timer automatiquement depuis lditeur de code. Pour plus
de dtails, consultez laide en ligne (mot-cl : Procdures automatiques).
49
Il existe galement des champs de saisie "Numriques" (pour plus de dtails, consultez laide en
ligne).
Le calcul du montant TTC va tre ralis chaque modication du champ contenant le montant
hors taxe.
Notes
Ce code calcule le montant TTC en utilisant la valeur slectionne dans la combo (donne
obtenue avec la proprit ..ValeurAfche). Le contenu de la combo tant une chane de
caractres, la fonction Val permet dobtenir une valeur numrique an de calculer le montant
TTC.
Le WLangage est compos de fonctions et de proprits. Les fonctions peuvent
attendre des paramtres et renvoient des rsultats. Les proprits sont directement appliques aux champs grce la syntaxe :
<Nom du champ>..<Nom de la proprit>.
A tout moment, il est possible de consulter laide en ligne dune fonction grce
la touche F1 (pour plus de dtails sur laide en ligne, consultez "Comment accder laide en ligne ?", page 18).
3. Testez votre fentre. Saisissez une valeur dans le champ "Prix HT". Le rsultat apparat immdiatement dans le champ "Prix TTC" en fonction de la TVA slectionne. Cependant si vous
changez le taux de TVA, la valeur du champ "Prix TTC" nest pas modie. Nous allons maintenant corriger ce problme.
4. Fermez la fentre. Lditeur de code est de nouveau afch.
Maintenant, notre fentre fonctionne correctement. Mais le mme code est utilis 2 endroits
diffrents ! Comment grer les modications et leur report ? Le plus simple est dutiliser une procdure. Cest ce que nous allons faire maintenant.
51
barre de titre. Ce menu contient par dfaut une option qui se nomme "Menu".
Remarque : Chaque option de menu est saisie directement dans le menu.
Chaque option comporte une lettre dappel. Cette lettre dappel permet daccder directement loption avec la combinaison de touches [Alt]+Lettre. Le caractre & doit alors prcder la lettre dappel (par exemple "&Fentres").
"Pour crer une option de menu et pour la modier, il suft dutiliser le menu contextuel du
menu ou de loption de menu. Pour afcher le menu contextuel dune option de menu :
1. Slectionnez le menu.
2. Cliquez avec le bouton droit de la souris.
3. Le menu contextuel suivant safche :
Plusieurs choix sont possibles. Les principales options de gestion de menu sont :
"Description de loption" pour modier le libell de loption et la lettre dappel.
"Code" pour saisir le code source correspondant au traitement excuter lors du clic sur
cette option.
"Ajouter aprs" pour ajouter une option de menu aprs loption en cours.
"Ajouter avant" pour ajouter une option de menu avant loption en cours.
"Transformer pour drouler un sous-menu" pour ajouter dans loption en cours un sousmenu (arborescence).
53
2. Dans le menu contextuel de loption "Fichier", slectionnez loption "Transformer pour drouler un sous-menu" et saisissez "Quitter".
"Nous allons maintenant ajouter le raccourci [ALT + F4] pour loption "Quitter".
Astuce
54
Dans vos applications, nous vous conseillons de suivre le standard des menus
Windows. Veillez en particulier aux points suivants :
Chaque option du menu principal doit proposer au moins une sous-option.
La premire lettre de chaque option doit tre en majuscules, mme si ce
nest pas la lettre dappel. La lettre dappel est souligne (utilisez le caractre "&").
Si un choix de menu appelle une fentre de paramtrage avant dexcuter
loption choisie, terminez le libell par trois points ().
Loption "Quitter" doit tre la dernire sous-option de la premire option de
la barre de menu (exemple : "Fichier .. Quitter").
Si une option daide est prsente, elle doit se trouver la n de la premire
ligne de menu (loption la plus droite).
55
8. Rptez cette opration pour loption "Calcul de TVA" et saisissez le code suivant :
Notes
Vous laurez devin : la fonction Ouvre permet dafcher une fentre pour effectuer une saisie. La
fonction Ferme quant elle, ferme la fentre en cours.
Si la fentre contenant le menu est la premire fentre afche par lapplication, la fermeture
de la fentre contenant le menu (par loption "Fichier .. Quitter" dans notre exemple) quivaut
quitter lapplication.
Dans ce code, les fonctions WLangage utilises sont en franais. Si vous tes
plus familiaris avec la langue de Shakespeare, il est possible de visualiser et
de saisir le code en version anglaise (sous longlet "Code", dans le groupe "Langues", droulez "Convertir le code" et slectionnez "Convertir en anglais").
Dans cette documentation, seuls les termes franais seront utiliss. Laide en
ligne indique pour chaque terme sa traduction en anglais.
Notes
56
Notes
Si votre application manipule des donnes, WinDev permet de dnir la structure de la base de
donnes grce lanalyse. Lanalyse WinDev contient la description des chiers (appels souvent "Tables" dans de nombreuses bases de donnes). Ces chiers contiendront les donnes de
lapplication.
La description des chiers de donnes dans lanalyse nentrane pas leur cration. Les chiers de donnes sont crs physiquement uniquement lexcution
de lapplication.
Un ou plusieurs projets WinDev peuvent tre lis la mme analyse. Dans ce cas, on parle danalyse partage. Par exemple, une application de gestion commerciale peut tre spare en plusieurs modules excutables. Chaque module utilise la mme analyse (et en excution, chaque
excutable peut galement utiliser les mmes chiers de donnes).
57
Terminologie
Comme nous venons de le voir, un projet WinDev (li si ncessaire une analyse) permet de crer
une application. Avant de commencer rellement travailler avec WinDev, revenons sur les termes
utiliss dans WinDev. En effet, si vous avez travaill avec dautres outils, de nombreux termes sont
spciques WinDev, et ne recouvrent pas toujours la mme ralit que dans dautres logiciels.
Dans lanalyse, les termes utiliss sont les suivants :
Fichier : Lanalyse permet de dcrire la structure des chiers de la base de donnes. Le terme
"Fichier" correspond dans certaines bases de donnes "une table".
Dans WinDev, le terme "Table" est rserv pour dsigner un objet graphique permettant de
visualiser le contenu dun chier de donnes sous forme de tableau, et/ou de saisir des lignes.
Par exemple, une table peut permettre de saisir le dtail dune commande.
Enregistrement : Un enregistrement est quelquefois galement appel ligne. Lenregistrement
dun chier de donnes correspond lensemble des rubriques dnies pour le chier.
Rubrique : Dans lanalyse, le terme rubrique dsigne une zone dun chier de donnes. Lensemble des rubriques dun chier de donnes permet de dnir la structure dun enregistrement.
Cl/index : Avec WinDev et sa base de donnes HyperFileSQL, la notion dindex est lie la
notion de cl. La notion de cl fait partie des caractristiques dune rubrique. Les cls permettent dacclrer les accs aux donnes ou de faciliter les parcours des chiers de donnes.
En WinDev, si un chier de donnes HyperFileSQL a plusieurs rubriques cls, en excution, un
seul chier dindex sera cr.
Important
Dans les fentres et les tats, les termes utiliss sont les suivants :
Fentre : Les fentres permettent dafcher ou de saisir lcran des informations. Les fentres
sont galement appeles "crans" ou "Boites de dialogue". Lutilisateur peut agir directement
sur les fentres par lintermdiaire de champs, de boutons, ...
Etat : Les tats permettent dobtenir une vue personnalise dinformations. Ces informations
peuvent provenir de la base de donnes, de chiers texte, de champs prsents dans les fentres, ... Les tats peuvent tre visualiss lcran, imprims sur papier, gnrs en PDF ou
en HTML, ...
Champ : Le mot "champ" est le terme utilis pour dsigner les diffrents objets graphiques afchs dans une fentre ou dans un tat.
Gabarit : Le gabarit permet de dnir le "look" de lapplication : apparence visuelle des fentres,
des boutons, des champs, ...
Style : Le style regroupe les caractristiques graphiques dun lment : image de fond, bordure,
police, ... Les styles des diffrents lments constituant linterface dune application WinDev
sont regroups dans une feuille de styles.
58
DE PROGRAMMATION
59
Introduction
Dans la leon prcdente, nous avons un peu manipul lditeur de code de WinDev et son langage, le WLangage. Cette leon va vous permettre de revenir sur les bases de la programmation
en WLangage, en prsentant les sujets suivants :
Dclaration des diffrents types de variables
Instructions de base du WLangage
Procdures et fonctions
Traitements des chanes
Traitements des numriques
Traitements des dates et des heures
Quelques exemples :
Indice est un entier
NomFournisseur est une chane
TablePrix est un tableau de 10 montaires
I, J, K sont des entiers
Compteur est un entier = 120
B1 est un boolen = Faux
Pour plus dinformations tous les types de variables disponibles (types simples, types avancs, ...),
consultez laide en ligne (mot-cl : "Types de donnes").
La dclaration des variables et leur porte
Le WLangage permet de manipuler deux types de variables :
Les variables globales
Les variables locales
Les variables globales peuvent tre globales au projet ou une fentre. Il suft de dclarer ces
variables :
dans le code dinitialisation du projet, pour dclarer les variables globales au projet. Ces variables pourront tre utilises dans tous les traitements du projet et des lments du projet
(fentres, tats, ...)
dans le code de dclarations des globales de la fentre, pour dclarer les variables globales de
la fentre. Ces variables pourront tre utilises dans tous les traitements de la fentre et des
lments de la fentre.
60
Attention !
61
SELON Jour
CAS "Lundi"
// Premier jour de la semaine
CAS "Mercredi"
// Troisime jour de la semaine
CAS "Vendredi"
// Cinquime jour de la semaine
CAS "Samedi", "Dimanche"
// Cest le week-end
AUTRES CAS
// Cest un autre jour
FIN
Instructions de boucle
Notes
Quelques exemples
Ind est un entier = 0
TANTQUE Ind<Maximum
Ind ++
FIN
Ind est un entier = 0
BOUCLE
Ind ++
SI Ind>Maximum ALORS SORTIR
FIN
POUR Ind = 1 A 100
Cpt = Cpt + 1
FIN
62
Commentaires
Pour saisir des commentaires dans le code, il suft de commencer le code par // (deux caractres
"/").
Exemple :
Astuce
"Lancez WinDev 18 si ce nest dj fait. Fermez le projet en cours. Sous le volet "Accueil",
dans le groupe "Gnral", droulez "Fermer" et slectionnez loption "Fermer le projet".
Astuce
63
64
Exemple pratique
Une page dexemple est disponible pour tester quelques cas dutilisation des diffrents oprateurs de comparaison.
Exemple
PROCEDURE INVISIBLE(NChamp)
{NChamp,indChamp}..Visible = Faux
Pour plus de dtails sur lutilisation des indirections, consultez lexemple "Manipulation des indirections" (exemple unitaire), livr en standard avec WinDev. Cet
exemple est accessible depuis le volet "Assistants, Exemples et Composants".
65
Procdures et fonctions
Dfinition
Comme nous lavons vu dans la leon prcdente, lorsquun traitement est appel plusieurs fois
dans un projet ou dans une fentre, il est souvent intressant de crer une procdure contenant
ce traitement. Il suft alors dappeler la procdure chaque fois que cela est ncessaire.
Ct programmation, il existe les procdures et les fonctions :
Les fonctions renvoient un rsultat.
Les procdures servent excuter un traitement spcique.
WinDev permet de grer simplement les deux types de traitements, de manire identique : sous
WinDev, il ny a pas de diffrence entre une procdure et une fonction. Cest pourquoi dans la
suite de ce cours, nous utiliserons uniquement le terme "procdure".
Vous avez la possibilit de crer des procdures "locales" et des procdures "globales".
Procdure locale
Une procdure "locale" est lie une fentre et uniquement cette fentre.
Une procdure, lorsquelle est locale, peut tre utilise uniquement dans les traitements de la
fentre et des champs de la fentre dans laquelle elle a t dclare. Elle fait partie de la fentre.
Procdure globale et collection de procdures
Les procdures "globales" sont contenues dans des "collections de procdures". Chaque "collection de procdures" est un chier qui contient toutes les procdures globales qui lui sont associes. Ce chier possde lextension ".WDG". Par exemple, une collection permet de regrouper les
procdures selon un thme : CalculsTVA, CalculsFraisDePorts, ...
Vous pouvez crer autant de collections de procdures que vous le dsirez dans un projet.
Une collection de procdures permet de :
partager des procdures globales entre plusieurs dveloppeurs, pour un mme projet.
partager des procdures globales entre plusieurs projets. En effet, une mme collection de
procdures peut tre utilise dans plusieurs projets.
Comment choisir si une procdure est globale ou locale ?
Pour choisir si une procdure doit tre globale ou locale, posez-vous la question suivante : "La
procdure va-t-elle tre utilise uniquement dans cette fentre, ou peut-elle tre appele depuis
une autre fentre ?"
Si la procdure est appele "uniquement depuis cette fentre", la procdure peut tre "locale".
Si la procdure peut tre appele "depuis plusieurs fentres", la procdure doit tre "globale".
66
Une fentre peut galement renvoyer une valeur au traitement qui la appele. Pour plus de dtails, consultez laide en ligne sur la proprit ..ValeurRenvoye.
Appel dune procdure
Astuce
Pour appeler une procdure dans un traitement, il suft dcrire son nom dans lditeur de code et
si ncessaire dindiquer des paramtres.
WinDev sait bien videmment grer les appels de procdures imbriques.
Dans lditeur de code, lorsque vous tes positionn sur un nom de procdure,
lappui sur la touche de fonction [F2] permet de visualiser le code de cette procdure. Lappui simultan sur les touches [CTRL]+[F2] permet de revenir dans le
code prcdent sur le nom de la procdure.
67
Astuce
"Ouvrez la fentre "FEN_Code.wdw" (double-cliquez sur son nom dans lexplorateur de projet).
Cette fentre prsente diffrents exemples.
"Consultez la liste des diffrentes procdures locales (accessible depuis le volet "Explorateur
de projet"). En double-cliquant sur le nom de la procdure, le code de cette procdure est
afch dans lditeur de code.
"Testez la fentre (
68
Dtails
Un champ de type texte (par exemple un libell) peut tre initialis :
soit directement avec la chane :
SAI_TEXT1 = "WinDev est un outil formidable"
Une chane peut tre construite partir de plusieurs autres chanes. On parle alors de concatnation de chanes. Pour concatner deux chanes, il suft dutiliser loprateur "+".
// La fonction Info permet dafficher le rsultat lcran
Info(SAI_TEXT2 + SAI_TEXT1)
//affiche "WinDev"
//affiche "WinDev"
//affiche 35
Une chane peut tre transforme en majuscules avec la fonction Majuscule ou en minuscules
avec la fonction Minuscule :
Info(Majuscule(SAI_TEXT2))
Info(Minuscule(SAI_TEXT2))
Une chane peut tre recherche dans une autre avec la fonction Position :
ChaineRecherche est une chane = "WinDev"
Pos est un entier
Pos = Position(SAI_TEXT2, ChaineRecherche)
SI Pos = 0 ALORS
Info(ChaineRecherche + " non trouv dans le texte 2")
SINON
Info(ChaineRecherche + " trouv dans texte 2")
FIN
69
Astuce
Pour connatre le nombre doccurrences dune chane de caractres donne dans une autre
chane de caractres, utilisez la fonction ChaneOccurrence :
NbOccurrences est un entier
NbOccurrences = ChaneOccurrence("anastasia", "a") // Renvoie 4
"Testez la fentre. Cette fentre prsente un aperu des manipulations sur les "numriques".
Dtails
Un champ de saisie de type numrique peut tre initialis :
soit directement avec la valeur numrique :
SAI_NUM1 = 3.14
70
71
"Testez la fentre. Cette fentre permet de tester les diffrents codes prsents dans ce
paragraphe.
Dtails
Le type "Montaire" est un rel cod sur 10 octets. Il permet de donner la solution deux problmes non rsolus par les rels :
avoir plus de 15 chiffres signicatifs (les rels doubles grent 15 chiffres signicatifs maximum),
le type "Montaire" gre 23 chiffres signicatifs.
viter une erreur induite par le codage binaire des rels :
Un rel gre jusqu 15 chiffres signicatifs. Or, en ralit, le codage binaire des rels ne
permet pas de coder tous les rels de 15 chiffres signicatifs.
Le type "Montaire" a un codage diffrent des rels qui ninduit pas derreur darrondi.
En effet, le code suivant donne un rsultat faux :
// Avec une variable de type Rel, le calcul est faux
x est un Rel
x = 18.6 - 8.6 - 10
Erreur ("18.6-8.6-10="+x)
Pour effectuer des divisions sur des montaires, il est conseill de passer par des variables intermdiaires de type "Montaire".
x, y sont des Montaires
x = 12345678901234567.123456
y = 12345678901234567.123456
x = x/y
Info ("21345678901234567.123456", ...
"/","12345678901234567.123456","= "+x)
72
Remarque
Pour faire des calculs avancs, le WLangage met galement votre disposition
le type Numrique. Par dfaut, le type Numrique correspond 32 chiffres pour
la partie entire et 6 chiffres pour la partie dcimale (comme le type montaire). Mais lavantage du type numrique est de pouvoir congurer le nombre
de chiffres utiliser pour la partie entire et le nombre de chiffres utiliser pour
la partie dcimale.
Pour plus de dtails, consultez laide en ligne (mot-cl : "Numrique").
Les numriques et les chanes font bon mnage. WinDev est trs souple dans les affectations de
variables. Ainsi il est possible daffecter une chane de chiffres dans une variable numrique et
inversement. Par exemple :
i
c
i
c
c
i
est un entier
est une chane
= 123
= i
//la variable c contient la chane "123"
= "456"
= c
//la variable i contient la valeur 456
Si vous voulez transformer un nombre en une chane de caractres en respectant un format bien
prcis, il suft dutiliser la fonction NumriqueVersChane. Par exemple :
NumriqueVersChane(1234.567,"012,3f")// renvoie "00001234,567"
"Testez la fentre.
Notes
A chaque fois que vous devez utiliser la fonction NumriqueVersChane et que vous ne savez pas
exactement quels paramtres utiliser, vous pouvez excuter cette fentre : elle vous donnera la
syntaxe utiliser en fonction du rsultat souhait.
La fonction "inverse" de NumriqueVersChane, est la fonction Val. Cette fonction
permet de convertir une chane en un numrique.
73
Les dates
Exemple pratique
"Ouvrez la fentre "FEN_Date.WDW". Cette fentre illustre les explications donnes dans la
suite de cette leon.
Masque de saisie et valeur retourne
Les dates (comme les heures) sont des chanes qui ont un format prdni.
Dans un champ de saisie de type "Date" (ou de type "Heure"), il faut distinguer :
Le masque de saisie : cest le format avec lequel la date et lheure seront saisies.
Le masque dafchage : cest le format avec lequel la date et lheure seront afches.
La valeur retourne (ou mmorise) : cest la valeur retourne par le champ vers le programme.
Ces informations sont saisies dans la fentre de description du champ de saisie.
"Dans la fentre "FEN_Date", afchez la fentre de description du champ "Saisissez une date"
(option "Description" du menu contextuel du champ). Afchez longlet "Gnral" de cette
fentre. Les informations afches sont les suivantes :
74
Remarque
la valeur retourne sera par dfaut "AAAAMMJJ" (Exemple : la valeur saisie sous la forme
"23/04/2009" retournera au programme "20090423").
Il existe la possibilit de choisir un masque de saisie de type "Date systme".
Dans ce cas, le format afch sera celui dni dans les "Paramtres rgionaux
du panneau de conguration de Windows" de la machine en cours dexcution.
Pour comprendre limportance et les relations entre le masque de saisie et la valeur retourne,
regardons les exemples suivants :
Si le masque de saisie et dafchage dun champ date est "JJ/MM/AA" et la valeur
retourne est "AAAAMMJJ" :
DATEJ = "19981225" //Affiche la date sous la forme "25/12/98"
DATEJ = "981225" //Affiche la date sous une forme incorrecte
Notes
Il faut donc faire attention au format de la valeur retourne dans un champ de type date ou
heure.
Les fonctions du WLangage qui manipulent :
des dates utilisent le format "AAAAMMJJ".
des heures utilisent le format "HHMMSSCC" (certaines utilisent le format "HHMMSSCCMMM",
pour la gestion des millisecondes).
Rappel : Par dfaut, le format (masque de saisie) du champ correspond au
masque date dni dans longlet "Langues" de la fentre de description du projet
(sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description"). Ainsi, le
mme masque est utilis automatiquement dans tous les champs de type date
de lapplication.
Cette fonctionnalit est galement trs utile dans les applications multilingues.
"Nous allons maintenant voir comment grer les dates par programmation. Fermez si
ncessaire la fentre de description du champ et testez la fentre "FEN_Date" (
les boutons daccs rapide).
parmi
75
"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "DateDuJour".
Comme vous pouvez le constater, la date afche est au format "AAAAMMJJ".
Pour afcher la date sous un format plus explicite, il suft dutiliser la fonction DateVersChane :
Info("Nous sommes le " + DateVersChane(DateDuJour(),...
MaskDateSystme))
"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "DateVersChane".
Quel jour sommes-nous, mais avec le jour et le mois en lettres ?
Pour afcher la date en toutes lettres, il faut utiliser la fonction DateVersChane en utilisant un
format de date spcique :
Info("Nous sommes le " + DateVersChane(DateDuJour(),...
"JJJJ JJ MMMM AAAA")
Dans ce code :
la chane "JJJJ JJ" permet dobtenir le jour en toutes lettres. Par exemple : Lundi 17.
la chane "MMMM" permet dobtenir le mois en toutes lettres. Par exemple : Septembre.
la chane "AAAA" permet dobtenir lanne. Par exemple : 2012.
"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "En lettres".
Quel est le nombre de jours entre 2 dates ?
Vous voulez savoir combien de jours se sont couls entre deux dates ? Cest trs simple : il suft
dutiliser la fonction DateDiffrence :
NombreJour est un entier
NombreJour = DateDiffrence("20100101", DateDuJour())
InfoConstruit(...
"Le nombre de jours entre le %1 et le %2 est : %3", ...
DateVersChane("20100101", maskDateSystme),...
DateVersChane(DateDuJour(), maskDateSystme), nNombreJour)
Dans ce code, la fonction InfoConstruit est utilise pour afcher le rsultat. Cette fonction permet
de construire une chane de caractres en fonction de paramtres. Ces paramtres apparaissent
dans la chane sous forme de "%1", "%2", ...
76
Notes
Pourquoi ne pas construire directement une chane avec le rsultat des fonctions ?
Bien entendu, il aurait t possible de construire le contenu du message de la
manire suivante :
Info( "Le nombre de jours entre le " + ...
DateVersChane("20010101", maskDateSystme) + " et le " + ...
DateVersChane (DateDuJour(), maskDateSystme), ...
Nombrejour)
Cette notation prsente plusieurs inconvnients :
la lisibilit du code : une chane est plus simple lire.
la traduction : une chane peut tre traduite dans son intgralit. Il est possible dinverser les mots et les paramtres.
Le traducteur na quune obligation : remettre les %1, %2, %3.
"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "DateDiffrence".
Quel est le jour de la semaine dune date donne ?
Toujours aussi simplement, vous pouvez connatre le jour de nimporte quelle date avec la fonction DateVersJourEnLettre :
J est une chane
J = DateVersJourEnLettre("17890714")
Info("Le 14 juillet 1789 tait un " + J)
"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "DateVersJourEnLettre".
Petit exercice pratique
Maintenant que vous matrisez les dates, une colle : que fait le code suivant ?
DateVersChane(DateDuJour(),"JJJJ JJ MMM AAAA")
Date
AAAAMMJJ
DateHeure
AAAAMMJJHHMMSSCC
Dure
AAAAMMJJHHMMSSCC
77
Le type "Date" permet de grer des dates comprises entre le 01/01/0001 et le 31/12/9999 (de
quoi tre tranquille pour un bon moment !).
Plus srieusement, pour manipuler la valeur de ces variables, vous pouvez utiliser les syntaxes
suivantes :
MaDate est une Date = "20121021"
Info(DateVersChane(MaDate)) //Affiche "21/10/2012"
MaDate..Anne = MaDate..Anne + 1
MaDate..Mois = MaDate..Mois + 1
MaDate..Jour = MaDate..Jour + 1
Info(DateVersChane(MaDate)) //Affiche "22/11/2013"
Les heures
Exemple pratique
"Ouvrez la fentre "FEN_Heure.WDW". Cette fentre illustre les explications donnes dans la
suite de cette leon.
78
"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "Maintenant".
"Vous souhaitez afcher lheure au format standard "HH:MM:SS:CC" ? Le code devient alors :
Info("Il est " + HeureVersChane(Maintenant()))
"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "HeureVersChane".
Pour ne pas afcher les centimes de seconde, le code est :
HeureInfo est une chane
HeureInfo = HeureVersChane(Maintenant()),"HH:MM:SS")
Info("Il est " + HeureInfo)
"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "Sans les centimes".
Combien de temps sest coul entre deux heures ?
Il est 17h25. Combien de temps sest coul depuis 12h15 ? Le code est le suivant :
// Affiche le temps coul depuis 12h15
Diff est un entier = HeureDiffrence("1215", Maintenant())
Signe_Temps est une chane
Rsultat_Temps est une chane = EntierVersHeure(Abs(Diff))
SI Diff < 0 ALORS Signe_Temps = "-"
InfoConstruit(...
"Temps coul depuis 12:15 -> %1 %2 h %3 min %4 s ", ...
Signe_Temps, Rsultat_Temps..Heure, ...
Rsultat_Temps..Minute, Rsultat_Temps..Seconde)
Attention !
79
"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "1er exemple".
Le mme calcul peut tre effectu en utilisant les variables de type Heure et Dure.
Le WLangage propose des types de variables spciques pour les valeurs de type Date, Heure,
DateHeure ou de Dure. Ces variables sont assimilables des "chanes". Chacune contient une
valeur selon le tableau suivant :
Type
Heure
HHMMSSCC
Dure
AAAAMMJJHHMMSSCC
"Pour tester cette fonctionnalit dans notre exemple, cliquez sur le bouton "2
exemple".
80
Dure estime : 5 mn
81
Questions / Rponses
Question
Pour visualiser llment correspondant au traitement en cours, sous le volet "Code", dans le
groupe "Navigation", cliquez sur "Aller lobjet" (CTRL + TAB). La fentre contenant llment voulu
safche.
Question
Le code source en cours peut tre imprim directement en cliquant sur licne
"Accueil" ou grce la combinaison de touches [CTRL] + [P].
Question
dans le volet
Les fonctions de recherche ou de remplacement dans le code sont accessibles depuis le volet
"Accueil", dans le groupe "Rechercher" ou dans le volet "Rechercher - Remplacer" :
Vous pouvez accder la recherche tout moment en appuyant sur les touches [CTRL]+[F].
Question
Lditeur de code permet denrouler ou de drouler le code WLangage. Cette fonctionnalit est
trs utile si vos traitements utilisent de nombreuses instructions structures (boucles, condition,
parcours, ...).
Pour replier un code, sous le volet "Afchage", droulez "Replier" et slectionnez loption de menu
"Replier tout" (ou le raccourci [CTRL] + [SHIFT] + * (du clavier numrique)).
Seuls les commentaires restent visibles. Le survol de chaque ligne de commentaire permet de visualiser le code associ dans une bulle :
La combinaison de touches [CTRL] + * (du clavier numrique) permet de dplier tout le code. Le
clic sur les symboles "-" ou "+" permettent denrouler ou de drouler uniquement la partie de code
correspondante.
82
Question
Lappui de la touche [F6] permet dafcher les informations (nom et date de la cration/modication) de chaque ligne de code.
Question
Dans lditeur de code, pour activer (ou non) la numrotation des lignes de code, sous le volet
"Afchage", dans le groupe "Aide ldition", cliquez sur "Afcher les numros de ligne".
Question
83
Question
Il suft dutiliser une bote de dialogue avance. Ces botes de dialogue permettent de grer :
linterrogation directive (fonction Dialogue) : lutilisateur rpond une question grce des
boutons contenant le texte de laction effectuer.
la saisie immdiate (fonction Saisie), en proposant lutilisateur de saisir directement dans
la bote de dialogue la valeur voulue.
Pour plus de dtails sur ces fonctions, consultez laide en ligne (mot-cl : "Dialogue" et "Saisie").
Pour tester les diffrents modes de dialogue avec lutilisateur :
"Ouvrez si ncessaire le projet "WD Bases Programmation.WDP" : sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Bases
de la programmation".
84
PARTIE 2
Application avec
donnes
86
87
Notes
Dans cette partie, nous allons tudier les bases de donnes pouvant tre manipules avec WinDev. Dans un but pdagogique, nous vous proposons de dvelopper une application de A Z, de
la conception de lanalyse la distribution de lapplication.
Vous verrez ainsi tous les points importants du dveloppement dune application.
Lapplication que nous allons raliser ensemble est une gestion de comptes bancaires : vous allez
pouvoir suivre en temps rel ltat de vos comptes quand lapplication sera ralise. La base de
donnes utilise est HyperFileSQL Classic, la base de donnes gratuite fournie avec WinDev. Plus
loin dans ce cours, nous tudierons la base de donnes HyperFileSQL Client/Serveur.
Lapplication dveloppe dans ce cours dauto-formation est une application
pdagogique, qui ne contient pas tous les lments ncessaires la gestion de
comptes bancaires. Cette application sert uniquement de support pour dcouvrir
les fonctionnalits de WinDev.
Mais avant de se mettre au travail, voyons ce que vous allez faire. Le projet complet de lapplication est livr avec ce cours dauto-formation :
1. Sous le volet "Accueil", dans le groupe "Aide en ligne", droulez "Guide dAuto-formation".
2. Slectionnez "WD Application avec donnes (Excutable)".
3. Manipulez lapplication. Cette application a t cre par le gnrateur automatique dapplication de WinDev (RAD).
4. Fermez lapplication.
88
ET ANALYSE
89
Prsentation
Pour crer une application avec une base de donnes, il faut :
Crer le projet li lapplication. Ce projet regroupera tous les lments de lapplication (fentres, codes, requtes, tats, ...).
Crer lanalyse lie au projet. Lanalyse permet de dcrire tous les chiers de donnes manipuls par lapplication.
Nous crerons ensuite lapplication grce au module RAD (Rapid Application Development).
Cration du projet
Notes
90
Notes
4. Les diffrentes tapes de lassistant sont indiques gauche de lassistant. Ces tapes
sont directement clicables. Les autres crans de ltape 1 ("Description") ntant pas fondamentaux, cliquez directement sur "3 Chartes".
5. Cette tape permet de dnir la charte de programmation utilise. Ne modiez pas les options proposes. Passez lcran suivant laide des ches situes en bas.
6. Cette tape permet de dnir la charte graphique. Slectionnez "ActivUbuntu". Passez
lcran suivant laide des ches situes en bas.
7. Nous choisissons une taille de 800x600 pour les crans, car notre application naura pas
de grandes fentres, et sera ainsi adapte la plupart des rsolutions utilises. Le choix serait diffrent pour une application de gestion dimages par exemple.
8. Cliquez sur ltape "5 Le saviez-vous". Cet cran permet de grer lafchage dune fentre
de type "Le saviez-vous".
Nous nafcherons pas cette fentre : slectionnez loption "Ne pas afcher la fentre Le
saviez-vous au lancement de lapplication". Passez lcran suivant.
9. Nous allons maintenant donner les renseignements concernant la base de donnes.
10. Slectionnez loption "Oui, crer une nouvelle base de donnes" et validez. Lassistant de
cration de lanalyse se lance.
Pour suivre les diffrentes leons de cette partie et optimiser votre apprentissage de WinDev, il est conseill de crer le projet "WD Application avec donnes".
Un exemple corrig est disponible tout moment pour vrier la validit des oprations effectues.
Pour ouvrir ce projet corrig, sous le volet "Accueil", dans le groupe "Aide en
ligne", droulez "Guide dAuto-formation" puis slectionnez loption "WD Application avec donnes (Corrig)".
Cration de lanalyse
91
2. Vous pouvez ensuite choisir le ou les types de bases de donnes manipules par le projet.
Slectionnez HyperFileSQL Classic (la base de donnes propose par dfaut avec WinDev).
92
Pour crer les diffrents chiers de donnes de cette analyse, nous allons utiliser diffrentes mthodes disponibles dans WinDev.
Cration dun fichier de donnes et de ses rubriques sous lditeur
"Les tapes de lassistant de cration dun chier de donnes sont les suivantes :
Notes
1. Slectionnez dans lassistant loption "Crer une nouvelle description dun chier de donnes". Passez lcran suivant de lassistant.
2. Le chier de donnes que nous allons crer est le chier "COMPTE". Son nom est donc
"COMPTE". Ce nom sera utilis :
- pour manipuler le chier de donnes en programmation. La variable associe au chier sera
compte.
- pour construire le nom du chier de donnes physique associ (chier COMPTE.c).
Automatiquement, le libell et la description des lments reprsents par les enregistrements du chier de donnes apparaissent.
Dans lassistant, le champ "Un enregistrement reprsente" indique linformation
qui sera utilise pour dcrire les liaisons entre les chiers de donnes. Il est important de renseigner avec soin cette information !
3. Conservez loption "Le chier de donnes possde un identiant automatique". Cette option
indique si le chier de donnes doit possder une cl unique, gre automatiquement par
WinDev.
93
Notes
Pour crer lidentiant (un identiant est une cl unique), vous pouvez crer une
rubrique numrique de type "Identiant automatique".
Cet identiant est automatiquement gr par WinDev. Chaque fois quun enregistrement est ajout dans le chier de donnes, WinDev affecte automatiquement
une valeur lidentiant du chier. Cette valeur est unique.
Vous pouvez dcocher ce choix si vous navez pas besoin didentiant automatique (si aucune cl unique nest ncessaire, ou si une cl unique existe dj
dans le chier de donnes).
94
Nous allons saisir les rubriques du chier COMPTE. Dans la fentre de description du chier de
donnes, vous pouvez dj voir quune rubrique a t automatiquement cre : IDCOMPTE. Cette
rubrique correspond lidentiant automatique du chier de donnes. Cette rubrique est compose des lettres "ID" et du nom du chier.
Nous allons crer les autres rubriques de ce chier de donnes.
"Tout dabord, nous allons crer la rubrique "NumCompte". Cette rubrique contiendra le
numro de compte.
1. Dans la fentre de description des rubriques, cliquez dans la colonne "Nom" de la premire
ligne vide deux fois. Cette colonne passe automatiquement en saisie. Saisissez "NumCompte".
2. Cliquez dans la colonne "Libell". Automatiquement, le nom de la rubrique apparat. Nous
allons modier le libell de la rubrique en cliquant dessus : saisissez "Numro de compte".
Dans la colonne "Type", le type "Texte" est automatiquement slectionn. Nous ny touchons
pas.
3. Nous allons modier la taille de la rubrique. Cliquez sur la case "50" et remplacez "50" par
"25". Cliquez sur la ligne suivante. Les valeurs sont automatiquement mises jour.
95
Notes
4. Cette rubrique va tre une cl de notre chier de donnes : les cls permettent dacclrer
les accs aux donnes ou de faciliter les parcours des chiers de donnes.
Il sera possible de faire des recherches ou des parcours sur cette rubrique.
La notion de cl fait partie des caractristiques dune rubrique. En fait, lors de la
cration dune rubrique, vous avez la possibilit dindiquer si elle est :
non cl,
cl unique : la valeur de cette cl sera unique dans lensemble du chier de
donnes (cest--dire dans tous les enregistrements du chier de donnes)
cl avec doublons : la valeur de cette cl pourra tre retrouve plusieurs fois
dans le chier de donnes.
"De la mme manire, crez les rubriques suivantes (ces rubriques ne sont pas des cls) :
Nom
Libell
Type
Taille
Intitul
Intitul
Texte
50
SoldeInitial
Solde initial
Montaire
Les informations saisies ici seront automatiquement utilises lors de la cration des fentres
lies au chier de donnes. Vous retrouvez ici le type du champ et le libell.
96
Maintenant que vous devenez "expert" en cration de chiers de donnes, crez le chier "PERSONNE".
97
Pour lancer lassistant de cration dun chier de donnes, sous le volet "Analyse", dans le groupe
"Cration", cliquez sur "Nouveau chier". Le chier PERSONNE a un identiant automatique et
contient les rubriques suivantes :
Nom
Libell
Type et taille
Nom
Nom de la personne
Prnom
Prnom de la personne
Texte, 50
Adresse
Adresse
DateNaissance
Date de Naissance
Date, 8
Tlphone
Tlphone
Texte, 20
Portable
Portable
Texte, 20
Notes
Nous allons ajouter une petite nouveaut dans ce chier de donnes. Nous allons crer une rubrique email. Facile ! Mais pour cela, nous allons utiliser les mtatypes.
Mtatype
Un mtatype est une combinaison de caractristiques dune rubrique et de son
champ reli. Par exemple, un mtatype "Fax" contiendra le type et la longueur de
la rubrique, le masque de saisie, le cadrage, ...
Vous pouvez utiliser les rubriques mtatypes fournies avec WinDev, ou crer vos
propres mtatypes.
Pour utiliser une rubrique mtatype, il suft de cliquer sur le bouton "Mtatypes"
dans la description des rubriques de lanalyse.
98
Noubliez pas de cocher loption "La premire ligne contient les noms des colonnes".
8. Passez lcran suivant.
99
9. La structure du chier de donnes qui va tre cr apparat. Nous allons en proter pour
faire quelques modications :
Rubrique
Organisme
Succursale
Adresse
CodeBanque
CodeGuichet
Tlphone
Fax
Email
Contact
Type
Texte
Texte
Texte
Texte
Texte
Texte
Texte
Texte
Texte
Taille
20
50
33
5
5
20
20
260
50
"Pour simplier les recherches dans le chier de donnes, nous allons crer une cl compose.
100
Notes
Notes
101
102
Maintenant nous allons crer les liaisons entre les chiers de donnes.
103
Notes
Fichier reli
Compte
Mouvement
Compte
Mouvement
Mouvement
Cardinalits
0,n - 1,1
0,n - 1,1
0,n - 1,1
0,n - 1,1
0,n - 1,1
104
Rubrique visualiser
Organisme
Intitul
Intitul
Intitul
Nom
Intitul
Intitul
Elment gnrer
Table, Fiche, Etat
Table, Fiche, Etat
Table, Fiche, Etat
Table, Fiche, Etat
Table, Fiche, Etat
Table, Fiche, Etat
Table, Fiche, Etat
105
En effet, lidentiant ne doit pas tre afch sur les fentres en mode che et les tats.
Laissez tout coch pour les autres rubriques (y compris les autres identiants prsents dans
les chiers).
4. Validez la description des rubriques du chier de donnes.
Lanalyse est prte tre utilise par le RAD.
106
Gnration de lanalyse
Attention!
La gnration de lanalyse consiste rendre disponible aux autres modules du projet, les informations sur les chiers de donnes. Ces chiers de donnes pourront tre manipuls dans les
programmes.
Sans la gnration, bien que la description du chier de donnes existe, vous ne pourrez pas utiliser le chier de donnes dans vos programmes.
Lors de la gnration de lanalyse, toutes les modications effectues sur lanalyse et les chiers
de donnes seront automatiquement propages dans tout le projet (fentres, champs relis,
tats, ...).
La gnration doit tre effectue chaque fois que vous voulez que les modications effectues dans lanalyse soient prises en compte dans les programmes
utilisant cette analyse.
Si vous modiez lanalyse plusieurs fois, sans programmer entre chaque modication, il nest pas ncessaire de gnrer lanalyse chaque modication. Gnrez uniquement lanalyse lorsque toutes les modications sont faites et que vous
passez la programmation.
107
COMPLET
108
Note
Le module RAD de WinDev sappuie sur cette analyse. Le module RAD est constitu dun assistant dans lequel vous pouvez choisir le modle dapplication gnrer (le pattern RAD) et les
principales options de fonctionnement de votre application.
WinDev est livr avec diffrents "Patterns RAD", permettant de gnrer plusieurs
modles dapplication. Vous pouvez galement crer vos propres patterns RAD.
Pour plus de dtails, consultez laide en ligne (mot-cl : "Pattern RAD").
Note
Toutes les fentres, les tats, les requtes et le code gnrs par le RAD sont entirement personnalisables. Vous avez galement la possibilit de modier les types de champs, les valeurs par
dfaut, ...
Le RAD permet galement de gnrer des fentres de plusieurs types, cest le RAD fentre. Le
RAD Fentre est disponible lorsque vous crez une nouvelle fentre dans votre application.
Nous allons ici dcouvrir comment utiliser le module RAD Projet.
RID (Rapid graphical Interface Design)
WinDev permet galement de gnrer des fentres contenant uniquement les
champs lis aux rubriques de lanalyse. Tout le code ncessaire au fonctionnement de ces fentres reste la charge du dveloppeur.
Pour plus de dtails, consultez laide en ligne (mot-cl : "RID").
Gnration du RAD
109
Conservez uniquement les chiers Banque, Compte, Mouvement et Personne. Afchez lcran
suivant.
110
Note
5. Indiquez si les tables gnres dans les fentres de lapplication doivent permettre la saisie
ou non. Dans notre exemple, les tables permettront lutilisateur de saisir de nouvelles informations. Slectionnez "Oui : Autoriser la saisie dans les tables". Afchez lcran suivant.
6. Indiquez si le groupware utilisateur doit tre utilis dans lapplication. Nous lintgrerons plus tard dans lapplication : slectionnez loption "Non : Ne pas intgrer la gestion du
groupware utilisateur". Passez lcran suivant.
7. Indiquez si le menu automatique doit tre intgr lapplication. Rpondez "Oui : Intgrer le
menu "?"". Passez lcran suivant. Lassistant de gnration du RAD se termine et lassistant
de gnration du menu automatique se lance.
Le menu automatique est un menu daide adapt vos applications. Ce menu
permettra aux utilisateurs de vos applications daccder directement plusieurs
fonctionnalits.
"Les diffrentes tapes de lassistant de gnration du menu automatique sont les suivantes :
Notes
111
Notes
Test de lapplication
Testons immdiatement lapplication gnre.
Intitul
THA
Organisme
BNP Paribas
Intitul (TypeCompte)
Compte chque
Solde initial
1500
Personne
Vous par exemple
Essence
10/10/2012
Dbit
56
0123456L030
Carburant
Carte bancaire
THA
Loyer
01/10/2012
Dbit
737
0123456L030
Loyer
Chque
THA
Remarque : pour slectionner les dates, utilisez le calendrier situ droite des champs.
112
Si lapplication nest pas utilise pendant 2 minutes, la fentre suivante sera afche :
Notes
Lutilisateur naura qu saisir son mot de passe Windows pour continuer utiliser lapplication.
Si le Groupware Utilisateur est utilis par lapplication (voir "Le groupware utilisateur", page 139), le mot de passe utiliser sera celui dni pour le Groupware
Utilisateur.
"Pour ne pas alourdir nos prochains tests, nous allons supprimer cette option.
"Afchez nouveau la description du projet (sous longlet "Projet", dans le groupe "Projet",
cliquez sur "Description"), et dans longlet "Avanc", dcochez loption "Verrouiller lapplication...". Validez.
La suite de ce cours utilise ce mme projet. Conservez ce projet ouvert.
113
DE SAISIE
114
Prsentation
Nous avons vu les diffrentes fentres cres automatiquement par le RAD. Maintenant, nous
allons crer nous-mme une fentre permettant de grer lajout et la modication denregistrements. Ces manipulations vous feront dcouvrir plusieurs aspects de la gestion des chiers de
donnes et vous feront galement utiliser certaines fonctionnalits bien utiles de WinDev.
La fentre que nous allons crer va permettre de grer la saisie, la recherche et la modication
des personnes. Cette fentre est la suivante :
115
5. Afchez si ncessaire le volet "Analyse" (sous longlet "Accueil", dans le groupe "Environnement", droulez "Volets" et slectionnez "Analyse"). Les diffrents chiers de donnes dcrits
dans lanalyse "WD Application avec donnes" apparaissent dans le volet.
6. Cliquez sur licne "+" gauche du chier "PERSONNE" : les rubriques du chier sont listes.
7. Slectionnez laide de la souris lensemble des rubriques afches dans le volet et effectuez un "Drag and Drop" (glisser/dplacer) de ces rubriques vers la fentre que vous venez de
crer.
8. Diffrents champs sont automatiquement crs dans la fentre. Ces champs sont automatiquement lis la rubrique correspondante dans le chier de donnes. Pour le vrier, il suft dafcher longlet "Liaison" de la description dun des champs (option "Description" du
menu contextuel).
9. Fermez la description.
10. Enregistrez la fentre.
"Testez la fentre (
parmi les boutons daccs rapide). La fentre apparat avec tous les
champs vides.
116
Dtaillons ce code :
La fonction EcranVersFichier permet dinitialiser les rubriques avec les valeurs des champs
lis. Cette fonction est donc quivalente aux lignes suivantes :
Personne.Nom = SAI_Nom
Personne.Prnom = SAI_Prnom
Personne.Adresse = SAI_Adresse
Personne.DateNaissance = SAI_DateNaissance
...
Notre fentre utilise moins de 10 champs et dj lavantage se fait sentir ; pensez simplement aux fentres qui contiennent plusieurs dizaines de champs : 1 seule ligne de code effectue toutes les affectations !
La fonction HAjoute ajoute lenregistrement dans le chier de donnes. Cette fonction prend
les valeurs en mmoire et crit le contenu des rubriques du chier dans le chier de donnes lui-mme. Les index sont immdiatement et automatiquement mis jour. Ici, le chier
de donnes mis jour est bien entendu le chier "Personne".
parmi les boutons daccs rapide).
3. Enregistrez votre fentre (
"Testez la fentre (
117
"Tout dabord, le masque de saisie. Nous allons mettre un masque de saisie sur le champ
"Nom". Nous allons slectionner le masque "1re lettre en majuscule" dans la description du
champ.
Cet cran permet de grer la modication des informations partages dans lanalyse (les
informations concernant le champ associ la rubrique "Nom"). Si les informations partages sont modies dans lanalyse, la prochaine gnration de lanalyse, tous les champs
lis la rubrique auront cette information galement modie.
Validez la fentre de description du champ.
"Nous allons maintenant grer leffacement des donnes dans les champs, aprs lutilisation
du bouton "Ajouter". Seules deux nouvelles fonctions du WLangage vont nous permettre de
raliser cette opration sur tous les champs de la fentre.
1. Afchez le code du bouton "Ajouter" (F2 sur le bouton par exemple).
2. Compltez le code de la faon suivante :
EcranVersFichier()
HAjoute(PERSONNE)
RAZ()
HRAZ(PERSONNE)
La fonction RAZ remet blanc tous les champs pour la prochaine saisie. Cela permet ainsi de
signaler lutilisateur que lenregistrement a t ajout.
La fonction HRAZ remet blanc toutes les variables du chier (vite de conserver le buffer
prcdent en cas dajout partiel de rubriques dans un enregistrement).
3. Enregistrez la fentre.
"Testez la fentre (
Nom
Moulain
Teste
Vini
Vini
Prnom
Franoise
Florence
Herv
Emma
Date de naissance
03/11/1945
19/07/1970
01/12/1965
25/07/2000
Email
moulain@gmail.com
test@yahoo.com
vini@gmail.com
vini@gmail.com
119
Cette fentre signale lutilisateur quil existe un doublon : en effet, ladresse email (qui est une
cl unique) est identique pour deux personnes. Cette fentre permet de modier la valeur de
ladresse email : saisissez par exemple "vini2@gmail.com".
Cette fentre est une des fentres de gestion automatique des erreurs HyperFileSQL, disponible
en standard. Nous verrons dans la suite de ce cours comment grer par programmation les diffrents types derreur pouvant survenir sur les bases de donnes.
Visualiser les enregistrements saisis
Depuis le dbut de lutilisation de notre fentre, nous avons ajout plusieurs enregistrements.
Comment voir leur contenu ? WinDev propose un outil simple permettant de voir le contenu des
chiers de donnes pendant le dveloppement de lapplication (lorsque par exemple, les fentres
de visualisation nont pas encore t cres). Cet outil sappelle WDMAP. Nous allons lutiliser
pour voir le contenu du chier Personne.
120
121
5. La rubrique "Nom" sera galement utilise pour trier la liste. Slectionnez la rubrique
"Nom". Passez lcran suivant.
6. La rubrique retourne par la combo sera lidentiant "IDPERSONNE". Cest cette valeur qui
sera recherche dans le chier PERSONNE. Slectionnez la rubrique "IDPERSONNE" et passez
lcran suivant.
7. La combo ne sera lie aucune rubrique. Conservez loption "Non" et passez lcran suivant.
8. Validez lcran suivant avec la che jaune.
9. Donnez un nom la combo, par exemple "COMBO_PERSONNE", et comme libell "Personne recherche".
10. Validez. Positionnez la combo dans la fentre (par exemple en haut gauche).
Note
5. Enregistrez la fentre.
"Testez la fentre. Saisissez une valeur dans la combo et cliquez sur le bouton de recherche.
Le rsultat est immdiat.
122
Recherche gnrique
Nous allons maintenant effectuer une recherche gnrique. Au lieu de rechercher exactement la
valeur saisie, nous allons rechercher tous les lments qui commencent par la valeur saisie.
Pour effectuer cette recherche, nous allons crer un champ de saisie an de saisir le nom recherch et un bouton pour lancer la recherche.
Note
La fonction HLitRecherche permet de raliser une recherche gnrique. Dans cet exemple, la
recherche se fait sur le chier PERSONNE et sur la rubrique "NomPrnom". La valeur recherche correspond la valeur saisie dans le champ SAI_Nom_Recherch. Cette valeur est obtenue en utilisant directement le nom du champ.
Il est possible de faire une recherche lidentique avec la fonction HLitRecherche : il suft dutiliser la constante hIdentique.
5. Enregistrez la fentre.
"Testez la fentre. Saisissez une valeur dans le champ de saisie et cliquez sur le bouton de
recherche. Le rsultat est immdiat. Cependant, si plusieurs enregistrements correspondent,
seul le premier est afch.
123
Note
Dans ce code, la fonction HModie permet de modier lenregistrement en cours avec les
donnes prsentes dans lcran.
La fonction ListeAfche permet de mettre jour la combo de recherche (par exemple en cas
de modication du nom).
Lors de la modication dun enregistrement, des erreurs dintgrit, de doublons, ... peuvent survenir. Par dfaut, le mcanisme de la gestion automatique
des erreurs est activ (comme nous lavons dj vu lors de lajout).
"Crez quatre boutons qui ont pour nom par exemple "BTN_Premier", "BTN_Prcdent", "BTN_
Suivant", et "BTN_Dernier".
Le code de ces boutons sera :
// Bouton BTN_Premier : appeler le premier
HLitPremier(Personne)
SI HEnDehors(Personne) = Vrai ALORS
Info("Aucune fiche visualiser")
SINON
FichierVersEcran()
FIN
// Bouton BTN_Prcdent : appeler le prcdent
HLitPrcdent(Personne)
SI HEnDehors(Personne) = Vrai ALORS
Info("Dbut du fichier atteint")
SINON
FichierVersEcran()
FIN
124
"Enregistrez la fentre et testez-la. Parcourez le chier de donnes en cliquant sur chacun des
boutons.
125
126
Prsentation
Note
Dans cette leon, nous allons apprendre manipuler les tables. Dans notre exemple, nous allons
crer une fentre contenant une table listant les mouvements effectus dans une priode donne.
Cette table est base sur une requte que nous allons crer. La requte permet de slectionner
les enregistrements afchs dans la table.
La fentre est la suivante :
127
5. Nous allons trier les donnes par date. Slectionnez la rubrique "MOUVEMENT.DateMvt",
puis cliquez sur le bouton "Trier" et slectionnez loption "Trier sur la rubrique slectionne".
Indiquez un tri croissant sur la rubrique et validez.
6. Nous allons maintenant indiquer que la date correspond une priode saisie par lutilisateur. Pour cela, slectionnez la rubrique "MOUVEMENT.DateMvt", puis cliquez sur le bouton
"Entre deux dates".
128
7. Les deux dates seront fournies par lutilisateur : indiquez que la valeur est comprise entre
deux paramtres et validez.
8. Notre requte est termine. Donnez un nom la requte (par exemple REQ_Mouvement, en
haut gauche de lcran). Validez la fentre de description de la requte.
. La fentre qui safche demande les para9. Nous allons tester la requte : cliquez sur
mtres de la requte.
Slectionnez le paramtre "Param1" dans la table et saisissez sa valeur dans le champ de
saisie, par exemple 01/10/2012.
Slectionnez le paramtre "Param2" dans la table et saisissez sa valeur (par exemple
01/12/2012).
10. Validez. Le rsultat safche automatiquement.
Nous allons maintenant crer la fentre contenant la table associe cette requte.
129
Attention!
5. Slectionnez la requte qui sera la source de donnes de la table : REQ_Mouvement. Passez lcran suivant de lassistant.
6. Slectionnez toutes les rubriques proposes. Passez lcran suivant de lassistant.
7. Slectionnez la rubrique de parcours : "DateMvt". Passez lcran suivant de lassistant.
8. Saisissez les diffrents paramtres de la table : gardez les options proposes par dfaut et
dcochez loption "Gnrer le code dinitialisation des paramtres de la requte".
Loption "Gnrer le code dinitialisation des paramtres de la requte" permet
de gnrer le code dinitialisation du champ Table. Cette option est utiliser avec
prcaution car le code gnr utilise les valeurs par dfaut donnes lors du test
de la requte.
"Pour crer les champs permettant de saisir lintervalle de dates, nous allons utiliser un
superchamp fourni par dfaut avec WinDev.
1. Afchez si ncessaire le volet "Assistants, exemples et composants" : sous le volet "Accueil",
dans le groupe "Environnement", droulez "Volets" et slectionnez "Assistants, exemples et
composants".
2. Slectionnez "Champs".
3. Slectionnez "Superchamp".
4. Slectionnez le superchamp "Saisie dune priode" et ralisez un "Glisser/dplacer" vers la
fentre : positionnez le superchamp par exemple au-dessus de la table.
"Nous allons maintenant saisir le code qui va permettre dinitialiser la table. Ce code va tre
saisi dans un bouton spcique.
1. Crez un nouveau bouton. Ce bouton a pour nom "BTN_Mouvement" et pour libell "Mouvements de la priode".
2. Afchez le code du bouton (par exemple avec loption "Code" du menu contextuel du bouton).
130
Ce code permet dinitialiser les paramtres de la requte REQ_Mouvement avec les valeurs
saisies dans les champs Date.
La requte est ensuite excute, puis la table est afche.
Note
131
Note
Est-ce que lon peut imaginer plus simple ? En fait, vous venez dutiliser une FAA de lapplication
WinDev. Ces trois lettres correspondent Fonctionnalits Automatiques de lApplication. En effet,
une application WinDev contient par dfaut un ensemble de fonctionnalits qui sont automatiques : aucun dveloppement supplmentaire nest ncessaire. WinDev est votre service pour
simplier vos dveloppements.
La liste complte des FAA (Fonctionnalits automatiques de lapplication) est
disponible dans le chier WinDev FAA 18.PDF. Ce chier est automatiquement
intgr dans votre application si vous choisissez loption "Aide des FAA" lors de la
cration du menu automatique.
Vous voulez personnaliser ltat propos par dfaut ? Il suft de crer un tat automatique sur la
table. Cet tat (sil existe) sera automatiquement utilis par loption dimpression de la table.
132
133
Prsentation
Note
Dans la leon prcdente, nous avons cr un tat trs rapidement. Dans cette leon, nous allons nous arrter sur la cration dun tat bas sur une requte. Mais au lieu de faire dabord la
requte, puis ltat, nous allons crer la requte pendant la description de ltat. Dans ce cas, la
requte sera intgre ltat : elle ne pourra pas tre utilise ailleurs dans le projet.
Ltat que nous allons crer est relativement simple : nous voulons afcher pour chaque compte
de chaque banque les oprations ralises.
Cette leon "survole" la cration dun tat. Une partie entire de ce cours dautoformation est consacre la gestion des tats ("Votre premier etat", page 335).
134
4. Lcran de description de la requte apparat. Nous allons dnir les rubriques qui vont
composer la requte :
La rubrique "Organisme" du chier BANQUE : le nom de la banque
La rubrique "NumCompte" du chier COMPTE : le numro de compte
La rubrique "Intitul" du chier NATUREMVT : lintitul de lopration
La rubrique "DateMvt" du chier MOUVEMENT : la date de lopration
La rubrique "Montant" du chier MOUVEMENT : le montant de lopration
La rubrique "Sens" du chier MOUVEMENT : le sens de lopration.
135
7. Ltat va contenir une rupture (cochez "Oui"). Les ruptures servent regrouper les donnes.
Dans ltat, les donnes vont tre regroupes par organisme bancaire. Passez lcran suivant.
136
"Si vous regardez attentivement cet tat, vous vous rendrez compte que cet tat est faux ! La
somme des montants calculs ne tient pas compte du sens du mouvement. Nous allons faire
quelques modications dans ltat pour y remdier.
1. Editez le code du bloc CORPS (positionnez le curseur de la souris dans la partie CORPS de
ltat et slectionnez loption "Code du bloc" du menu contextuel).
2. Dans le code "Avant impression" du bloc, ajoutez le code suivant :
// Affichage des montants ngatifs en cas de dbit
SI RUB_Sens = 1 ALORS
RUB_Montant = RUB_Montant*-1
FIN
137
5. Modiez la mthode de calcul du total : le total doit tre fait sur le champ "RUB_Montant".
6. Afchez longlet "Liaison" de la description du champ et slectionnez le champ de ltat
RUB_Montant" :
7. Validez.
8. Enregistrez ltat et testez-le.
138
LEON 2.7. LE
GROUPWARE UTILISATEUR
139
Prsentation
Une application peut tre utilise par diffrents intervenants, ayant tous des prols diffrents. Il
est souvent ncessaire de prvoir des niveaux daccs selon les fonctions de lutilisateur.
Prenons un exemple simple : lors de la mise en place dune gestion commerciale, lapplication
propose les fonctionnalits suivantes :
Consultation du tarif
Modication du tarif
Saisie des commandes
Saisie des clients.
Selon lutilisateur, les accs possibles sont diffrents. Quelques exemples :
les secrtaires peuvent consulter le tarif et crer des commandes
les commerciaux peuvent consulter le tarif et tablir les commandes, grer de nouveaux clients.
les directeurs commerciaux ont accs toutes les options.
WinDev permet de grer ces diffrents niveaux daccs en quelques clics dans vos applications
grce au groupware utilisateur.
Nous allons intgrer le groupware utilisateur dans notre application "WD Application Avec Donnes" et le congurer.
"Pour intgrer le groupware utilisateur dans le projet "WD Application Avec Donnes" :
1. Sous le volet "Projet", dans le groupe "Projet", cliquez sur "Groupware Utilisateur". La fentre
de paramtrage du groupware utilisateur safche.
140
Note
7. Slectionnez loption "Activer lhistorique des connexions". Cette option permet au superviseur de savoir qui sest connect, quand et quelle heure.
8. Slectionnez longlet "Identication". Cet onglet permet de dnir le mode didentication
de lutilisateur :
gestion par le groupware utilisateur
utilisation dun annuaire LDAP. Dans ce cas, lors de linstallation de lapplication, lutilisateur pourra saisir les paramtres de son annuaire LDAP.
utilisation de lauthentication Windows.
9. Validez. Un message apparat indiquant que par dfaut, un utilisateur Superviseur est cr..
Note
141
Note
La conguration du groupware utilisateur consiste dnir les diffrents utilisateurs de lapplication et leurs droits sur les diffrentes fentres et champs de lapplication.
La conguration des utilisateurs peut tre ralise :
lors du dveloppement de lapplication. Les chiers de donnes ncessaires
(des utilisateurs et de leurs droits) pourront tre installs avec lapplication.
lorsque lapplication est installe, par ladministrateur de lapplication.
1. Crez les diffrents utilisateurs qui auront accs lapplication (bouton "Nouveau" de la
zone "Utilisateurs"). Par dfaut, seul le superviseur existe.
Crez le nouvel utilisateur TEST.
Cliquez sur "Mot de passe" et indiquez le mot de passe : "test".
Cliquez sur "Enregistrer".
2. Associez si ncessaire les utilisateurs un groupe. Le bouton "Nouveau" de la zone
"Groupes" permet de crer des groupes.
142
3. Paramtrez les droits des utilisateurs (option "Gestion des droits" gauche de la fentre).
Slectionnez lutilisateur "TEST et cliquez sur "Suivant". La fentre qui safche permet de slectionner chaque fentre de lapplication. Pour chaque lment de la fentre, il est possible
de dire si le champ aura le comportement de lapplication (dfaut) ou sera inactif, invisible ou
gris.
4. Fermez la fentre de conguration.
5. Si vous choisissez de lancer lapplication, lapplication fonctionne normalement.
6. Fermez lapplication et revenez sous lditeur.
"Dans la suite de ce cours, nous nutiliserons plus le groupware utilisateur. Vous pouvez direc-
Note
tement le dbrancher. Pour cela, sous le volet "Projet", dans le groupe "Projet", cliquez sur
"Groupware Utilisateur". Dans la fentre qui safche, dans longlet "Intgration", slectionnez
loption "Aucune gestion automatique du groupware utilisateur". Validez.
Si vous effectuez des tests automatiques dans votre application, il est ncessaire de congurer le groupware utilisateur pour ne pas utiliser la fentre de
login. Il suft de renseigner loption "Login automatique en mode test" dans longlet "Excution" de la fentre de paramtrage du groupware.
143
LEON 2.8. LE
TABLEAU DE BORD
144
Prsentation
Le tableau de bord du projet est un lment indispensable la gestion de projets WinDev. Le tableau de bord permet davoir une vision globale et synthtique de ltat davancement dun projet.
Le tableau de bord est constitu de jauges, de voyants, de compteurs permettant de voir dun
seul coup dil ltat dun projet.
Dans cette partie, nous nous limiterons la gestion des tests automatiques et loptimisation
des requtes.
Le tableau de bord sera abord plus en dtail dans le chapitre "Tableau de bord", page 417.
"Pour afcher le tableau de bord du projet (si ce nest pas dj fait), sous le volet "Projet",
dans le groupe "Projet", cliquez sur licne
Tests automatiques
Une des fonctionnalits intressante du tableau de bord est de renseigner sur les tests qui ont t
raliss sur lapplication.
Nous avons dj fait de nombreux tests dutilisation, au fur et mesure de la conception de notre
application.
Cliquez sur le voyant test. La fentre de taux de validation de lapplication apparat.
Cette fentre recense tous les tests qui ont t effectus sur lapplication :
Tests manuels (cest les tests que nous avons dj effectus)
Tests automatiques.
145
Les tests automatiques sont une catgorie de tests spciques. Les tests automatiques permettent dautomatiser certaines manipulations de vos fentres. Ces tests sont enregistrs sous
forme de scnarios WLangage, facilement modiables sous lditeur de code. Une fois enregistr,
le test automatique peut tre rexcut autant de fois que vous voulez, pour tester par exemple
limpact dune modication sur une fentre, une procdure, ...
Note
Faisons immdiatement un essai ! Nous allons crer un test automatique sur la fentre de saisie
que nous avons cre au dbut de cette leon.
Les tests automatiques peuvent tre raliss sur des fentres, des procdures,
des classes.
"Pour crer un test automatique sur une fentre, il suft de tester la fentre :
Note
146
11. Nous allons rendre le test disponible (cliquez sur le lien "Terminer la construction du test
et le rendre disponible"). Maintenant, le test pourra tre lanc tout moment. Lditeur de
tests nous indique que le test nest jamais pass. Cliquez sur le lien "Lancer le test".
12. Le test sexcute automatiquement et lditeur de tests afche le rsultat (le test est
pass avec succs dans notre cas).
13. Fermez lditeur de tests et enregistrez le test si ncessaire.
"Nous allons maintenant faire une modication dans notre fentre, puis repasser le test. La
modication porte sur le champ de recherche "SAI_Nom_Recherch". Nous allons ajouter un
code de vrication dans le code "A chaque modication".
1. Ajoutez le code suivant dans le code "A chaque modication" du champ SAI_Nom_Recherch :
SI Taille(SAI_Nom_Recherch)>=2 ALORS
BTN_GENERIQUE..Etat = Gris
SINON
BTN_GENERIQUE..Etat = Actif
FIN
2. Enregistrez la fentre.
3. Passez le test associ la fentre : sous le volet "Tests automatiques", droulez "Excuter"
et slectionnez loption "Lancer les tests".
4. Le test est dsormais en erreur.
5. Modiez le code du champ de recherche de la faon suivante :
SI Taille(SAI_Nom_Recherch)<=2 ALORS
147
Pour cela :
Cliquez sur le bouton "+" droite de la table.
Saisissez dans la colonne "Individu", Moulain.
Cliquez sur le bouton "+" droite de la table.
148
6. Lancez le test.
Lditeur de tests propose de nombreuses fonctionnalits que nous ne pourrons pas aborder
dans ce cours :
la dnition de paramtres dentre et de sortie du test.
la possibilit de crer une bibliothque de tests pour tester un excutable par exemple sur
une machine diffrente du poste de dveloppement.
Pour plus de dtails sur les tests automatiques, nous vous conseillons de consulter laide en ligne
(mot-cl : "Test automatique").
149
"Dans le tableau de bord, cliquez sur le bouton "Audit statique". Dans lassistant, slectionnez
"Lancer laudit statique sur le projet complet". La fentre de compte-rendu de laudit safche :
Remarque : Il est possible de congurer les informations afches dans laudit statique grce au
bouton
.
Regardons la synthse de cet audit :
Lancement du proler (galement appel lanalyseur de performances). Lanalyseur de performances sera tudi dans une prochaine partie de ce cours dauto-formation.
Optimisation des requtes : laudit statique a dtect quune requte de notre application pouvait tre optimise. Nous allons effectuer cette opration immdiatement.
150
Pour optimiser les requtes du projet, WinDev propose de crer des cls composes. Ces cls
composes doivent tre cres dans lanalyse. WinDev va raliser ces modications automatiquement.
3. Cliquez sur le bouton "Appliquer ces modications dans lanalyse" et validez.
4. Pour prendre en compte les modications, il est ncessaire de rgnrer lanalyse puis deffectuer la modication automatique des chiers de donnes. Validez les diffrentes fentres
qui souvrent. Votre projet est dsormais en phase avec lanalyse.
151
DE LAPPLICATION
152
Prsentation
Notre premire application est termine. Maintenant, il faut gnrer lexcutable et installer lapplication chez les utilisateurs. Cest ce que nous allons faire pour conclure cette partie. Nous aurons ainsi vu la majorit des points importants lors du dveloppement dune application WinDev.
Cration de lexcutable
La cration de lexcutable est une opration trs simple : une option de menu et quelques clics
sufsent.
Nous vous proposons ici de dtailler toutes les tapes de la cration de lexcutable an de
connatre toutes les possibilits de WinDev. tout moment, vous pouvez cliquer sur le bouton vert
pour valider la totalit des crans de lassistant.
Note
1. Dans la zone des boutons daccs rapide du ruban, droulez la roue et slectionnez loption
"Gnrer lexcutable Windows 32 bits (.exe)".
2. Lassistant de cration dexcutable se lance. Un premier cran prsentant ltat des tests
automatiques est afch. Dans notre cas, tous les tests automatiques ont t passs avec
succs. Passez lcran suivant.
3. Lcran suivant permet de dcrire les options gnrales de lexcutable :
le nom de lexcutable : nous conservons le nom par dfaut.
le nom de licne associe lexcutable : vous pouvez slectionner une icne dans le catalogue dimages.
limage dintroduction. WinDev propose plusieurs types de splash screen. Par dfaut, un
splash screen avec texte anim est slectionn. Le bouton "Options" permet de le congurer.
4. Passez lcran suivant. Pour le fonctionnement de lexcutable, nous garderons les options par dfaut. Passez lcran suivant.
5. Lcran suivant permet de personnaliser le message derreur de lapplication. Nous garderons le message propos par dfaut. Passez lcran suivant.
6. Lcran suivant permet de dnir lutilisation du MCU dans notre application.
153
Note
Note
Note
154
12. Nous allons maintenant saisir les informations de lexcutable. Ces informations sont afches sous lexplorateur Windows en slectionnant les proprits du chier.
Entrez par exemple les informations suivantes :
Note
Loption "Utiliser uniquement le framework propre lapplication" permet dutiliser uniquement les librairies ncessaires.
Loption "Utiliser le framework WinDev commun" permet dutiliser le framework commun
toutes les applications WinDev installes sur le poste. Avec cette option, le framework est install une seule fois sur le poste (il est possible de le tlcharger par Internet) et il est utilis
par toutes les applications WinDev. Cochez cette option.
Passez lcran suivant.
15. Un cran concernant Windows Vista apparat. Cet cran permet dintgrer un manifeste
pour une utilisation sous Windows Vista.
Passez lcran suivant.
16. Lexcutable est cr. Il est possible de le lancer immdiatement, pour vrier son fonctionnement. Pour cela, cliquez sur le bouton "Lancer lexcutable").
155
Note
Voil, la cration de lexcutable est termine. Beaucoup dtapes, mais aprs une premire conguration de vos choix, vous pouvez valider ds le dbut toutes les tapes.
Il est galement possible de cliquer directement sur les tapes indiques dans
lassistant pour parvenir directement un cran. Les options par dfaut des
autres crans seront automatiquement valides.
Cration de linstallation
La cration de linstallation est une opration trs simple : un assistant vous permet de dnir les
choix principaux. Si les options proposes par lassistant ne sufsent pas, il est possible dutiliser
lditeur dinstallation. Nous ne dtaillerons pas son utilisation dans cette leon. Pour plus de
dtails, consultez "Installation dune application", page 473.
Nous vous proposons ici de dtailler toutes les tapes de la cration du programme dinstallation
an de connatre toutes les possibilits de WinDev. tout moment, vous pouvez cliquer sur le bouton vert pour valider la totalit des crans de lassistant.
Note
1. Sous longlet "Projet", dans le groupe "Gnration", droulez "Procdure dinstallation" et slectionnez loption "Crer la procdure dinstallation". Lassistant de cration dexcutable et
dinstallation se lance.
Nous avons dj cr lexcutable : les options choisies sont mmorises. Cliquez directement dans lassistant sur lintitul "Complments" de la partie
"Excutable".
156
Note
Cette option permet de crer un chier daide pour prsenter lutilisateur nal les nouveauts de la version. Lors dune premire installation, ce chier peut correspondre laide du logiciel.
Slectionnez loption "Crer une documentation des nouveauts" et passez lcran suivant.
3. Lcran suivant permet de dnir les lments qui seront automatiquement intgrs au
chier daide. Conservez les options par dfaut et passez lcran suivant.
Si lapplication possde dj un systme daide, il est possible de lutiliser pour
le complter avec une page de nouveauts.
4. Validez le message. Lexcutable est automatiquement cr (avec les options que nous
avons dnies lors de la cration de lexcutable) et le systme daide est cr. Vous pouvez
saisir les informations spciques dans le systme daide. Pour lexemple, laissez les informations cres par dfaut. Pour reprendre la cration du programme dinstallation, cliquez
sur loption "Poursuivre la cration de la procdure dinstallation".
157
Nous allons choisir les outils optionnels installer et inclure le dsinstallateur. Grce au dsinstallateur, les utilisateurs pourront dsinstaller lapplication depuis le gestionnaire de programmes de Windows. Passez lcran suivant.
11. Nous allons slectionner WDOptimiseur. Cet outil permet de rindexer rgulirement les
chiers de donnes de lapplication.
12. Cliquez sur loption "Support" gauche de lassistant. Nous allons gnrer linstallation
dans un rpertoire unique. Par dfaut, le programme dinstallation est cr dans le sous-rpertoire "Install" du projet. Il est possible de spcier un mot de passe pour linstallation. Seul
lutilisateur connaissant le mot de passe pourra lancer linstallation de lapplication.
13. Validez. Le programme dinstallation est automatiquement cr.
14. Testez immdiatement le programme dinstallation cr.
Conclusion
Voil, nous avons ralis une application de sa conception sous lditeur danalyses sa distribution en clientle. Nous avons dcouvert de nombreuses fonctionnalits de WinDev. Les chapitres
suivants vont permettre dapprofondir certaines de ces fonctionnalits.
158
159
Question
Question
La fonction Ouvre permet dassocier une fentre une option de menu. Saisissez le code suivant
dans le code de clic de votre option de menu :
Notes
Ouvre(FEN_NomMaFentre)
Question
Pour insrer automatiquement un menu "?" dans votre application, sous le volet "Fentre", dans le
groupe "Barres et menus", droulez "Menu principal" et slectionnez loption "Ajouter le menu ?".
Dans lassistant qui se lance, slectionnez les options dsires.
Question
160
Pour un champ :
1. Faites un clic droit sur le champ et slectionnez loption "Description".
2. Cliquez sur longlet "IHM" et cliquez sur licne
ct de la combo "Menu Ctx".
Pour connatre ou modier le menu contextuel dun champ ou dune fentre par programmation,
utilisez la proprit ..MenuContextuel.
Question
Pour plus de dtails, consultez laide en ligne (mot-cl : "Fermer, Fermeture automatique (bouton)").
Notez que vous pouvez galement utiliser loption "Validation automatique" disponible dans longlet "Dtail" de la description de la fentre.
Question
Astuce
Question
161
Question
Question
Question
Notes
Licne qui est associe votre excutable peut tre dnie lors de la cration de lexcutable.
Cette icne doit tre au format ICO.
Question
Un catalogue dicnes prdnies est fourni en standard avec WinDev. Ce catalogue est accessible lors de la slection de licne.
Limage de lancement qui est associe votre excutable peut tre dnie lors de la cration
de lexcutable. Cette image doit tre un format standard reconnu par WinDev (BMP, WMF, GIF,
JPEG, TIFF, )
Un catalogue dimages prdnies est fourni en standard avec WinDev. Ce catalogue est accessible lors de la slection de limage.
WinDev offre la possibilit de personnaliser directement cette image lors de la cration de lexcutable. Vous pouvez ainsi crire le texte de votre choix (avec la mise en forme voulue) sur cette
image.
162
Question
Question
Consultez laide en ligne pour la syntaxe dtaille de cette fonction (mot-cl : "Crer, Un raccourci").
Question
163
Question
"Pour utiliser cet assistant, sous le volet "Projet", dans le groupe "Autres actions", droulez
"Sauver/Restaurer", puis slectionnez loption "Nettoyer le rpertoire du projet".
Remarque : Il est possible de connatre :
le code mort dun projet : sous longlet "Projet", dans le groupe "Audit et performances", droulez "Audit ddition" et slectionnez loption "Code mort".
les lments orphelins dun projet : sous longlet "Projet", dans le groupe "Audit et performances", droulez "Audit ddition" et slectionnez loption "Elments orphelins".
164
PARTIE 3
Fentres et
champs
FENTRES
Dure estime : 10 mn
167
2. Une fentre en forme de roue safche. Cette fentre permet de crer tous les lments
pouvant tre associs un projet.
3. Cliquez sur "Fentre". Lassistant de cration de fentres safche.
Lassistant de cration de fentres permet :
de crer des fentres RAD (Rapid Application Development) : ces fentres sont bases sur les
chiers de donnes dcrits dans lanalyse et contiennent tout le code ncessaire leur fonctionnement. Ces fentres sont associes un pattern RAD (qui xe les fonctionnalits intgres
dans la fentre et si ncessaire linterface) et un gabarit (qui dnit le look de la fentre).
Ces fentres peuvent tre utilises immdiatement. Plusieurs types de fentres sont proposs :
fentre de type che, fentre avec table, fentre avec zone rpte, ...
de crer des fentres RID (Rapid Interface Development) : ces fentres sont bases sur les
chiers de donnes dcrits dans lanalyse. Elles contiennent uniquement les champs et les boutons, et le code ncessaire aux lments intgrs par le pattern RID associ. La saisie du code
correspondant est effectue par le dveloppeur. Ces fentres sont lies un pattern RID et si
ncessaire un gabarit. Ces fentres peuvent tre utilises immdiatement. Plusieurs types de
fentres sont proposs : fentre de type che, fentre avec table, ...
de crer des fentres standard : Cet onglet permet de crer des fentres vierges standard.
de crer des fentres internes. Les fentres internes sont un type spcique de fentre. Nous
dtaillerons leur fonctionnement dans la suite de cette partie.
de crer des fentres bases sur un modle de fentres. Les modles de fentres permettent
de dnir un ensemble de critres (graphique, champ, code) devant tre repris dans chaque
fentre de lapplication. Nous dtaillerons la cration et lutilisation dun modle de fentres
dans la suite de cette partie.
dimporter une fentre existante (et non WinDev). Cette option permet de "recopier" linterface
dune fentre dans votre application WinDev. Vous slectionnez la fentre qui vous intresse et
WinDev se charge de tout. Loption "Gnrer des images pour les champs non reconnus" permet
de rendre linterface plus proche de la fentre importe.
Bien sr, vous avez toujours la possibilit de crer une fentre vierge, sans aucun champ, utilisant
ou non un gabarit.
168
Aprs avoir vu les diffrentes faons de crer une fentre, nous allons voir quelles sont les principales caractristiques dune fentre.
Notes
Pour manipuler les diffrents onglets des fentres, nous allons utiliser un projet exemple prpar
cet effet. Pour ouvrir ce projet sous WinDev :
1. Si ncessaire, fermez le projet en cours pour faire apparatre la fentre de bienvenue.
2. Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Fentres et champs".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Fentres et
champs".
3. Ouvrez la fentre "FEN_ChampSaisie" (prsente dans le dossier "Champs classiques" de
lexplorateur de projet).
Ouvrir une fentre sous lditeur
Nous avons vu plusieurs mthodes pour ouvrir une fentre sous lditeur. Voici
un rcapitulatif des diffrentes possibilits :
Utilisation du raccourci clavier [CTRL] + [E] et slection de la fentre ouvrir.
Lavantage de cette mthode est la visualisation de laperu de la fentre.
Dans le volet "Explorateur de projet", double-clic sur le nom de la fentre
ouvrir.
Bouton
prsent parmi les boutons daccs rapide et slection du chier
correspondant la fentre ouvrir.
169
Onglet "IHM"
Le second onglet de la fentre de description est longlet "IHM". Cet onglet permet de dnir les
paramtres concernant linterface de la fentre. Cet onglet regroupe ainsi les caractristiques
concernant :
la taille et la position de la fentre
le menu contextuel de la fentre,
le curseur de survol et laction du clic droit sur la fentre, ...
Dans cet onglet, de nombreuses options sont intressantes :
Dplacement par le fond : cette option permet lutilisateur de dplacer la fentre en cliquant
nimporte quel endroit (et non uniquement par la barre de titre). Vous pouvez dailleurs tester
cette option directement sur la fentre de description.
Redimensionnable : grce cette option, lutilisateur pourra redimensionner la fentre. Mais
cette option ncessite une gestion prcise du redimensionnement des champs (appel ancrage). Nous consacrerons un chapitre cette notion dans la leon concernant lergonomie des
fentres.
Mmoriser la taille et la position de la fentre : cette option est trs intressante car la position
de la fentre dtermine par lutilisateur sera automatiquement enregistre et utilise la prochaine ouverture de la fentre. Ainsi, si lutilisateur dispose de plusieurs crans, lafchage de la
fentre sur un cran ou un autre sera automatiquement mmoris.
Assombrir la fentre lorsquelle devient inaccessible : encore une option trs apprcie par
les utilisateurs. Si des botes de dialogue sont afches par lapplication, lutilisateur ne se demande plus o il doit cliquer : en effet, la fentre en arrire-plan est automatiquement grise
pour que lutilisateur puisse se concentrer sur le message afch.
Adapter la taille en fonction du contenu : cette option permet dadapter automatiquement la
taille de la fentre en fonction des champs prsents dans cette fentre. Les zones vides sont
ainsi automatiquement limines.
Onglet "Dtail"
Dans cet onglet, les paramtres spciques au fonctionnement de la fentre sont regroups. On
retrouve les caractristiques concernant :
Le type de la fentre (nous reviendrons en dtail sur cette caractristique dans la leon sur
lergonomie),
Les paramtres avancs de la fentre (contexte HyperFileSQL, ...),
Lanimation de la fentre en ouverture et/ou en fermeture,
Excution automatique dun bouton de la fentre.
Arrtons-nous un instant sur ces deux derniers points.
Lanimation de fentre permet de donner un aspect dynamique votre application. Vous pouvez
paramtrer louverture et/ou la fermeture de votre fentre.
Pour paramtrer lanimation ? Rien de plus simple : il suft de cliquer sur les caractristiques de
lanimation. La fentre de paramtrage apparat. Saisissez vos paramtres et testez-les immdiatement (et mme sur la fentre de paramtrage).
170
171
CHAMPS
172
Introduction
WinDev met plus de 40 types de champs votre disposition pour communiquer avec lutilisateur
nal. Ils permettent de saisir ou de visualiser des valeurs.
Les valeurs afches peuvent provenir dun calcul effectu par programmation, dun chier dune
base de donnes ou dune affectation.
Les valeurs saisies peuvent servir faire des calculs, tre enregistres dans un chier de donnes ou tre affectes dautres champs.
Cette leon va vous permettre de connatre les diffrents types de champs disponibles, de les
tester dans des cas dutilisation relle, et pour les plus courants, daborder leur programmation.
Pour simplier cette leon, nous avons dcoup les diffrents champs en deux catgories :
les champs classiques : ce sont les champs les plus utiliss.
les champs spcialiss, qui permettent dobtenir une interface spcique, ou de grer des
fonctionnalits spciques.
Exemple pratique
Pour apprendre utiliser ces diffrents types de champs, nous allons utiliser le projet exemple
"WD Fentre et champs" prpar cet effet. Pour ouvrir ce projet sous WinDev :
1. Si ncessaire, fermez le projet en cours pour faire apparatre la fentre de bienvenue.
2. Dans la fentre de bienvenue, cliquez sur "Cours dauto-formation" et slectionnez le projet
"Fentres et champs".
Astuce : si la fentre de bienvenue nest pas afche, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Fentres et
champs".
173
175
Il est galement possible de changer la couleur du texte du libell (bouton "Couleur") avec la proprit ..Couleur.
LIB_LibellManipul..Couleur = RougePastel
Notes
La liste des proprits disponibles sur les champs est prsente dans laide en
ligne de WinDev, mot-cl : "Proprits, Proprits des champs dune fentre".
Rappel
Les champs de saisie sont les premiers champs que vous avez manipuls. Ils permettent de saisir
ou dafcher des donnes provenant de variables, de calculs ou de chiers de donnes.
Ils permettent par exemple de saisir un mot de passe, une quantit commander, le nom dun
client, une adresse,
Si vous crez une fentre, il y a 9 chances sur 10 pour que vous utilisiez ensuite un champ de
saisie. Voyons un peu plus en dtail leurs fonctionnements et leurs possibilits.
Quelle que soit linformation saisir ou afcher, vous pouvez choisir le type correspondant :
texte, RTF, HTML, mot de passe,
numrique,
heure,
date,
dure,
montaire,
montaire+Euro.
chaque type de champ correspondent plusieurs masques de saisie (ou dafchage si le champ
est en afchage).
Nous avons vu lintrt de ce masque lors du dveloppement de lapplication "Mes comptes",
nous ny reviendrons pas.
176
Les champs de saisie numriques ne sont pas typs. Cest le masque slectionn pour le champ qui va dnir si le champ est un rel, rel double, entier, ...
Exemple pratique
"Testez la fentre.
"Saisissez des valeurs dans les champs qui ont le libell "En saisie". Dans les autres champs,
il nest pas possible de saisir. En effet, ils ont t dcrits en afchage. Cliquez sur les
diffrents boutons et observez ce quil se passe.
En dtail
Pour afcher et rcuprer une valeur dans un champ de saisie une simple affectation suft et ce
quel que soit le type du champ de saisie.
Quelques exemples dinitialisation :
Code dinitialisation dun champ de saisie texte :
SAI_EnAffichage = "Coucou" // Affiche Coucou dans le champ texte
Rappel
Code de clic dun bouton pour rcuprer la valeur dun champ de saisie numrique :
Valeur est un Rel
// Rcupre le contenu du champ numrique
Valeur = SAI_Numrique_EnSaisie
177
Astuce
Onglet "Gnral"
Comme nous lavons dj vu, longlet "Gnral" du champ de saisie permet de dnir :
le nom du champ
son libell
son type
son masque de saisie.
Quelques types peuvent se rvler utiles :
RTF : Ce type de champ de saisie permet davoir des mots en Italique, en Gras, en couleur,
de tailles et de polices diffrentes, ... Il suft de copier/coller dans le champ un contenu au
format RTF ("Rich Text Format") pour que celui-ci soit pris en compte. Il est galement possible dassocier une barre doutils de formatage aux champs de saisie RTF.
HTML : Ce type de champ de saisie permet aussi bien dafcher un texte au format HTML
que de saisir un texte au format HTML. Il est galement possible dassocier une barre doutils de formatage aux champs de saisie HTML.
Mot de passe : Si ce type de champ de saisie est slectionn, les caractres frapps sont
remplacs par des puces uniquement lafchage.
Ce type de champ est idal pour la saisie du mot de passe dun utilisateur dans une fentre de login.
Astuce
Texte multi-ligne : ce type permet de saisir un texte sur plusieurs lignes. Des RC (Retours
Chariots) peuvent tre insrs dans le texte.
Ce type de champ est idal pour saisir un commentaire ou une observation. Lutilisation de ce paramtre est fondamentale pour lutilisation des champs "Mmo" (tudis plus loin).
Loption "Unicode" permet de saisir une chane au format Unicode dans le champ de saisie. Cette
option est intressante pour les applications utilisant des alphabets non latins.
Onglet "IHM"
Longlet IHM permet de dnir les caractristiques dinterface du champ.
Nous allons dtailler les points suivants :
Etat initial
Gestion de la touche TAB
Eye magnet
Gestion de la lettre dappel et du clic droit
La gestion de lancrage est dtaille dans le paragraphe "Ancrage", page 232.
178
Ltat initial du champ correspond ltat du champ lors de lexcution de la fentre. Cette caractristique se retrouve pour presque tous les types de champ.
Au lancement dune fentre, un champ de saisie peut tre :
En saisie : le champ est actif, il sera en saisie dans la fentre. Lutilisateur pourra saisir des
informations dans ce champ.
Afchage seul : le champ est inactif, aucune saisie ne sera possible. Ce champ se comportera comme un champ de type libell. Il sera cependant possible de slectionner le contenu
du champ laide de la souris si loption "Avec slection en afchage" est coche dans longlet "Dtail".
Gris : le champ est inactif et il apparat en gris. Cet tat est trs pratique pour indiquer
lutilisateur que ce champ existe, mais quil nest actuellement pas accessible.
Visible : Comme son nom lindique, le champ "existe" dans la fentre. Ce champ peut tre
visible ou non. Cet tat est souvent utile en programmation lorsquun champ doit apparatre certains moments et disparatre dautres !
Cette option est indpendante des 3 options prcdentes. Vous pouvez rendre ainsi le
champ visible ou non tout en conservant les paramtres dafchage.
Ltat du champ peut tre modi par la suite par programme en utilisant :
la proprit ..Etat pour les options "Saisie", "Afchage seul" et "Gris",
la proprit ..Visible pour loption "Visible".
La gestion de la touche TAB permet de congurer la prise en compte de la touche TAB dans la fentre. Le plus souvent, la touche TAB du clavier permet lutilisateur de se dplacer entre les diffrents champs de la fentre (option "Champ accessible par TAB"). Il est alors possible de dnir
lordre de navigation dans la fentre (nous le verrons dans le chapitre Ergonomie de cette partie).
WinDev permet cependant de ne pas grer la touche TAB ou daccepter les TAB en saisie. Cette
dernire option peut tre intressante dans des champs multi-lignes permettant de saisir de longs
textes.
Le "eye magnet" (appel galement mise en forme conditionnelle) consiste modier laspect
visuel dun champ an dattirer lattention de lutilisateur sur ce champ. WinDev permet de modier cet aspect visuel automatiquement en fonction dune srie de conditions. Par exemple, un
champ dont la saisie est obligatoire safchera sur un fond rouge tant que son contenu sera vide.
La "lettre dappel" permet lutilisateur de se positionner directement sur le champ en tapant
simplement une combinaison de touches du clavier (par exemple [ALT] + [Lettre]).
Dans le libell dun champ de saisie, si une lettre est prcde de "&", elle devient automatiquement "lettre dappel".
Par exemple : "&Nom du client" dcrit [ALT]+[N] comme lettre dappel.
Notes
Le traitement du "clic droit" (de la souris) permet dassocier une action au clic droit de la souris.
Le traitement est par exemple "validation des informations saisies", "appel de laide", ... Le traitement est choisi parmi ceux des boutons (texte et graphique) prsents dans la fentre.
Parfois il est plus utile dutiliser les lettres dappel plutt que les actions de souris.
WinDev permet de raliser facilement des interfaces (IHM) o lutilisation de
la souris nest pas ncessaire. Par exemple, pour des applications de points
de vente (la place manque sur les comptoirs !) ou dans le domaine industriel :
bornes interactives, machine-outil, ...
Partie 3 : Fentres et champs
179
Notes
Onglet "Dtail"
Longlet permet de dnir les diffrentes fonctionnalits sappliquant au champ de saisie.
Quelques points importants :
Dans le cas dune saisie multi-ligne, il est possible de slectionner le mode de dlement
des informations dans le champ (onglet "Dtail" de la fentre de description).
Si le champ est en "Dlement Horizontal ET Vertical", le passage la ligne suivante seffectue par la combinaison de touches [CTRL] + [ENTREE] (standard Windows) ou [ENTREE].
Le saviez-vous ? La taille maximale dune variable texte est de 2 Go. En
tapant 3 lettres par seconde, il faudrait ... plus de 22 ans pour remplir le
champ !
Astuce
Il est galement possible dafcher et de rendre actifs les liens (URL par exemple) prsents
dans le texte multi-ligne.
Pour les champs de type numrique, il est possible de saisir une valeur minimale et maximale (dans longlet "Dtail" de la fentre de description du champ). Lors de la saisie dans
ce champ, WinDev contrlera automatiquement que ces valeurs sont respectes. Il est possible dinformer lutilisateur des valeurs saisir en afchant les bornes soit dans la bulle
daide, soit dans le texte dindication.
Saisie obligatoire : si la saisie de ce champ est obligatoire, il sera possible de se positionner
sur un autre champ uniquement si une valeur a t saisie.
Saisie assiste : si le champ est li une rubrique cl, la valeur trouve dans le chier de
donnes et correspondant aux premires lettres saisies est automatiquement propose.
Vrier lorthographe : si Open Ofce et ses dictionnaires sont installs sur le poste de lutilisateur, la correction orthographique sera automatiquement propose lutilisateur.
Mmoriser la valeur : permet de mmoriser la dernire valeur saisie dans le champ avant la
fermeture de la fentre. Cette valeur sera automatiquement propose la prochaine ouverture de la fentre.
Historique des saisies : permet de proposer les dernires valeurs saisies par lutilisateur
pour ce champ.
Retourne NULL si vide : retourne la valeur NULL si le champ na pas de valeur (Attention ! Ni
0, ni chane vide !).
La valeur NULL est trs utile pour grer le passage de paramtres une
requte et rendre les conditions optionnelles pour des recherches multicritres. Nous aborderons cela plus tard lors de la leon sur lditeur de
requtes.
Mode ellipse : Permet de tronquer le contenu du champ si ncessaire. Si le champ est tronqu "en n", les caractres "..." remplaceront la n du texte lafchage.
180
"Pour le vrier, cliquez sur le bouton "Normal". Le message "Code de sortie du champ NOM"
Astuce
Bouton VALIDATION
Lorsquun bouton est en Validation, la frappe de la touche [RC] ou [Entre] excute le traitement
du bouton, le code de sortie du champ qui tait en cours est excut.
"Pour le vrier, repositionnez-vous sur le champ "Nom" puis cliquez sur le bouton "Validation".
181
Astuce
Bouton INTERRUPTION
Un bouton en Interruption signie que lorsque le bouton est activ, le code de sortie du champ
qui tait en cours nest pas excut. Le code du bouton sexcute, puis le curseur est repositionn
sur le champ.
"Pour le vrier, repositionnez-vous sur le champ "Nom" puis cliquez sur le bouton "InterrupAstuce
tion". Seul le code du bouton sexcute, le code de sortie du champ ne sexcute pas.
Un bouton INTERRUPTION sera par exemple utilis pour appeler une fentre (an
dinterrompre la saisie en cours sans valider) puis revenir pour continuer la saisie.
Cest gnralement le type utilis pour les boutons "Aide".
Bouton ABANDON
Lorsquun bouton est en Abandon, la frappe de la touche [ESC] ou [Echap] excute le traitement
du bouton, le code de sortie du champ qui tait en cours nest pas excut.
Astuce
Attention !
"Pour le vrier, repositionnez-vous sur le champ "Nom" puis cliquez la touche "Echap".
La "croix" est identique un bouton de type Abandon. Lors du clic sur la "croix",
la fentre est ferme en excutant le code du bouton Abandon de la fentre. Le
code de fermeture de la fentre est ensuite appel. Lquivalent de cliquer sur la
"croix" est dappuyer sur la combinaison de touches [Alt]+[F4].
Bouton AIDE
Lorsquun bouton est de type Aide, la validation du bouton afche automatiquement laide associe au champ en cours (active normalement par [F1]) sans excuter les codes de sortie et
dentre du champ en cours.
Rcapitulatif
Si votre fentre ne comporte pas de champs de saisie
Type de bouton utiliser
Notes
"Dans notre fentre, appuyez sur [F2] : une fentre de type "Info" safche.
183
Astuce
Fentre daccueil
Bouton minuterie
Un bouton de votre fentre peut tre dni comme bouton minuterie : au bout dune certaine
dure, le bouton sexcutera automatiquement. Ce type de bouton est trs utile pour ne pas bloquer des enregistrements (par exemple, la che dun client, pendant la pause djeuner) : il suft
de dnir le bouton annuler comme bouton minuterie.
"Un bouton minuterie est prsent dans la fentre de test. Le dlai dexcution de ce bouton
est de 5 minutes. Lutilisateur peut le modier lui-mme. Il suft deffectuer un clic droit sur
le bouton et de slectionner loption "Validation automatique ...". Une fentre apparat
permettant lutilisateur de dterminer le dlai de la validation automatique.
Bouton On/Off
Les boutons On/Off (galement appels bouton poussoir) sont des boutons qui fonctionnent
comme des interrupteurs. Les boutons On/Off passent dun tat "normal" un tat "enfonc" et
inversement lorsque lutilisateur clique sur ce type de bouton.
Image dun bouton
Il est possible dassocier des images aux boutons. Deux types dimages peuvent tre utiliss :
limage qui illustre le bouton. Dans ce cas, le bouton est un bouton graphique :
limage qui dnit la forme et le fond du bouton :
Limage associe au bouton peut permettre de grer :
les tats du bouton (normal, enfonc, gris, focus, survol). Dans ce cas, limage contient les
diffrents dessins associs chaque tat. Ces images sont places horizontalement.
lanimation du bouton. Dans ce cas, limage du bouton contient les diffrents dessins de
lanimation pour chaque tat gr. Ces images sont places verticalement.
Limage du bouton peut tre :
une image que vous avez cre.
choisie parmi celles proposes dans le catalogue de WinDev (dans les"Cliparts" ou dans les
"Boutons graphiques" par exemple).
184
Astuce
Il est aussi possible dutiliser pour le bouton une image avec un fond transparent. Dans ce cas,
vous pouvez :
soit crer une image dont la couleur de fond est "Magenta clair".
soit dnir que la couleur du point (pixel) en haut gauche de limage est la couleur transparente.
Nous vous conseillons de :
ne pas donner de libell un bouton graphique dont limage comporte un
libell, sinon le bouton comportera deux libells.
ne pas mlanger dans une mme fentre, les boutons graphiques et les
boutons texte.
Le libell dun bouton texte ou dun bouton graphique peut tre modi par programmation avec
la proprit ..Libell. Si le libell contient le caractre "&", la lettre qui suit sera souligne et deviendra la lettre dappel du bouton :
BTN_Texte..Libell = "Nouveau &libell"
De la mme faon, limage dun bouton graphique peut tre modie par programmation :
BTN_Image..Libell = "MonImage.BMP"
La proprit ..Libell reconnat automatiquement si cest le libell ou limage qui doit tre modi.
Type de champ : Image
Rsum
Les champs images permettent dafcher des images, statiques ou animes. Il est ainsi possible
dafcher les images dun catalogue de produits, la photo dune personne, ...
Ces images peuvent tre au format BMP, JPEG, GIF, PCD, PSD, TGA, TIF, PNG, ICO (icnes Windows), EMF, WMF, CUR, OS2 (BMP sous OS/2), PCX, SVG.
Tous les modes sont supports du mode "256 couleurs" au mode "couleurs vraies" (16 bits, 24
bits ou 32 bits).
Les champs images peuvent galement servir de zones de clicage.
Exemple pratique
185
Les images statiques sont les images les plus courantes. Pour utiliser une image statique dans
une application WinDev, il suft de crer un champ image et dassocier ce champ un chier
image. Cette image peut tre slectionne dans un des rpertoires de votre disque, ou provenir du
catalogue dimages.
WinDev permet de paramtrer directement le mode dafchage de limage (onglet "Gnral" de la
fentre de description) :
Mode dafchage
186
Exemple
Description
100 %
100 % Centr
Etir
Rpt
Homothtique
Limage est agrandie proportionnellement pour tre afche entirement dans le champ image. Limage est
cadre en haut gauche.
Homothtique
tendu
Homothtique
centr
Homothtique
centr tendu
Homothtique
sans agrandissement
Limage peut tre rduite si ncessaire mais ne dpassera pas sa taille originale si le champ daccueil est
trop grand.
Homothtique
centr sans
agrandissement
Limage est centre. Limage peut tre rduite si ncessaire mais ne dpassera pas sa taille originale si le
champ daccueil est trop grand.
Loption "Afchage Haute Qualit" permet en mode homothtique damliorer la qualit de limage
lorsque celle-ci est rduite par rapport sa taille initiale.
Attention !
WinDev gre des images avec un fond transparent. Dans ce cas, il faut :
soit crer une image avec une couleur de fond "Magenta Clair" (couleur RVB : 255, 0, 255).
Le magenta est automatiquement considr comme la couleur de transparence.
soit crer une image dont la couleur du pixel (point) en haut gauche est la couleur de rfrence pour la transparence. Vous tes matre de la couleur "transparente".
La couleur "transparente" est analyse dans la totalit de limage. Il peut donc y
avoir des zones transparentes en plein centre de limage. Cela peut donner des
effets dafchage, vriez les images !
187
Le catalogue dimages
Ds quune image peut tre afche dans un champ, une fentre, WinDev propose dutiliser le catalogue dimages grce au bouton "Catalogue". Ce catalogue contient plusieurs milliers dimages,
de cliparts, ...
Pour slectionner un clipart, vous pouvez effectuer une recherche selon un mot-cl.
Dans la fentre de recherche :
Saisissez un mot-cl (par exemple "Animaux")
Indiquez si ncessaire le thme, les dimensions et la catgorie de recherche.
Cliquez sur le bouton de recherche (les jumelles). Les images se rapprochant le plus du motcl safchent dans la fentre.
Choisissez limage que vous prfrez en cliquant dessus (par exemple un poisson) et validez.
Le nom de limage spci safche alors dans la fentre de description de limage et le chier de
limage (au format voulu) est copi dans le rpertoire du projet.
188
"La fentre "FEN_ChampImage.WDW" utilise galement une image anime par WinDev. Le
premier champ Image contient limage dans sa totalit : cette image est compose de 6
dessins en largeur, et de 4 dessins en hauteur. Nous allons voir en dtail le paramtrage
utilis pour crer limage anime.
Cette fentre contient tous les paramtres de lanimation. On retrouve dans cette fentre le
nombre de dessins utiliss en largeur et en hauteur. Pour tester ces paramtres sur limage
en cours, cochez la case "Utiliser limage du champ". Vous pouvez modier les paramtres de
lanimation et tester immdiatement leur effet.
Exemple
189
Astuce
Image clicable
WinDev permet de transformer vos images en images clicables en ... un clic de souris. En effet, il
suft de :
1. Afcher la description de limage.
2. Dans longlet "Dtail", slectionner les options :
"Cette image est une zone de clicage" : cette option permet de dnir que limage peut tre
clique
"Prioritaire pour les clics souris" : cette option permet de grer le clic sur limage quelle que
soit laltitude du champ (premier plan ou non).
3. Un nouveau traitement est alors associ limage : Code de clic sur limage. Dans ce code,
vous pouvez grer leffet du clic sur le champ.
Le mode 9 images permet une image prsente dans un champ Image de sadapter automatiquement la taille du champ.
Prenons un exemple simple : une fentre redimensionnable. Pour harmoniser la position des
champs lors du redimensionnement, WinDev propose le mcanisme de lancrage (nous le verrons
plus tard dans ce chapitre). Dans ce cas, le champ Image peut sagrandir en mme temps que la
fentre. Le mode 9 image permet doptimiser le comportement de limage.
190
Astuce !
Les slecteurs doptions sont galement appels "case doptions". Ils permettent de slectionner
une option et une seule, parmi celles proposes.
Selon le mode dafchage slectionn, chaque option peut tre
constitue :
dune case de slection et dun libell
dune case de slection, dun libell et dun sous-libell
dune image, dun libell (et si ncessaire dun sous-libell).
Les diffrents lments constituant loption (image, libell et sous-libell) doivent tre saisis lors
de la description du slecteur sous lditeur. Ils sont modiables par programmation.
Comment diffrencier le slecteur et linterrupteur ?
Le slecteur est galement appel "Bouton radio". un moyen mnmotechnique
simple : pensez aux anciennes radios : le bouton permettait de slectionner une
seule frquence !
Le slecteur permet de slectionner une seule option.
Exemple pratique
"Cliquez sur les diffrents boutons, modiez les slecteurs. Constatez ce quil se passe.
"Retournez sous lditeur.
Caractristiques des slecteurs
WinDev propose quatre modes dafchage des slecteurs :
slecteur standard.
slecteur standard avec sous-libells.
slecteur au look Vista (avec possibilit dutiliser une image pour chaque option).
slecteur au look Vista avec sous-libells (avec possibilit dutiliser une image pour chaque option).
191
Notes
Pour tous ces types de slecteur, il est possible dassocier chaque option :
un entier (qui peut prendre une valeur de 1 N, N tant le nombre total doptions du slecteur).
La premire option a le numro 1, la deuxime le numro 2, ... Les options sont numrotes de
haut en bas et de gauche droite.
Dans notre fentre :
"SEL_Civilit = 1" signie que loption "Monsieur" est slectionne,
"SEL_Civilit = 2" signie que loption "Madame" est slectionne
et "SEL_Civilit = 3" signie que loption "Mademoiselle" est slectionne.
une valeur renvoye spcique. Cette valeur renvoye est spcie dans lcran "Contenu".
Dans notre exemple :
SEL_PlatDuJour = "Moussaka" signie que loption "Moussaka" est slectionne.
SEL_PlatDuJour = "Parmentier" signie que loption "Parmentier" est slectionne.
SEL_PlatDuJour = "Cont" signie que loption "Cont" est slectionne.
Utiliser la numrotation ou les valeurs renvoyes ?
La programmation des slecteurs renvoyant un entier ou une valeur est diffrente. Lavantage de lutilisation des valeurs renvoyes est visible lors de linsertion ou du dplacement dune option dans le slecteur :
Si le slecteur renvoie un entier, linsertion ou le dplacement dune option
dans le slecteur oblige revoir tout le code de gestion de la valeur du slecteur (pour grer le dcalage des numros).
Si le slecteur renvoie une valeur spcique, linsertion dune option dans le
slecteur entrane uniquement la prise en compte de la nouvelle option. Linsertion dune option nentrane aucune modication.
"Etudiez le code des diffrentes actions proposes par la fentre : le code utilis pour la
gestion des deux slecteurs prsente quelques diffrences.
192
Rsum
Les interrupteurs sont galement appels "cases cocher". Ils permettent de choisir si la valeur
de chaque option propose est "vraie" ("Oui") ou "fausse" ("Non").
Selon le mode dafchage slectionn, chaque option peut tre constitue :
dune case cocher et dun libell
dune case cocher, dun libell et dun sous-libell
dune image, dun libell (et si ncessaire dun sous-libell).
Les diffrents lments constituant loption (image, libell et sous-libell)
doivent tre saisis lors de la description de linterrupteur sous lditeur. Ils sont
modiables par programmation.
Exemple pratique
"Retournez sous lditeur. Nous allons tudier le code associ aux diffrents boutons.
Caractristiques des interrupteurs
WinDev propose quatre modes dafchage des interrupteurs :
interrupteur standard
interrupteur standard avec sous-libells
interrupteur au look Vista (avec possibilit dutiliser une image pour chaque option)
interrupteur au look Vista avec sous-libells (avec possibilit dutiliser une image pour chaque
option)
Chaque option dun interrupteur est "repre" par un indice (qui peut prendre une valeur de 1 N,
N tant le nombre total doptions de linterrupteur).
La premire option a le numro 1, la deuxime le numro 2, ... Les options sont numrotes de
haut en bas et de gauche droite :
"INT_Loisir[2] = Vrai" signie : "Ecrire" est coche.
"INT_Loisir[3] = Faux" signie : "Danser" nest pas coche.
Lorsquil y a plusieurs options, linterrupteur se comporte comme un tableau doptions.
Pour accder une option, il suft de passer lindice de loption en utilisant la syntaxe avec les
crochets [ ].
193
Pour initialiser une case cocher (bouton "Initialiser linterrupteur" dans notre exemple), il faut
initialiser le choix correspondant avec la valeur "Vrai" ou "Faux" selon le cas.
INT_Loisir[2] = Vrai
Pour connatre la valeur dune option (bouton "Rcuprer les options" dans notre exemple), il suft
de rcuprer la valeur du champ ("Vrai" ou "Faux").
Notes
Astuce
194
Rsum
Attention !
Les listes sont toujours droules. Cest pourquoi on les nomme galement "listes droules".
Elles permettent de visualiser plusieurs lments et den slectionner
un ou plusieurs. Une liste peut contenir du texte et/ou des graphismes.
Lors de la cration dun champ "Liste", un assistant dmarre et propose
de crer :
une liste dont le contenu est li un chier de donnes ou une
requte (liste chier).
une liste dont le contenu est li une variable (liste sur source).
une liste dont vous dnissez le contenu dans lditeur ou par programmation (liste mmoire).
Rgles appliquer pour connatre le type de liste crer
Utilisez une liste lie un chier de donnes ou une requte lorsque vous
souhaitez proposer lutilisateur une liste de valeurs qui sont contenues dans
un chier de donnes. Si la liste est lie un chier de donnes, cest tout le
contenu du chier de donnes qui est propos directement. Si la liste est lie
une requte, la liste contiendra une slection denregistrements du chier de
donnes.
Utilisez une liste dont le contenu est dni dans lditeur si les valeurs sont
"STATIQUES". Elles ne changent pas durant le droulement du programme.
Utilisez une liste remplie par programmation lorsque le contenu de la liste est
issu de calculs ou si la slection des lments intgrer la liste ne peut tre
ralise par une requte.
Utilisez une liste dont le contenu est li une variable lorsque le contenu de la
liste est par exemple issu de calculs raliss laide dune variable.
195
Exemple pratique
Notes
Liste mmoire mono slection, remplie par programmation. Cette liste est vide et peut tre
remplie avec le bouton "Remplir".
Liste mono slection
Une liste mono slection est quivalente une combo ou un slecteur.
Un seul choix est possible. Selon linterface de votre application, choisissez le
champ qui permet le plus facilement lutilisateur de slectionner son choix.
Liste chier contenant la liste des collaborateurs. Cette liste est automatiquement remplie
avec le contenu du chier de donnes associ.
Liste sur source afchant la liste des mois. Cette liste est automatiquement remplie avec le
contenu de la variable associe.
Les deux listes du bas sont des listes mmoire multi-slections.
Dans le cas dune liste mmoire, vous disposez de deux mthodes pour remplir la liste :
sous lditeur,
par programmation.
Sous lditeur, rien de plus simple : le contenu dune liste peut tre dni directement dans la
fentre de description du champ (onglet "Gnral", champ "Contenu initial"). Vous pouvez bien
entendu saisir plusieurs valeurs. Pour aller la ligne suivante, appuyez sur la touche [Entre].
Pour remplir une liste par programmation, il faut utiliser la fonction ListeAjoute.
196
"Dans lexemple pratique, linitialisation de la liste mmoire est ralise dans le bouton
"Remplir". Le code utilis est le suivant :
// Ajoute Lundi dans la liste LISTE_Jour
ListeAjoute(LISTE_Jour, "Lundi")
Remplissage dune liste partir dun fichier de donnes ou dune requte
Notes
Dans le cas dune liste chier, le remplissage est effectu partir des lments fournis lors de
la cration de la liste. Ces informations sont galement disponibles dans longlet "Contenu". Ces
informations sont les suivantes :
le chier de lanalyse ou la requte qui servira de source de donnes pour le remplissage.
Si la requte nexiste pas lors de la cration du champ, il est possible de
crer la requte en mme temps que le champ. La requte sera alors intgre la fentre qui contient le champ.
Attention : si vous utilisez une requte intgre, cette requte sera utilise
uniquement pour ce champ. Elle ne pourra pas tre rutilise dans votre
projet.
Ce chier de donnes ou cette requte sera lu(e) automatiquement sans avoir crire une
seule ligne de code.
la rubrique afcher dans la liste.
la cl de parcours utilise : cette rubrique sert de tri pour le remplissage de la liste et donc
indique lordre dans lequel seront visualises les valeurs de la liste.
la valeur rcupre : lors de la slection dun lment de la liste, la valeur rcupre pourra
tre :
soit lindice de la ligne slectionne,
soit une valeur du chier de donnes.
Gnralement, on choisit comme valeur rcupre une rubrique du chier de donnes. Il
sagit le plus souvent de la cl unique, ce qui permet de faire par exemple des recherches
dans les chiers de donnes.
"Dans lexemple pratique, consultez lcran "Contenu" de la liste "Sur Fichier" pour vrier les
Notes
197
Il est par exemple possible de remplir une liste avec des informations contenues dans un tableau
WLangage. Le tableau est une variable globale de la fentre :
MonTableauMois est un tableau de 12 chanes
MonTableauMois = ["Janvier", "Fvrier", "Mars", "Avril", ...
"Mai", "Juin", "Juillet", "Aot", "Septembre", ...
"Octobre", "Novembre", "Dcembre"]
Dans le cas dune liste sur source, le remplissage est effectu partir des lments fournis lors
de la cration de la liste. Ces informations sont galement disponibles dans longlet "Contenu".
Ces informations sont les suivantes :
le nom de la variable source,
la variable afcher dans la liste,
la variable mmorise.
"Dans lexemple pratique, consultez lcran "Contenu" de la liste "Sur source" pour vrier les
caractristiques de la liste sur source utilise.
Caractristiques de la liste
Lorsque la liste est cre, ses caractristiques sont modiables directement dans la fentre
de description du champ (option "Description" du menu contextuel). Les diffrents onglets permettent de prciser toutes les options des listes.
Par exemple, longlet "Dtail" permet de :
dnir si la liste est multislection.
dnir si la liste est trie.
si lascenseur doit afcher une bulle, si le dplacement doit tre ralis au pixel, ...
Programmation dune liste
Notes
La programmation des champs Liste est trs simple avec WinDev : il suft dutiliser les fonctions
WLangage commenant par les lettres LISTE. Ces fonctions peuvent tre utilises sur les listes
mmoire, chier ou sur source.
Vous ne savez pas si la fonction peut tre utilise sur une liste mmoire, chier
ou sur source ? Consultez laide en ligne ! Utilisez la touche F1 sur le nom de la
fonction.
Pour modier un lment dans une liste, deux mthodes sont disponibles :
la fonction ListeModie
laffectation directe en utilisant lindice de llment modier.
ListeModifie(LISTE_Jour, "LUNDI") // Modifie llment en cours
ListeModifie(LISTE_Jour, "LUNDI",1) // Modifie llment 1
LISTE_Jour[1] = "LUNDI"
// Modifie llment 1
Remarque : Pour accder un lment dune liste, il faut prciser son indice. Le premier lment
dune liste a lindice "1".
198
Dans une liste mono-slection, pour rcuprer llment slectionn, il suft de connatre lindice
de llment slectionn. La fonction ListeSelect retourne lindice de llment slectionn. Si
aucun lment nest slectionn, la fonction ListeSelect retourne la valeur "1".
Indice est un entier
Jour est une chane
Indice = ListeSelect(LISTE_Jour)
Jour = LISTE_Jour[Indice]
//Rcupre llment slectionn
Remarque : Dans le cas dune liste chier, si la valeur rcupre correspond une valeur du
chier de donnes, il sufra dutiliser directement le nom de la liste pour connatre la valeur slectionne.
Dans une liste multi-slections, pour rcuprer toutes les options slectionnes, il faut utiliser la
fonction ListeSelect. Tant que la fonction ListeSelect ne renvoie pas la valeur "-1", cette fonction
retourne lindice de loption slectionne.
// Lignes slectionnes dans une liste multi-slections
i est un entier = 1
LigneSelectionnee est un entier = ListeSelect(Liste1,1)
TANTQUE LigneSelectionnee <> -1
Trace("La ligne n"+ LigneSelectionnee +" est slectionne")
i++
LigneSelectionnee = ListeSelect(Liste1,i)
FIN
//liste vide
Pour chercher un lment dans une liste, il faut utiliser la fonction ListeCherche.
SI ListeCherche(LISTE_Jour, Valeur) = -1 ALORS
//nexiste pas
SINON
//existe dj
FIN
199
200
Pour remplir une liste image mmoire, elle doit tre remplie par programmation grce la fonction ListeAjoute. Par exemple :
ListeAjoute(LSI_ListeImg1,"image abandon.ico","abandon.ico")
// Ajoute limage "abandon.ico" et le libell "Image abandon.ico"
// dans la liste image LSI_ListeImage1
Remplir une liste image partir dun fichier de donnes ou dune requte
Notes
Lors de la cration dun champ liste image remplie partir dun chier de donnes ou dune
requte, vous devez indiquer le chier de lanalyse ou la requte qui servira de source de donnes
pour le remplissage. Ce chier de donnes (ou cette requte) doit contenir :
une rubrique qui correspondra au libell de llment afch dans la liste image.
une rubrique qui correspondra limage de llment afch dans la liste image.
Si la requte nexiste pas lors de la cration du champ, il est possible de crer
la requte en mme temps que le champ. La requte sera alors intgre la
fentre qui contient le champ.
Attention : si vous utilisez une requte intgre, cette requte sera utilise uniquement pour ce champ. Elle ne pourra pas tre rutilise dans votre projet.
Les autres lments indiquer dans lassistant de cration de la liste image sont identiques
ceux dune liste simple.
Remplissage dune liste image sur source
Il est par exemple possible de remplir une liste image avec des informations contenues dans un
tableau, une classe, une structure WLangage. Cet lment est une variable globale de la fentre
ou du projet.
Dans le cas dune liste image sur source, le remplissage est effectu partir des lments fournis
lors de la cration de la liste image. Ces informations sont galement disponibles dans longlet
"Contenu". Ces informations sont les suivantes :
le nom de la variable source
la variable qui correspondra au libell de llment afch dans la liste image.
une rubrique qui correspondra limage de llment afch dans la liste image
201
Notes
La programmation des champs Liste image est trs simple avec WinDev : comme pour les listes,
il suft dutiliser les fonctions WLangage commenant par les lettres LISTE. Ces fonctions peuvent
tre utilises sur les listes image mmoire et/ou chier.
Vous ne savez pas si la fonction peut tre utilise sur une liste image ? Consultez
laide en ligne ! Utilisez la touche F1 sur le nom de la fonction.
De plus, certaines proprits spciques aux listes image peuvent galement tre utilises pour
manipuler les images ou le mode dafchage de la liste.
Modifier une liste image mmoire par programmation
Pour modier un lment dans une liste image, vous pouvez utiliser :
la fonction ListeModie.
//Modifie llment en cours
ListeModifie(LSI_ListeImg1,"image abandon.ico","abandon.ico")
//Modifie llment 1
ListeModifie(LSI_ListeImg1,"image abandon.ico", "abandon.ico", 1)
202
Attention !
La combo se droule lorsque le champ est slectionn. Il existe deux types de combos :
les combos dans lesquelles un lment peut tre slectionn dans la liste. Ces combos
sont appeles "combo sans saisie".
Lutilisateur droule la liste pour slectionner un lment.
les combos dans lesquelles un lment peut tre slectionn dans la liste ou directement
saisi dans le champ de la combo. Ces combos sont appeles "combo avec saisie".
Lutilisateur peut au choix saisir une valeur ou bien drouler la liste pour slectionner un
lment.
Le type de la combo se dnit dans la fentre de description de la combo (onglet "Gnral").
Au contraire des listes, les combos ne sont pas multi-slections : un seul lment peut tre slectionn dans la combo.
203
Exemple pratique
Attention !
La programmation des combos est identique celle des listes. Les fonctions WLangage utiliser commencent par les lettres LISTE. Des fonctions spciques aux combos (commenant par
COMBO) sont galement utilisables.
Le seul point particulier concerne le type de combo : "avec saisie" ou "sans saisie".
Contrairement au WEB, une combo na jamais dlment slectionn par dfaut,
donc elle est vide. Il est conseill de ne jamais laisser vide une combo, sauf si la
combo est en saisie.
Pour affecter ou rcuprer le champ dune combo avec saisie, la syntaxe est la mme que pour
affecter ou rcuprer un champ de saisie :
// Affecte la slection de la combo
COMBO_Prnom = "Julie"
// Rcupre la slection de la combo
Ch est une Chane
Ch = COMBO_Prnom
204
Pour rcuprer llment slectionn dans la combo, la mthode est similaire une liste. Il faut
utiliser la fonction ListeSelect pour rcuprer lindice de llment slectionn. Ensuite, il faut
utiliser cet indice pour rcuprer la valeur.
// Rcupre llment slectionn
Indice est un entier
Ch est une chane
Indice = ListeSelect(COMBO_Combo1)
Ch = COMBO_Combo1[Indice]
// Rcupre le 3me lment de la liste
Ch est une Chane
Ch = COMBO_Combo1[3]
"Ouvrez la fentre "FEN_ChampTableAvance.WDW" sous lditeur. Cette fentre prsente lutilisation des tables chier avec ruptures ainsi que les tables sur source.
205
Une table mmoire peut tre remplie par programmation grce la fonction TableAjouteLigne.
Cette fonction admet en paramtre le nom de la table et le contenu de la ligne. Le contenu de
la ligne est donn colonne par colonne : chaque valeur de colonne est spare par "une virgule".
Notes
Lors de la cration dun champ table remplie partir dun chier de donnes ou dune requte,
vous devez indiquer plusieurs informations :
le chier de donnes de lanalyse ou la requte qui servira de source de donnes pour le
remplissage.
Si la requte nexiste pas lors de la cration du champ, il est possible de
crer la requte en mme temps que le champ. La requte sera alors
intgre la fentre qui contient le champ.
Attention : si vous utilisez une requte intgre, cette requte sera utilise uniquement pour ce champ. Elle ne pourra pas tre r-utilise dans
votre projet.
206
Notes
Ces informations sont galement disponibles dans longlet "Contenu" de la fentre de description
de la table chier.
Notes
Lors de la cration dun champ table rempli partir dune variable, vous devez indiquer plusieurs
informations :
la variable tableau qui servira de source de donnes pour le remplissage.
Cette variable sera lue automatiquement sans avoir crire aucune ligne de code.
les variables utilises pour chaque colonne de la table.
207
Caractristiques de la table
Notes
Lorsque la table est cre, ses caractristiques sont modiables directement dans la fentre de
description du champ (option "Description" du menu contextuel).
Vous retrouverez toutes les caractristiques indiques dans lassistant, et dautres options trs
intressantes.
La fentre de description dune table est compose de deux zones :
la zone suprieure prsentant le nom de la table, des colonnes et leur type
la zone infrieure compose des diffrents onglets de description.
Si le nom de la table est slectionn, la partie infrieure prsente les caractristiques de la table.
Si une colonne est slectionne, la partie infrieure prsente les caractristiques des colonnes.
Notes
208
Notes
La programmation des champs Table est trs simple avec WinDev : il suft dutiliser les fonctions
WLangage commenant par les lettres TABLE. Ces fonctions peuvent tre utilises sur les tables
mmoire, sur source et/ou chier.
Vous ne savez pas si la fonction peut tre utilise sur une table mmoire, sur
source ou chier ? Consultez laide en ligne ! Utilisez la touche F1 sur le nom de
la fonction.
Voici quelques-unes des fonctions les plus utiles pour manipuler une table mmoire :
TableModieLigne modie une ligne de la table (soit la ligne en cours, soit la ligne dont le
numro dindice est prcis).
TableSelect retourne lindice de la ligne en cours (slectionne) ou lindice dune des lignes
slectionnes dans le cas dune table multi-slections.
TableSelectPlus permet de slectionner par programmation une ligne de table en fonction
de son indice et/ou de slectionner plusieurs lignes.
TableSupprime permet de supprimer une ligne de table.
TableSupprimeTout vide toute la table mmoire.
"La fentre "FEN_ChampTable" permet deffectuer plusieurs manipulations sur une table
mmoire. Consultez les traitements associs aux boutons "Slectionner" et "Modier".
tats dune table mmoire
"Testez la fentre "FEN_ChampTable.wdw". Si vous effectuez un clic droit sur une des tables,
le menu contextuel par dfaut safche :
209
Les options "Graphique" et "Calculs automatiques" sont disponibles uniquement si le clic droit a
t effectu sur une colonne de type numrique.
Voici quelques astuces pour optimiser le look de vos tables :
Pour utiliser un titre de colonne multi-lignes, il suft de cocher loption "Titre de colonne
multi-lignes" dans longlet "Dtail" de la fentre de description du champ Table.
Pour utiliser une couleur de fond dgrade, afchez longlet "Style " de la fentre de description du champ. Slectionnez llment "Cadre extrieur", puis slectionnez le cadre de
type "Dgrad".
Utilisation avance des tables : table avec ruptures
Pour amliorer le mode de visualisation des donnes dans une table, WinDev propose dutiliser
des tables avec ruptures. Il est ainsi possible dajouter un tri supplmentaire sur les donnes
afches.
"Sous lditeur, ouvrez la fentre de description de la table : dans longlet "Contenu", les
caractristiques du chier de donnes parcouru ainsi que de la rupture sont dnies.
Pour plus de dtails sur le fonctionnement dune table chier, mmoire ou sur donnes, consultez
laide en ligne (mot-cl : "Champ table").
Type de champ : Zone rpte
Rsum
Les zones rptes permettent de rpter "N" fois un ensemble de champs. Lors de cette rptition, les champs de la zone rpte peuvent afcher des informations diffrentes. Il est ainsi possible dafcher, chaque rptition, des enregistrements dune base de donnes.
210
Une zone rpte peut contenir plusieurs champs (libell, champ de saisie, image, ...). Chacun
des champs de la zone rpte peut tre associ un attribut.
Cet attribut permet de modier une proprit du champ associ (sa valeur, son libell, sa couleur,
sa visibilit, ...). Il est galement possible de crer un attribut dans la zone rpte sans que celuici ne soit associ un champ : on parle alors dattribut libre (cet attribut peut contenir la valeur
dun compteur par exemple).
Le comportement dune zone rpte mmoire est trs proche dun champ Table.
Dans une zone rpte mmoire, chaque ligne de la zone rpte est identie par un indice.
Pour ajouter une ligne dans une zone rpte, il faut utiliser la fonction ZoneRpteAjouteLigne.
Cette fonction attend en paramtre :
le nom de la zone rpte,
les valeurs des attributs (dans lordre) spares par des virgules :
// Ajout dune ligne dans la zone rpte
// La zone rpte contient 4 attributs, associs respectivement
// aux champs : LIBMAQUETTE, IMGMAQUETTE, QUANTITE, PRIXUNI
ZoneRpteAjouteLigne(ZR_Maquette, ...
"Maquette n1", "IMAGE_MAQUETTE1.JPG", 10, 45.65)
211
Lors de la cration dun champ zone rpte chier vous devez indiquer le chier de donnes de
lanalyse ou la requte qui servira de source de donnes pour le remplissage.
Ce chier de donnes ou cette requte sera lu automatiquement sans avoir crire aucune ligne
de code.
La cl de parcours slectionne sert de tri pour le remplissage de la zone rpte et indique donc
lordre dans lequel seront visualises les valeurs.
Par exemple, vous pourrez visualiser dans une zone rpte :
la photographie dun produit
la description du produit
le prix du produit, ...
212
Il est galement possible de manipuler le champ Arbre ligne par ligne pour modier les proprits
dune ligne. Il est par exemple possible dutiliser :
la proprit ..Couleur pour modier la couleur dune ligne,
la proprit ..CouleurFond pour modier la couleur de fond dune ligne,
la proprit ..Police pour modier les caractristiques de la police dune ligne, ...
De la mme manire que les champs Liste, Table, Combo ou Zone Rpte, les champs arbre
peuvent tre de plusieurs types :
Arbre mmoire : le champ arbre est rempli par programmation.
Arbre chier : le champ arbre est rempli partir dun chier de donnes ou dune requte,
automatiquement, sans une seule ligne de code.
Arbre sur source : le champ arbre est rempli partir dune variable WLangage sans aucune
ligne de code.
Nous ne dtaillerons pas les diffrentes caractristiques des champs Arbre ainsi que les fonctions
de manipulation des arbres. Pour plus de dtails, consultez laide en ligne (mot-cl : "Arbre, Manipuler un arbre par programmation").
Type de champ : Table Hirarchique
Rsum
Une table hirarchique est le rapprochement entre un champ Table et un champ Arbre.
Ce champ se base sur la structure dun champ table (colonne, ligne, cellule), et possde une
colonne de type Arbre, permettant dintroduire la notion darborescence, de hirarchie.
Cette notion est inexistante dans une table.
Une table hirarchique peut tre :
remplie par programmation
base sur un chier de donnes.
213
Exemple pratique
"Pour affecter le champ jauge avec une valeur, il suft de faire une affectation, comme pour
un champ numrique.
JAUGE_Copie = 75
"Pour dnir les bornes minimales et maximales dune jauge, utilisez les proprits ..BorneMin et ..BorneMax :
JAUGE_Copie..BorneMin = 0
JAUGE_Copie..BorneMax = 100
"Voici le code du bouton "Excution" qui permet de faire voluer les jauges.
n est un entier
POUR n = 1 A 100
JAUGE_Horizontale = n
JAUGE_Verticale = n
JAUGE_Image = n
JAUGE_Blue = n
JAUGE_LCD = n
Multitache(1)
// pour rafrachir laffichage
FIN
214
" Dans chaque cas, il est possible de modier directement les informations afches dans le
Astuce
215
"Revenez sous lditeur de WinDev. Nous allons crer une fentre contenant un champ graphe
bas sur une requte. Cette requte (REQ_CA_par_annee) permet dobtenir le Chiffre
daffaires par anne.
1. Ouvrez la requte "REQ_CA_par_annee" sous lditeur.
2. Testez la requte.
"Nous allons maintenant crer le champ Graphe permettant dafcher les donnes de la
requte.
1. Crez une nouvelle fentre.
2. Dans cette fentre, crez un champ Graphe : sous le volet "Cration", dans le groupe
"Champs graphiques", cliquez sur "Graphe" puis cliquez dans la fentre pour crer le champ.
Lassistant de cration de graphe se lance.
3. Slectionnez le type du graphe crer (par exemple courbe)
217
218
Notes
Le champ Calendrier permet de crer un calendrier. Ce calendrier permet lutilisateur de slectionner une date.
Par dfaut, si un champ de saisie de type date est prsent en excution, lutilisateur pourra ouvrir un calendrier pour slectionner la date grce loption "Calendrier" du menu contextuel.
Lors de la description dun champ de saisie de type date, il est galement possible dafcher un bouton Calendrier. Ce bouton permet lutilisateur de slectionner la date voulue.
Exemple pratique
"Ouvrez la fentre "FEN_ChampAgenda". Cette fentre utilise un champ Agenda. Les diffrents
boutons prsentent quelques manipulations pouvant tre effectues sur un champ Agenda.
Type de champ : Planning
Rsum
Le champ Planning permet dafcher et de grer un planning. La diffrence principale entre un
champ planning et un champ Agenda est la suivante : un agenda concerne une ressource alors
quun planning concerne plusieurs ressources.
Exemple pratique
219
"Ouvrez la fentre "FEN_ChampOrganigramme". Cette fentre utilise un champ Organigramme. Testez cette fentre pour dcouvrir les possibilits du champ Organigramme. Le
menu contextuel du champ permet de crer une image, qui pourra tre imprime.
Type de champ : TreeMap
Rsum
Le champ TreeMap permet de visualiser graphiquement des donnes hirarchises. Il peut tre
par exemple utilis pour visualiser lespace disque occup par les chiers dun rpertoire.
Exemple pratique
"Ouvrez la fentre "FEN_ChampTreeMap". Cette fentre prsente les donnes afches dans
une table chier avec rupture sous forme de TreeMap.
220
Exemple pratique
221
Notes
Le champ Code-Barres permet dafcher simplement des codes-barres dans vos fentres.
Il est possible par exemple de lire le code-barres dun produit laide dun appareil spcialis,
dafcher le code-barres lcran et denregistrer sa valeur dans un chier de donnes.
Les codes-barres peuvent tre imprims soit depuis lditeur dtats, soit par programmation (fonction iImprimeCodeBarre).
222
"Pour affecter le champ potentiomtre avec une valeur, il suft de faire une affectation,
comme pour un champ numrique.
POT_Son = 75
"Pour dnir les bornes minimales et maximales dun potentiomtre, utilisez les proprits
..BorneMin et ..BorneMax :
POT_Son..BorneMin = 0
POT_Son..BorneMax = 100
223
Exemple
Un champ Web camra permet de visualiser une source vido provenant dune camra extrieure
relie lordinateur.
224
Exemple pratique
Les fonctions permettant de grer le champ Web camra commencent par VidoXXX :
Notes
Pour visualiser :
une image capture avec la fonction VidoCapture, utilisez un champ Image.
une squence vido capture avec la fonction VidoCapture, utilisez un champ ActiveX permettant de lire une vido.
"Pour afcher en direct la vido en provenance de la Web camra, utilisez la fonction VidoAfche.
"Pour comprendre le fonctionnement du champ Web camra, vous allez simplement charger
une fentre exemple et lexcuter.
225
Le champ ActiveX permet de grer simplement les contrles ActiveX. Les contrles ActiveX sont
des composants rutilisables utilisant la technologie ActiveX et pouvant tre intgrs dans une
fentre.
En dtail
Un ActiveX est associ des proprits et des mthodes. Ces proprits et mthodes peuvent
tre utilises en WLangage pour manipuler directement le champ ActiveX. Il suft dutiliser la syntaxe Automation du WLangage.
Par exemple :
// AX_LecteurAVI est un champ ActiveX
AX_LecteurAVI>>Zoom = 12
// Affectation dune proprit
AX_LecteurAVI>>Pause(10)
// Appel de mthode
Exemple
Champ OLE
Rsum
Plus techniquement, un objet OLE correspond des donnes encapsules contenant des donnes diverses telles que des textes, des images, des sons, ... Lencapsulation de donnes dans
des objets OLE permet dincorporer ces objets sans avoir besoin de connatre leur structure.
WinDev est un client OLE. Les applications dveloppes avec WinDev demandent des donnes,
afchent et stockent les objets OLE.
226
Les serveurs OLE mettent disposition des objets aux clients qui en font la demande. Ce sont par
exemple Paint Brush, Excel, WinWord, ...
En tant que client, WinDev sait grer des objets OLE. Il permet de :
dessiner un objet dans un champ OLE. Un objet peut tre par exemple une feuille Excel, une
image de Paint Brush ...
diter un objet OLE dans un champ OLE. Lobjet OLE peut tre :
- choisi sous lditeur ou par programmation.
- dni en fonction dun serveur ou dun chier.
Remarques :
En programmation, un champ OLE est manipul par des fonctions spciques. Une application
WinDev ne peut pas tre serveur OLE.
OLE version 1 et OLE version 2 sont grs (les versions suprieures ne sont pas gres).
Un objet OLE ne peut pas tre imprim avec WinDev. La mise jour de lobjet seffectue la
demande.
Un champ OLE ne peut contenir quun seul objet OLE.
Nous nallons pas dtailler le fonctionnement de ces deux types de champ.
Pour plus de dtails, consultez laide en ligne (mots-cls : "OLE", "Champ OLE", "ActiveX (champ)").
Type de champ : Bote outils
Rsum
Un champ Bote outils est constitu de plusieurs volets. Chaque volet peut contenir tous les
types de champs (y compris une autre bote outils).
Exemple pratique
227
En dtail
Pour associer des champs existants la barre doutils :
Mthode 1 : Ralisez un "Drag and Drop" du champ vers la barre doutils.
Mthode 2 : Dans la description de la barre doutils (onglet "Gnral"), cliquez sur le bouton
"Ajouter" et slectionnez le champ ajouter la barre doutils. Appliquez les modications, le
champ slectionn est automatiquement positionn dans la barre doutils.
Pour associer des nouveaux champs la barre doutils :
Mthode 1 : Ralisez un "Drag and Drop" du champ vers le champ "Barre doutils".
Mthode 2 : Dans la description de la barre doutils (onglet "Gnral"), cliquez sur le bouton
"Crer" et slectionnez le type de champ ajouter la barre doutils. Le champ slectionn est
automatiquement cr dans la barre doutils. Pour le modier, utilisez le bouton "Editer" : la description du nouveau champ apparat.
Exemple pratique
228
229
DE LAPPLICATION
Dure estime : 20 mn
230
Notes
Chaque projet WinDev est associ une feuille de styles. La feuille de styles permet de dnir les
caractristiques de chaque type de champ du projet.
Pour simplier lutilisation des styles, WinDev est livr avec de nombreux gabarits. Les gabarits
utilisent une feuille de styles spcique, contenant la description de linterface de tous les types
de champs pouvant tre utiliss.
Lors de la modication du style dun champ (onglet "Style"), WinDev propose de
surcharger les proprits du style en cours avec les options modies : cest le
mcanisme de surcharge des styles. Pour plus de dtails, consultez laide en
ligne.
Lors de la cration du projet, il est possible de dnir la charte graphique du projet. Cette charte
graphique correspond au gabarit qui sera utilis. A tout moment, il est possible de modier la
charte graphique utilise :
soit directement dans les options du projet. Pour modier la charte graphique :
1. Sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description".
2. Dans longlet "Style", modiez la charte graphique. Le changement est alors effectu pour
toutes les fentres du projet.
231
Notes
232
Notes
Il ne faut pas mettre systmatiquement lancrage sur tous les champs dune
fentre. Il faut choisir judicieusement les champs et les fentres sur lesquels
lancrage est utile.
Par exemple, dans une fentre contenant un champ Table, il peut tre intressant
de lier le redimensionnement de la table lorsque la fentre sagrandit.
Autre cas, une image contenant une photo pourra aussi tre redimensionne si
la fentre est agrandie.
Par contre, on vitera de redimensionner des champs de saisie, les boutons, les
slecteurs ou les interrupteurs.
Lancrage est symbolis par des ches rouges sur les cts du champ :
Remarque : Si votre fentre est redimensionnable et si vos champs ne sont pas ancrs, une AAD
(Aide Au Dveloppement) apparat automatiquement aprs analyse de votre fentre (une dizaine
de secondes est ncessaire) pour vous signaler le problme et vous aider ancrer les champs.
Tabulation/ordre de saisie
Lordre de saisie des champs est lordre dans lequel lutilisateur pourra saisir les valeurs dans les
diffrents champs de la fentre. Le passage dun champ un autre sera effectu lors de lappui
sur la touche [TAB] pendant lexcution.
Lordre de saisie par dfaut correspond lordre de cration des champs. Il peut tre modi :
soit en donnant un ordre de saisie automatique : le premier champ en saisie sera le champ
situ le plus en haut gauche, le deuxime sera celui qui est immdiatement situ droite
ou immdiatement en dessous ...
soit en spciant un ordre de saisie par slection.
"Pour dnir un ordre de navigation automatique, sous le volet "Fentre", dans le groupe
"Ordre", droulez "Navigation" et slectionnez loption "Dnir en automatique".
"Pour diter lordre de saisie des champs, sous le volet "Fentre", dans le groupe "Ordre",
droulez "Navigation" et slectionnez loption "Editer".
La fentre qui safche prsente lordre de navigation utilis dans la fentre en cours. Il est
possible de voir galement lordre de navigation utilis pour les champs dun plan spcique
ou de rechercher le nom dun champ (pour les fentres comprenant beaucoup de champs).
233
Par exemple :
Notes
Un aspect important de linterface dune application rside dans laspect de linterface. Un point
important est lharmonie des diffrents champs, leur alignement dans la fentre.
Pour vous aider raliser des interfaces respectant les normes de programmation, WinDev met
votre disposition plusieurs outils : grille, rgles, options dalignement, positionnement automatique, ... Voici quelques pistes pour choisir loutil qui vous convient le mieux.
Vous avez sans doute remarqu, lors de la cration de nos fentres dans les leons prcdentes,
des traits en pointills apparaissant lors du dplacement de vos champs dans la fentre. Cest le
positionnement automatique. Ces "rgles" vous aident positionner en temps rel vos champs.
Vous pouvez tout de suite voir si le champ est align avec le champ prcdent.
Pour paramtrer le positionnement automatique :
1. Sous le volet "Afchage", cliquez sur le bouton de regroupement ( ) du groupe "Options".
2. Dans la fentre qui safche, slectionnez longlet "Magntisme". Il est alors possible de
rendre le positionnement automatique actif ou non.
Pour dplacer vos champs sans utiliser le magntisme ou les rgles, maintenez
la touche [SHIFT] enfonce pendant le dplacement.
Mais il se peut que vous vouliez aligner certains champs de votre fentre aprs les avoir crs
(aprs leur dplacement par exemple). Vous pouvez utiliser les options dalignement. Ces options
sont toutes regroupes dans le volet "Alignement".
Pour utiliser les fonctionnalits de ce volet, il suft de slectionner plusieurs champs ( laide du
lasso de la souris ou bien avec la touche CTRL) et de choisir un des alignements prdnis. Le
champ pris pour base pour effectuer lalignement est le premier champ slectionn.
234
Notes
Si aucun des alignements prdnis ne vous convient, vous pouvez toujours effectuer un alignement entirement personnalis : sous le volet "Alignement", dans le groupe "Autres Alignements",
loption "Alignement personnalis" permet de paramtrer toutes les options.
Si vous souhaitez positionner vos champs au pixel prs, vous pouvez galement utiliser les rgles.
Les rgles sont afchables par les touches [CTRL] + [R].
Et enn, si vos interfaces doivent respecter toutes les options dnies pour les interfaces Windows (taille des champs, ...), vous pouvez utiliser le correcteur dinterface. Pour le lancer, sous le
volet "Alignement", dans le groupe "Autres Alignements", cliquez sur loption "Correcteur dinterface". Ce correcteur tudie votre interface et vous propose toutes les modications ncessaires.
Son utilisation est avance et est trs rare.
Plan/Onglet
Votre fentre contient un nombre de champs important ? Pourquoi ne pas utiliser les plans ou les
onglets pour regrouper les informations.
Les onglets
Les onglets permettent de regrouper les informations par thmes. Lutilisateur peut accder directement un thme en cliquant sur "le volet" voulu.
Les onglets ressemblent quelque chose de connu ? En effet, cest le systme utilis dans toutes
les fentres de description disponibles dans WinDev.
Le principe de fonctionnement des onglets est trs simple.
1. Crez le champ onglet. Sous le volet "Cration", dans le groupe "Conteneurs", droulez "Onglet et associs" et slectionnez loption "Onglet".
2. Crez autant de volets que ncessaire et donnez un libell chaque volet (onglet "Gnral"
de la description du champ).
3. Associez les champs sur les onglets voulus. Un champ peut tre commun tous les onglets
ou associ un onglet spcique.
235
Un champ ne peut tre associ qu un seul volet donglet. Le champ sera actif et visible lorsque
le volet donglet sera activ.
Votre onglet est prt fonctionner, aucune programmation spcique nest ncessaire.
Exemple
Les plans
Les plans permettent galement de regrouper les champs, tout en vitant la multiplication des
fentres. Mais avec les plans, ce nest plus lutilisateur qui dcide dafcher les champs, cest le
dveloppeur.
Les plans sont souvent utiliss dans les fentres de type "Assistant". Des boutons "Suivant" et
"Prcdent" permettent de passer dun plan un autre.
Lexemple "Assistant" (exemple didactique) livr avec WinDev montre lutilisation
des plans dans une fentre. Cet exemple est accessible depuis le volet "Assistants, Exemples et Composants" de WinDev.
Notes
Les plans sont trs faciles manipuler sous lditeur de fentres de WinDev. En effet, lorsque
vous souhaitez dcrire un nouvel cran sans changer de fentre, utilisez la touche [Page Suivante]
pour passer au plan suivant et la touche [PagePrcdente] pour passer au plan prcdent. Par
dfaut, le premier plan dune fentre est nomm "Plan 0". Chaque plan suivant est numrot :
"Plan 1", "Plan 2", ...
Pour simplier la manipulation des plans sous lditeur de fentres, le numro
du plan en cours est afch sous lditeur de fentres (dans la fentre daccueil
et dans la barre de message de lditeur).
Pour changer de plan par programmation, il suft dutiliser la proprit ..Plan. Par exemple :
// Code de clic du bouton PRECEDENT
MaFentre..Plan = MaFentre..Plan - 1
Notes
MaFentre est un mot-cl qui retourne le nom de la fentre qui contient le traitement o est excut MaFentre. Il peut tre utilis dans les traitements des
champs de la fentre, les traitements de la fentre et galement dans les procdures locales de la fentre.
Sparateur
Le sparateur est un champ permettant de dcouper une fentre en plusieurs zones. Ces zones
sont redimensionnables par lutilisateur nal. Le dcoupage peut tre horizontal, vertical ou une
combinaison des deux.
236
Notes
Grce aux sparateurs, lutilisateur peut ainsi personnaliser son environnement de travail selon
ses besoins.
Animation de fentres
Pour doter vos applications dun ct ludique, ou tonner favorablement un utilisateur au lancement, les fentres peuvent tre animes leur ouverture et/ou leur fermeture : une fentre
peut souvrir en tournant, en venant du fond de lcran, (un peu comme des effets de montage
vido).
Leffet peut tre x ou alatoire.
Cette fonctionnalit peut tre dnie dans les options du projet, dans la description de la fentre
ou par programmation.
Si une fentre charge de nombreux lments, une "animation" (qui seffectue indpendamment
des traitements en cours) permet lutilisateur de patienter sans sen rendre compte !
Cette fonctionnalit est utiliser avec parcimonie, pour ne pas agacer lutilisateur. Vous pouvez
par exemple la rserver la premire fentre de lapplication ou demander de nafcher quune
fentre sur 20 avec un effet visuel.
Il est possible danimer :
soit toutes les fentres de lapplication. Dans ce cas, lanimation est dnie au niveau du projet :
1. Sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description".
2. Dans la fentre de description du projet, cliquez sur longlet "Avanc".
3. Cliquez sur le bouton "Animations des fentres". Cet cran permet de dnir lanimation
pour la premire fentre du projet et / ou pour toutes les fentres de lapplication.
soit une ou plusieurs fentres donnes (onglet "Dtail" de la description de chaque fentre).
Grisage automatique des fentres
Votre application ouvre plusieurs fentres simultanment et vos utilisateurs ne savent plus quelle
fentre est celle utiliser ? L o les fentres inactives peuvent se griser automatiquement. Ainsi,
vous devinez instinctivement la fentre utiliser. Cette fonctionnalit sappelle GFI pour Grisage
des Fentres Inaccessibles.
Pour activer cette fonctionnalit :
1. Sous le volet "Projet", dans le groupe "Projet", cliquez sur "Description".
2. Dans la fentre de description du projet, cliquez sur longlet "Avanc".
3. Cochez loption "Activer le GFI".
Totaux dans les tables
Vous utilisez des tables mmoire ou chier dans vos applications ? Vous voulez afcher un total
mais vous vous demandez comment faire ? Faut-il parcourir le chier de donnes li la table ?
Faire une requte ?
237
Il y a une solution beaucoup plus simple : utiliser les calculs automatiques des colonnes : somme,
comptage ou moyenne. Il suft de :
1. Slectionner la position dafchage du calcul (onglet "Gnral" de la description de la table) :
Notes
Ergonomie de lapplication
Nous venons de voir comment amliorer lergonomie de vos champs et de vos fentres. Mais
il faut galement tenir compte de lergonomie gnrale de lapplication. En effet, des lments
comme le menu, le mode douverture des fentres de lapplication sont des lments importants
intervenants dans lapprciation de lutilisateur nal dans lapplication. Nous avons dj vu la
cration dun menu, nous allons voir en dtail, les modes de gestion du multi-fentrage.
WinDev propose plusieurs modes dutilisation du multi-fentrage :
utilisation dune interface MDI
multi-fentrage partir de fentres libres.
Nous allons voir immdiatement un exemple de chacun de ces modes de gestion.
Exemple de programme grant le multi fentrage de fentres libres (non MDI)
Pour illustrer les diffrents modes douverture, nous allons travailler avec le projet "WD Fentres
libres".
239
"La premire fentre contient un bouton "Catalogue". Ce bouton ouvre une fentre en
ouverture modale.
240
"Cliquez sur une des images de polo, la che du polo (fentre lle du catalogue) safche.
Remarquez que la fentre du catalogue (fentre mre) reste en saisie.
"Depuis une che de polo, vous pouvez galement ouvrir une autre che (fentre sur) en
slectionnant le polo dans la combo et en cliquant sur le bouton "Voir".
"Si vous cliquez sur le bouton "Fermer" dune che dun polo, seule la che se ferme.
Par contre si vous cliquez sur le bouton "Fermer" du catalogue, toutes les ches se ferment
en mme temps que la fentre du catalogue.
En effet, la fermeture de la fentre mre ferme toutes ses fentres lles.
Dtail des traitements
241
La fentre che du polo est afche par la fonction OuvreFille. De cette faon, plusieurs ches
pourront tre ouvertes en parallle.
Pour que la fentre dun polo ne soit pas ouverte plusieurs fois, la fentre nest ouverte que si
elle est inexistante. La fonction FenEtat permet de vrier si une fentre est dj ouverte ou non.
La fentre che du polo qui a pour nom "FEN_Fille" peut tre ouverte plusieurs fois. Il faut alors
pouvoir distinguer chaque fentre ouverte. Pour cela il suft dutiliser un alias.
Quest ce quun alias ?
// Polo slectionn
La fentre che du polo est afche par la fonction OuvreSoeur. De cette faon, plusieurs ches
pourront tre ouvertes en parallle.
242
La premire fentre est une mre MDI (elle a pour nom "FEN_MreMDI").
Elle contient une zone barre dicnes.
243
Par exemple, pour la premire zone de clicage, on trouvera dans le traitement associ :
// -- Code dinitialisation
MoiMme = "Polo Blanc.png"
// -- Code de clic
NomImage est une chane = MoiMme
NomAlias est une chane = "Polo Blanc"
SI FenEtat(NomAlias) = Inexistant ALORS ...
MDIOuvre(FEN_FilleMDI,NomAlias,"Polo Blanc",NomImage)
Les lles sont des lles MDI, elles safchent dans la fentre mre.
244
Afchage en mosaque :
Afchage en cascade :
245
Le champ "en cours" indique quelle est la lle active. La lle active est la lle qui se trouve en premier plan, celle dont laltitude est la plus leve par rapport aux autres fentres.
La fonction MDIActive retourne le nom de la fentre lle en avant-plan.
Dans notre exemple, une procdure appele par "timer" afche le nom de la fentre lle active.
Lutilisation des timers est explique dans la leon "Afcher la date et lheure en temps rel", page
46.
La fonction MDIMre permet de connatre le nom de la mre MDI.
246
Dure estime : 10 mn
247
248
Tableau rcapitulatif
Cration
Rutilisabilit
Via le dictionnaire
Mise jour
Travail en
groupe
Exemple pratique
Le projet "Fentres et champs" contient une fentre utilisant un superchamp :
1. Sous lexplorateur de projet, ouvrez la fentre "FEN_ChampSuperChamp" (prsente dans le
perso-dossier "Autres champs"). Cette fentre utilise un superchamp permettant de slectionner un chier.
2. Testez la fentre.
Fentre interne
Le champ Fentre interne permet dinclure une fentre (et son code) dans une autre fentre.
A lexcution, la fentre interne sera dynamiquement fusionne la fentre de rception.
Une fentre interne est une fentre spcique (pas de barre de titre, pas de menu, ...). Dans cette
fentre, vous pouvez mettre tout type de champs. Une fentre interne est un chier dextension
"WDW".
Le champ "Fentre interne" permet de partager dynamiquement une mme partie dinterface au
sein dune ou de plusieurs applications.
249
Tableau rcapitulatif
Cration
Rutilisabilit
Mise jour
Travail en
groupe
Avantages
Possibilit de modier dynamiquement (par programmation) la fentre interne utilise dans le champ Fentre interne.
Inconvnients
- Pas amliorable dans linterface daccueil : pas de surcharge, pas de dplacement de champs.
- Zone rectangulaire.
Exemple dutilisation : fentre dont linterface ne va pas changer quel que soit le projet : Fentre
doptions.
Exemple pratique
Pour tester lutilisation des fentres internes, nous allons utiliser le projet "Fentres et champs".
Pour cela :
1. Sous lexplorateur de projet, ouvrez la fentre "FEN_ChampFenetreInterne" (prsente dans le
perso-dossier "Autres champs"). Cette fentre utilise plusieurs fentres internes pour visualiser
les adresses.
2. Testez la fentre.
250
Modle de champs
Un modle de champs est un ensemble de champs, rutilisables dans plusieurs fentres. Un
modle de champs est une fentre spcique contenant diffrents champs. Dans cette fentre,
vous pouvez mettre tout type de champs. Un modle de champs est un chier dextension "WDT".
Tableau rcapitulatif
Cration
Rutilisabilit
Mise jour
Travail
groupe
Avantages
en
251
Exemple pratique
Pour voir lintrt des modles de champs, nous allons utiliser le projet "Fentres et champs".
Pour cela :
1. Sous lexplorateur de projet, ouvrez la fentre "FEN_ModeleChamps" (prsente dans le persodossier "Autres champs"). Cette fentre utilise un modle de champs permettant de saisir une
priode. Deux modes dutilisation du modle de champs sont disponibles :
modle de champs sans surcharge. Le modle de champs est utilis tel quel.
modle de champs avec surcharge. Des carrs bleus permettent didentier les champs
surchargs.
2. Pour visualiser les diffrents champs surchargs et les proprits de ces champs qui ont
t surcharges, sous le volet "Fentre", dans le groupe "Modles", droulez "Modles" et slectionnez loption "Liste des champs surchargs".
3. Testez la fentre.
252
Dure estime : 10 mn
253
Question
Avec WinDev, il est dj possible de cloner les champs. La fonction ChampClone permet de dupliquer par programmation un champ dans une fentre ou un tat.
Le champ est dupliqu avec les mmes caractristiques mais avec un nom diffrent.
Question
La fonction ChampSupprime permet de supprimer par programmation un champ dans une fentre ou un tat.
Question
Les plans dune fentre permettent de rpartir des champs dans diffrentes "couches" an dviter les crans trop chargs ou la multiplication des fentres dans un projet.
Pour associer un champ un plan :
1. Faites un clic droit sur le champ.
2. Slectionnez loption "Associer un plan".
3. Choisissez le numro du plan auquel le champ doit tre associ.
Astuce
Pour passer dun plan lautre dans lditeur, utilisez les touches [Page Suivante] et [Page Prcdente] du clavier. Le numro du plan en cours est afch :
dans la barre de message de lditeur (en bas gauche).
dans la fentre daccueil de la fentre en cours (en haut droite).
Pour viter de dupliquer un mme champ dans une fentre, vous pouvez associer le champ "aucun plan". Le champ est alors visible dans tous les plans.
Seuls les champs du plan en cours et les champs nappartenant aucun plan sont visibles en
dition et en excution.
Vous pouvez galement utiliser la proprit ..Plan pour :
connatre et changer le plan actif dune fentre.
connatre et changer le plan associ un champ.
Le volet "Mode Plan" permet dditer lensemble des libells des champs de tous les plans dune
fentre pour les visualiser et ventuellement les modier simultanment. Pour afcher ce volet,
sous le volet "Accueil", dans le groupe "Environnement", droulez "Volets" puis slectionnez loption "Autres volets .. Mode plan".
254
Question
Un onglet est une sorte de bouton constitu de plusieurs zones clicables nommes "Volets".
Pour grer et dterminer sur quel volet un clic est ralis, utilisez la syntaxe suivante dans le code
de clic de longlet :
SELON NomChampOnglet
CAS 1 // premier volet
//...Traitement effectuer...
CAS 2 // deuxime volet
//...Traitement effectuer...
AUTRES CAS
//...Autres traitements effectuer...
FIN
Question
Pour afcher la progression dun traitement, on utilise le plus souvent une jauge.
Pour cela, utilisez un champ Jauge dans une fentre (volet "Cration, groupe "Champs graphiques").
Dans le code dinitialisation du champ Jauge :
1. Initialisez la valeur minimale de la jauge :
NomJauge..BorneMin = ValeurMini
Question
Avec WinDev, vous pouvez facilement insrer une liaison Internet dans vos applications. Pour
cela :
1. Insrez un champ HTML dans une fentre (volet "Cration", groupe "Autres champs").
2. Initialisez le champ HTML avec ladresse du site auquel vous souhaitez vous connecter :
NomChampHTML = "http://www.pcsoft.fr"
Bien videmment, votre poste (ainsi que le poste de lutilisateur nal) doit avoir une connexion
Internet active.
255
Question
La couleur dun champ se dnit dans le style du champ (option "Choisir un style" du menu contextuel du champ). Cependant, il est possible de modier la couleur de ce champ par programmation. La syntaxe est la suivante :
Notes
La fonction RVB permet de dnir une couleur partir des diffrentes valeurs des composantes
Rouge, Vert et Bleu.
<CodeCouleur> = RVB(<rouge>,<vert>,<bleu>)
Il est galement possible de modier les couleurs des lignes, des colonnes ou dune cellule dun
champ Table. La syntaxe est la suivante :
// Modification de la couleur dune colonne
NomColonne..Couleur = <CodeCouleur>
// Modification de la couleur dune ligne
NomTable[IndiceLigne]..Couleur = <CodeCouleur>
// Modification de la couleur dune cellule
NomColonne[IndiceLigne]..Couleur = <CodeCouleur>
// ou
// NomTable[IndiceLigne, IndiceColonne]..Couleur = <CodeCouleur>
Question
Un bouton peut tre rendu invisible par programmation avec la syntaxe suivante :
NomBouton..Visible = Faux
256
Question
257
Question
La mthode pour passer des paramtres une fentre est similaire au passage des paramtres
une procdure.
Dans le code de dclaration des globales de la fentre, saisissez la syntaxe du code WLangage
suivante :
PROCEDURE NomFentre(NomParam1, NomParam2, ...)
Lors de louverture de la fentre avec la fonction Ouvre, passez les paramtres aprs le nom de la
fentre, par exemple :
Ouvre(Nomfentre, ValeurParam1, ValeurParam2, ...)
Si vous initialisez un paramtre lors de la dclaration dans la fentre, ce paramtre devient optionnel :
Notes
Question
Il est prfrable de passer des paramtres une fentre plutt que de dclarer
des variables globales dans le projet.
258
Attention !
Question
Notes
Sous le volet "Modication", dans le groupe "Transformations", droulez "Refactoring et permutations" et slectionnez "Slecteur/Interrupteur" pour inverser les deux types de champs.
Question
Cette opration peut galement tre effectue entre une combo et une combo
avec table ou entre un champ Potentiomtre et un Potentiomtre rotatif.
"Slectionnez les options dalignement "Mme largeur, Mme hauteur" dans les outils
dalignement le volet "Alignement".
Question
"Pour grer la persistance des champs, slectionnez loption "Mmoriser la valeur" dans
longlet "Dtail" de la fentre de description du champ.
Remarque : lutilisateur peut galement mmoriser la valeur dun champ grce au menu contextuel du champ.
Question
Sur la fentre :
1. Faites un clic droit et slectionnez loption "Description".
2. Slectionnez longlet "Image". Vous pouvez choisir une image et son mode dafchage.
259
Question
Sur la fentre :
1. Faites un clic droit et slectionnez loption "Description".
2. Slectionnez longlet "Style".
3. Dnissez lopacit de la fentre grce au potentiomtre.
Il est galement possible de dnir lopacit dune fentre ou dun champ grce la proprit
WLangage ..Opacit.
260
PARTIE 4
Bases de donnes
et analyses
262
263
Prsentation
Lors de la conception dune application, vous pouvez tre amen manipuler des donnes. Pour
les stocker, vous devez constituer ce que lon nomme "une base de donnes".
Dans WinDev, lors de la cration dun projet manipulant des donnes, vous devez tout dabord
crer une "analyse".
Une "analyse" contient la description des chiers (ou tables) contenant les donnes de lapplication.
Notes
Cest seulement lors de lexcution de lapplication, que ces descriptions sont utilises pour crer
la base de donnes et/ou les chiers de donnes. Cest dans cette base ou dans ces chiers que
seront stockes les donnes.
Plusieurs outils de maintenance des bases de donnes HyperFileSQL sont livrs
en standard avec WinDev. Ils sont accessibles depuis le Centre de Contrle HyperFileSQL.
WinDev sait grer diffrents formats de base de donnes (pour ne pas dire tous). Les plus courantes sont :
HyperFileSQL, systme de base de donnes intgre WinDev et livre en standard. La
base de donnes HyperFileSQL est disponible en mode Classic ou Client/Serveur.
AS/400, Access, Sybase, Informix, ...
Oracle, SQL Server, MySQL, xBase,
Toute base accessible en langage SQL sous Windows.
Texte (chiers ASCII).
Pour accder aux donnes, il existe diffrentes techniques (appeles "modes daccs") :
Accs Natif
Accs OLE DB
Accs ODBC direct
Accs ODBC via OLE DB
264
265
Accs OLE DB
Attention !
Un accs via OLE DB est un accs qui utilise un standard daccs multi-bases. Ce type daccs est
bas sur le MDAC (Microsoft Data Access Component) de Microsoft.
Si vous utilisez un accs OLE DB, vous devez obligatoirement installer le MDAC
sur les postes utilisateurs (version 2.6 minimum).
Toutes les bases de donnes ne sont pas obligatoirement accessibles via cette mthode. Si vous
souhaitez utiliser ce type daccs, vriez quil existe un pilote OLE DB.
Les fonctions WLangage SQL* et HLit* sont utilisables avec ce type daccs.
Accs ODBC via OLE DB
En rsum, il sagit dun "mlange" de OLE DB et de ODBC. Cette technique est la plus "lourde" et
la moins efcace en terme de performances. Il est dconseill de lutiliser sur des bases de petite
taille.
Les fonctions WLangage SQL* et HLit* sont utilisables avec ce type daccs.
266
DE FICHIERS DE
DONNES ET DE REQUTES
Ce que vous allez apprendre dans cette leon ...
Parcours de type HLitPremier
Parcours de type HLitRecherche
Parcours de type POUR TOUT
Parcours de type POUR TOUT AVEC
267
Dans ce code, la boucle de parcours teste la valeur de la fonction HEnDehors. La fonction HEnDehors permet de savoir si la n du chier de donnes est atteinte ou non.
Remarque
Remarque
268
269
270
DES ERREURS
271
Prsentation
Lors de la gestion dune base de donnes, plusieurs types derreurs peuvent apparatre lors de
lajout ou de la modication dun enregistrement :
Erreur de mot de passe sur un chier de donnes
Erreur de saisie obligatoire
Erreur de doublons
Erreur dintgrit, ...
WinDev propose plusieurs modes de gestion de ces erreurs :
le mode automatique : pour chaque erreur rencontre lors de la gestion des enregistrements de la base de donnes, une fentre spcique est afche lutilisateur. Cette fentre permet lutilisateur de modier directement ses donnes.
le mode programm avanc : pour chaque erreur rencontre lors de la gestion des enregistrements de la base de donnes, une procdure ou une fentre personnalise de gestion
des erreurs est appele.
Nous allons dtailler ces modes de gestion des erreurs laide dun exemple simple. Cet exemple
est constitu de deux chiers de donnes (Produit et TVA) nous permettant de tester simplement
les erreurs de doublons et les erreurs dintgrit.
"Excutez le projet "WD Gestion Erreurs HFSQL" grce au bouton "GO" (prsent parmi les
boutons daccs rapide).
"Cliquez sur le bouton "Gestion des erreurs de doublons et dintgrit en mode automatique".
"Nous allons tout dabord tester les erreurs de doublons. Pour cela, cliquez sur le bouton
"Doublons : Remplir les champs". Un nouveau propduit est automatiquement saisi dans la
che en bas de la fentre.
272
"Cliquez sur le bouton "OK" pour valider lajout des donnes dans la base de donnes. Lcran
suivant safche :
Cette fentre explique clairement le problme : vous avez saisi une donne pour la rubrique
"Rfrence" qui existe dj. Une erreur de doublon apparat. Cette fentre permet lutilisateur de corriger directement la valeur.
Le bouton "OK" permet de valider la saisie dans la fentre derreur.
Le bouton "Annuler" permet de revenir lcran ayant provoqu lerreur.
Cliquez sur le bouton "Annuler".
"Testons maintenant les erreurs dintgrit. Pour cela, cliquez sur le bouton "Intgrit : Remplir
les champs".
"Cliquez sur le bouton "OK" pour valider lajout des donnes dans la base de donnes. Lcran
suivant safche :
Cette fentre indique quune erreur dintgrit est rencontre (dans notre cas, la saisie du
taux de TVA na pas t ralise).
Le bouton "Modier" permet de revenir lcran en cours de saisie.
Dans le mode automatique, ds quune erreur de gestion de base de donnes est rencontre, les
fentres dassistance safchent. Il peut tre intressant dans certains cas de grer plus ou moins
manuellement ces erreurs. Dans ce cas, le programmeur peut intervenir de manire plus prcise
sur les erreurs rencontres.
"Cliquez deux fois sur le bouton "Annuler". Le menu de lexemple est afch.
273
"Excutez le projet "WD Gestion Erreurs HFSQL" grce au bouton "GO" (prsent parmi les
boutons daccs rapide).
"Cliquez sur le bouton "Gestion des erreurs de doublons et dintgrit en mode programm
avanc".
"Nous allons tout dabord tester les erreurs de doublons. Pour cela, cliquez sur le bouton
"Doublons : Remplir les champs". Un nouveau produit est automatiquement saisi dans la
che en bas de la fentre.
"Cliquez sur le bouton "OK" pour valider lajout des donnes dans la base de donnes. Lcran
suivant safche :
"Testons maintenant les erreurs dintgrit. Pour cela, cliquez sur le bouton "Intgrit : Remplir
les champs". Un nouveau produit est automatiquement saisi dans la che en bas de la
fentre.
274
"Cliquez sur le bouton "OK" pour valider lajout des donnes dans la base de donnes. Lcran
suivant safche :
Cest encore la fonction HSurErreur qui permet de paramtrer le mode de gestion des erreurs
de la base de donnes. Les paramtres de la fonction permettent de spcier ltendue de la
modication :
"*" pour indiquer que tous les chiers de donnes de lanalyse sont concerns.
la constante hErrDoublon pour indiquer que seules les erreurs de doublons sont concernes. Il est ncessaire de spcier ensuite le nom de la fentre utiliser dans ce cas (FEN_
Doublon).
la constante hErrIntgrit pour indiquer que seules les erreurs dintgrit sont concernes.
Il est ncessaire de spcier ensuite le nom de la fentre utiliser dans ce cas (FEN_Integrite).
3. Fermez cette fentre de code.
Nous ne dtaillerons pas ici le code des fentres utilises. Nous vous conseillons de consulter
laide en ligne pour plus de dtails ainsi que lexemple "WD Detection Erreurs" fourni en standard
avec WinDev.
275
DE DONNES
Dure estime : 15 mn
276
277
Vous avez galement la possibilit dactiver la scurit renforce. Grce ce mode, le mot de
passe de cryptage devra tre saisi chaque modication automatique des donnes (nouvelle
installation, mise jour, gnration...).
278
Lors de la gnration de votre analyse, lassistant vous propose de saisir ou de modier (si vous
aviez dj crypt votre chier de donnes) le mot de passe de cryptage.
Vous obtiendrez alors la liste des chiers de donnes pour lesquels vous avez demand un cryptage. Vous avez la possibilit de slectionner les chiers de donnes crypter, et de saisir les
mots de passe pour chacun des chiers de donnes.
279
soit utiliser la fonction HPasse avant la premire opration de lecture ou dcriture dans le
chier de donnes crypt.
Exemple dutilisation de la fonction HPasse :
// Ouverture dun fichier avec mot de passe et contrle derreur
HPasse(CLIENT, "MotDePasse")
HCrationSiInexistant(Produit)
SI ErreurDtecte ALORS
Erreur("Erreur HyperFileSQL : " + HErreurInfo())
RETOUR
FIN
Pour plus de dtails sur le cryptage des donnes, consultez laide en ligne (mots-cls : "HPasse",
"CryptageFIC", "CryptageMMO", "CryptageNDX").
280
AVANCS
281
Prsentation
Cette leon va vous prsenter des concepts importants de la gestion dune base de donnes. Le
but de cette leon est de vous prsenter ces concepts, et leur fonctionnement avec une base de
donnes HyperFileSQL.
Pour plus de dtails sur la mise en place de ces fonctionnalits, consultez laide en ligne.
La journalisation
Le journal est un chier particulier qui vous permettra de rpondre aux besoins suivants :
remettre la base de donnes dans ltat o elle tait tel jour telle heure suite un problme physique, des erreurs de traitements ou de saisie, ...
avoir un suivi sur les oprations effectues sur un chier de donnes "sensible" (qui a modi ou consult le chier , par exemple).
grer la rplication (voir "La rplication", page 284)
Le journal est une scurit pour votre base de donnes. Il vous permettra de remettre rapidement
votre base de donnes dans le dernier tat connu avant le problme rencontr, depuis la dernire
sauvegarde, sans avoir tout ressaisir.
Pour plus de dtails sur la journalisation, consultez laide en ligne (mot-cl : "Journalisation").
Les transactions
Une transaction est un ensemble doprations indissociables sur un ou plusieurs chiers de donnes :
soit toutes les oprations de la transaction sont ralises.
soit aucune opration nest ralise.
La gestion des transactions est le meilleur moyen dassurer la cohrence dun ensemble dcritures indissociables sur des chiers de donnesHyperFileSQL.
Les transactions sont galement un moyen sr et able de scuriser vos traitements sur des
chiers HyperFileSQL.
282
283
Lorsque lapplication sera relance, la cohrence de la base de donnes pourra tre rtablie :
grce loutil WinDev "WDTRANS".
au premier appel de la fonction HTransactionDbut.
au premier appel de la fonction HTransactionAnnule.
Lorsque les oprations dcriture incluses dans la transaction sont termines, le programme peut
valider les oprations de la transaction.
Pour plus de dtails sur les fonctions de gestion des transactions, consultez laide en ligne (motcl : "Transactions HyperFileSQL").
La rplication
La rplication de donnes est une fonctionnalit trs puissante. La rplication est lopration permettant de maintenir jour des bases de donnes distantes de structures identiques. Chacune
de ces bases de donnes volue indpendamment.
Grce la rplication, les oprations effectues sur chacune des bases de donnes sont reportes sur toutes les autres bases de donnes.
WinDev permet de raliser ces oprations trs simplement.
WinDev propose deux types de rplication :
La rplication journale (base sur la journalisation). Ce type de rplication permet de rpliquer
uniquement des bases de donnes HyperFileSQL entre elles. Ce type de rplication peut tre
mis en place grce aux fonctions WLangage ou grce loutil WDReplic.
La rplication universelle qui permet de rpliquer nimporte quel type de base de donnes (par
exemple une base de donnes HyperFileSQL avec une base de donnes Oracle).
Pour obtenir plus de dtails, consultez laide en ligne (mot-cl : "Rplication")
Les triggers
Un trigger permet de dclencher une action automatiquement lors dune opration dajout, de
modication et de suppression sur un chier de donnes HyperFileSQL.
Lors dune opration (ajout, modication ou suppression) sur un chier de donnes HyperFileSQL,
il est possible dexcuter une action avant ou aprs lexcution de cette opration. Par exemple,
lors dune suppression dans un chier de donnes, il est possible de demander la conrmation de
suppression de lenregistrement.
Pour obtenir plus de dtails, consultez laide en ligne (mot-cl : "Trigger")
284
EXTERNES
Dure estime : 15 mn
285
Prsentation
On nommera "Base de donnes externe" tout systme de gestion de base de donnes autre que
HyperFileSQL. Tout programme ralis avec WinDev peut accder trs facilement une base de
donnes autre que HyperFileSQL.
Il faut pour cela dcrire la base de donnes dans une analyse (comme pour HyperFileSQL).
Les modes daccs aux bases de donnes sont :
accs natif
accs via ODBC
accs via OLE DB
accs ODBC via OLE DB
La programmation sera effectue avec les fonctions du WLangage (HLit*) et/ou en utilisant le
langage SQL.
286
Puis, dnissez si les donnes seront converties en HyperFileSQL Classic ou bien si elles restent
dans leur format actuel :
Les paramtres de connexion cette base de donnes externe doivent tre dcrits (nom du serveur ou service, base de donnes, login et mot de passe et le type daccs par exemple Natif, OLE
DB, ODBC).
287
Toutes ces informations permettent de dnir une connexion dans lanalyse. Cette connexion sera
automatiquement utilise lors de la gnration dun RAD (RAD application complte ou RAD fentre). Tous les chiers de donnes seront lis cette connexion.
Lutilisation dune connexion spcie dans lanalyse est trs confortable pour le dveloppement
de lapplication.
Mais bien souvent, les paramtres utiliss en dveloppement correspondent aux paramtres
dun administrateur, et lapplication cliente doit utiliser un mode de connexion plus scuris (avec
moins de droits).
Il faut donc rednir la connexion. Deux solutions sont envisageables :
Solution 1 : Rednir la connexion spcie dans lanalyse. Cette solution oblige conserver
des donnes "en dur" dans lapplication, et non paramtrables.
Solution 2 : Rednir la connexion spcie par programmation. Cette solution implique lutilisation de deux fonctions du WLangage HOuvreConnexion et HChangeConnexion.
288
Attention !
Attention !
3. Lassistant est termin. Validez. Le code correspondant est automatiquement intgr dans
le traitement en cours.
La fonction HOuvreConnexion a permis de dnir une connexion, mais cette connexion nest pas
encore associe aux chiers de donnes.
Pensez tester le rsultat de la fonction HOuvreConnexion. Cette fonction renvoie Faux si la connexion ne peut pas tre ouverte.
289
Notes
HChangeConnexion("*","MaNouvelleConnexion")
290
PARTIE 5
Administrer une
base HyperFileSQL
Client/Serveur
Dure estime : 5 mn
293
Prsentation
WinDev permet de crer des applications accdant des bases de donnes HyperFileSQL Client/
Serveur.
Une application HyperFileSQL Client/Serveur consiste excuter lapplication sur diffrents
postes utilisateur (appels machines clientes) et dporter la ou les bases de donnes et les
traitements sur un poste serveur. Ce mode de fonctionnement permet des temps de rponses
plus rapides et plus ables, ainsi quune maintenance de la base de donnes facilite.
WinDev permet de :
crer entirement une application HyperFileSQL Client/Serveur.
modier une application WinDev existante en une application HyperFileSQL Client/Serveur.
294
295
Dure estime : 10 mn
296
Prsentation
Dans cette leon, nous allons effectuer toutes les oprations ncessaires au dveloppement et au
dploiement dune application HyperFileSQL Client/Serveur.
Attention !
8. Linstallation est effectue. Par dfaut, pour se connecter au serveur en mode administrateur, il faut utiliser lutilisateur "admin" sans mot de passe.
297
298
Attention !
Vriez le code de votre projet : en mode HyperFileSQL Client/Serveur, les instructions HSubstRep, HChangeRep, ... sont inutiles.
Notes
299
Notes
La fonction HOuvreConnexion permet toujours de repasser en mode HyperFileSQL Classic : il suft de lui prciser le chemin du rpertoire contenant les
chiers de donnes HyperFileSQL Classic.
12. Vous avez migr le projet de dveloppement. Il peut tre galement ncessaire de migrer
lapplication dploye (par exemple si lapplication dploye utilise des chiers HyperFileSQL
Classic). Cette opration se paramtre lors de la cration du programme dinstallation de lapplication.
300
UNE BASE DE
Dure estime : 20 mn
301
Prsentation
Maintenant que nous savons crer/migrer une application en mode HyperFileSQL Client/Serveur,
nous allons voir comment administrer la base de donnes associe.
En effet, une base de donnes Client/Serveur ncessite :
une conguration spcique des postes (installation dun serveur HyperFileSQL, ...)
une administration ralise grce au Centre de Contrle HyperFileSQL.
302
2. Cliquez sur loption "Fichier HyperFileSQL Client/Serveur". La liste des chiers de donnes
au format HyperFileSQL Client/Serveur safche.
Le Centre de Contrle liste ici les chiers de donnes trouvs dans lanalyse lie au projet en
cours. Aucune connexion nest ralise.
3. Pour visualiser les donnes des chiers, double-cliquez sur un des chiers de donnes
dans la liste gauche. Le Centre de Contrle HyperFileSQL afche alors une fentre de
connexion permettant de raliser la connexion effective au serveur HyperFileSQL Client/Serveur utilis.
303
Attention !
Nous avons vu que lors de linstallation dun serveur HyperFileSQL et lors de la cration dune
base de donnes, un seul compte utilisateur est cr : le compte de ladministrateur (login "Admin" sans mot de passe).
Lutilisation de compte utilisateur permet de scuriser laccs aux donnes. En effet, tous les
utilisateurs de lapplication ne sont pas des administrateurs. A chaque utilisateur (ou groupe dutilisateurs), il est possible dassocier des droits.
Les droits des utilisateurs spcis dans le Centre de Contrle HyperFileSQL sont
des droits de base de donnes et pas des droits dapplication.
Il ne faut pas confondre la gestion des droits des bases de donnes Client/Serveur avec le groupware utilisateur.
Certains utilisateurs peuvent par exemple ne pas avoir le droit dcrire dans certains chiers.
Pour faire un test simple, nous allons crer un utilisateur et lui permettre de consulter les enregistrements du chier COMPTE.
1. Dans le Centre de Contrle HyperFileSQL, cliquez sur licne
et validez si ncessaire
la fermeture des connexions.
2. La fentre de bienvenue dans le Centre de Contrle HyperFileSQL safche.
3. Loption "Se connecter un serveur HyperFileSQL" est slectionne par dfaut. Indiquez les
caractristiques du serveur install dans la leon prcdente.
4. Les caractristiques du serveur HyperFileSQL sont afches :
dans le panneau de gauche, le poste, le nom du serveur HyperFileSQL et la liste des bases
prsentes sur ce serveur sont afches.
dans la partie droite de lcran, les diffrents onglets permettant de grer le serveur HyperFileSQL sont afchs.
5. Dans la partie droite de lcran, slectionnez longlet "Utilisateurs et Groupes". Cet onglet
permet de grer les utilisateurs du serveur.
304
6. Pour crer un nouvel utilisateur, cliquez sur le bouton "Nouveau" (le plus gauche). Lcran
permettant de dnir les caractristiques de lutilisateur apparat.
Saisissez par exemple les informations suivantes :
305
Notes
306
Notes
Dans notre exemple, lutilisateur "Test" pourra uniquement parcourir les enregistrements du chier COMPTE. Si cet utilisateur tente une autre action, un message safchera : "Lutilisateur Test
na pas les droits sufsants pour XXXX" (o XXXX correspond laction effectue).
Une fois le compte cr, il peut tre utilis lors de la connexion de lapplication au serveur (quand
la fonction HOuvreConnexion est utilise).
La gestion des utilisateurs et de leurs droits peut galement tre effectue par
programmation grce aux fonctions WLangage. Pour plus de dtails, consultez
laide en ligne.
Conclusion
Le Centre de Contrle HyperFileSQL est un outil complet dadministration de base de donnes,
permettant entre autres :
darrter ou de redmarrer un serveur en cas de problme.
de grer les utilisateurs et leurs droits
de rindexer les chiers de donnes si ncessaire
de faire des sauvegardes de la base.
Le Centre de Contrle HyperFileSQL est un outil redistribuable qui peut tre install chez les
clients possdant des bases de donnes HyperFileSQL Client/Serveur. Le Centre de Contrle
HyperFileSQL doit tre utilis par la personne administrant la base de donnes.
Partie 5 : Administrer une base HyperFileSQL Client/Serveur
307
EN CLIENTLE
Dure estime : 5 mn
308
Prsentation
Linstallation dune application Client/Serveur ncessite plusieurs options spciques. Ces options sont prises en charge par lassistant de cration dinstallation de WinDev.
Nous allons crer la procdure dinstallation de notre application "WD Application avec donnes".
2. Sous le volet "Projet", dans le groupe "Gnration", cliquez sur "Procdure dinstallation".
3. Crez lexcutable et validez la cration de laide.
309
4. Allez jusqu lcran "Paramtres des bases de donnes". Dans ce plan, il est possible de :
Intgrer linstallation dun serveur HyperFileSQL Client/Serveur
Paramtrer les connexions HyperFileSQL Client/Serveur
Dployer les chiers HyperFileSQL Client/Serveur
Si ces options sont coches, les crans suivants permettent de paramtrer les diffrents
lments prendre en compte pour linstallation en clientle.
Pour plus de dtails, consultez laide en ligne.
310
PARTIE 6
Requtes
TION
Ce que vous allez apprendre dans cette leon ...
Manipulations de lditeur de requtes.
Etape par tape, la ralisation dune requte.
Partie 6 : Requtes
313
Introduction
Une requte permet de dnir une interrogation sur des chiers de donnes. Lditeur de requtes
vous permettra par exemple de dcrire sans aucune programmation des interrogations du type :
la liste des fournisseurs habitant une ville dont le nom commence par la lettre "P".
le nombre dannonces par ville.
la liste des clients qui ont le plus command.
Et ce, sur tous les types de bases (HyperFileSQL, Oracle, ...) !
Nous allons voir avec un exemple simple comment manipuler lditeur de requtes. Plus loin dans
ce cours, nous verrons une utilisation avance de lditeur de requtes.
Dans cette leon, vous verrez comment :
Faire une requte simple correspondant une liste avec une slection et un tri.
Faire une requte de comptage.
Faire une requte multi-chiers.
"Faites un "Go" du projet "WD Faire des requtes.WDP". Le programme se lance. La fentre
ci-dessous apparat.
Corrig
Vous pouvez parcourir les diffrentes options du menu et choisir des exemples de requtes.
314
Partie 6 : Requtes
Exemple
Attention !
Partie 6 : Requtes
315
Vous allez apprendre utiliser lditeur de requtes en effectuant des requtes simples : slections de clients, comptages ... vous pourrez ensuite approfondir vos connaissances en manipulant
et en testant tous les types de requtes.
"Pour lister les fournisseurs habitant une ville dont le nom commence par la lettre "P", nous
allons raliser une requte de slection. Passez lcran suivant.
"Pour obtenir les fournisseurs prsents dans une ville dont le nom commence par "P", nous
allons appliquer une condition de slection sur la ville.
La condition de slection est la suivante : "Nous dsirons les fournisseurs situs dans une
ville commenant par P".
"Slectionnez la rubrique "Ville" au centre. Dans les "Actions" sur la droite, cliquez sur le
bouton "Condition de slection" puis sur "Nouvelle condition".
La rubrique "FOURNISSEUR.Ville" est automatiquement slectionne.
Slectionnez la condition : "commence par".
Slectionnez loption "la valeur".
316
Partie 6 : Requtes
"Slectionnez la rubrique "NomFournisseur" au centre puis cliquez dans les "Actions" sur le
bouton "Trier" et slectionnez loption "Trier sur la rubrique slectionne".
Le tri sera croissant :
"Validez. Une che rouge avec le numro 01 apparat la droite de la rubrique "NOMFOURNISSEUR". Cette che indique quun tri croissant est fait sur cette rubrique. Le chiffre "01"
indique que ce sera le premier tri ralis.
"La requte est cre. Nous allons lui donner un nom et la sauvegarder.
1. En haut de lcran, saisissez le nom "REQ_FournisseurVilleP".
2. Saisissez le libell "Fournisseurs dans une ville commenant par P".
3. Validez.
Partie 6 : Requtes
317
"Cliquez sur
318
Partie 6 : Requtes
"Cliquez sur le bouton "GO" parmi les boutons daccs rapide. Le rsultat safche dans une
table :
Si vous faites un clic droit sur la table afchant le rsultat de la requte, un menu contextuel apparat. Vous avez alors la possibilit dexporter le rsultat vers :
Microsoft Excel.
un chier XML (eXtensible Markup Language)
Microsoft Word.
Partie 6 : Requtes
319
AVEC COMPTAGE
320
Partie 6 : Requtes
"Si ncessaire, ouvrez le projet exemple, "WD Faire des requtes" : sous le volet "Accueil",
dans le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption
"Faire des requtes (Exercice)".
3. Passez lcran suivant. Nous allons slectionner les rubriques rcuprer dans le rsultat de la requte.
"Nous devons afcher la ville. Dans la liste de gauche (liste des chiers de donnes et des
requtes disponibles), slectionnez la rubrique "Ville" du chier "CLIENT" (par un double-clic).
Partie 6 : Requtes
321
"La requte est cre. Nous allons lui donner un nom et la sauvegarder.
1. En haut de lcran, saisissez le nom "REQ_NbClientparVille".
2. Saisissez le libell "Nombre de clients par ville".
3. Validez.
La reprsentation graphique de la requte est la suivante :
"Cliquez sur
"Cliquez sur
322
Partie 6 : Requtes
Partie 6 : Requtes
323
"Si ncessaire, ouvrez le projet exemple, "WD Faire des requtes" : sous le volet "Accueil",
dans le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption
"Faire des requtes (Exercice)".
"Sur la gauche, slectionnez les rubriques "NomClient" et "Ville" du chier "CLIENT" (par un
double-clic).
Ensuite, nous devons slectionner la rubrique sur laquelle nous allons faire la somme (MontantTotal dans cet exemple).
324
Partie 6 : Requtes
3. Validez.
La somme des "MontantTotal" a t ajoute dans la liste du rsultat de la requte.
Au fur et mesure de la cration de la requte, lditeur de requtes de WinDev cre les requtes
en langage naturel (et galement en SQL).
Vous pouvez ainsi vrier que vous ne vous tes pas tromp par rapport lobjectif de votre requte.
"La requte est cre. Nous allons lui donner un nom et la sauvegarder.
1. En haut de lcran, saisissez le nom "REQ_CAparClient".
2. Saisissez le libell "Somme des commandes par client".
3. Validez.
La reprsentation graphique de la requte est la suivante :
La reprsentation graphique correspond une "jointure". La requte utilise deux sources de donnes (les chiers "CLIENT" et "COMMANDE").
"Cliquez sur
"Cliquez sur
Partie 6 : Requtes
325
LEON 6.4. LE
LANGAGE
SQL
326
Partie 6 : Requtes
Attention !
Veillez bien respecter lenchanement de ces ordres. Vous ne pouvez pas inverser cet enchanement.
WinDev permet de passer trs simplement de la description graphique dune requte au code
SQL de cette requte et inversement.
Pour afcher le code SQL dune requte cre sous lditeur de requtes, slectionnez loption
"Code SQL" du menu contextuel du graphe de la requte.
Pour afcher la reprsentation graphique dune requte cre en code SQL, sous le volet "Requte", dans le groupe "Analyser", cliquez sur "Rtro-Analyse de la requte".
Partie 6 : Requtes
327
Chaque rubrique peut tre renomme (on parle dalias) en utilisant le mot-cl AS. Par exemple :
CLIENT.NOMCLIENT AS NOM
Dans cet exemple, la rubrique NomClient du chier CLIENT est renomme en Nom.
NomRubriqueXX peut tre soit une rubrique associe un chier de donnes, soit une formule
de calcul.
Linstruction FROM
Linstruction FROM permet de dnir la liste des chiers de donnes partir desquels seront
extraits les rubriques et les calculs. La syntaxe est la suivante :
FROM FICHIER1, FICHIER2 ...
FichierXX correspond un des chiers de donnes prsent dans lanalyse. Lutilisation de AS est
possible.
La clause WHERE
La clause WHERE contient les conditions de slection ainsi que les conditions de jointure. Ces
conditions permettent de ltrer les enregistrements issus des chiers de la base de donnes.
Seuls les enregistrements vriant la ou les conditions seront rcuprs dans le rsultat.
Une jointure permet de faire correspondre un enregistrement dun chier lenregistrement dun
chier reli. Par exemple, une jointure entre les chiers CLIENT et COMMANDE permettra de
connatre toutes les commandes de chaque client.
La syntaxe est la suivante :
WHERE CONDITION1 ET/OU CONDITION2
Les oprateurs ET et OU permettent de raliser une opration logique entre deux conditions.
Loprateur ET indique que les deux conditions doivent tre vries en mme temps.
Loprateur OU indique quune des deux conditions ou les deux conditions doivent tre vries.
La clause WHERE nest pas obligatoire. Si ce mot-cl nest pas indiqu, tous les enregistrements
de tous les chiers de donnes seront slectionns.
328
Partie 6 : Requtes
La clause GROUP BY
La clause GROUP BY permet dindiquer les rubriques ou formules de regroupement lorsquil y a
un calcul. Par exemple, dans la requte que nous avons ralise prcdemment, le calcul portait
sur la somme des commandes par client; cest--dire que les commandes taient cumules pour
chaque client. Le regroupement des commandes tait donc ralis par client.
La syntaxe est la suivante :
GROUP BY RUBRIQUE1, RUBRIQUE2 ...
RubriqueXX correspond une rubrique dun des chiers de donnes ou une formule.
La clause ORDER BY
La clause ORDER BY permet dindiquer les critres de tri de la requte. Les critres de tri permettront de classer le rsultat de la requte.
La syntaxe est la suivante :
ORDER BY RUBRIQUE1, RUBRIQUE2 ...
Notes
RubriqueXX correspond une rubrique dun des chiers de donnes ou une formule.
Partie 6 : Requtes
329
DES
REQUTES
330
Partie 6 : Requtes
Notes
// Initialise la requte
HExcuteRequte(MaRequte)
SI ErreurDtecte ALORS
Erreur("Erreur dinitialisation de la requte"+RC+...
HErreurInfo())
RETOUR
FIN
// Parcours des enregistrements de la requte
POUT TOUT MaRequte
// Traitement sur lenregistrement de la requte
FIN
HAnnuleDclaration(MaRequte) //optionnel
Partie 6 : Requtes
331
332
Partie 6 : Requtes
PARTIE 7
Etats
PREMIER ETAT
Partie 7 : Etats
335
Vocabulaire de base
Avant daborder les mthodes dimpression, il est important de rappeler le vocabulaire de base
pour faire bonne impression !
Fonte : La fonte dnit la forme du caractre (paisseur de trait, espacement entre caractres, ...). Par exemple, ce document est imprim en fonte "Franklin Gothic" (les exemples de
programme en fonte "Courier").
Les fontes sont frquemment appeles polices par "abus" de langage : nous parlerons donc
plutt de police que de fonte.
Style : Le style peut tre italique, gras, soulign, ... Il ne modie pas la hauteur des caractres.
Hauteur du caractre : La hauteur du caractre sexprime en "point Didot". Un point vaut
0,3759 mm. Cest une unit utilise en imprimerie. La hauteur des caractres de ce manuel
est par exemple de 10 points. Les hauteurs de 10 et 12 points sont des hauteurs courantes
pour des documents habituels. La hauteur des caractres est indpendante de la dnition de
limprimante.
Une hauteur de 16 ou 24 points permet de mettre en valeur un titre.
Une hauteur de 6 points sera difcilement lisible, surtout si la dnition de limprimante est
mauvaise.
Police : La police est la forme avec laquelle le texte sera imprim. Elle correspond la combinaison de la fonte, du style, de la hauteur et de la couleur du caractre.
Dnition de limprimante : Chaque imprimante a une dnition propre. Plus la dnition est
importante, plus convenable sera limpression. Par exemple, une imprimante 600 DPI (dots
per inch) fournira des impressions plus nettes quune imprimante 300 DPI. Le type dimpression (laser, jet dencre, matricielle 8 ou 24 aiguilles,...) inue galement sur la qualit dimpression. La qualit du papier galement, il ne faut pas loublier !
Proportionnelle / Fixe : Une police "xe" prsentera toujours la mme largeur de caractre, quel
que soit le caractre. Un "i" aura la mme taille quun "m". Une police xe bien connue est "Courier".
Une police "proportionnelle" utilisera une taille diffrente en fonction des lettres. Cette documentation est crite dans une police proportionnelle.
Un Etat est le nom donn la reprsentation dune dition. WinDev vous permet de construire
des tats. Lors de lexcution (ou de ldition) de ltat, un document est cr.
336
Partie 7 : Etats
Un Bloc est le nom donn une partie de ltat. Un tat est constitu dun ensemble de blocs. Les
diffrents blocs dun tat sont les suivants :
dbut de document
haut de page
haut de rupture
corps
bas de rupture
bas de page
n de document
Partie 7 : Etats
337
Prsentation
Imprimer avec lditeur dtats ou imprimer en WLangage
WinDev propose deux mthodes dimpression :
lditeur dtats qui permet de crer des tats imprims dune faon "conviviale".
par programmation en WLangage.
Par exemple, il est courant dimprimer une liste dont les donnes proviennent dun chier.
Pour imprimer le contenu dun chier de donnes, lutilisation de lditeur dtats est conseille.
Vous dcouvrirez plus loin dans ce guide comment effectuer une impression par programmation.
Nous allons tout dabord tudier quelques exemples dtats raliss avec lditeur dtats, ensuite
nous verrons en dtail comment les raliser.
Quelques exemples dtats
Corrig
338
Partie 7 : Etats
Pour apprendre utiliser lditeur dtats, nous allons crer quelques ditions dans le projet que
vous venez douvrir.
Ce projet utilise des chiers de donnes. An de vous familiariser rapidement avec les donnes,
nous avons pris pour exemple des chiers de donnes simples :
un chier CLIENT
un chier COMMANDE
un chier LIGNECDE
un chier PRODUIT
un chier FOURNISSEUR
Ci-dessous la modlisation logique (MERISE) des donnes utilises (appele MLD) :
Partie 7 : Etats
339
Ltat va tre bas sur une requte qui nexiste pas encore. Slectionnez "Dune nouvelle
requte". Passez lcran suivant.
"Lassistant de description dune requte safche. Cet cran permet de slectionner les
chiers contenant les donnes imprimer. Nous allons imprimer des donnes provenant du
chier CLIENT.
340
Partie 7 : Etats
"Cliquez sur le signe "+" gauche du chier CLIENT. Slectionnez les rubriques imprimer
(par un double-clic) :
NomClient
CodePostal
Ville
IdClient
"Pour trier les clients par ville, il faut choisir un critre de tri :
1. Slectionnez la rubrique trier : cliquez sur "Ville" au milieu de lcran.
2. Cliquez en haut droite sur le bouton "Trier". Choisissez loption "Trier sur la rubrique slectionne".
3. Choisissez "Croissant" et validez. Une che rouge apparat droite de la rubrique "Ville"
ainsi que le numro "01". Cette che indique quun tri croissant est fait sur cette rubrique. Le
numro "01" indique que ce tri sera le premier tri effectu.
Partie 7 : Etats
341
Notes
342
Partie 7 : Etats
Les ches situes droite du tableau permettent de modier lordre des rubriques. Vous
pouvez par exemple afcher la ville avant le nom.
"Passez lcran suivant. Cet cran permet de dnir la mise en page de ltat.
Partie 7 : Etats
343
Notes
344
Partie 7 : Etats
4. Enregistrez ltat dans le dossier par dfaut. Validez la fentre denregistrement. Ltat est
termin. Nous allons immdiatement le tester pour voir le rsultat.
Partie 7 : Etats
345
Vous pouvez :
Directement imprimer la page en cours ou la totalit du document en cliquant sur limpri.
mante
Crer un duplicata.
Slectionner un niveau de zoom plus ou moins important avec les icnes
.
Enregistrer ltat sous forme dun document Word (au format RTF).
Enregistrer ltat au format HTML.
Enregistrer ltat au format PDF.
Enregistrer ltat au format XML.
Crer un e-mail avec ltat au format HTML en corps du message.
Crer un e-mail avec ltat au format PDF en document li.
Annoter le document.
Effectuer une recherche dans le document.
Ajouter des ligranes.
346
Partie 7 : Etats
STATISTIQUES
Partie 7 : Etats
347
Prsentation
Nous allons maintenant diter la liste des commandes par client. Cette liste sera trie sur le nom
du client. Pour chaque client, nous imprimons la commande et le dtail de la commande (lignes)
avec un sous-total pour chaque commande. Nous cherchons obtenir un rsultat semblable la
reprsentation ci-dessous :
Ltat que nous allons raliser utilise plusieurs chiers de donnes comme source.
"Si ncessaire, ouvrez le projet exemple, "WD Faire des ditions" : sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire
des ditions (Exercice)". Le projet se charge.
348
Partie 7 : Etats
Nous allons imprimer des donnes provenant des chiers CLIENT, COMMANDE, PRODUIT et
LIGNECDE.
Partie 7 : Etats
349
Nous allons trier les rsultats par nom de client et par numro de commande.
350
Partie 7 : Etats
"Dans la liste au centre, slectionnez la premire rubrique sur laquelle vous dsirez effectuer
un tri :
1. Cliquez sur la rubrique "NomClient". Dans le menu contextuel (clic droit de la souris), slectionnez "Trier la rubrique .. Trier par ordre croissant".
2. Cliquez ensuite sur la rubrique "IdCommande". Dans le menu contextuel (clic droit de la
souris), slectionnez "Trier la rubrique .. Trier par ordre croissant".
Une che rouge apparat droite des rubriques "NomClient" et "IdCommande". Le chiffre situ
ct de chaque che indique lordre de priorit des tris.
Par dfaut, une rupture est propose sur les rubriques "NomClient" et "IdCommande", car ce sont
les critres de tri dj dnis.
Partie 7 : Etats
351
352
Partie 7 : Etats
Il faut maintenant indiquer sil y a des sommes ou des comptages dans ltat. Nous allons additionner le montant des lignes de commandes.
Cette somme sera place dans une rupture. Nous allons conserver uniquement la somme sur le
montant. Vous allez indiquer quil ny a aucun calcul sur la quantit en choisissant "Aucun calcul"
dans la colonne "Calcul".
Partie 7 : Etats
353
"Validez. Ltat tant trop grand, lditeur dtats propose de changer le format de ltat ou de
le rduire.
"Sous longlet "Cration", dans le groupe "Champs usuels", cliquez sur "Interrupteur". Linterrupteur apparat sous la souris. Placez linterrupteur sur ltat dans le bloc "Haut de rupture
1".
354
Partie 7 : Etats
"Ajoutez un champ Libell : sous longlet "Cration", dans le groupe "Champs usuels", cliquez
sur "Libell". Positionnez ce libell ct de linterrupteur et saisissez le texte "Client
Enregistr".
Partie 7 : Etats
355
356
Partie 7 : Etats
Partie 7 : Etats
357
Prsentation
Lditeur dtats offre galement la possibilit de crer des tats de type "Tableau Crois". Ltat
est alors constitu uniquement dun tableau deux entres.
Exemple :
Contrairement aux autres types dtats, ltat "Tableau crois" est toujours bas sur une requte
intgre. Cette requte est cre grce lassistant de cration de ltat "Tableau crois". Vous
pourrez par ailleurs modier cette requte une fois votre tat cr.
"Si ncessaire, ouvrez le projet exemple, "WD Faire des ditions" : sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire
des ditions (Exercice)". Le projet se charge.
Partie 7 : Etats
Lassistant vous propose alors de choisir la rubrique qui servira de source de donnes pour
les en-ttes de colonnes. Vous pouvez ainsi dnir la premire entre (ligne) de votre tableau
crois.
"Lassistant vous demande si vous souhaitez "borner" les dates. Ne cochez rien, nous allons
prendre toutes les commandes. Passez lcran suivant.
Partie 7 : Etats
359
"Slectionnez "La somme de la rubrique :". Dans la liste qui apparat sur le ct, choisissez la
rubrique "MontantTotal" du chier "COMMANDE" :
"Passez lcran suivant. Ne changez rien la mise en page. Passez lcran suivant.
"Slectionnez un gabarit (par exemple "Elegant"). Passez lcran suivant.
360
Partie 7 : Etats
"Modiez si ncessaire le titre et la taille du titre des colonnes pour obtenir la mme mise en
page que ci-dessous.
Vous venez de raliser facilement un tat tableau crois. Ce type dtat peut bien entendu tre
utilis pour dautres applications, notamment pour effectuer des comparatifs, des statistiques, ...
Partie 7 : Etats
361
SPCIFIQUES
362
Partie 7 : Etats
Prsentation
Lditeur dtats de WinDev propose deux fonctionnalits originales au niveau des champs :
Les champs Lien, utilisables aussi bien dans les tats gnrs en HTML que dans les tats
afchs dans laperu avant impression.
Les champs lien permettent douvrir directement un site partir dun tat. Il est ainsi
possible dimaginer un rcapitulatif de commande envoy par e-mail. Cet tat peut contenir
un lien vers le site de la socit, un lien pour envoyer un e-mail la socit, ...
Les champs clicables, utilisables uniquement dans laperu avant impression.
Dans ce cas, le clic sur un des champs de ltat dclenche un traitement spcique, par
exemple lafchage de la che complte du client slectionn.
Dans laperu avant impression, ces deux types de champs sont facilement reprables grce
des petites toiles.
"Si ncessaire, ouvrez le projet exemple, "WD Faire des ditions" : sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire
des ditions (Exercice)". Le projet se charge.
Partie 7 : Etats
363
Remarque : Un champ Lien dans un tat peut afcher le contenu dune rubrique ou une URL.
Dans ce cas, il est possible de :
afcher une page dun site
se connecter un serveur FTP
tlcharger, ouvrir, afcher un chier
envoyer un email
"Testez ltat (GO parmi les bouton daccs rapide). Ce lien fonctionne en aperu avant
impression (une toile prs du lien indique que ce lien est clicable) ou en mode HTML.
"Si ncessaire, ouvrez le projet exemple, "WD Faire des ditions" : sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire
des ditions (Exercice)". Le projet se charge.
"Le projet contient dj la fentre ouvrir : "FEN_Fiche_Client". Cette fentre est prsente
dans le dossier "Corrigs".
364
Partie 7 : Etats
"Ouvrez cette fentre sous lditeur de fentres (option CTRL E pour rechercher la fentre et
louvrir). Cette fentre a t cre par le RAD. Son code de dclaration des globales a t
modi pour permettre dafcher le client dont lidentiant est pass en paramtre.
"Le code est le suivant. Les lignes en gras reprsentent les lignes modies pour permettre
dafcher le client dont lidentiant est pass en paramtre.
CAS ~="Modif"
SI IdClient<>0 ALORS
HLitRecherchePremier(CLIENT,IdClient,IdClient)
FIN
SI HNbEnr(CLIENT)=0 OU HEnDehors(CLIENT) ALORS
// ouvre une bote de dialogue pour informer lutilisateur
Info("Le fichier ne contient aucun enregistrement.")
// ferme la fentre
Ferme
FIN
FIN
Ce code permet de :
ouvrir la fentre "FEN_Fiche_Client" en mode Modication.
passer en paramtre la fentre lidentiant du client cliqu (cet identiant est prsent
dans la requte intgre ltat).
4. Enregistrez et testez votre tat.
Partie 7 : Etats
365
DES ETATS
366
Partie 7 : Etats
Notes
Vous avez cr des tats qui ont t tests depuis lditeur. Nous allons voir comment lancer lexcution dun tat depuis un programme.
WinDev permet dexcuter directement les tats depuis une application grce
aux fonctions du WLangage. Sachez que vous avez galement la possibilit de rajouter du code pour effectuer des traitements spciques lintrieur de chaque
bloc de ltat (par exemple : faire un calcul, afcher une bote de dialogue ...).
En excutant ce code, un cran daperu vous sera propos. Pour imprimer directement ltat
sans passer par une fentre de prvisualisation, supprimez la ligne :
iAperu(100)
La fonction iAperu permet notamment dafcher ltat imprim directement lcran. Dans ce
cas, le paramtre <format de sortie> peut prendre les valeurs suivantes :
iImprimante : pour une sortie directe sur limprimante courante
iPage : pour afcher lcran la page complte
i2Pages : pour afcher 2 pages lcran
i100 : pour afcher la page en zoom 100%
Dautres constantes (utilisables avec la fonction iDestination ou iAperu) permettent dobtenir des
formats de sortie plus spciques :
iFichier : pour imprimer ltat dans un chier texte
iHTML : pour imprimer ltat au format HTML
iHTMLSansCSS : pour imprimer ltat au format HTML sans feuille de styles
iPCL : pour imprimer ltat au format PCL
iPDF : pour imprimer ltat au format PDF
iRTF : pour imprimer ltat au format RTF
iXLS : pour imprimer ltat au format XLS
iXML : pour imprimer ltat dans un chier XML
iFax : pour une sortie directe sur un fax.
Partie 7 : Etats
367
Pour plus de dtails sur la fonction iAperu ou la fonction iDestination, consultez laide en ligne
(mot-cl : "iAperu" ou "iDestination").
Fonction iImprimeEtat
La fonction iImprimeEtat permet dexcuter un tat. La syntaxe de cette fonction est la suivante :
iImprimeEtat(<Nom de ltat>)
Notes
Remarque
Dautres syntaxes sont possibles pour ces deux fonctions, consultez laide en ligne pour plus de
dtails (mots-cls : "Impression dun tat", "iAperu", "iImprimeEtat").
368
Partie 7 : Etats
Partie 7 : Etats
369
Notes
Le logiciel "Etats & Requtes" permet aux utilisateurs de modier et de crer leur convenance
les tats et les requtes de vos applications.
Un utilisateur trouve quil manque une information sur ltat fourni en standard ? Avec le logiciel "Etat & Requtes", il peut ajouter linformation directement depuis laperu avant impression.
Cette modication peut tre intressante pour dautres utilisateurs ? Ltat peut tre mis disposition de tous les utilisateurs utilisant lapplication en rseau. De mme pour les requtes.
Le logiciel "Etats & Requtes" est gratuit et librement redistribuable avec vos applications cres avec WinDev. Consultez la licence pour plus de dtails sur les
conditions de redistribution.
370
Partie 7 : Etats
Paramtrage du projet
Pour utiliser le logiciel "Etats & Requtes" partir de votre application, il est ncessaire de congurer le projet associ votre application.
"Si ncessaire, ouvrez le projet exemple, "WD Faire des ditions" : sous le volet "Accueil", dans
le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Faire
des ditions (Exercice)". Le projet se charge.
Notes
"Pour dnir une rubrique invisible sous le logiciel "Etats & Requtes" :
1. Sous lditeur danalyses, slectionnez le chier de donnes voulu.
2. Afchez la fentre de description du chier (option "Description des rubriques" du menu
contextuel).
3. Slectionnez dans la table, la rubrique voulue.
4. Dans longlet "Etats et Requtes", dcochez loption "Visible par lutilisateur nal, dans le
logiciel "Etats et Requtes"".
5. Validez.
Partie 7 : Etats
371
"Pour prendre en compte les modications effectues dans lanalyse, il est ncessaire de
rgnrer lanalyse (option "Gnration" dans le volet "Analyse"). Une modication automatique des chiers de donnes est propose pour prendre en compte les modications
effectues.
Paramtrage des tats
Lors de la cration dun tat, il est possible de spcier si cet tat est modiable sous le logiciel
"Etats & Requtes".
"Pour rendre un tat de votre application modiable sous le logiciel "Etats & Requtes" :
1. Ouvrez ltat sous lditeur dtats.
2. Afchez la description de ltat (option "Description de ltat" du menu contextuel).
3. Dans longlet "Dtail", cochez "Etat modiable sous Etats et Requtes".
4. Cochez :
loption "Interface modiable uniquement" pour que linterface de ltat uniquement soit
modiable sous Etats & Requtes.
loption "Tout modiable (interface et code)" pour que ltat soit entirement modiable
sous Etats & Requtes.
5. Validez et enregistrez ltat.
Paramtrage des requtes
Par dfaut, une requte nest pas modiable sous le logiciel "Etats & Requtes". Lors de la cration dune requte, il est possible de spcier si cette requte est modiable sous le logiciel "Etats
& Requtes".
"Pour rendre une requte de votre application modiable sous le logiciel "Etats & Requtes" :
1. Ouvrez la requte sous lditeur de requtes.
2. Afchez la description de la requte (option "Description de la requte" du menu contextuel
du graphe de la requte).
3. Cliquez sur le bouton "Avanc".
4. Dans longlet "Etats et Requtes", cochez "Visible sous Etats et Requtes".
5. Validez et enregistrez la requte.
Cration de lexcutable et diffusion de lapplication
La cration et la diffusion dune application utilisant le logiciel "Etats & Requtes" se fait de la
mme faon que pour une application classique. Cest lors de la cration de la procdure dinstallation, que vous pourrez indiquer les paramtres spciques au logiciel "Etats & Requtes".
"Pour crer le programme dinstallation de votre application, sous le volet "Projet", dans le
groupe "Gnration", cliquez sur "Procdure dinstallation". Lassistant de cration dinstallation se lance. Cliquez sur le lien "Installation" gauche de lassistant.
1. Slectionnez "Crer lexcutable maintenant". La cration de lexcutable est ralise.
2. Lassistant de cration dinstallation se lance.
3. Choisissez une "Installation individuelle". Passez lcran suivant.
4. Choisissez une "Installation standard". Passez lcran suivant.
5. Dans lcran "Fichiers installs", slectionnez les chiers de donnes (.c, .mmo et .ndx)
prsents dans le rpertoire de lexcutable. Pour cela, cliquez sur "Ajouter" et slectionnez
ces chiers. Passez lcran suivant.
372
Partie 7 : Etats
Partie 7 : Etats
373
"Dans la fentre de n de cration de linstallation, cliquez sur le bouton "Tester". Si vous avez
ferm cette fentre, lancez directement le programme "Install.exe" prsent dans le rpertoire
du programme dinstallation. Linstallation de lapplication se lance.
"Nous allons suivre les diffrentes tapes du programme dinstallation de lapplication "WD
Faire des ditions".
"Lcran "Etats et Requtes" permet dinstaller le logiciel "Etats & Requtes" (uniquement si ce
programme nest pas dj install sur le poste en cours).
374
Partie 7 : Etats
"Lcran suivant permet de dnir les rpertoires utiliss pour lenregistrement des tats et
des requtes.
Partie 7 : Etats
375
" Dans cet cran, deux nouvelles icnes font leur apparition :
Permet de modier ltat en cours dans laperu avant impression.
Permet de crer un nouvel tat.
"Dans cet exemple, nous allons mettre la date en rouge. Pour cela :
1. Slectionnez le champ date dans le dbut de document.
2. Sous le volet "Modication", dans le groupe "Edition rapide", cliquez sur licne "Couleur"
( ) et slectionnez la couleur rouge.
3. Enregistrez votre tat. Par dfaut, le rpertoire propos est le rpertoire dinstallation de
votre application.
4. Fermez le logiciel "Etats & Requtes".
5. Slectionnez loption "Etats .. Liste trie" dans lapplication. Ltat apparat en mode
"Aperu avant impression" et la modication ralise est effective.
Dans cet exemple, ltat que vous avez modi est disponible pour vous seul. Dans le cas dune
application rseau, lutilisateur a la possibilit de mettre disposition de tous les utilisateurs un
tat modi.
Nous avons ni notre dcouverte du logiciel "Etats & Requtes". Pour plus de dtails, consultez
laide en ligne (mot-cl : Etats et Requtes).
376
Partie 7 : Etats
PARTIE 8
Programmation
avance
REURS
379
Prsentation
WinDev peut grer automatiquement les erreurs. Cette fonctionnalit permet la fois de rduire
sensiblement le code dun projet tout en uniformisant et en centralisant la gestion des erreurs.
Lutilisation de cette fonctionnalit rend galement le code plus lisible.
Fonctionnement
Lorsquune fonction du WLangage rencontre une erreur, deux oprations sont ralises :
une valeur de retour derreur est renvoye par la fonction (par exemple, la fonction fOuvre
renvoie la valeur "-1" si le chier spci na pu tre ouvert).
lerreur est dtecte par le WLangage (la variable ErreurDtecte correspond Vrai) et il est
possible de rcuprer des informations sur cette erreur grce la fonction ErreurInfo.
Cest cette seconde opration qui peut tre gre en automatique grce la gestion des erreurs
de WinDev.
Mise en place
Le paramtrage de la gestion automatique des erreurs peut seffectuer :
soit directement dans lditeur de code : il suft de cliquer sur le lien "Si erreur : Par programme" dans lditeur de code :
380
Exemple
Pour plus de dtails sur la gestion automatique des erreurs, consultez lexemple
"Detection erreurs" (exemple unitaire), livr en standard avec WinDev. Cet
exemple est accessible depuis le volet "Assistants, Exemples et Composants" de
WinDev.
381
382
Prsentation
WinDev permet de manipuler simplement les formats les plus courants de donnes : chiers texte
(chiers INI, CSV, ...), chiers XML, chiers XLS, ... De nombreuses familles de fonctions WLangage
permettent aussi bien de lire ces chiers que de crer ces chiers. Vous pouvez ainsi lire facilement dans vos applications WinDev des donnes gnres par dautres logiciels ou encore crer
des chiers ncessitant un formatage particulier.
Dans ce chapitre, nous nous consacrerons plus particulirement trois formats de chiers :
les chiers Texte (chiers texte, chiers INI et chiers CSV)
les chiers XML
les chiers XLS
Exemple pratique
Pour simplier la prsentation des diffrents formats de chiers, nous avons prpar un exemple
contenant les principales manipulations possibles.
383
Nous vous conseillons galement dtudier lexemple "Fichiers Texte" (exemple didactique) livr en
standard avec WinDev : vous aurez ainsi un aperu des diffrentes manipulations possibles sur
les chiers externes :
crer un chier externe
lire (par bloc, par ligne ou en une seule fois) un chier externe
crire dans un chier externe
obtenir des informations sur un chier
bloquer un chier
tester lexistence dun chier
slectionner un chier
copier un chier
supprimer un chier
lister les chiers dun rpertoire
Exemple
Cet exemple prsente galement les manipulations possibles sur les disques et les rpertoires :
crer un rpertoire
connatre le rpertoire en cours
tester lexistence dun rpertoire
lister des rpertoires
copier un rpertoire
supprimer un rpertoire
Lexemple "WD Fichiers Texte" livr en standard avec WinDev (exemple didactique), illustre les manipulations possibles sur les chiers, disques et rpertoires avec le WLangage. Cet exemple est accessible depuis le volet "Assistants,
Exemples et Composants" de WinDev.
Pour plus de dtails sur les fonctions de gestion des chiers externes, consultez laide en ligne
(mot-cl : "Fichier externe").
Exemple
XML permet de structurer un document contenant des donnes. Un chier de donnes HyperFileSQL contenant plusieurs rubriques et enregistrements peut par exemple tre export dans un
chier XML (fonctions XML*) .
384
Pour plus de dtails sur lutilisation du XML, consultez lexemple "WD XML"
(exemple didactique), livr en standard avec WinDev. Cet exemple est accessible
depuis le volet "Assistants, Exemples et Composants" de WinDev.
3. Vous pouvez maintenant accder directement aux noeuds de la variable par leurs noms.
Ces noms sont proposs automatiquement par le mcanisme de compltion automatique de
lditeur de code.
Exemple pratique
"Dans longlet "Lecture dune feuille XLS (compatible)", ouvrez le chier "FichierTest.xls"
prsent dans le rpertoire EXE de lexemple. Le chier propos contient 3 feuilles. Il est
possible dafcher le contenu des trois feuilles.
Partie 8 : Programmation avance
385
"Ouvrez le chier (bouton "Ouvrir le chier sous Excel") pour vrier les informations afches
par WinDev.
Notes
386
Nous ne dtaillerons pas ici toutes les fonctionnalits proposes par les fonctions XLS et les types avancs. Pour plus de dtails, consultez laide en ligne.
DYNAMIQUE
387
Prsentation
La compilation dynamique permet de compiler un code nimporte quel moment de lapplication. Un exemple dutilisation courant ? Votre application contient une formule paramtrable. Pour
changer les paramtres, il nest pas ncessaire de re-livrer lexcutable : la modication dun chier texte suft.
Exemple
Dans le projet "WD Programmation Avance", la compilation dynamique est utilise pour raliser
un dessin de courbes mathmatiques.
"Retournons sous lditeur de code pour tudier le code permettant de dessiner cette courbe.
Fermez la fentre.
1. Afchez le code du bouton "Tracer" (clic droit sur le bouton, option "Code"). Ce code appelle la
procdure AfcheCourbe.
2. Positionnez le curseur de la souris sur le nom de la procdure et utilisez la touche [F2]. Le
code de la procdure apparat automatiquement sous lditeur de code.
388
La compilation de la fonction est effectue avec la fonction WLangage Compile. Ds que cette
fonction est utilise (et si aucune erreur nest renvoye), la fonction compile dynamiquement
devient utilisable.
389
390
Introduction
Toute action effectue par Windows correspond un vnement Windows. Diffrents types dvnements peuvent tre rencontrs, par exemple :
Le survol dune fentre par la souris
Larrt du systme
Lafchage dune bote de dialogue
Une erreur logicielle
Etc.
Lorsque ces vnements se produisent, il est possible de les intercepter an de prparer ou dexcuter un traitement spcique.
WinDev propose par dfaut la gestion automatique des vnements les plus utiliss. Par exemple,
les vnements suivants sont proposs pour un champ de saisie :
Initialisation du champ
Entre dans le champ
Modication du champ
Sortie du champ
De nombreux autres vnements peuvent tre grs facilement. Une barre doutils est disponible
dans lditeur de code :
Notes
Pour connatre la liste (non exhaustive) des vnements Windows, consultez laide en ligne de
WinDev (mot-cl : "Valeur des constantes de lAPI Windows").
Partie 8 : Programmation avance
391
"Si ncessaire, ouvrez le projet exemple, "WD Programmation Avance" : sous le volet
"Accueil", dans le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez
loption "Programmation avance". Le projet se charge.
"Ouvrez la fentre "FEN_Evenement" et testez-la. Cette fentre dtecte si la liste est manipule avec la souris ou avec le clavier.
Tout dabord, le chier WINCONST.WL est intgr dans le code de lapplication grce au
mot-cl EXTERNE. Ce chier contient la dclaration et les valeurs des constantes Windows. A
la compilation, tout le code contenu dans le chier Winconst.WL sera automatiquement
intgr au code de lapplication.
Ensuite, les diffrents vnements grs sont dclars :
// Evnements sur le champ LISTE_Jour
// Pression dune touche du clavier
Evnement("SourisOuClavier",LISTE_Jour..NomComplet,WM_KEYDOWN)
// Clic gauche de souris
Evnement("SourisOuClavier",LISTE_Jour..NomComplet,...
WM_LBUTTONDOWN)
392
La procdure SourisOuClavier est appele ds quune utilisation du clavier sur la liste est
effectue (vnement Windows correspondant : WM_KEYDOWN) ou ds que le clic gauche
de la souris est utilis (vnement Windows correspondant : WM_LBUTTONDOWN).
Le code de la procdure est trs simple : la variable globale Clavier est mise Vrai ou Faux
selon loutil utilis (clavier ou souris).
PROCEDURE SOURISOUCLAVIER()
// Dtermine si la validation de llment a t effectue
// avec le clavier ou avec la souris
SELON _EVE.wMessage
CAS WM_KEYDOWN
// Cest le clavier
Clavier=Vrai
CAS WM_LBUTTONDOWN
// Cest la souris (click down)
Clavier=Faux
FIN
393
THREADS
394
Dfinition
Les threads permettent dexcuter du code (ou des traitements) en parallle de lapplication principale. Il est ainsi possible dexcuter plusieurs traitements diffrents qui peuvent tre trs longs
en tche de fond, sans bloquer lapplication principale.
Les threads remplacent certains types de timer.
Un thread efcace est un thread qui attend un vnement, par exemple, une action de lutilisateur,
la rception dun email, la rception dun appel tlphonique, ...
Quelques exemples dutilisation des threads :
Rcupration demails en tche de fond, pendant la saisie dun nouvel email par exemple.
Application de communication : gestion des appels tlphoniques, communication par socket, ...
Avec WinDev, vous avez la possibilit de :
grer simplement des threads (fonctions Thread*, ThreadExcute, ThreadArrte ...)
utiliser les threads avec des "smaphores", an de limiter leur action en simultan un instant donn (fonctions Smaphore*)
grer des "signaux" an de synchroniser plusieurs threads (fonctions Signal*, SignalCre,
SignalDtruit ...)
Exemple
Exemple
WinDev est livr en standard avec un exemple permettant de comprendre lintrt et lutilisation des threads, "Pool de Threads" (exemple didactique, accessible
depuis le volet "Assistants, Exemples et Composants" de WinDev).
Pour plus de dtails sur la gestion du multithread avec WinDev, consultez laide en ligne (mot-cl :
"Thread").
395
SOCKETS
396
Prsentation
WinDev met votre disposition des fonctions qui permettent de raliser une gestion avance des
sockets.
Une socket est une ressource de communication utilise par les applications pour communiquer
dune machine une autre sans se soucier du type de rseau.
Ce mode de communication peut par exemple tre utilis pour tablir une communication entre
des postes relis par Internet.
Exemple
Une application WinDev peut grer les sockets selon diffrents modes :
Application WinDev/WebDev Cliente : lapplication se connecte un serveur quelconque et
change des donnes par une socket.
Application WinDev "Serveur simpli" : lapplication WinDev est un serveur, changeant
des informations par une socket avec un seul poste client (socket WinDev conseille sur le
poste client mais non obligatoire)
Application WinDev "Serveur standard" : lapplication WinDev est un serveur, changeant
des informations par sockets avec plusieurs postes client quelconques.
WinDev est livr en standard avec un exemple permettant de comprendre lutilisation des sockets : "WD Utilisation des sockets" (exemple didactique, accessible
depuis le volet "Assistants, Exemples et Composants" de WinDev).
Exemple pratique
Le projet "WD Programmation Avance.WDP" contient une fentre correspondant la fois une
application de type "serveur de socket" et une application cliente.
"Si ncessaire, ouvrez le projet exemple, "WD Programmation Avance" : sous le volet
"Accueil", dans le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez
loption "Programmation avance". Le projet se charge.
397
Cration de la socket
Pour crer la socket, le poste serveur utilise la fonction SocketCre. Une socket est associe
un port spcique. Pour simplier la manipulation de la socket par programmation sur le poste
serveur, prcisez le nom de la socket.
Le poste client va venir se connecter sur cette socket pour changer des donnes. La connexion
entre les deux postes sera effectivement ralise au premier change de donnes entre les deux
postes (cest--dire la premire lecture dinformations par le poste serveur).
La connexion est tablie au premier succs de la fonction SocketLit sur le serveur.
Echange de donnes
Lorsque deux postes utilisent la mme socket, un ux de communication stablit entre ces deux
postes. Il est alors possible pour ces deux postes de lire et dcrire des chanes de caractres sur
la socket.
Remarque : Pour ne pas bloquer les applications, la gestion de la rception des messages est
souvent gre par un thread spcique.
Pour lire et crire sur la socket, lapplication serveur WinDev doit utiliser les fonctions SocketLit et
SocketEcrit.
Attention : Pour raliser une lecture, une criture doit avoir t ralise. Par exemple :
1. Le poste client crit sur la socket : il envoie une requte au poste serveur.
2. Le poste serveur effectue une lecture sur la socket dans un thread. Ds quun message est
reu, le message est trait par le poste serveur.
3. Si une rponse au message est ncessaire, le poste serveur identie le poste client (fonction SocketClientInfo), et lui envoie une rponse.
Fermeture de la socket
Pour terminer la communication, le serveur peut fermer la socket avec la fonction SocketFerme.
Remarque : la socket peut aussi tre ferme par le poste client.
Exemple pratique
398
"Cette procdure est excute dans un thread, dans le traitement "Dclarations globales" de
la fentre. Le code est le suivant :
ThreadExcute("TH_Ecoute",threadNormal,pEcoute)
Application Cliente
Une application cliente dun serveur de sockets se connecte un serveur quelconque pour changer des informations par lintermdiaire dune socket.
Exemple : Une application WinDev cliente peut se connecter un serveur de news standard sur
Internet.
Les tapes pour crer une application cliente sont les suivantes :
1. Connexion au serveur
2. change de donnes
3. Fin de communication
Connexion au serveur
Pour se connecter une socket du serveur, il suft dutiliser la fonction SocketConnecte. Cette
fonction permet deffectuer une demande de connexion au serveur.
La socket est identie par son port et par son adresse.
Echange de donnes
Lorsque deux postes utilisent la mme socket, un ux de communication stablit entre ces deux
postes. Il est alors possible pour ces deux postes de lire et dcrire des chanes de caractres sur
la socket.
Remarque : Pour ne pas bloquer les applications, la gestion de la rception des messages est
souvent gre par un thread spcique.
Pour lire et crire sur la socket, lapplication cliente WinDev doit utiliser les fonctions SocketLit et
SocketEcrit.
Fin de communication
Pour terminer la communication, il suft de fermer la socket depuis le poste client avec la fonction
SocketFerme.
Remarque : il est galement possible de terminer la communication depuis le poste serveur.
Exemple pratique
"Dans la fentre "FEN_Sockets", les oprations clientes sont effectues lors de lappui sur le
bouton "Envoyer".
399
Remarque : Dans cette leon, nous avons vu une communication "simple" entre un serveur et un
poste client : le client envoie des messages et le serveur traite les messages. Il est bien entendu
possible de raliser des applications plus labores.
Il est par exemple possible de raliser une communication entre deux applications, la fois
cliente et serveur. Dans ce cas, la gestion des threads devient primordiale pour grer les envois et
les rponses des applications.
400
401
Prsentation
Le FTP (File Transfert Protocol) est un protocole standard permettant deffectuer le transfert de
chiers dune machine vers une autre machine. Une des deux machines doit tre un serveur FTP.
Le WLangage possde les commandes de programmation ncessaires pour effectuer des transferts de chiers en utilisant ce protocole avec un serveur. Ces fonctions de programmation commencent toutes par "FTP".
WinDev ne propose que des fonctions "clientes" pour le FTP. Il est ncessaire dutiliser un serveur
FTP standard.
Il est galement possible de prciser le numro de port de connexion du serveur FTP (par dfaut
"21") ainsi que le mode de connexion ("Vrai" pour une connexion dite "passive", "Faux" pour une
connexion dite "active"). Pour plus de dtails, consultez laide en ligne (mot-cl : "FTP, Fonctions").
Envoyer un fichier
Pour envoyer un chier vers un serveur FTP, il suft tout simplement dutiliser la fonction FTPEnvoie :
// Lors de la connexion au serveur avec FTPConnecte, nous avons
// rcupr le numro de connexion dans la variable Res
// Transfert du fichier "C:\MesDocuments\Fichier.DOC" vers
// le rpertoire "Temp" qui se trouve sur le serveur.
Result est un boolen = FTPEnvoie(Res, ...
"C:\MesDocuments\Fichier.DOC", "/Temp")
402
Attention !
Rcuprer un fichier
Pour rcuprer un chier depuis un serveur FTP sur votre machine, il suft tout simplement dutiliser la fonction FTPRcupre :
// Lors de la connexion au serveur avec FTPConnecte, nous avons
// rcupr le numro de connexion dans la variable Res
// Rcupration du fichier "/Document/Fichier.DOC" prsent
// sur le serveur FTP vers le rpertoire "D:\Temp" sur
// le poste en cours
Res est un boolen = FTPRcupre(Res, ...
"/Document/Fichier.DOC","D:\Temp")
Il existe galement dautres fonctions FTP que nous ne dtaillerons pas dans ce cours. Elles permettent notamment de :
crer, supprimer, modier des rpertoires sur le serveur FTP,
crer, supprimer, modier des chiers sur le serveur FTP,
rcuprer les informations dun rpertoire et/ou dun chier,
...
Pour plus de dtails, consultez laide en ligne (mot-cl : "FTP, Fonctions").
403
EMAILS
404
Prsentation
Le WLangage possde toutes les fonctions de programmation ncessaires pour grer la rception ou lenvoi de messages Internet (appels "emails"). De plus, grce WinDev, vous pourrez
connatre toutes les caractristiques dun email :
expditeur, destinataires
date denvoi, sujet, message
pices jointes ...
WinDev permet de grer les emails grce plusieurs mthodes :
Les protocoles POP3/SMTP (mthode la plus courante). Ces protocoles sont des protocoles
de gestion des emails reconnus par tous les fournisseurs de service. Ces protocoles vous
permettent de dialoguer directement avec le serveur, disponible chez votre fournisseur daccs.
LAPI "Simple Mail API" (appel aussi SMAPI ou Simple MAPI) : ce mode de gestion des emails est utilis par la plupart des applications Microsoft et principalement Microsoft Exchange.
Le logiciel de messagerie Lotus Notes ou Outlook : grce ces logiciels, il est possible
denvoyer et de recevoir des emails.
Le protocole IMAP : ce protocole de rception demails permet de laisser les emails sur le
serveur dans le but de pouvoir les consulter de diffrents clients de messagerie ou webmail.
Exemple
Nous voquerons dans ce cours uniquement la mthode de gestion par les protocoles POP3/
SMTP. En effet, cest le mode qui est actuellement le plus utilis dans le monde.
Pour plus de dtails sur Simple MAPI, consultez laide en ligne (mot-cl : "Simple MAPI").
Les fonctions de gestion des emails commencent toutes par "Email".
Pour plus de dtails sur la gestion des emails, consultez lexemple "WD Mail"
(exemple complet), livr en standard avec WinDev. Cet exemple est accessible
depuis le volet "Assistants, Exemples et Composants" de WinDev.
405
Pour envoyer et lire les messages, WinDev propose deux faons de grer les messages :
soit par la structure Email. Cette structure est une structure pr-dnie du WLangage.
soit par une variable de type Email. Ce type permet notamment de manipuler plusieurs messages en mme temps.
Exemple pratique
Le projet "WD Programmation Avance.WDP" contient une fentre permettant denvoyer des emails (cas le plus courant).
"Si ncessaire, ouvrez le projet exemple, "WD Programmation Avance" : sous le volet
"Accueil", dans le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez
loption "Programmation avance". Le projet se charge.
soit dutiliser la fonction EmailOuvreSession avec une variable de type EmailSessionSMTP. Dans
notre exemple, cette fonction est utilise dans le code du bouton "Envoyer mthode 2". Le code
utilis est le suivant :
MaSession est un EmailSessionSMTP
MaSession.Nom = SAI_user
MaSession.MotDePasse = SAI_MotDePasse
MaSession..AdresseServeur = SAI_ServeurSMTP
SI PAS EmailOuvreSession(MaSession) ALORS
Erreur("Impossible de se connecter au serveur SMTP")
RETOUR
FIN
406
Prparer lemail
Pour envoyer un message avec WinDev, il suft de renseigner les principales informations dun
email. Ces informations sont contenues :
soit dans la structure prdnie du WLangage Email. Dans notre exemple, le bouton "Envoyer
mthode 1" utilise cette structure. Le code de remplissage de la structure est le suivant :
EmailRAZ()
Email.Expditeur = SAI_Expediteur
Email.Sujet = SAI_SUJET
Email.Message = RTFVersTexte(SAI_CORPS)
Email.HTML = RTFVersHTML(SAI_CORPS)
Email.NbDestinataire = 1
Email.Destinataire[1] = SAI_Adr_Destinataire
SI SC_SelecteurFichier.SAI_FIC<>"" ALORS
Email.NbAttache = 1
Email.Attache[1] = SC_SelecteurFichier.SAI_FIC
FIN
soit dans la variable de type avanc Email. Dans notre exemple, le bouton "Envoyer mthode 2"
utilise cette variable. Le code de remplissage de la variable est le suivant :
MonMessage est un Email
EmailRAZ(MonMessage)
MonMessage..Expediteur = SAI_Expediteur
MonMessage..Sujet = SAI_SUJET
MonMessage..Message = RTFVersTexte(SAI_CORPS)
MonMessage..HTML = RTFVersHTML(SAI_CORPS)
Ajoute(MonMessage..Destinataire, SAI_Adr_Destinataire)
SI SC_SelecteurFichier.SAI_FIC<>"" ALORS
EmailChargeFichierAttach(MonMessage, ...
SC_SelecteurFichier.SAI_FIC)
FIN
Remarque : cet exemple gre lenvoi dun chier attach. Il est bien sr possible dutiliser plusieurs chiers attachs. Pour plus de dtails, consultez laide en ligne (mot-cl : "Envoyer un email").
Envoyer lemail
Pour envoyer lemail, il suft dutiliser la fonction EmailEnvoieMessage.
Se dconnecter
Pour vous dconnecter, il suft tout simplement dutiliser la fonction EmailFermeSession.
407
Autres possibilits
Il est galement possible de :
effectuer des mailings par emails. Pour plus de dtails, consultez lexemple "WD Mail"
(exemple complet prsent dans le volet "Assistants, Exemples et Composants").
manipuler les donnes Outlook (grce aux fonctions email du WLangage). Pour plus de dtails, consultez lexemple "WD Outlook" (exemple complet prsent dans le volet "Assistants,
Exemples et Composants").
manipuler les donnes Lotus Notes (grce aux fonctions Notesxxx du WLangage). Pour plus
de dtails, consultez lexemple "Accs aux bases Notes et Outlook" (exemple didactique prsent dans le volet "Assistants, Exemples et Composants").
Pour plus de dtails sur la gestion des emails avec WinDev, consultez laide en ligne (mot-cl :
"Email, Gestion des emails").
408
409
Concepts
La Programmation Oriente Objet (P.O.O.) a pour but de permettre une meilleure rutilisabilit
du code. Les programmes dvelopps en POO sont structurs : ils sont dcomposs en modules
grant chacun une fonctionnalit du logiciel. Les modules dvelopps peuvent tre facilement
rutiliss dans dautres logiciels. Ils vont regrouper un ensemble de procdures et encapsuler la
structure de donnes sur laquelle les procdures vont agir.
Pour programmer "en objet", il faut dclarer des classes, les membres et les mthodes associs.
Les classes
Une classe rassemble la description dune structure de donnes (les membres) et les procdures
(mthodes) qui manipulent les membres.
Une classe dnit donc un type de donnes et son comportement.
Les objets
Une classe permet de crer des objets. Chaque objet cr possde des membres dcrits dans sa
classe et peut tre manipul par lintermdiaire des mthodes de sa classe. On dit quun objet est
une instance de la classe.
Lorsque la classe est dclare, il suft dassocier un objet une classe pour que lobjet puisse
tre manipul par toutes les mthodes de cette classe.
Les membres
Un membre est une donne (ou paramtre) de lobjet.
Les mthodes
Une mthode permet dagir sur lobjet, pour modier ses membres par exemple.
Une mthode est une procdure. Son fonctionnement est identique celui des procdures classiques du WLangage.
Notion dhritage
Lhritage permet dinclure les caractristiques dune classe existante (classe de base) dans une
nouvelle classe (classe drive). Lhritage permet de crer un nouveau type de donnes partir
dun type connu, dans le but de lui ajouter des fonctionnalits, ou den modier le comportement.
La classe de base ne sera donc pas modie. Une classe peut hriter dune classe dont elle
devient une sous-classe.
Une classe drive hrite des membres et des mthodes de sa classe mre (qui peut, elle-mme,
tre une sous-classe dune autre classe mre), en plus de ses propres membres et mthodes
(et galement des membres et mthodes de la premire classe mre, sil sagit dun hritage
multiple). Il nest pas ncessaire de dupliquer les membres et mthodes de la ou des classe(s)
mre(s).
Constructeur et Destructeur
La notion de Constructeur et Destructeur est importante puisquelle permet un appel automatique de mthodes dinitialisation lors de la cration dun objet et lors de sa destruction.
La mthode Constructeur associe une classe est automatiquement appele lors de la dclaration dun objet de la classe.
410
La mthode Destructeur associe une classe est automatiquement appele lors de la suppression de lobjet (sortie de procdure dans laquelle lobjet a t dclar).
Encapsulation de donnes
Lencapsulation des donnes permet de garantir que les donnes membres de lobjet ne seront
pas modies tort par des fonctions (mthodes) extrieures lobjet.
Il est ainsi possible dinterdire lutilisateur dun objet laccs certain ou tous ses membres.
Les membres dont laccs est interdit sont appels membres privs.
Il nest possible daccder ces membres privs qu partir des mthodes prvues cet effet
dans la classe.
Exemple
Prenons un exemple simple pour appliquer les concepts que nous venons de voir :
La classe est la classe PERSONNE.
Florence est une instance de la classe PERSONNE.
Le nom, prnom et date de naissance peuvent tre des membres de la classe PERSONNE.
La mthode Age() peut tre une mthode de la classe PERSONNE. Elle calculerait lge en se
basant sur le membre "date de naissance".
Hritage : Un contact peut tre soit une personne, soit une entreprise.
PERSONNE pourrait tre une classe drive de CONTACT.
ENTREPRISE pourrait tre une classe drive de CONTACT.
Crer un programme orient objet
Pour crer un programme en objet en WLangage, il faut :
1. Dcrire la classe et les membres de la classe
2. Donner toutes les mthodes de la classe
3. Dclarer les objets en leur associant une classe ("instancier une classe")
"Si ncessaire, ouvrez le projet exemple, "WD Programmation Avance" : sous le volet
"Accueil", dans le groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez
loption "Programmation avance". Le projet se charge.
411
412
"Dans notre exemple, lobjet est manipul lors de la slection du chier. Le code utilisant les
diffrentes mthodes de la classe est plac dans le bouton permettant de slectionner le
chier.
"Afchez le code de ce bouton (clic droit sur le bouton, option "Code" du menu contextuel).
Lobjet est manipul de la faon suivante :
//Appel de la mthode
sFichier = gclMonFichier.SelectionFichier()
SI sFichier ~= "" ALORS
RETOUR
SINON
SAI_Fichier = sFichier
FIN
INFOFIC..Visible = Vrai
INFOFIC..Etat = AffichageSeulement
SAI_NomLong = gclMonFichier:m_sNomLong
SAI_NomCourt
= gclMonFichier:m_sNomCourt
SAI_Extension
= gclMonFichier:m_sExtension
SAI_CheminLong
= gclMonFichier:m_sCheminLong
SAI_CheminCourt = gclMonFichier:m_sCheminCourt
SAI_Taille
= gclMonFichier:TailleFichier()
SAI_Date
= gclMonFichier:DateFichier()
SAI_Heure
= gclMonFichier:HeureFichier()
413
414
PARTIE 9
Gestion de projet
avance
DE BORD
417
Prsentation
Le tableau de bord du projet est un lment indispensable la gestion de projets WinDev. Le tableau de bord permet davoir une vision globale et synthtique de ltat davancement dun projet.
Nous avons dj vu dans la partie 2, quelques fonctionnalits du Tableau de bord.
Nous allons maintenant ltudier plus en dtail, et voir ses interactions avec les Centres de
Contrle.
Exemple
Pour manipuler le tableau de bord, nous allons reprendre le projet "WD Application avec donnes". Si vous navez pas cr cette application, une version corrige est disponible. Pour ouvrir
ce projet corrig, sous le volet "Accueil", dans le groupe "Aide en ligne", droulez "Guide dAutoformation" puis slectionnez loption "WD Application avec donnes (Corrig)". Le projet se charge.
418
Les listes
Le tableau de bord est compos de diffrentes listes. Ces listes permettent doptimiser laccs
aux lments du projet.
Par exemple, la liste "Slection rapide" permet de rechercher facilement un lment du projet. Il
suft de saisir quelques lettres composant le nom de llment recherch. La slection est automatiquement ralise et un aperu permet de choisir llment voulu.
Astuce
Pour rechercher la fentre FEN_PersonneX, rien de plus simple : saisissez les lettres "Per" et faites
votre choix. Un double-clic sur le nom de llment permet de louvrir immdiatement sous lditeur associ.
Vous voulez rechercher un lment sans tre dans le tableau de bord ? Utilisez
la combinaison de touches [CTRL] + [E] ... et vous retrouverez les mmes possibilits.
Note
Autre liste intressante : les favoris. Qui dans son application na pas une fentre ou un code qui
est utilis frquemment ? Une fentre gnrale regroupant par exemple les principales fonctionnalits ? Pour ne pas perdre de temps rechercher cet objet, il suft de le mettre dans les favoris.
Par exemple, nous allons mettre la fentre "FEN_PersonneX" de notre application en favoris :
1. Dans le tableau de bord, cliquez sur le bouton "Favoris", et cliquez sur le lien pour afcher le
volet des favoris.
Pour afcher le volet des favoris, il est galement possible sous le volet "Accueil",
dans le groupe "Environnement", de drouler "Volets" et de slectionner loption
"Favoris".
2. Afchez la fentre "FEN_PersonneX" sous lditeur (par exemple en double-cliquant sur son
nom dans le volet "Explorateur de projet" WinDev).
419
3. Dans le volet "Favoris", cliquez sur le bouton "+". Vous pouvez saisir le nom du favori (par
exemple MaFentre).
Note
4. Dans le tableau de bord, vous retrouvez galement votre favori en utilisant la touche F5.
Les voyants
Dans la partie 2, nous avons vu le voyant concernant les tests. Regardons les autres voyants.
Les informations concernant la qualit globale du projet sont regroupes dans un compteur spcique.
420
GDS : Permet de savoir si le projet est partag via le Gestionnaire de Sources. Nous verrons plus
en dtail cette fonctionnalit dans la leon suivante ("GDS", page 425).
Live data : Permet dutiliser le contenu des chiers de donnes du poste de dveloppement
dans les fentres, les tats, ... manipuls sous lditeur. Cette fonctionnalit est trs intressante par exemple pour dnir la taille des champs prsents dans une fentre.
Charte de programmation : Nous lavons vu dans la partie 1, la charte de programmation permet dunier les noms des lments utiliss dans un projet. Comme notre projet utilise une
charte de programmation, ce voyant est vert.
Partie 9 : Gestion de projet avance
421
GFI (Grisage automatique des Fentres Inaccessibles) : Cette option indique si les fentres
inaccessibles de votre application seront automatiquement grises ou non. Cette fonctionnalit
est souvent trs apprcie des utilisateurs. Lorsque plusieurs fentres sont superposes, les
fentres inaccessibles sont automatiquement grises.
Langues : vous trouvez ici le nombre de langues gres par votre projet. Dans notre cas, une
seule langue est gre. Un clic sur ce voyant vous permet dajouter simplement de nouvelles
langues votre projet. Nous tudierons la gestion des projets multilingues un peu plus loin dans
ce cours ("Multilingue", page 488).
Gabarit : Vous le savez, les gabarits permettent de dnir simplement la charte graphique de
votre application. Un clic sur ce voyant vous permet daccder lcran de conguration de
gabarit de votre application.
Etats et Requtes : Nous lavons dj vu, le logiciel "Etats et Requtes" permet lutilisateur
nal de composer ses propres tats et ses propres requtes. Pour lintgrer dans votre application : un voyant suft. Pour plus de dtails, consultez "Diffusez "Etats & Requtes" avec vos
applications", page 369.
Les compteurs en relation avec les Centres de Contrle
WinDev est livr avec plusieurs Centres de Contrle. Les Centres de Contrle, comme leur nom
lindique, permettent de contrler un ensemble de fonctionnalits. Nous avons dj vu le Centre
de Contrle HyperFileSQL, qui permet notamment de contrler les applications et les chiers de
donnes des applications HyperFileSQL Client/Serveur.
WinDev propose galement le Centre de Suivi de Projets. Ce centre permet de grer des projets
(informatiques ou non), de leur conception leur livraison et mme leur maintenance.
Nous ne dtaillerons ici que les lments en relation avec le tableau de bord. Pour plus de dtails
sur les Centres de Contrle et leur conguration, consultez le chapitre "Centres de contrle", page
436.
Le compteur de bugs
Le compteur de bugs reprsente le nombre de bugs actuellement prsents sur le projet. Ces bugs
sont rfrencs dans le Centre de Contrle Qualit.
Ces bugs ont t fournis directement par les utilisateurs de lapplication, au moyen de loption "?
.. Envoyer une suggestion, ..." de leur application. Cette option est propose en standard si vous
intgrez le menu automatique "?" dans votre application.
Le compteur de tches
Le compteur de tches reprsente le nombre de tches actuellement en cours sur le projet. Ces
tches sont rfrences dans le Centre de Suivi de Projets.
Ces tches correspondent par exemple :
des fonctionnalits ajouter au projet
des dveloppements futurs, ...
422
Le compteur de demandes
Le compteur de rgles permet de connatre le nombre de rgles mtier concernant le projet. Nous
verrons les rgles mtier un peu plus loin dans ce cours. Les rgles mtier peuvent tre saisies :
par vous, dveloppeur de lapplication
par les utilisateurs, au moyen de loption "? .. Envoyer une suggestion, ..." de leur application.
Cette option est propose en standard si vous intgrez le menu automatique "?" dans votre
application.
423
Pour congurer le tableau de bord, slectionnez loption "Options du Tableau de Bord" du menu
contextuel du tableau de bord. Il est possible de congurer prcisment pour les deux modes :
424
425
Introduction
Un dveloppement informatique important ncessite la participation de plusieurs dveloppeurs.
Ces dveloppeurs doivent travailler sur un projet WinDev unique, en partageant les diffrentes
ressources (fentres, classes, ...) manipules.
WinDev gre en standard un gestionnaire de sources nomm "GDS" permettant de partager les
sources de diffrents projets entre dveloppeurs et de connatre lhistorique complet des modications ralises (dans le code, linterface, ...).
Lorsquun dveloppeur veut modier un lment dun projet (une fentre, un tat, une requte, ...), il indique au GDS quil sapproprie temporairement cet lment. Pour cela, le dveloppeur va extraire cet lment de la base de sources.
Ce dveloppeur obtient alors les droits exclusifs sur cet lment : il peut faire toutes les
modications voulues sur cet lment.
Les autres dveloppeurs continuent de travailler avec la copie de la version de rfrence de
cet lment (prsente sur la base de sources).
Ds que le dveloppeur a termin ses modications, il rintgre llment extrait dans la
base de sources.
426
Les autres dveloppeurs sont automatiquement avertis de cette rintgration. Ils peuvent
alors mettre jour leur copie locale.
Le GDS gre donc le travail collaboratif et permet de connatre lhistorique de toutes les modications ralises.
Le GDS permet galement dadministrer et de rglementer les lments partags entre plusieurs
projets.
Cration de la base de sources
Pour partager un projet grce au gestionnaire de sources, il est ncessaire de crer une base de
sources. Cette base de sources doit tre cre une seule fois sur un poste serveur.
Cette base de sources peut tre cre diffrents moments :
lors de linstallation de WinDev.
lors de la cration dun projet utilisant le GDS.
lors de limportation dun projet dans le GDS.
directement dans ladministrateur du GDS.
"Nous allons crer notre base de sources lors de limportation dun projet dans le GDS, la
Notes
prochaine tape.
Il est conseill de faire rgulirement des sauvegardes de la base de sources
du GDS. Pour cela, il suft de se connecter en tant quadministrateur loutil
dadministration du GDS, et de slectionner loption "Outils .. Administration ..
Sauvegarde complte de la base".
427
"Nous allons intgrer le projet "Fentres et Champs.WDP" dans la base de sources du GDS :
1. Ouvrez le projet exemple "WD Fentres et Champs.WDP" : sous le volet "Accueil", dans le
groupe "Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "Fentres et
champs". Le projet se charge.
2. Sous le volet "GDS", dans le groupe "Projet", cliquez sur "Ajouter le projet". Lassistant
dajout de projet dans le GDS se lance :
Nous navons pas prcdemment cr de base de sources. Nous allons donc en crer une.
Remarque : Nous allons crer une base de sources "locale" (sur le poste de dveloppement).
Le fonctionnement serait similaire pour une base de sources rseau.
3. Cliquez sur le bouton "Crer une base".
La base de sources peut tre au format HyperFileSQL Classic (local ou rseau) ou au format
HyperFileSQL Client/Serveur. Nous allons crer une base de sources au format HyperFileSQL
428
Notes
Classic.
Lutilisation dune base de sources au format HyperFileSQL Client/Serveur permet dutiliser cette base de sources distance.
4. Conservez loption "Cration dune base en mode partage rseau" slectionne et indiquez
le rpertoire de cette base de sources ("C:\Mes Projets\Ma base de sources" par exemple).
Validez la cration de la base de sources (bouton "Crer la base").
La base de sources est prsent cre. Nous allons pouvoir intgrer notre projet dans cette
base de sources.
5. Passez lcran suivant.
6. Lassistant nous propose de placer le projet dans le sous-rpertoire "Projets WinDev" de la
base de sources.
429
Notes
Nous voulons que tous les lments du projet soient ajouts. Passez lcran suivant.
8. Lassistant nous demande de slectionner les diffrentes dpendances du projet ajouter dans la base de sources. Ces dpendances correspondent tous les lments externes
ncessaires au projet (images, feuilles de styles, ...).
Nous voulons que toutes les dpendances du projet soient ajoutes. Passez lcran suivant.
9. Validez lintgration du projet dans le GDS. Notre projet et tous ses lments sont dsormais ajouts dans notre base de sources.
Une fentre daide sur la barre doutils dutilisation du GDS safche. Lisez et validez cette
fentre.
Partage dlments du projet
Lors de lintgration dans le GDS de projets partageant les mmes ressources
(la mme analyse, les mmes fentres, ...), les lments concerns peuvent tre
partags entre les diffrents projets. Ainsi, le mme lment nest intgr quune
seule fois dans le GDS.
Notes
Cette opration doit tre effectue une seule fois par chaque dveloppeur utilisant le projet.
Le dveloppeur qui a ajout le projet dans le gestionnaire de sources (dans ce cas, cest vous !)
na aucune manipulation effectuer.
430
Les prochaines ouvertures dun projet gr par le GDS sont identiques aux ouvertures dun projet non gr par le GDS : il suft douvrir le projet (chier ".WDP")
correspondant la copie locale.
Configuration du GDS
Avant de commencer travailler sur les lments du projet prsent dans le GDS, il est important
de congurer le GDS.
Les points importants de cette conguration concernent :
le mode dextraction des lments du projet.
le mode dextraction du projet (chier WDP).
Mode dextraction des lments du projet
Lors du travail sur des lments dun projet prsent dans le GDS, il est ncessaire dextraire llment de la base de source avant de commencer le modier, puis de le rintgrer une fois les
modications effectues. Llment modi est ainsi disponible pour tous les utilisateurs du GDS.
WinDev propose deux modes dextraction des lments du projet :
le mode classique : si vous afchez un lment du GDS non extrait, un panneau indique que
cet lment doit tre extrait pour tre modi. Vous pouvez extraire immdiatement llment
(bouton dextraction prsent dans le panneau).
le mode automatique : si vous tentez de modier un lment du GDS non extrait, le GDS propose automatiquement dextraire cet lment. Aprs la validation de lextraction, llment peut
tre modi.
Remarque : ce mode est dconseill lors dune utilisation du GDS avec une connexion Internet
lente.
Dans ce cours, nous allons utiliser lextraction automatique.
"Pour vrier que lextraction automatique est bien active, sous le volet "Accueil", dans le
groupe "Environnement", droulez "Options" et slectionnez loption "Options gnrales de
WinDev". Dans longlet "Gnral", vriez que loption "Extraction des lments la premire
modication" est slectionne. Si ce nest pas le cas, activez cette option.
Mode dextraction du projet
Notes
Le chier Projet (chier WDP) contient les diffrentes options pour le paramtrage du projet (code
dinitialisation du projet, liste des lments relis, nom de la premire fentre du projet, ...).
WinDev propose deux modes de gestion du projet :
Mode Matre/Invit : Seul le matre peut modier le projet et reporter ces modications dans
la base de sources du GDS. Le matre peut galement rintgrer tous les lments pour crer
lexcutable et le programme dinstallation. Les modications ralises par les invits sur le projet ne seront pas prises en compte dans la base de source du GDS.
Le mode Matre/Invit est conseill pour une utilisation du GDS par un seul dveloppeur.
Mode automatique : Le chier projet est extrait uniquement si laction ralise le ncessite
(quel que soit lutilisateur). Lorsque laction sur le projet a t effectue, le chier projet est
automatiquement rintgr.
431
Notes
Le mode "Automatique" devient vite ncessaire pour des projets importants partags par plusieurs dveloppeurs.
"Pour vrier que lextraction automatique du projet est bien active, sous le volet "GDS", dans
le groupe "Projet", droulez "Matre / Invit" et vriez que loption "Grer automatiquement
lextraction du projet" est bien coche.
Extraction dun lment
Nous allons maintenant commencer travailler avec le GDS.
Pour modier un lment du projet, il est ncessaire de lextraire.
sions de llment. Ce mode est rserv des cas dutilisation spciques et des dveloppeurs avancs.
7. Nous allons extraire la fentre en mode exclusif. Conservez loption "Exclusif" coche.
8. Saisissez un commentaire ("Ajout dun commentaire pour F2" par exemple). Ce commentaire sera utile pour les autres dveloppeurs.
9. Validez lextraction.
La fentre est extraite. Le code peut tre modi.
Modification de llment extrait
La modication dun lment extrait (IHM, code, ...) seffectue comme sur un projet non gr par
le GDS.
Cependant, toutes les modications effectues sur un lment extrait ne sont pas visibles par les
autres dveloppeurs.
Si un autre dveloppeur excute llment extrait, llment qui est actuellement dans la base de
sources sera utilis.
Il est ainsi possible de faire voluer une application tout en gardant une version stable dans la
base de sources.
"Sous le volet "GDS", dans le groupe "Elment en cours", cliquez sur le bouton "Rintgrer".
Lcran suivant safche :
433
Notes
"Validez la rintgration.
Synchronisation du projet
Plusieurs options permettent de congurer un projet manipul avec le GDS. Ces options sont regroupes dans longlet "GDS" de la description du projet (afche par un clic sur "Description"
sous le volet "Projet").
Ces options sont les suivantes :
Proposer la rcupration de la dernire version des lments louverture du projet.
Cette option permet lors de louverture dun projet prsent dans le GDS, de proposer la
rcupration de la dernire version des diffrents lments du projet.
Par dfaut, la dernire version des lments est automatiquement rcupre.
Proposer la rintgration des lments la fermeture du projet.
Cette option permet dafcher lors de la fermeture du projet la liste de tous les lments
actuellement extraits, an de rintgrer certains ou tous ces lments.
Par dfaut, la fermeture du projet, les lments extraits ne sont pas rintgrs.
Notes
434
Fusion de code
Vous pouvez comparer un lment avec une de ces versions prcdentes. Il est
alors possible de comparer le code pour rcuprer un code "perdu" ou supprim
par erreur par un autre dveloppeur par exemple.
"Lancez ladministrateur du GDS : sous le volet "GDS", dans le groupe "Base GDS", cliquez sur
le bouton "Grer". Tous les lments du projet sont lists dans ladministrateur.
Pour plus de renseignements sur le GDS, consultez laide en ligne de WinDev (mot-cl : "GDS").
Partie 9 : Gestion de projet avance
435
DE CONTRLE
436
Prsentation
Note
WinDev propose un ensemble doutils pour suivre le dveloppement dun projet, de sa conception
sa maintenance. Ces outils sappellent les Centres de Contrle.
Dans un chapitre prcdent, nous avons dj voqu le Centre de Contrle HyperFileSQL. Ce
Centre de Contrle (redistribuable) permet notamment de grer les applications HyperFileSQL
Client/Serveur dployes.
Dans cette partie, nous allons nous intresser aux Centres de Contrle lis au dveloppement
dune application :
le centre de Suivi de Projets.
le centre de Contrle Qualit.
Ces deux centres utilisent une base de donnes spcique. Cette base de donnes peut tre :
soit une base de donnes HyperFileSQL Classic : au premier lancement de WinDev, vous avez
donn le chemin de cette base de donnes. Par dfaut cette base est installe dans un sousrpertoire de WinDev 18.
soit une base de donnes HyperFileSQL Client/Serveur.
Ces informations sont modiables tout moment depuis les options de WinDev :
1. Dans le volet "Accueil", droulez "Options" et slectionnez "Options gnrales de WinDev".
2. Dans longlet "Utilisateur" des options de WinDev, cliquez sur le bouton "Paramtres des
Centres de Contrle").
Conguration ncessaire
Pour suivre cette leon, vous devez utiliser lenvironnement en mode complet.
Pour plus de dtails, consultez "Tableau de bord", page 417.
"Lancez le Centre de Suivi de Projets. Pour cela, sous le volet "Outils", dans le groupe "Centres
Notes
La premire chose faire est de dnir le "Projet" de travail. Dans notre cas, ce projet correspond
un projet WinDev, mais il pourrait sagir de nimporte quel autre projet.
437
Notes
Le Centre de Suivi de Projets peut vous aider grer, planier nimporte quel
projet ou tche (de dveloppement, commercial, ou autre).
Note
1. Dans le Centre de Suivi de Projets, crez un nouveau projet (option "Gestion .. Gestion des
Projets", bouton "+").
2. Saisissez :
le nom du projet (par exemple "Autoformation")
sa description (par exemple "WD Application avec donnes")
le type dapplication : Windows
le chemin du projet. Dans notre cas, indiquez un chemin de projet hors GDS (par exemple le
chemin du projet "WD Application Avec Donnes.wdp", dans le sous-rpertoire "Autoformation\Corrigs\WD Application Avec Donnes" de WinDev).
Si le projet est disponible dans le GDS (Gestionnaire de sources), il est possible
de saisir la base de sources et le rpertoire distant correspondant au projet.
un groupe
le spool associ (vous pouvez en crer un nouveau). Le spool permettra de rcuprer les
demandes ralises par les utilisateurs.
la couleur associe au projet (permet didentier rapidement les diffrents projets).
3. Validez.
4. Lcran permettant de slectionner les intervenants de votre projet est automatiquement
afch. Laissez vous-mme, et validez.
5. Fermez la fentre de gestion des projets.
"Maintenant, il est possible de dnir des tches sur le projet. Nous allons crer une tche
pour passer notre projet en multilingue :
1. Slectionnez loption "Tches .. Crer une nouvelle tche". Cette tche va tre associe au
projet "Autoformation" que nous venons de crer.
438
439
Lutilisateur peut valider la tche en cours, ou si ncessaire, changer sa tche en cours. De plus,
si le poste de travail est inutilis pendant une priode dtermine, une "roue des tches" safche.
Cette roue des tches permet de slectionner la tche dinterruption correspondant au temps
coul pendant lafchage de la roue.
440
Conguration
Il est possible dactiver/dsactiver la gestion du temps dans la fentre de paramtrage de la gestion du temps. Cette fentre peut tre afche :
dans le Centre de Suivi de Projets (option "Paramtres .. Options du Centre de Suivi de Projets")
dans WinDev : pour cela, sous le volet "Projet", dans le groupe "Autres actions", droulez "Gestion du temps" et slectionnez loption "Options de la gestion du temps".
Notes
La gestion des retours clients dpend de lutilisation en mode connect ou non de lapplication.
Si lapplication est en mode connect (la base de donnes des Centres de Contrle est accessible aux utilisateurs), les demandes sont directement enregistres dans la base de donnes des
Centres de Contrle :
les suggestions et les dysfonctionnements sont enregistrs dans le spool de lapplication.
les rgles mtier sont automatiquement ajoutes aux rgles mtier du projet.
Si lapplication est en mode dconnect (la base de donnes des Centres de Contrle nest pas
accessible aux utilisateurs), les demandes se font par emails. Le Centre de Suivi de Projets doit
tre congur pour recevoir les emails (paramtrage ralis dans les options administrateur du
Centre de Suivi de Projets) :
les suggestions et les dysfonctionnements sont enregistrs dans le spool de lapplication, puis
sont grs par le Centre de Contrle Qualit.
les rgles mtier sont automatiquement ajoutes aux rgles mtier du projet.
Pour plus de dtails sur la gestion des retours Client, il est conseill de consulter
laide en ligne (mot-cl : "Retour Client").
441
MTIER
442
Prsentation
WinDev permet de grer des rgles mtier.
Une rgle mtier permet de dnir un mode opratoire prcis ou de prciser un traitement particulier. Par exemple : le calcul dun taux de TVA avec ses particularits, les rgles de changement
de statut dun client, la formule de calcul dun montant de frais de port, ...
Une rgle mtier peut tre simple ou labore, et concerner un ou plusieurs lments dun ou de
plusieurs projets.
Exemple
Pour voir les avantages des rgles mtier, nous allons crer une rgle mtier sur le projet "WD
Application Avec Donnes" cr la partie 2 de ce cours dauto-formation.
Si vous navez pas cr cette application, une version corrige est disponible. Pour ouvrir ce projet
corrig, sous le volet "Accueil", dans le groupe "Aide en ligne", droulez "Guide dAuto-formation"
puis slectionnez loption "WD Application avec donnes (Corrig)". Le projet se charge.
Ce code permet de calculer lge de la personne, et si celui-ci est infrieur 18, le libell
afche en rouge la chane "Personne non majeure".
443
"Nous allons donc crer une procdure avec ce code pour pouvoir lexcuter volont.
1. Sous lditeur de code, slectionnez le code que vous venez de saisir.
2. Dans le menu contextuel, slectionnez loption "Crer une procdure .. Crer une procdure
locale contenant le code slectionn".
3. Donnez un nom la procdure : CalculAge.
4. Copiez lappel la procdure CalculAge dans les lments suivants :
Bouton de recherche lidentique.
Bouton de recherche gnrique.
Boutons de parcours.
"Testez la fentre. Faites une recherche gnrique sur VINI, et afchez VINI Emma.
"Nous allons maintenant crer une rgle mtier sur cette fentre.
Dans notre cas, la rgle mtier va sappliquer toutes les personnes ayant moins de 18 ans.
Dans ce cas, un traitement spcique doit tre fait : il faut afcher un libell indiquant que la
personne est non majeure.
1. Afchez le volet des rgles mtier. Sous le volet "Accueil", dans le groupe "Environnement",
droulez "Volets" et slectionnez "Rgles mtier".
2. Par dfaut, la nouvelle rgle mtier sera cre sur llment slectionn : slectionnez le
libell "LIB_SansNom1".
3. Cliquez sur le bouton "+" : lcran de saisie de la rgle mtier safche.
4. La description de la rgle est la suivante : "Si la personne a moins de 18 ans, afcher un libell rouge indiquant que la personne est mineure".
5. Nous allons maintenant dnir sur quels lments la rgle mtier doit sappliquer. Cliquez
sur longlet "Liens".
6. Nous allons dnir un lien automatique : la rgle sappliquera ds quun lment respectant les conditions de la rgle sera cr. Cliquez sur le bouton "Conditions des liens automatiques" (
).
7. Cette rgle mtier sappliquera sur le projet courant. Slectionnez loption "Le projet courant uniquement".
444
8. Nous allons dnir les conditions de slection de la rgle mtier. Cliquez sur "+" et indiquez
les informations suivantes :
La rgle va concerner tous les champs des fentres lis la rubrique "Personne.DateNaissance". Validez. La condition de slection est afche.
Automatiquement, les fentres existantes du projet correspondant la rgle sont listes.
9. Validez. Puis validez la fentre de dnition des conditions des liens automatiques.
10. La liste des liens pour llment "FEN_PersonneX" est afche. Vous pouvez passer ltat
du lien en "Ralis" pour llment concern dans la fentre "FEN_Personne_X".
445
446
Prsentation
Vous avez cr une application, et vous voulez crer un composant partir de certaines fentres
du projet ? Votre projet contient des procdures qui pourraient tre utilises dans un service
Web ? Une partie de votre application peut tre utilise en Java ?
Comment ne pas multiplier les projets ? Un seul projet et plusieurs destinations possibles, voil le
d rsolu grce aux congurations de projet WinDev.
Les congurations de projet permettent de crer partir dun mme projet plusieurs "cibles" diffrentes. tout moment, vous pouvez choisir la conguration sur laquelle vous travaillez, et gnrer
en une seule opration tous les lments pour toutes les congurations dun projet.
Un exemple pratique ? Nous allons tester les congurations de projet sur notre application complte.
447
448
Gnration multiple
Nous avons vu comment gnrer une conguration, mais bien souvent, aprs une modication, il
est ncessaire de gnrer les lments correspondants toutes les congurations dnies sur le
projet. Pour cela, sous le volet "Projet", dans le groupe "Gnration", cliquez sur "Gnration multiple". Slectionnez ensuite les lments gnrer. Cette gnration sera effectue en une seule
opration.
449
COMPOSANTS EXTERNES
450
Prsentation
Un composant externe WinDev est
une brique applicative qui peut
tre rutilise dans un nombre
illimit de projets (et donc dexcutables).
Un composant externe permet
davoir un traitement identique
avec un code source unique pour
raliser une opration donne
mme si ce traitement doit tre
ralis par plusieurs projets.
Les projets qui utilisent un composant externe ont accs sous lditeur WinDev au nom des objets, procdures ou mthodes rendues visibles par le concepteur du
composant. Les projets ne peuvent pas voir ou modier le code source. La condentialit et la
stabilit du code sont garanties.
La ralisation dun composant externe est trs simple.
Comment faut-il faire ? Faites comme dhabitude, crez vos fentres, procdures, classes. Puis
lorsque vous aurez termin, au lieu de choisir loption de cration de lexcutable, prenez loption
de cration dun composant, cest tout !
Notes
Un composant peut contenir du code, des fentres, une analyse, des chiers de donnes, etc ... !
Pour partager du "code", il y a cinq mthodes principales avec WinDev :
1. Les collections de procdures
2. Les classes
3. Les superchamps ( travers lutilisation dun dictionnaire)
4. Les composants externes
5. Les composants internes
Voici plusieurs cas dans lesquels les composants externes peuvent tre intressants.
Travail en quipe
Un dveloppeur cre et maintient un composant externe quil met la disposition des autres
dveloppeurs. Il ne risque pas dy avoir des modications faites "par erreur" !
Les projets volumineux
Les composants externes permettent davoir plusieurs projets distincts de tailles rduites, et
davoir un projet central dans lequel les lments des autres projets sont visibles. Lutilisabilit
des composants externes est bien meilleure que les bibliothques (chiers WDL).
451
452
453
Notes
WinDev propose dintgrer automatiquement dans la conguration du composant les lments prsents dans la liste des lments du projet. Pour afcher
la liste des lments du projet, sous le volet "Projet", dans le groupe "Projet",
cliquez sur licne
.
Pour que les chiers de donnes soient automatiquement proposs, il est ncessaire que les chiers de donnes soient prsents dans cette liste.
2. Lassistant vous demande de slectionner les lments du composant qui seront accessibles depuis lapplication cliente. Dans notre exemple, seule la collection de procdures
"COL_CommandesParVille" sera utilise :
454
3. WinDev propose dautoriser la traduction du composant. Cette fonctionnalit est intressante si votre composant doit tre utilis par des applications multilingues.
Si loption "Autoriser la traduction du composant" est coche, il sera possible de traduire
partir de lapplication utilisant le composant les lments spcis du composant.
Cette traduction sera ralise laide de WDMSG, module indpendant permettant dextraire
et de rintgrer les messages traduire dun projet.
Dans cet exemple, ne cochez pas cette option. Passez lcran suivant.
4. Choisissez les langues du composant. Notre exemple contient uniquement le Franais.
Passez lcran suivant.
5. Lassistant propose ensuite de grer les diffrentes versions du composant. Dans notre
exemple, le composant vient dtre cr.
Conservez les options par dfaut. Passez lcran suivant.
6. Saisissez les diffrentes informations concernant le composant :
Propritaire,
Libell, Copyright, ...
7. Passez lcran suivant.
8. Vous pouvez associer une image votre composant. Les utilisateurs du composant pourront lidentier rapidement dans le volet "Catalogue dexemples". Passez lcran suivant.
9. Spciez la prsentation gnrale du composant. Cette prsentation permettra lutilisateur du composant de connatre sa nalit. Saisissez par exemple :
455
"Validez. Voil, votre premier composant est maintenant cr, il est prt lemploi !
Le composant apparat alors dans le volet "Assistants, Exemples et Composants" (bouton
"Composants", rubrique "Composants personnels").
Etape 2 : Utilisation du composant externe
Une fois cr, votre composant est alors utilisable dans nimporte quel autre projet WinDev. Nous
allons maintenant voir comment rutiliser ce composant.
"Pour cela, nous allons crer un nouveau projet et importer notre composant dans ce projet.
1. Crez un nouveau projet : cliquez sur
parmi les boutons daccs rapide. Dans la roue qui
safche, cliquez sur "Projet". Ce projet sappelle "CompoUtilisation" et na pas danalyse.
2. Sous le volet "Projet", dans le groupe "Projet", droulez "Importer" et slectionnez loption
"Importer un composant Externe .. partir dun chier".
Remarque : Si vous avez enregistr le composant dans le centre de r-utilisabilit, vous pouvez limporter directement depuis le centre de r-utilisabilit.
3. Dans le rpertoire du projet "WD Faire des ditions", slectionnez le sous-rpertoire "EXE\
CompoCommandesParVille", puis le chier "CompoCommandesParVille.wdi". Le projet "WD
Faire des ditions" est disponible dans le sous-rpertoire "Autoformation\Exercices\WD Faire
des ditions".
4. Aprs avoir cliqu sur "Ouvrir", la description de notre composant sest afche. Cette description contient :
Sur longlet "Gnral", les lments saisis lors de la cration du composant externe, ainsi
que son emplacement. Il est galement possible de dnir le mode de chargement du composant.
Sur longlet "Dtail", la description du composant, ainsi que laide gnre automatiquement. Il est ainsi possible de connatre les lments utilisables du composant.
456
Notes
Il est possible daccder tout moment la description du composant. Il suft de slectionner le composant dans lexplorateur de projet et de slectionner
loption "Description" du menu contextuel.
"Nous allons maintenant crer une nouvelle fentre vierge pour utiliser le composant.
1. Crez une fentre vierge.
Nommez la fentre "FEN_ClientParVille".
Saisissez le titre "Clients par ville".
Enregistrez la fentre.
2. Ajoutez les champs suivants :
Un champ de saisie avec pour libell "Ville" et pour nom "SAI_Ville".
Un champ Table "TABLE_Ville" compos de 2 colonnes :
- une colonne "Nom" de type Texte.
- une colonne "Total ventes" de type Numrique.
Un bouton avec pour libell "Rechercher" et pour nom "BTN_Rechercher".
"Editez maintenant le code du bouton "BTN_Rechercher". Lors du clic sur ce bouton, nous
allons excuter la procdure de recherche prsente dans le composant. Cette procdure :
attend en paramtre le nom de la ville
renvoie une chane de la forme : Nom du Client 1 + TAB + Total vente 1 + RC + Nom du client
2 + TAB + Total vente 2 + ...
Le code du bouton "BTN_Rechercher" doit donc :
appeler la procdure DonneCommandesVille du composant en lui passant en paramtre le
contenu du champ SAI_Ville.
traiter la chane obtenue pour lajouter dans la table.
Saisissez le code suivant :
S est une chane
S = CompoCommandesParVille.DonneCommandesVille(SAI_Ville)
POUR TOUTE CHANE x DE S SEPARE PAR RC
TableAjoute(TABLE_Ville,x)
FIN
"Sauvegardez votre fentre, puis testez en cliquant sur le bouton "GO". Dans le champ de
saisie, saisissez "PARIS" puis cliquez sur le bouton "Rechercher". La liste des clients safche.
457
"Revenez sur le projet "WD Faire des ditions". Pour crer linstallation, sous le volet "Projet",
cliquez sur "Procdure dinstallation".
Lassistant de cration dinstallation du composant se lance.
Nous ne dtaillerons pas les diffrents modes dinstallation dun composant. Suivez les instructions de lassistant. Si vous souhaitez obtenir plus de dtails concernant linstallation de composants, consultez laide en ligne (mot-cl : "Composant, Distribuer un composant").
458
LEON 9.7. LE
DBOGUEUR
459
Prsentation
Lors de la ralisation de lapplication complte (projet "WD Application Avec Donnes" de la partie
2), nous avons effectu plusieurs tests : tests de fentres, tests de requtes, tests dtats, ...
Une erreur apparat et vous narrivez pas trouver la cause ? WinDev permet daller plus loin dans
les tests, en permettant de suivre pas pas lexcution dun programme : vous visualisez et vous
validez toutes les lignes de code qui sont excutes grce au dbogueur.
Le dbogueur permet pendant lexcution de votre application de connatre les valeurs des diffrentes variables utilises, dexcuter certains traitements, de r-excuter des lignes de code. Il est
mme possible de modier des lignes de code tout en dboguant.
Le dbogueur peut tre utilis en dveloppement (pour trouver la cause dun problme pendant la
phase de dveloppement), ou en excution : il est possible de dboguer un excutable lanc sur
le poste de dveloppement ou sur un autre poste, un composant, ...
Ces fonctionnalits vous intressent ? Passons aux choses srieuses et testons directement ces
fonctionnalits.
"Par exemple, nous allons lancer le dbogueur sur une des fentres de notre application
dveloppe dans la partie 2 :
1. Ouvrez le projet "WD Application Avec Donnes". Si vous navez pas ralis lapplication, un
projet corrig est disponible. Pour ouvrir ce projet corrig, sous le volet "Accueil", dans le groupe
"Aide en ligne", droulez "Guide dAuto-formation" puis slectionnez loption "WD Application
avec donnes (Corrig)".
2. Ouvrez la fentre "FEN_PersonneX".
3. Afchez le code du bouton de recherche lidentique (BTN_Identique).
4. Cliquez avec la souris dans la colonne jaune prcdant la premire ligne de code. Un point
rouge apparat : cest un point darrt.
460
Notes
En test, le dbogueur sera activ ds lexcution de la (ou les) ligne(s) contenant un point
darrt.
Le mot-cl STOP a le mme effet que le point darrt. Comme le point darrt, il
nest pas pris en compte dans lexcutable.
461
Notes
Ce volet afche toutes les informations afches pendant le test avec la fonction Trace. Un clic sur
une des lignes du volet de trace permet daccder automatiquement la ligne de code correspondante.
Une erreur survient pendant le test de votre application ? Vous navez pas le
temps de noter les informations afches ? Pas de problme, le volet de trace a
mmoris ces informations. Un double-clic sur le message derreur permet dobtenir toutes les informations dtailles.
Dboguer un projet
Nous venons de voir comment dboguer une fentre, mais il est galement possible de dboguer
le projet dans son ensemble. Dans ce cas, des paramtres spciques peuvent tre dnis : sous
le volet "Projet", dans le groupe "Mode test", droulez "Mode test" et slectionnez loption "Paramtrage du mode test".
462
463
DE PERFOR-
MANCES
Ce que vous allez apprendre dans cette leon ...
Prsentation de lanalyseur de performances.
Utilisation de lanalyseur de performances.
464
Prsentation
Lanalyseur de performances est un outil permettant de vrier et doptimiser le temps dexcution de votre application.
Il est conseill dutiliser lanalyseur de performances pour optimiser votre application (avant sa
diffusion par exemple).
Son principe est simple : Vous testez votre application. Pendant ce test, lanalyseur de performances rpertorie toutes les actions et traitements excuts.
la n du test, lanalyseur de performances vous prsente :
les 10 traitements qui ont pris le plus de temps
toutes les actions effectues dans lapplication teste, tries par dure (de laction la plus
longue laction la moins longue).
Il est possible de slectionner en particulier un traitement an danalyser les causes dun temps
de traitement trop important.
AnalyseurFin
Dans ce cas, seul le code prsent entre les fonctions AnalyseurDbut et AnalyseurFin est analys. Le chier WPF correspondant peut tre ouvert dans lanalyseur de performances : sous le
volet "Projet", dans le groupe "Audit et performances", droulez "Analyser les performances" et
slectionnez "Ouvrir un rapport de performances".
Par dfaut, lanalyseur de performances enregistre les statistiques ralises sur le code de lapplication dans un chier <Nom du Projet>.WPF.
Pour changer ce nom, cliquez sur le bouton "Enregistrer sous ..." dans lanalyseur de performances.
Pour ouvrir un chier de statistiques spcique (par exemple un chier cr par programmation) :
1. Sous le volet "Projet", dans le groupe "Audit et performances", droulez "Analyser les performances" et slectionnez "Ouvrir un rapport de performances".
2. Indiquez le chemin et le nom du chier de statistiques.
La liste des derniers chiers de statistiques ouverts est prsente dans le menu ouvert par loption
"Analyser les performances".
465
466
467
468
2. Cliquez sur "..." et slectionnez le rpertoire o se trouvent les lments importer (le rpertoire doit comporter des lments WinDev).
3. Validez. WinDev liste alors les diffrents lments que vous pouvez importer prsents dans
le rpertoire spci (les sous-rpertoires ne sont pas pris en compte).
469
Notes
Attention !
Vous pouvez galement exporter des lments de votre projet vers un autre rpertoire par
exemple. Ces lments pourront alors tre rutiliss dans dautres projets.
Lexportation dlments est plus quune simple copie dlments. En effet,
cest le seul moyen sr pour transmettre un lment dun projet avec toutes ses
dpendances (images, icnes ...). Une solution pratique pour transmettre des
fentres avec leurs dpendances par e-mail, par exemple.
Notes
470
Importations spcifiques
Importation dun projet WebDev
WinDev permet dimporter une page ou un projet WebDev entier dans une application WinDev.
Lors de cette importation :
Les pages sont transformes en fentres.
Les codes "Serveur" et "Navigateur" sont regroups.
Limport dlments sans quivalent en WinDev (code Javascript par exemple) est effectu sous
forme de commentaires ou dlments spars.
Pour importer un projet WebDev dans un projet WinDev :
1. Sous longlet "Projet", dans le groupe "Projet", droulez "Importer" et slectionnez "De WebDev .. Un projet WebDev". Lassistant dimport de projet WebDev se lance.
2. Slectionnez le projet WebDev importer. Ce projet ne sera pas modi et un nouveau
projet WinDev sera cr.
3. Donnez le nom et lemplacement du projet WinDev crer.
4. Si une analyse est lie au projet, indiquez son nom, son emplacement, et si elle doit tre
utilise par le projet WinDev.
5. Indiquez les lments partager entre le projet WinDev et le projet WebDev (lments communs du type Etats, Classes, ...). Si les lments sont partags, ils ne seront pas copis dans
le projet WinDev.
6. Validez. Le projet WebDev est converti en projet WinDev.
Pour importer des lments WebDev dans un projet WinDev :
1. Ouvrez le projet WinDev dans lequel llment doit tre import.
2. Sous longlet "Projet", dans le groupe "Projet", droulez "Importer" et slectionnez "De WebDev .. Des lments WebDev". La liste des lments pouvant tre imports safche.
3. Slectionnez les lments importer. Passez lcran suivant.
4. Indiquez les lments partager entre les projets WinDev et WebDev. Ces lments ne
seront pas copis dans le projet WinDev.
5. Validez (bouton "Terminer"). Les lments spcis sont automatiquement imports dans le
projet WinDev en cours.
Importation dune fentre
Une fentre dune application non WinDev vous intresse ? Vous souhaitez rcuprer son interface ? Rien de plus simple.
WinDev permet dimporter une fentre ouverte dans lenvironnement en cours.
La fentre est importe dans le projet en cours. Chaque lment de la fentre est automatiquement transform en lment WinDev (libell, champ de saisie, bouton, ...).
Remarque : Tous les lments de la fentre sont imports mais il est souvent ncessaire de modier la fentre pour obtenir linterface voulue.
471
472
APPLICA-
TION
Ce que vous allez apprendre dans cette leon ...
Editeur dinstallation
Update rseau, update Web
Questions/Rponses
473
Prsentation
Nous avons effectu prcdemment le dploiement dune application simple.
Cette leon revient sur linstallation dune application en prsentant plus particulirement
les installations avec mise jour automatique
lditeur dinstallation qui permet de crer des installations entirement personnalises.
474
475
476
477
Editeur dinstallation
Nous avons ralis jusqu prsent des programmes dinstallation avec lassistant dinstallation.
Mais pour aller plus loin dans le paramtrage de vos installations, WinDev propose un diteur
dinstallation regroupant toutes les options disponibles.
Pour lancer lditeur dinstallation, sous le volet "Outils", dans le groupe "Utilitaires", cliquez sur
"WDInst". Lcran suivant apparat :
478
Questions/Rponses
Question
Lors de la cration de linstallation (option "Procdure dinstallation" sous le volet "Projet"), vous
avez la possibilit de choisir diffrents supports dinstallation. En slectionnant loption "CD-ROM",
WinDev crera un dossier dans lequel tous les chiers ncessaires une installation par CD-ROM
seront crs (chier AUTORUN, chiers dinstallation, ...).
Vous navez plus alors qu graver le contenu de ce dossier complet sur un CD-ROM vierge pour
distribuer votre application !
Question
Lorsque lexcutable a t ralis, le rpertoire EXE prsent dans le rpertoire de votre projet
contient tous les lments permettant de faire fonctionner votre application.
Pour prparer une installation de votre application :
1. Sous le volet "Projet", cliquez sur "Procdure dinstallation". Lassistant de prparation dune
installation dmarre.
2. Suivez les instructions lcran.
479
ET
3-TIERS
480
481
Diagramme dtats-transitions
Un diagramme dtats-transitions prsente un automate tats nis. Il permet ainsi de dcrire les
changements dtats dun objet ou dun composant.
Un tat se caractrise par sa dure et sa stabilit.
Une transition reprsente le passage instantan dun tat vers un autre.
Une transition est dclenche :
soit par un vnement.
soit automatiquement lorsquaucun vnement dclencheur est spci.
Diagramme de dploiement
Un diagramme de dploiement montre la rpartition physique des matriels (les nuds) utiliss
dans un systme et lassociation des programmes excutables ces matriels.
Nous ne dtaillerons pas plus lutilisation du langage UML avec WinDev. Consultez laide en ligne
pour plus dinformations (mot-cl : "UML").
3-Tiers
Le 3 tiers, cest quoi ?
Le dveloppement en architecture "3-tiers" est maintenant simpli avec WinDev.
Le but du 3 tiers est de sparer les 3 couches habituelles dune application : IHM, Traitements et
donnes.
Une application sera compose de 3 couches indpendantes :
couche prsentation
couche Traitements
couche daccs aux donnes.
Ces 3 couches communiqueront entre elles laide de fonctions spciques (des API dans les
langages traditionnels, des fonctions avances en WLangage).
Cette sparation a pour but de rendre indpendantes chacune des couches an de simplier la
maintenance et les volutions futures de lapplication (par exemple, changement de systme de
base de donnes, portage dun environnement graphique un autre, ...).
Elle assure une scurit plus importante car laccs la base de donnes nest autoris que par
la couche Traitements.
Elle a galement lavantage doptimiser le travail en quipe et le dveloppement multi-cibles.
Comment mettre en uvre le 3 tiers ?
Le dialogue entre les diffrentes couches seffectue par classes ou par structures ( votre choix)
qui sont gnres automatiquement par WinDev.
1. Vous choisissez les sources de donnes (chiers ou requtes que vous dsirez manipuler en
3-Tiers).
Vous crez sous lditeur danalyses et lditeur de requtes les diffrents chiers et requtes
ncessaires.
482
483
SOUPLE
484
Principe
Lditeur de modlisation permet de reprsenter toutes les organisations, existantes ou venir.
Lditeur de modlisation peut par exemple vous permettre de reprsenter lorganisation de la
gestion des mails dans votre entreprise, lorganisation des contacts clients, ...
Pour mieux connatre les possibilits de lditeur de modlisation, nous vous avons prpar un
exemple de modlisation. Cette modlisation reprsente une partie de lERP (Entreprise Ressource Planning) de lentreprise ctive H2M.
Manipulations
485
"Dans notre exemple, ouvrez la sous-modlisation correspondant la gestion des devis. Vous
retrouvez les diffrentes tapes de la gestion des devis :
"Regardons en dtail llment "Base du sige". Une che est prsente en haut gauche de
cet lment. Cette che indique une liaison. Si vous double-cliquez sur la che, lanalyse
de lapplication souvre automatiquement.
Cest une fonctionnalit importante de lditeur de modlisation : tout lment de la
modlisation peut tre li un lment de votre projet (fentre, code, ...).
486
487
488
"Cet onglet permet galement de paramtrer les options linguistiques concernant les
nombres, les montaires, les dates, ... pour la langue slectionne. Voyons un exemple :
Cliquez sur la langue "Anglais".
Cliquez sur "Date"
Par dfaut, les options linguistiques de Windows sont utilises. Si vous slectionnez loption
"Utiliser les paramtres suivants", il est possible de dnir le format de date utilis ainsi que
la traduction des jours et des mois.
Conservez loption "Utiliser les paramtres dnis dans les options linguistiques de Windows".
489
Notes
"Validez.
Dans les options linguistiques, il est possible de choisir le sens dcriture de la
langue (case "Divers", option "Sens dcriture"). Il est ainsi possible de crer des
interfaces avec une langue scrivant de droite gauche.
Internationalisation de lanalyse
Par dfaut, une analyse est cre dans une langue et ne peut pas tre traduite. Cependant, certaines informations peuvent tre saisies dans plusieurs langues (notes du dossier, informations
partages, ...). Si votre application utilise le module Etats et Requtes, il est galement possible
de traduire les noms de chiers et les noms de rubriques. Cette traduction peut tre ralise dans
longlet "Etats et Requtes" (de la description de chiers ou de rubriques).
Les champs crs partir des rubriques de lanalyse ont par dfaut le libell de la rubrique spci dans lanalyse. Si un libell a t spci dans les informations partages de la rubrique, ce
libell sera utilis lors de la cration du champ.
Pour grer plusieurs langues dans une analyse :
parmi les boutons daccs rapide du menu de
1. Afchez lditeur danalyses : cliquez sur
WinDev.
2. Dans la description de lanalyse (option "Description de lanalyse" du menu contextuel),
slectionnez longlet "International".
490
491
492
Dans la zone "Libell", les trois langues sont disponibles. Faites dler la zone "Libell". Si le
projet nest pas encore traduit, le contenu de la langue "Franais" est recopi dans les autres
langues.
permet de congurer la gestion du multilingue. Cliquez
Dans la zone "Image", le bouton
sur ce bouton.
Dans la fentre qui safche, il est possible dutiliser une image diffrente pour chaque
langue. Cette fonctionnalit est trs utile si vous utilisez des images contenant du texte.
Fermez cette fentre.
Cliquez sur longlet "Aide". Cet onglet contient les diffrents messages daide associs au
champ. Ici aussi, ces informations doivent tre traduites.
493
3. Spciez :
Si les paramtres rgionaux doivent tre automatiquement activs selon la langue en cours
de saisie. Dans ce cas, si la langue ncessite un alphabet spcique, cet alphabet sera automatiquement slectionn.
Le logiciel ou le site utiliser pour la traduction.
Les langues gres.
494
4. Lorsque les paramtres de traductions sont dnis, il est possible dutiliser le bouton
pour utiliser le logiciel dni pour la traduction.
Cas particuliers
Traduction directe des menus
La traduction des options dun menu peut tre ralise directement partir de lditeur de fentres.
Dans notre exemple, la fentre "FEN_FicheCollaborateur" afche un menu.
Tous les messages de votre programme peuvent galement tre saisis dans plusieurs langues.
Deux types de messages peuvent tre rencontrs :
les chanes de caractres simples, par exemple :
Pour traduire ce type de message, sous le volet "Code", dans le groupe "Langues", droulez
"Traduire des chanes" et slectionnez "Traduction des messages". La fentre suivante
apparat :
495
Cette fentre permet de saisir tous les messages de votre programme dans toutes les
langues du projet.
Un numro est attribu chaque message.
Lorsquune traduction est saisie pour le message, licne
apparat sous lditeur de
code.
Pour traduire ce type de message, sous le volet "Code", dans le groupe "Langues", droulez
"Traduire des chanes" et slectionnez "Interrogations directives". La liste des interrogations
directives safche. Il suft de double-cliquer sur la phrase traduire.
496
La traduction dun systme daide peut tre ralise directement sous lditeur daide. Il suft de
changer la langue dafchage. Si le systme daide na pas encore t traduit, le texte apparatra
dans la langue originale (Franais si le texte a t saisi en Franais).
Traduction du rsultat des fonctions WLangage et des messages derreurs du
framework
De nombreuses informations et messages sont prsents dans le framework WinDev. Par exemple,
les noms des jours et des mois utiliss par les fonctions de gestion des dates proviennent du
framework WinDev. Pour traduire une ou plusieurs librairies de ce framework, il est ncessaire
dutiliser WDINT (non fourni en standard avec WinDev).
Ce logiciel permet dobtenir un chier dextension WDM. Pour utiliser ce chier dans votre application :
vous pouvez utiliser la fonction ChargeErreur.
vous pouvez intgrer le chier la description du projet dans longlet "Langues". Il suft de slectionner la langue voulue et de slectionner longlet "Divers".
Pour obtenir plus dinformations sur WDINT, contactez le Service Commercial de PC SOFT.
497
498
"Testez le projet.
499
Note
La conguration du mode de gestion de lUnicode est ralise dans les options de la conguration
en cours (onglet "Unicode" de la fentre de description de la conguration).
500
Important
Si vous choisissez de passer vos projets en mode UNICODE, la cohabitation ANSI
/ Unicode gnre toutefois des contraintes : il faut traduire les donnes lors du
passage dun systme de codage lautre. Lchange de chanes texte avec
lextrieur de lapplication doit tre adapt pour prendre en compte la nouvelle
reprsentation mmoire des chanes (en Unicode, 1 caractre est cod sur 2 octets alors quen ANSI il est cod sur 1 seul octet) : appel dAPI, lecture ou criture
sur disque pour change de donnes, lecture ou criture de sockets contenant
des chanes, ...
Si vous choisissez de passer vos projets en mode UNICODE, un assistant mesurant limpact du passage Unicode est dclench sur le projet lors du passage
la norme Unicode.
CONCLUSION
Le cours est maintenant termin !
Ce cours a abord un ensemble de sujets, mais pas la totalit des fonctionnalits de WinDev, loin
sen faut !
Vous tes maintenant familiaris avec les principaux concepts.
Nous vous conseillons de consacrer une journe supplmentaire explorer les diffrents choix de
menu de WinDev, pour chacun des modules.
Explorez galement les exemples livrs avec WinDev : certains sont simples et ne traitent que
dun sujet, dautres sont trs complets. Ces exemples vous montreront les diffrentes facettes de
WinDev. La lecture du code source sera galement instructive en gnral.
Faute de place, nous navons pas pu aborder tous les sujets (il y en a des centaines, voire des
milliers !). WinDev offre de nombreuses possibilits non abordes ou non approfondies dans ce
cours :
groupware utilisateur
fonctions sockets, HTTP, tlphonie
cration de gabarits ...
tats imbriqus, requtes paramtres ...
compilation dynamique, appels de DLL, langages externes ...
Pour plus de dtails sur toutes ces possibilits, nhsitez pas consulter laide en ligne.
Rappel : Pour recevoir directement des mises jour intermdiaires et des conseils dutilisation,
abonnez-vous la LST (revue trimestrielle + DVD), en franais.
Nous vous souhaitons de bons dveloppements, avec WinDev 18, AGL n1 en France !
501