Page 1 sur 50
COURS DE WinDev
0. Introduction
0.1. Présentation de WinDev
WinDev est un atelier de génie logiciel (AGL) édité par la
société française PC SOFT et conçu pour développer des applications,
principalement orientées données pour Windows 8, 7, Vista, XP, 2008,
2003, 2000, mais également pour Linux, .Net et Java. La première version
de l'AGL est sortie en 1993. Apparenté à WebDev et WinDev Mobile.
WinDev utilise son propre « langage de programmation »,
le WLangage (abusivement désigné comme langage de cinquième
génération), ressemblant beaucoup à du pseudo-langage.
L'éditeur d'interface graphique permet de créer des IHM par glisser-
déplacer. Il permet également de choisir un modèle de charte graphique
parmi un ensemble proposé et d'en créer de nouveaux. Attention
cependant, à la différence de la plupart des langages supposés moins
évolués, il a longtemps été impossible d'ajouter des champs à partir de rien
ou de créer une IHM par pure programmation en WLangage : ceci devait se
faire dans l'éditeur d'interface graphique, ou en utilisant un champ
invisible hors fenêtre que l'on clonait. Ceci a conduit à généraliser de
mauvaises habitudes de programmation : utilisation de champs cachés ou
hors fenêtre, par exemple.
À partir de la version 19 les champs peuvent être créés par pure
programmation. Il est cependant toujours impossible (2015) de créer des
classes dérivées depuis les champs proposés, ce que permet la plupart des
autres langages depuis le siècle dernier.
On peut définir interactivement des « sécurités » de saisie sur les champs
parmi lesquelles : taille, masque, formatage automatique, saisie obligatoire
et aide à afficher. Par ailleurs, l'héritage et la surcharge sont gérés.
Bien que prévu initialement pour Windows, WinDev supporte
aussi GNU/Linux pour les applications avec1 et sans interface graphique,
mais aussi Mac OS X. Il peut également s'appuyer sur le
Framework Java pour une partie de ses fonctionnalités, ce qui permet une
relative indépendance du fichier exécutable par rapport au système
d'exploitation cible.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 2 sur 50
Ses frères WebDev et WinDev Mobile permettent d'utiliser le même
langage de programmation (WLangage), et les mêmes concepts (analyse,
fenêtre, états, composants, classes…), pour la génération de sites Web et
d'applications pour PocketPC, terminaux industriels (Windows CE),
smartphones et tablettes (iOS, Android et Windows RT).
WinDev propose également des centres de contrôle intégrés, dont le but est
d'organiser et contrôler le développement :
Centre de contrôle topologique ;
Centre de contrôle de planning ;
Centre de contrôle qualité pour gérer les retours clients (bogues et
suggestions, que l'utilisateur final peut envoyer directement via
chaque application) ;
Centre de contrôle des données.
WinDev utilise des formats de fichier propriétaire sous forme binaire. Ce
qui implique l'utilisation exclusive du gestionnaire de source maison (GDS)
ainsi que le moteur de recherche de l'EDI. Le code ne peut pas être édité
via un logiciel classique tel que le bloc-notes et surtout ne peut être mis
sous contrôle de version dans un système standard tel
que Subversion, Git ou Mercurial, par exemple. En fait, le développeur
WinDev est totalement lié à l’environnement de développement vendu par
l'éditeur.
La programmation orientée objet est possible, quoique moins puissante
que dans la plupart des langages tels que C++ ou Java (pas de templates,
par exemple). Attention à l'usage particulier du vocabulaire : alors que
traditionnellement une fonction virtuelle est une fonction destinée à être
redéfinie dans des classes héritant d'une classe de base, dans WinDev on
appelle "virtuelles" les fonctions redéfinies.
0.2. Vocabulaire
Dans le contexte de WinDev, beaucoup de termes sont employés dans un
sens différent de celui qu'ils ont habituellement dans la plupart des
langages informatiques, ce qui peut être déconcertant. Voici un aide-
mémoire des principales différences.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 3 sur 50
Désignation Désignation
Concept
standard WinDev
Ensemble d'entités de même type
regroupées dans une base de table fichier
données
Données enregistrées sur un
fichier fichier externe
support de stockage
Elément d'un enregistrement d'une
colonne, champ rubrique
table en base de données
Elément d'interface graphique widget, contrôle champ
Description de la structure d'une
schéma analyse
base de données
cases à cocher interrupteur
Eléments graphiques boutons radio sélecteur
grille table
0.3. Concepts de base
WinDev permet de créer simplement une application
Une application est un outil qui permet de réaliser les tâches, des actions
automatiquement. Une application est constituée d’un programme
exécutable, de librairies, de fichiers de données.
Un Programme exécutable est un fichier composé d’éléments
directement manipulables par l’utilisateur (fenêtre, états, imprimés, …).
Ainsi, pour créer un exécutable, WinDev propose de créer on projet. Un
projet relie entre eux les différents éléments du programme et les organise.
Si votre application manipule les données, WinDev permet de définir la
structure de la base de données grâce à l’analyse.
L’analyse WinDev contient la description des fichiers (appelés souvent
« Tables » dans de nombreuses bases de données ou langages) ;
Fichier : Le terme « Fichier » correspond à une table
Table : désigne un objet graphique permettant de visualiser le contenu
d’un fichier de données sous forme de tableau et/ou de saisir des lignes.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 4 sur 50
Enregistrement : également appelé ligne, il est l’ensemble de rubriques
définies pour le fichier.
Rubrique : c’est une zone d’un fichier de données qui définit la structure
d’un enregistrement.
Clé/Index : Avec WinDev avec sa base de données HFSQL, la notion
d’index est liée à la notion de la clé. La notion de clé fait partie des
caractéristiques d’une rubrique. Les clés permettent d’accélérer les accès
aux données ou de faciliter les parcours des fichiers des données.
Dans les fenêtres et les états, les termes utilisés sont les suivants :
Fenêtre : permet d’afficher ou de saisir à l’écran les informations ;
on peut également l’appeler « Ecran » ou «Boite de dialogue ».
L’utilisateur peut agir directement sur la fenêtre par l’intermédiaire
de champs, de boutons, ...
Etat : permet d’obtenir une vue personnalisée d’informations. Ces
informations peuvent provenir de la base de données, de fichiers
texte, de champs présents dans les fenêtres, … Les états peuvent être
visualisés à l’écran, imprimés sur papier, générés en PDF ou en
HTML.
Champ : Désigne les différents objets graphiques affichés dans une
fenêtre ou dans un état.
Gabarit : permet de définir le look de l’application ; apparence
visuelle des fenêtres, des boutons, des champs…
Style : regroupe les caractéristiques graphiques d’un élément :
Image de fond, bordure, police…
0.4. Intégration
WinDev permet de lire et aussi de modifier nativement les informations
de Excel, Outlook, Lotus Notes, de l'ERP SAP R/3 (via la technologie BAPI)
et depuis la version 14 celles de Sales Force et de diverses applications
Google : Maps, Agenda, Contacts, Adwords,… Sont également
supportés : ActiveX, appels de DLL, API Windows, OLE, RS 232 et USB,
TAPI, SOAP, SNMP, OPC, Flash, Twain, FTP, Socket, TSE, Citrix, etc. Des
fonctions domotiques sont présentes (norme X10).
Pour la manipulation d'un projet, les différents fichiers d'un projet ne
peuvent être ouverts qu'avec WinDev (ou WebDev ou WinDev mobile) car
ce sont des fichiers binaires et non pas des fichiers texte.
La création d'application multilangue est prise en compte
automatiquement.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 5 sur 50
WinDev permet de s'interfacer avec du code C++, C#, Cobol, Fortran,
Pascal.
0.5. Prise en charge des bases de données
WinDev gère de nombreux systèmes de gestion de base de données, que ce
soit par l'intermédiaire des protocoles ODBC ou OLE DB ou par accès natif.
Il existe un accès natif gratuit pour MySQL, pour PostgreSQL (depuis la
version 14) et pour SQLite (depuis la version 16). D'autres modules payants
permettant l'accès natif à Oracle, SQL Server, Sybase, AS/400,
DB2, Informix et Progress_4GL.
Il existe par ailleurs des accès natifs libres et gratuits comme MySQL4WD
et PostgreSQL4WD de Rodolphe Jouannet2 qui offrent un accès natif à
MySQL et PostgreSQL. Le module libre et gratuit SQLManagerX de
Frederic Emprin3 permet d'écrire un seul code unifié pour gérer les
différents systèmes de gestion de base de données. Par l'ajout d'autres
modules, SQLManagerX offre un accès natif à un grand nombre de bases
de données4.
WinDev comporte aussi son propre système de gestion de base de données
appelé HyperFileSQL (HFSQL) (anciennement nommé HyperFile). Il
existe en version locale, client/serveur sous Windows, Linux et mobile. Les
versions sont compatibles entre elles.
0.6. Les fonctionnalités automatiques des applications développées
Les applications développées avec WinDev bénéficient par défaut de
fonctionnalités automatiquement proposées à l'utilisateur final, qui sont
néanmoins désactivables par le concepteur. Ces fonctionnalités sont :
export des tables vers Word, Excel, OpenOffice et XML, création de
fichier PDF, possibilité de saisir des macros en code WLangage, possibilités
de tri et recherche directe dans les tables, possibilité de mémoriser les
valeurs saisies dans un champ de saisie et de les choisir à nouveau
(persistance des données), correction orthographique en temps réel (le
dictionnaire de OpenOffice.org doit être installé), historique des saisies sur
des champs spécifiés, affichage d'un graphique sur une série de données
sélectionnées, agrandissement de la taille d'une combo, ajout de somme,
moyenne et comptage dans une colonne et le positionnement d'une
minuterie sur un bouton.
À partir de la version 10, l'éditeur d'états et de requêtes peut être installé
gratuitement sur le poste de chaque utilisateur final, ce qui permet à
chaque utilisateur de créer librement ses propres états, étiquettes et
requêtes.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 6 sur 50
0.7. Liste des mots réservés
Les mots réservés du WLangage sont les suivants :
Allouer Permet de réserver de la place en mémoire pour contenir un tableau
dynamique, un objet de classe dynamique, une structure dynamique.
EXTERNE Permet soit d'intégrer un fichier texte contenant du WLangage dans une
application, soit de déclarer un objet externe
Libérer Permet de libérer explicitement la mémoire occupée par un tableau
dynamique, un objet de classe dynamique, une structure dynamique.
MaFenêtre Permet de manipuler la fenêtre courante.
MaFenêtreCoulissanteDroite Permet de manipuler la fenêtre coulissante droite associée à la fenêtre
courante.
MaFenêtreCoulissanteGauche Permet de manipuler la fenêtre coulissante gauche associée à la fenêtre
courante.
MaFenêtreFille Permet de manipuler la fenêtre fille de la fenêtre courante.
Nouveauté 21 Permet de manipuler la fenêtre interne courante.
MaFenêtreInterne
MaPage Permet de manipuler la page courante.
MaSource Permet de manipuler la source de données (fichier, vue ou requête)
courante.
MesParamètres Permet de manipuler les paramètres d'une procédure WLangage (procédure
classique ou procédure à nombre de paramètres variable)
Modulo Retourne le reste d'une division entière.
MoiMême Permet de manipuler le champ en cours.
MonEtat Permet de manipuler l'état courant
MonParent Permet de manipuler le superchamp en cours à partir d'un de ses champs
Null Permet de :
indiquer qu'un paramètre ne doit pas être pris en compte dans une
requête : Null et les requêtes
spécifier qu'une variable de type variant ne contient pas de
valeur : Null et les variants
comparer une valeur à 0 : Null et les numériques
dans certaines fonctions du WLangage, indiquer que le paramètre
ne doit pas être pris en compte : Null et les fonctions du WLangage
STOP Permet d'appeler le débogueur du WLangage lors d'un test sous l'éditeur.
Après exécution de ce mot-clé, le test en cours s'effectuera dans le
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 7 sur 50
débogueur.
CHAPITRE I : BASES DE PROGRAMMATION
1.1. Déclaration de différents types de variables
a) Les différents types de variables
WinDev propose une grande variété des types des variables
(booléen, entier, réel, monétaire, chaîne, date, heure, durée,
dateheure, variant, tableau, structure, …).
La syntaxe à utiliser pour déclarer une variable est très simple : Il
suffit d’indiquer le nom de la variable et son type :
NomVariable EST UN(E) TypeVariable
b) Quelques exemples :
1.1.1. Variable globale et locale
Présentation
Les variables peuvent être de deux types :
Variable locale : utilisable uniquement dans le traitement dans
lequel cette variable a été déclarée.
Important : Il ne faut pas déclarer deux variables avec le même nom
(notamment une variable globale et une variable locale).
a) Variable globale : utilisable dans tous les traitements dépendant du
traitement dans lequel cette variable a été déclarée.
Les variables globales déclarées dans le traitement d'initialisation
d'un projet peuvent être utilisées dans tous les traitements :
du projet.
de la fenêtre ou de la page (traitement de la fenêtre ou de la page, de
ses champs et des procédures locales associées).
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 8 sur 50
de l'état (traitement de l'état, de ses champs et des procédures
locales associées).
Ex :
GLOBAL // Toutes les déclarations qui suivent sont des variables globales
Indice est un entier
NomClient est une chaîne
Taux est un réel
LOCAL // Toutes les déclarations qui suivent sont des variables locales
I est un entier
PrénomClient est une chaîne
Prix est un monétaire
b) Variable locale
Déclarer une ou plusieurs variables locales
[LOCAL]
<Variables locales>
Détail de la syntaxe
LOCAL : Début de déclaration des variables locales.
L'utilisation du mot-clé LOCAL est optionnelle.
<Variables Variables locales à déclarer.
locales> :
Remarque : Le mot-clé LOCAL peut être remplacé par le mot-
clé LOCALE ou LOCALES.
LOCAL // Toutes les déclarations qui suivent sont des variables locales
I est un entier
PrénomClient est une chaîne
Prix est un monétaire
// Toutes les déclarations qui suivent sont des variables locales
I est un entier
PrénomClient est une chaîne
Prix est un monétaire
1.1.2. Constante / Constant
En anglais : Constant
Les constantes sont des éléments du langage dont la valeur est fixée une
fois pour toute. Cette valeur ne peut pas être modifiée au cours du
programme.
Remarque : Les mots-clés CONSTANT et CONSTANTE sont acceptés.
Dans cette documentation, seul le mot-clé CONSTANT est utilisé et peut
être remplacé par CONSTANTE.
Exemple
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 9 sur 50
CONSTANT
TauxTVA = 19.6
FIN
Syntaxe
Déclarer une ou plusieurs constantes Masquer les détails
CONSTANT
<Nom de la constante 1> = <Valeur 1>
<Nom de la constante 2> = <Valeur 2>
FIN
1.2. Instructions de base de WLangage
1.2.1. Instruction SI
En anglais : If
L'instruction conditionnelle SI permet de choisir d'exécuter une action en
fonction d'une condition.
Exemple de SI Simple
SI SAI_POURCENTAGE >= 75 ALORS
Info("Bravo, vous avez gagné ; préparez-vous pour recevoir notre bourse")
SINON
Info("Désolé, Fournissez encore beaucoup d’effort pour tenter ultérieurement" )
FIN
Exemple SI Imbriqué
SI Client.AgeCalculé > 60 ALORS
PersonneAgée += 1
SINON SI Client.AgeCalculé > 18 ALORS
PersonneAdulte += 1
SINON SI Client.AgeCalculé > 4 ALORS
PersonneEnfant += 1
SINON
PersonneBébé += 1
FIN
Syntaxe
Syntaxe 1
SI <Condition> ALORS
<Action si condition vraie>
[SINON
<Action si condition fausse>]
FIN
Syntaxe 2
SI <Condition 1> ALORS
<Action si condition 1 vraie>
[SINON SI <Condition 2> ALORS
<Action si condition 2 vraie>
[SINON SI <Condition 3> ALORS
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 10 sur 50
<Action si condition 3 vraie>
[...]]]
FIN
Condition
Le paramètre <Condition> peut être de la forme :
<Valeur> = <Expression> Test d'égalité
<Valeur> < <Expression> Test de comparaison
<Valeur> <= <Expression> Test de comparaison
<Valeur> > <Expression> Test de comparaison
<Valeur> >= <Expression> Test de comparaison
<Valeur> = <Expression La <Valeur> doit être comprise entre l'expression
minimale> A <Expression maximale> minimale et maximale
Condition composée
Les mots-clés ET et OU permettent d'effectuer des opérations logiques et
de construire des conditions composées.
Par exemple :
SI Client.Ville = "Montpellier" ET Client.Civilité = "Monsieur" ALORS
HommeMontpellier ++ // Nombre d'hommes habitant à Montpellier
FIN
SI Client.Ville = "Montpellier" OU Client.Ville = "Lyon" ALORS
MontpellierLyon ++ // Nombre de clients habitant soit à Montpellier,
soit à Lyon
FIN
Exemple plus pratique :
SI SAI_Nom="" OU SAI_Prénom="" OU SAI_Téléphone="" ALORS
Info("Vous devez remplir tous les champs")
SINON
EcranVersFichier(EXPRESS_Départ)
HAjoute(EXPRESS_AMIGO)
Cacherleschamps()
ExécuteTraitement(EXPRESS_Départ,trtPriseFocus)
TableAffiche(TAmi, taCourantEnreg)
FIN
Les conditions composées de ET et OU sont évaluées dans leur totalité.
Par exemple :
A > 10 ET B < 20
Si la première condition (A > 10) est fausse, la deuxième condition (B < 20)
sera tout de même vérifiée.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 11 sur 50
Optimiser l'évaluation des conditions composées : Utilisez les
mots-clés _ET_ et _OU_. Si la première condition est fausse (A>10 dans
notre exemple), la seconde condition (B<20 dans notre exemple) ne sera
pas testée. Pour plus de détails, consultez Opérateurs logiques.
1.2.2. Instruction TANTQUE
En anglais : WHILE
Dans une instruction TANTQUE, l'expression est évaluée à chaque début
du bloc d'instructions.
Tant que l'expression de condition est vraie, le traitement boucle. Il y a
sortie du bloc d'instructions lorsque l'expression de condition est fausse.
Exemple
MaListe = INILit("Exemples", "", "", FichierINI)
MotClé = ExtraitChaîne(MaListe, nb, RC)
TANTQUE MotClé <> ""
nb = nb + 1
NomExpl = INILit("Projets installés", MotClé, "", FichierINI)
MotClé = ExtraitChaîne(MaListe, nb + 1, RC)
FIN
Syntaxe
Condition "TANTQUE"Masquer les détails
TANTQUE <Condition>
<Action si condition vraie>
FIN
1.2.3. Instruction POUR
En anglais : For
Le bloc d'instructions est répété en modifiant une variable de contrôle puis
en la comparant à une valeur limite, avant chaque début du bloc
d'instructions.
Le bloc d'instructions est alors exécuté pour chacune des valeurs que prend
successivement la variable de contrôle. La variable de contrôle reçoit la
valeur initiale lors de la première entrée dans l'instruction POUR.
Une syntaxe optimisée est disponible : cette syntaxe permet de ne pas ré-
évaluer la valeur limite et / ou la valeur du pas à chaque itération (utile par
exemple dans le cas d'une répétition sur le nombre de ligne d'une table).
Exemple
POUR Indice = 1 A 10
MonTableau[Indice] = MaVariable + 10
FIN
POUR Indice = 10 A 1 PAS -1
MonTableau[Indice] = MaVariable + 10
FIN
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 12 sur 50
POUR Indice = 1 A 5
Trace(Indice)
FIN
Info(Indice) // Indice vaut 6
// Syntaxe optimisée
// Parcours des lignes de la table.
// Le nombre de lignes est calculé une seule fois
POUR Indice = 1 _A_ TABLE_MaTable..Occurrence
COL_MaCol[Indice]..Couleur = iVertFoncé
FIN
1.2.4. Instruction GOTO
L'instruction GOTO permet d'exécuter un code identifié par une étiquette
donnée.
Important : L'étiquette doit obligatoirement être définie dans le même
traitement que l'instruction GOTO.
Exemple
Res = fOuvre(NomFichier, foEcriture)
SI Res = -1 ALORS GOTO ERROUVRE
Res = fEcrit(Res, "Traitement OK")
SI Res = -1 ALORS GOTO ERRECRIT
...
RENVOYER Vrai
ERROUVRE :
Info("Le fichier " + NomFichier + " ne peut être ouvert. Vérifiez son existence.")
RENVOYER Faux
ERRECRIT :
Info("Il est impossible d'écrire dans le fichier " + NomFichier)
RENVOYER Faux
1.2.5. Instruction BOUCLE
En anglais : LOOP
Le bloc d'instructions est répété à l'infini. Le nombre d'itérations du bloc
d'instructions n'est pas contrôlé, il n'y a pas d'expression à évaluer.
Exemple
// Sortie selon une condition SI
BOUCLE
// Lecture d'une ligne du fichier texte
UneLigne = fLitLigne(NumFic)
SI UneLigne = EOT ALORS SORTIR
TraiteLigne(UneLigne)
FIN
// Sortie selon une condition TANTQUE
BOUCLE
// Lecture d'une ligne du fichier texte
UneLigne = fLitLigne(NumFic)
TraiteLigne(UneLigne)
A FAIRE TANTQUE UneLigne <> EOT
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 13 sur 50
// Sortie selon une itération
BOUCLE (10)
// Lecture d'une ligne du fichier texte
UneLigne = fLitLigne(NumFic)
TraiteLigne(UneLigne)
FIN
Chapitre II : L’analyse du projet
2.1. Les prés-requis de la programmation
Réalisez qu’il vous soit demandé de produire un programme qui soit
capable de vous afficher la facture dont modèle ci-après :
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 14 sur 50
Avant d’aborder le vif du problème, il faudrait analyser les données
du document « Facture » en utilisant l’une des méthodes d’analyse
par exemple Merise, UML…
- Collecter les informations nécessaires par rapport au document
- Filtrer les données
- Extraire les objets, extraire les objets
- Créer le dictionnaire des données
- Créer le Modèle Conceptuel de Données (MCD)
Respecter les règles de base
Les règles de gestion
- Créer le Modèle Logique de Données (MLD)
2.2. Collecter les informations nécessaires par rapport au document
2.3. Collection des données
Nom frs ; Forme juridique frs ; adresse frs ; Ville frs ; Date facture ;
Numéro Facture ; Mode de règlement facture ; Code Client ; Nom
Client ; Prénom Client ; Téléphone Client ; Ville client ; Référence
article ; Libellé article ; Prix Unitaire ; Quantité Article ; Montant
Ht ; Tva ; Montant TTC.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 15 sur 50
2.4. Filtrer les données et les objets
2.5. Dictionnaire de données
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 16 sur 50
2.6. Les règles de gestion
Règle1 : Un Client a au minimum 0 facture, au maximum plusieurs factures
Règle2 : Une facture appartient à un seul client
Règle3 : Une facture contient au moins un article, au maximum plusieurs
articles
Règle4 : Un article appartient au minimum à 0 facture, au maximum plusieurs
factures
Règle5 : Un Fournisseur établit au minimum 0 facture, au maximum
plusieurs factures
Règle6 : Une facture appartient à un seul fournisseur
2.7. Modèle Conceptuel de données
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 17 sur 50
2.8. Modèle Logique de Données (MLD)
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 18 sur 50
CHAPITRE III : La gestion des cycles de vie de nos
développements
Après avoir cliqué sur WD20, l’interface suivante vous sera présentée ;
3.1. LES FENETRES
Les fenêtres permettent d’afficher ou de saisir les informations à l’écran.
L’utilisateur peut agir directement sur les fenêtres par l’intermédiaire de
champs, de boutons, …
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 19 sur 50
Dans cette partie, nous nous concentrerons sur la création de fenêtres
simples. Le projet « WD Mes premières Fenêtres » est un projet vide, déjà
créé.
3.2. Projet et Analyse
3.2.1. Présentation du projet
Pour créer une application avec une base de données, il faut :
Créer le projet lié à l’application. Ce projet regroupera tous les
éléments de l’application (fenêtres, codes, requêtes, états, …
Créer l’analyse liée au projet. L’analyse permet de décrire tous les
fichiers de données manipulées par l’application.
Création du projet
Pour créer un projet, cliquer sur Ouvrir ou l’outil correspondant,
Projet et on aura l’écran de l’assistant suivant :
Dans la boîte de dialogue suivante, choisir liste de gabarits pour
Chartes ; choisir 800 x 600 pour taille, Ne pas afficher la fenêtre le
saviez-vous, Oui, créer une nouvelle base de données…
3.2.2. Création de l’analyse
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 20 sur 50
Les étapes de la création d’analyse sont les suivantes :
1. Indiquer le nom et le répertoire de l’analyse
2. Vous pouvez ensuite le ou les types de base de données
manipulées par le projet. Sélectionnez HFSQL Classic (la BDD
proposée par défaut avec WD).
3.3. Création de la description des fichiers de données
Nous prendrons pour illustration une application dénommée « Gestion de
commandes» qui sera associée à l’analyse suivante comportant cinq
fichiers de données (tables) différents :
- Client
- Commande
- ModeRèglement
- LigneCommande
- Produit.
Voici l’analyse :
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 21 sur 50
Pour créer les différents fichiers de données de cette analyse, nous allons
utiliser différentes méthodes disponibles dans WinDev.
3.3.1. Création d’un fichier de données : utilisation d’un fichier prédéfini
Sélectionner dans l’assistant l’option « Sélectionner une description
parmi les fichiers de données prédéfinis ».
Dans la liste de fichiers de données prédéfinis qui apparaît ;
sélectionner « Client »
Dans la liste des rubriques à intégrer dans le fichier Client qui
apparaît, cocher uniquement les rubriques suivantes : IDClient,
Société, Nom, Prénom, Adresse, CodePostal, Ville, EtatDep, Pays,
Téléphone, Mobile, Email.
Valider l’assistant, cliquer sur « Editeur de WinDev ». Le fichier
Client est automatiquement créé sous l’éditeur d’analyses.
3.3.2. Création d’un fichier de données : Création du fichier et des
rubriques
Nous allons maintenant créer le fichier de données contenant les
commandes
Sous le volet « Analyse », dans le groupe « Création », cliquer sur
« Nouveau fichier ».
Sélectionner dans l’assistant qui se lance l’option « Créer une
nouvelle description d’un fichier de données », renommer (ex :
Commande.fic)
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 22 sur 50
Saisir les toutes rubriques du fichier « Commande » :
Voyez que la rubrique IDCommande est automatiquement créée.
Rubrique date (de la commande):Double-cliquer dans la colonne
« Nom » de la première ligne vide, saisir Date, cliquer dans la
colonne « Libellé », le nom apparaît automatiquement mais nous le
modifions un tout petit peu par Date de la Commande » ;
sélectionner le type « Date ». Cette rubrique va être une clé(un
index) de notre fichier de données : les clés permettent d’accélérer
les accès aux données et les tris. Re-sélectionner la ligne de la
rubrique « Date »pour activer les champs de description présents
sur la droite de l’écran. Préciser le type de clé utilisée ; suffit-il de
préciser le type de clé, dans notre cas la date est une clé avec
doublons. Définir enfin le sens de parcours de la clé (permet de
définir le tri par défaut)
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 23 sur 50
Rubrique Etat : Sur une nouvelle ligne de la table, saisir Etat comme
nom, Etat de la commande comme ; pour le type : Sélecteur, Liste
combo ; Dans la partie basse de l’écran, cliquer sur la double flèche
pour afficher les paramètres du champ lié à la rubrique sélectionnée.
Dans l’onglet Contenu, cliquer sur le bouton »+ » puis saisir la
première option « En attente » ; cliquer encore sur le bouton « + »
puis saisir « Nouveau » enfin saisir « annuler » pour option 3.
Rubrique TotalHT : Positionnez-vous sur une nouvelle ligne, mais ici
le type est Monétaire ».
Rubrique TotalTTC : Positionnez-vous sur une nouvelle ligne, mais
cette fois encore le type est Monétaire ».
C’est terminé avec la description du fichier « Commande ». Valider la
fenêtre
3.4. Créer des relations
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 24 sur 50
Comme Access, les fenêtres sélectionnées devront être mises en relation
afin d’interagir dans notre base de données.
Faites en sorte que l’analyse finale se présente comme suit :
3.5. LE RAD COMPLET
Les RAD sont les initiales de « Rapid Application Development »
permettant de construire automatiquement une application, c’est-à-dire
construire toutes les fenêtres, les états et les requêtes nécessaires. Mais
vous pouvez également créer vos propres patterns RAD.
3.5.1. Génération du RAD
Pour générer le RAD, Projet, Génération, Rad Application complète,
Sélectionner le modèle, Refuser d’intégrer le groupware utilisateur,
Intégrer le menu ; Conserver seulement l’option « Aide des FAA
(Fonctionnalités de l’Application) » ; terminer l’assistant.
Cliquer sur Go (en vert) pour tester le programme.
Ci-bas l’exemple d’une application monté en RAD :
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 25 sur 50
3.6. Application Complète avec données
Dans cette application de gestion de commandes, nous apprendrons
à Visualiser, saisir et modifier les produits ; imprimer les états, afficher des
statistiques…
3.6.1. Création du Champs table
- Nouveau, Fenêtre, Fenêtre, suivant
- Pour créer les champs Table, Table et liste ; Table vertical
- Sélectionner « Afficher les données d’un fichier ou d’une requête
existante, sélectionner la table concernée, les champs en omettant
l’ID de la table, choisir le tri, ici Libellé ;
3.6.2. Création des champs de saisie
- Volet « « Analyse », « WD Application complète » ; « + »,
« Produit », Sélectionner à l’aide de la souris l’ensemble des
rubriques affichées dans le volet (sauf la rubrique IDProduit),
effectuer maintenant le « Drag and drop » ou le « glisser/déplacer)
dans la fenêtre récemment créée, enregistrer le projet et créer les
boutons puis valider.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 26 sur 50
Ecrire ce code pour le Bouton Valider :
- Ajouter d’autres boutons et faire de même que l’exercice
Express_Amigo.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 27 sur 50
3.7. Exercice à réaliser ensemble
Pour la gestion des stocks, voici l’analyse, tout en évitant d’utiliser des RAD,
monter cette application.
3.8. Le champ Combo
3.8.1. Présentation du champ Combo
Champ d'une fenêtre, champ d'une page dynamique ou statique
Le champ "Combo" permet d'afficher une liste d'éléments et de
sélectionner un élément dans cette liste.
A la différence d'un champ Liste, un champ Combo n'est pas déroulé : elle
se déroule à la demande ou lors du positionnement du curseur sur la liste.
Sous WINDEV et WINDEV Mobile, il est possible de :
saisir directement une valeur dans un champ de saisie, si le champ
Combo est avec saisie.
afficher des éléments sous forme de table si le champ Combo contient
plusieurs colonnes.
afficher des éléments sous forme de liste image.
ouvrir une fenêtre popup.
redimensionner la largeur et la hauteur du combo déroulé (voir ci-
dessous)
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 28 sur 50
3.8.2. Quelques exemples :
Combo sans saisie, non déroulée
Combo déroulée avec éléments sous forme de liste
Les exemples suivants concernent uniquement WINDEV et WINDEV
Mobile.
Combo déroulée avec éléments sous forme de table
Les éléments apparaissant dans un combo peuvent être déterminés lors de
la création du champ sous l'éditeur. Ces éléments :
sont déterminés par programmation.
proviennent d'un fichier de données ou d'une requête.
3.8.3. Créer un champ Combo
Pour créer un champ de type Combo :
1. Sous le volet "Création", dans le groupe "Champs usuels", cliquez sur
"Combo".
2. Cliquez dans la fenêtre / page à la position où le champ doit être créé.
L'assistant de création d'un champ Combo se lance automatiquement.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 29 sur 50
Astuce : Il est également possible de créer directement un combo "pré-
formatée" en déroulant l'option "Combo". La liste des champs disponibles
avec leur aperçu au gabarit du projet apparaît. Il suffit de cliquer sur le
champ voulu pour le créer dans l'éditeur.
Pour afficher les caractéristiques du champ, sélectionnez l'option
"Description" dans le menu contextuel du champ.
Type de combo déroulé
Le type du combo déroulé dépend des éléments affichés par le champ
Combo. Les types proposés sont les suivants :
combo liste : affiche des éléments sous forme de liste.
Dans le cas d'un champ Combo fichier, la rubrique affichée est définie
dans l'onglet "Contenu" de la description du champ (option
"Description" du menu contextuel).
combo table : affiche des éléments sous forme de table. Dès que le
champ Combo doit afficher plus d'un élément, un combo avec table est
automatiquement créé.
Pour afficher les caractéristiques des colonnes de la liste, sélectionnez
l'option "Description Colonnes" dans le menu contextuel du champ (ou
cliquez sur le bouton "Editer les colonnes" présent dans l'onglet
"Contenu" de la description du combo).
Dans le cas d'un champ Combo fichier, les différentes rubriques
affichées sont définies dans les caractéristiques des colonnes de la liste
(option "Description Colonnes" du menu contextuel ou bouton "Editer
les colonnes" dans l'onglet "Contenu" de la description du champ).
combo liste image : affiche des éléments sous forme de liste image.
Pour afficher les caractéristiques de la liste image, cliquez sur le bouton
"Editer la liste image" présent dans l'onglet "Contenu" de la description
du combo.
Dans le cas d'un champ Combo fichier, la rubrique associée au libellé
de l'image et celle associée à l'image sont définies grâce aux options
"Rubrique affichée" et "Rubrique image" présentes dans l'onglet
"Contenu" de la description de la combo (option "Description" du menu
contextuel).
combo fenêtre popup : ouvre une fenêtre popup.
La fenêtre popup à ouvrir peut être sélectionnée dans l'onglet
"Contenu" de la description du champ (option "Description" du menu
contextuel).
Le type du combo déroulée peut être changé à tout moment grâce à
l'option "Type déroulé" présente dans l'onglet "Contenu" de la description
du combo (option "Description" du menu contextuel).
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 30 sur 50
3.8.4. Vocabulaire
Pour manipuler simplement un combo, il est nécessaire de connaître le vocabulaire suivant :
Nom Définition
Bandeau de sélection Permet de visualiser l'élément sélectionné dans la liste déroulante. Le plus
souvent, une couleur spécifique est utilisée.
Combo Fichier Le champ Combo est basé sur un fichier de données ou une requête. Les
éléments du champ correspondent à des enregistrements du fichier de données.
Deux types de champ Combo fichier sont disponibles :
Combo fichier "Chargé en mémoire" : Le contenu du champ est chargé en
mémoire puis affiché dans le champ. L'accès aux différents éléments du champ
Combo est plus rapide. Ce mode est réservé pour des fichiers de données de
moins de 100 000 enregistrements.
Combo fichier "Accès direct (sans limite)" : Le champ affiche directement le
contenu du fichier de données ou de la requête. L'enregistrement en cours
correspond à l'élément sélectionné. Chaque déplacement dans le champ entraîne
un accès au fichier lié. Ce type de champ est réservé aux fichiers de données de
plus de 100 000 enregistrements.
Combo Mémoire Le champ Combo n'est basé ni sur un fichier de données ni sur une requête. Les
éléments affichés dans le champ Combo sont déterminés par le développeur
(dans la fenêtre de description ou par programmation)
Combo avec saisie L'utilisateur peut saisir du texte dans le champ de saisie associé à la combo. Si
l'option "Saisie assistée" est sélectionnée, l'utilisateur peut ainsi sélectionner
rapidement l'élément en saisissant les premières lettres : les lettres saisies sont
automatiquement complétées avec l'élément correspondant.
Combo sans saisie L'utilisateur sélectionne l'élément dans la liste à l'aide du bandeau de sélection.
Permuter
WINDEV permet de transformer automatiquement un combo standard en
un combo avec table et inversement :
1. Sélectionnez le champ à transformer.
2. Sous le volet "Modification", dans le groupe "Transformations",
déroulez "Refactoring et permutations" et sélectionnez "Combo /
Combo avec table".
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 31 sur 50
Exemple
Plusieurs champs combo prédéfinis sont proposés dans le volet "Assistants,
Exemples et Composants" :
1. Cliquez sur le bouton "Champs" du volet "Assistants, Exemples et
Composants".
2. Dans la liste des champs, cliquez sur "Champ pré-rempli".
Pour intégrer un de ces champs dans votre fenêtre / page, il suffit
d'effectuer un "Drag and Drop" du champ présent dans le volet "Assistants,
Exemples et Composants" vers votre fenêtre / page.
3.9. Exemple d’une application complète avec une table
Après avoir cliqué sur WD 20 et reçu une interface,
vous aurez à cliquer sur Créer un projet
Application Windows ou Linux…
Renommer le projet et sélectionner le dossier d’hébergement;
Suivant
Plate-forme Windows ; Exécutable Windows 32 bits ou 64 bits (à
choisir)
Oui, utiliser la charte de programmation ci-dessous : Standard
Ne pas afficher la fenêtre «le saviez-vous » au lancement de
l’application
Oui, créer une nouvelle base de données
Suivant ; suivant…
HFSQL Classic, Suivant.
3.9.1. La base de données
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 32 sur 50
Renommer le fichier des données (en réalité, c’est l’identifiant qui est
créé); Suivant
Sur la fenêtre qui s’affichera, on complètera toutes les rubriques de la
manière suivante :
Suivant ; puis créer une fenêtre ; Vierge ; Oui (pour synchronisation
du projet)
3.9.2. Création de la fenêtre
Clic droit sur le projet vierge, description
Renommer « Départ » pour le Nom logique et « Fenêtre principale de
l’application » pour le Titre.
Projet ; Combo du projet ; description
Dans Initialisation, adapter le code suivant :
HCréationSiInexistant(EXPRESS_AMIGO)
Dans le menu Création, choisir « Table et liste » ; Table verticale,
déposer sur le formulaire
Remplir le champ table par programmation ; suivant
Définir le nombre des colonnes
Dans « Création d’un champ Table », renommer la table Ex :TAmi
Clic droit sur le DataGrid, Description
Renommer les colonnes ; dans le Combo juste en bas, déterminer le
type
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 33 sur 50
Dans masque de saisie choisir le format du texte (ex :+999) pour
l’identifiant uniquement et dans IHM, désactiver ‘Visible’.
Renommer toutes les autres colonnes et leurs libellés et l’on aura :
Clic droit sur le formulaire (et non sur le datagrid) ; description
Ecrire le code suivant dont TAmi est le nom de la table :
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 34 sur 50
3.9.3. Les procédures locales
- Dans le menu Création, ajouter les boutons commandes ; clic droit,
description, renommer et déterminer le libellé.
- Dérouler et cliquer-glisser pour avoir toutes les rubriques
- Clic droit sur le menu Alignement, Code pour avoir « Procédures
locales »
- Procédures locales ; clic droit juste à droite, nouvelle procédure locale,
renommer « Cacherleschamps » ; dans la boîte de dialogue qui apparaît,
saisir ces codes :
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 35 sur 50
- Clic droit sur chaque rubrique ; désactiver visible dans IHM
- Clic droit sur Procédures locales ; nouvelle procédure locale,
renommer (« Afficherleschamps ») ;
- Reprendre la même opération que dans le tableau précédent tout en
remplaçant tous les Faux par les Vrais
PROCEDURE AfficherlesChamps
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 36 sur 50
- Clic droit sur Ajouter et ensuite Modifier, Code, puis saisir
« Afficherleschamps() »
- Clic droit sur Réinitialiser, Code, puis saisir « Cacherleschamps() »
Voici le code pour BTN_Modifier
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 37 sur 50
3.9.4. Voici le code pour BTN_ValiderAjouter :
SI SAI_Nom="" OU SAI_Prénom="" OU SAI_Téléphone="" ALORS
Info("Vous devez remplir tous les champs")
SINON
EcranVersFichier(EXPRESS_Départ)
HAjoute(EXPRESS_AMIGO)
Cacherleschamps()
ExécuteTraitement(EXPRESS_Départ,trtPriseFocus)
FIN
3.9.5. Et pour BTN_ValiderModification
SI SAI_Nom="" OU SAI_Prénom="" OU SAI_Téléphone="" ALORS
Info("Vous devez remplir tous les champs")
SINON
EcranVersFichier(EXPRESS_Départ)
HModifie(EXPRESS_AMIGO)
Cacherleschamps()
ExécuteTraitement(EXPRESS_Départ,trtPriseFocus)
Cacherleschamps()
FIN
- Ajouter les libellés, les renommer par ex : « libelleNom » ainsi que les
boutons BTN_Supprimer (Supprimer cet enregistrement) et
BTN_Supprimer et BTN_SelectionnerSupprimer
- Dans Procédures locales, ajouter SelectionLibelle dont voici les codes :
- Après avoir fait clic droit sur Datagrid, Codes, ajouter après Sélection
d’un ami « SelectionLibelle() » ; ceci permet d’afficher sur les
rubriques à modifier l’enregistrement sélectionné
- Compléter le code pour Déclarations globales d’Express_Départ :
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 38 sur 50
Et également pour Prise de Focus de Express_Départ:
TableSupprimeTout(TEtudiant)
POUR TOUT EXPRESS_Etude
TableAjouteLigne(TEtudiant, EXPRESS_Etude.IDEXPRESS_Etude,
EXPRESS_Etude.Nom, EXPRESS_Etude.Prénom, EXPRESS_Etude.Téléphone,
EXPRESS_Etude.Sexe, EXPRESS_Etude.DateNaissance)
FIN
SélectionLibellé()
Ce code ci-dessus est celui qui permet l’interaction des enregistrements du
Fichier ; c’est-à-dire quand on enregistre ou on modifie ou encore on
supprime, le résultat est directement visible sur notre Table(Datagrid).
3.9.6.Pour le bouton Supprimer, voici le code :
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 39 sur 50
Créer une procédure locale nommée « Afficherlibelle » avec ces codes :
PROCEDURE AfficherLibelle()
libelleNom..Visible=Vrai
libellePrénom..Visible=Vrai
libelleTéléphone..Visible=Vrai
BTN_Supprimer..Visible=Vrai
Ecrire AfficherLibelle() dans Clic sur BTN_SelectionnerSupprimer
Désactiver tous les visibles des rubriques (au coin inférieur droit)
Modifier les codes du BTN_Supprimer :
HLitRecherche(EXPRESS_AMIGO,IDEXPRESS_AMIGO,col_ID)
SI HTrouve(EXPRESS_AMIGO) ALORS
HSupprime(EXPRESS_AMIGO)
ExécuteTraitement(EXPRESS_Départ, trtPriseFocus)
libelleNom..Visible=Faux
libellePrénom..Visible=Faux
libelleTéléphone..Visible=Faux
BTN_Supprimer..Visible=Faux
FIN
Ajouter un libellé en bas et un champ de saisie pour afficher le nombre
d’amis ;
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 40 sur 50
Créer une procédure locale nommée « NbAmis » puis écrire le code
suivant :
PROCEDURE NbAmis()
libellenbAmis=HNbEnr(EXPRESS_AMIGO)
Ajouter NbAmis() dans procédures globales comme d’habitude ; ci-dessous
l’écran de son exécution et voyez qu’il vous affiche le nombre
d’enregistrements trouvés dans la base de données :
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 41 sur 50
3.10. Pour imprimer ou afficher les résultats
- Création, Autres champs, Formes, Rectangle puis Bouton pour
Imprimer la BDD, renommer « Imprimer la Database »
- Projet, Nouveau, Etat, Fiche, Suivant, d’une nouvelle requête,
sélectionner les rubriques de la table, Suivant, Non, Suivant,
renommer la bdd et terminer.
- On aura :
- Enregistrer l’état
- Codifier le bouton « Imprimer la Database » comme suit :
iAperçu(i100)
iImprimeEtat(EXPRESS_ETAT_Ami1)
- Créer le bouton « Réinitialisersupprimer » puis le code suivant :
libelleNom..Visible=Faux
libellePrénom..Visible=Faux
libelleTéléphone..Visible=Faux
BTN_Supprimer..Visible=Faux
BTN_Réinitialisersupprimer..Visible=Faux
- Dans IHM, désactiver Visible
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 42 sur 50
3.10. Traitements associés aux fenêtres
Traitements gérés par défaut
WINDEV et WINDEV Mobile gèrent par défaut les traitements suivants
(ordre d'apparition sous l'éditeur de code) :
Traitement Condition d'exécution
Déclarations Déclaration des variables globales à la fenêtre. C'est le
globales premier code exécuté lors de l'ouverture de la fenêtre.
Fin Exécuté lors de l'ouverture de la fenêtre.
d'initialisation L'ordre d'exécution des traitements est le suivant :
Initialisation des champs de la fenêtre (*)
Initialisation de la fenêtre
Prise de focus
Remarque : Si du code de mise à jour de champs est
mis dans ce traitement, il peut apparaître un effet de
clignotement. En effet, le code d'initialisation des
champs est alors exécuté avant le code de mise à jour.
Fermeture Exécuté lors de la fermeture de la fenêtre.
Remarque : Une reprise de saisie sur un des champs
de la fenêtre dans ce code empêche la fenêtre de se
fermer.
Demande de mise Permet de regrouper le code de mise à jour des
à jour de champs de la fenêtre : contenu des champs, état
l'affichage (visible, grisé, ...), libellé à mettre à jour, ...
Ce traitement peut attendre des paramètres. Il suffit
de déclarer une procédure dans le traitement. Par
exemple :
// Demande de mise à jour de l'affichage
PROCEDURE DemandeMiseAjour(TypeMiseAJour est
un booléen)
Ce traitement est lancé sur demande grâce aux
fonctions :
DemandeMiseAJourIHM : Exécute le traitement à la
fin du traitement en cours (lancement asynchrone).
ExécuteMiseAJourIHM : Exécute immédiatement le
traitement.
Lors de l'appel de ces fonctions, il est possible de
préciser la valeur des paramètres attendus par le
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 43 sur 50
traitement.
}
Avant fermeture Exécuté lors de l'utilisation du bouton OK / Fermer
par bouton OK / Fonctionnement du bouton Fermer
Fermer
Les traitements exécutés sont les suivants :
exécution du traitement "Avant fermeture par
bouton OK/Fermer".
exécution du code du bouton de type "Abandon"
présent dans la fenêtre (si ce bouton existe). Si la
fenêtre ne contient aucun bouton de type "Abandon",
fermeture de la fenêtre.
Fonctionnement du bouton OK
Les traitements exécutés sont les suivants :
exécution du traitement "Avant fermeture par
bouton OK/Fermer".
exécution du code du bouton de type
"Validation" présent dans la fenêtre (si ce bouton
existe). Si la fenêtre ne contient aucun bouton de type
"Validation", fermeture de la fenêtre.
Exécuté lors de l'utilisation du bouton OK / Fermer
Fonctionnement du bouton Fermer
Les traitements exécutés sont les suivants :
exécution du traitement "Avant fermeture par
bouton OK/Fermer".
exécution du code du bouton de type "Abandon"
présent dans la fenêtre (si ce bouton existe). Si la
fenêtre ne contient aucun bouton de type "Abandon",
fermeture de la fenêtre.
Fonctionnement du bouton OK
Les traitements exécutés sont les suivants :
exécution du traitement "Avant fermeture par
bouton OK/Fermer".
exécution du code du bouton de type
"Validation" présent dans la fenêtre (si ce bouton
existe). Si la fenêtre ne contient aucun bouton de type
"Validation", fermeture de la fenêtre.
Remarque : Si le traitement "Avant fermeture par
bouton OK/Fermer" appelle la fonction RepriseSaisie,
la fenêtre ne sera pas fermée.
Ce traitement n'est pas disponible.
Prise de focus Exécuté lorsque la fenêtre prend le focus (la barre de
titre est active) et qu'une autre fenêtre de l'application
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 44 sur 50
perd le focus : l'utilisateur a cliqué sur une autre
fenêtre de l'application
la fonction RepriseSaisie a été exécutée depuis une
autre fenêtre de l'application
Ce traitement ne sera pas exécuté :
lors de l'ouverture de la première fenêtre du projet.
lors de l'exécution de la fonction OuvreFille,
OuvreFenêtreMobile ou OuvreSoeur à partir de la
fenêtre en cours.
si la fonction Ferme est appelée dans le code
d'initialisation de la fenêtre.
si l'utilisateur clique sur une fenêtre d'un autre
programme, puis reclique sur la fenêtre initiale.
Ce traitement n'est pas disponible.
Perte de focus Exécuté lorsque la fenêtre perd le focus lors du
passage à une autre fenêtre. Ce traitement est toujours
appelé avant le traitement de prise de focus d'une
autre fenêtre dans les cas suivants :
fermeture de la fenêtre (avant le traitement de
fermeture)
l'utilisateur a cliqué sur une autre fenêtre de
l'application
la fonction RepriseSaisie a été exécutée depuis
une autre fenêtre de l'application
Ce traitement ne sera pas exécuté :
si la fonction RepriseSaisie vers une autre
fenêtre a été exécutée dans le code d'initialisation de la
fenêtre
si la fonction Ferme est appelée dans le code
d'initialisation de la fenêtre
si l'utilisateur clique sur une fenêtre d'un autre
programme, puis reclique sur la fenêtre initiale
Ce traitement n'est pas disponible.
A chaque Exécuté lorsqu'un des champs de la fenêtre est modifié
modification (saisie effectuée par l'utilisateur par exemple).
Changement Exécuté lorsque l'utilisateur pivote l'écran. Il est par
d'orientation exemple possible de repositionner les champs lors du
changement d'orientation de l'écran.
Fermeture d'une Exécuté lors de la fermeture d'une fenêtre fille ouverte
fenêtre fille de la depuis la fenêtre en cours.
fenêtre
Il est possible de :
}
connaître le nom de la fenêtre fille fermée grâce
à la propriété ..Nom.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 45 sur 50
récupérer la valeur de retour de la fenêtre fille
grâce à la propriété..ValeurRenvoyée.
Exemple :
// -- Fermeture d'une fenêtre fille de
FEN_ListeCommande
// Actualise la liste des commandes si besoin
SI MaFenêtreFille..ValeurRenvoyée = Vrai ALORS
ListeCommande()
FIN
Le mot-clé MaFenêtreFille permet de manipuler les
caractéristiques de la fenêtre fille.
Modification de Exécuté dans les cas suivants :
la taille Iconisation de la fenêtre
Agrandissement ou changement de taille de la
fenêtre
Restauration de la fenêtre après iconisation
Ce traitement n'est pas disponible.
Rafraîchissement Permet de mettre à jour le contenu du Widget. Ce
du Widget traitement est exécuté :
à l'ouverture d'une fenêtre de type Widget.
à intervalle de temps régulier. Cet intervalle est
fixé dans l'onglet "Détail" de la fenêtre de description.
Permet de mettre à jour le contenu du Widget. Ce
traitement est exécuté :
à l'ouverture d'une fenêtre de type Widget.
à intervalle de temps régulier. Cet intervalle est
fixé dans l'onglet "Détail" de la fenêtre de description.
Remarque : La fonction WidgetAffiche provoque le
réaffichage du Widget et l'exécution du traitement de
rafraîchissement.
(*) Par défaut, le traitement "Initialisation" de chaque champ est exécuté
selon l'ordre de création des différents champs dans la fenêtre. Pour
modifier cet ordre d'exécution :
1. Sous le volet "Fenêtre", dans le groupe "Ordre", cliquez sur
"Initialisation".
2. Dans la fenêtre qui s'affiche, utilisez les flèches situées sur la droite pour
modifier l'ordre d'initialisation des champs.
Attention : Si un ou plusieurs champs utilisent la persistance des champs,
le code "A chaque modification" peut être exécuté lors de l'initialisation du
champ. Pour plus de détails, consultez Persistance des champs.
Traitements optionnels
Plusieurs traitements optionnels peuvent être gérés.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 46 sur 50
Pour gérer un traitement optionnel, il suffit de le sélectionner dans la barre
d'icônes de la fenêtre de code.
Il est ainsi possible de gérer par exemple :
le survol du champ par la souris,
le bouton gauche enfoncé, relâché, avec un double-clic,
le bouton droit enfoncé, relâché, avec double-clic,
la roulette de la souris, ...
Mise au premier-plan de l'application sur la fenêtre
Exécuté lorsque l'application est réactivée et passe au premier-plan. Ce
traitement permet par exemple de rafraîchir les données affichées.
Remarque : Ce traitement est exécuté APRES le traitement du projet "Mise
au premier plan".
Mise en arrière-plan de l'application depuis la fenêtre
Exécuté lorsque l'application passe en arrière-plan. Ce traitement permet
par exemple de sauvegarder les données.
Remarque : Ce traitement est exécuté AVANT le traitement du projet "Mise
en arrière-plan".
3.11. Liste des fonctions WLangage
Le WLangage (WL) est un langage de 5° génération. Il dispose des
fonctions habituelles des langages de programmation, et également
nativement d'un socle orienté données.
Les aspects graphiques, vérification et validation des saisies, sont gérés
en amont du codage, par l'intermédiaire du révolutionnaire éditeur d'IHM.
L'éditeur de fenêtres élimine la phase de codage des interfaces, car il
permet la définition et le test de ses interfaces dans un mode 100%
WYSIWYG, y compris pour la définition avancée des contrôles (champs).
Bien entendu, le WLangage permet l'accès et la modification à tout ce qui a
été créé.
N'oubliez pas non plus que WINDEV est interfacé avec les langages : Java,
C, C++, C#, Cobol, Fortran, Pascal, VB... Vous pouvez également faire appel
à des ActiveX, OCX, etc WINDEV est totalement ouvert. N'oubliez pas non
plus que la plupart des actions ne se programment pas, mais se définissent
simplement sous les éditeurs
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 47 sur 50
Le WLangage permet de réduire jusqu'à 90% la quantité de code
nécessaire.
Cette liste est riche ! Mais dans vos applications, vous n'utiliserez au final
que très peu de ces fonctions.
Cette liste est complète, et c'est pour vous l'assurance de n'être jamais
bloqué.
Les fonctions suivantes sont disponibles pour le cas où vous souhaiteriez
modifier par programmation ce qui a été défini sous les éditeurs: c'est une
souplesse supplémentaire. Par exemple, pour afficher une image contenue
dans un fichier, il n'y a absolument rien à programmer (même pour ajouter
des effets !) Mais si vous souhaitez programmer un traitement particulier,
vous pouvez. Vous ne serez jamais bloqué avec WINDEV.
Note : tous ces ordres existent en français et en anglais
Commande Description sommaire
Abandonne Ferme la fenêtre en cours en exécutant le code du bouton de
type ABANDON.
Age Renvoie l'âge à partir de la date de naissance.
Ajoute Ajoute un élément en dernière position :
d'un tableau WLangage à une dimension.
d'une propriété tableau d'un type avancé (tableau des
événements de gglAgenda, ...) d'une liste WLangage.
AjouteColonne Ajoute une colonne à la fin d'une propriété de type tableau à
deux dimensions (par exemple variable de type xlsDocument).
AjouteCommandeVocale Ajoute une commande vocale dans la fenêtre en cours. A partir
de la version 17, cette fonction est remplacée par la
fonctionReconnaissanceVocaleAjouteCommande
AjouteLigne Ajoute une ligne à la fin :
d'un tableau WLangage à une ou deux dimensions.
d'une propriété tableau d'un type de variable à deux dimensions
(par exemple variable de typexlsDocument).
Arrondi Renvoie la valeur arrondie d'une valeur numérique selon le
nombre de décimales précisé.
Bip Émet un bip sonore.
BTActive Active ou désactive la gestion du Bluetooth sur l'appareil.
CalendrierOuvre Dans un champ de saisie de type Date, ouvre une fenêtre popup
affichant un calendrier.
CBCapture Décode les informations stockées dans un code-barres en
utilisant la caméra de l'appareil (Android).
EcranVersFichier Initialise automatiquement :
la valeur mémoire des rubriques d'un fichier de données
avec la valeur des champs de la fenêtre ou de la page. Les
rubriques du fichier de données de base reliées aux champs de
la fenêtre sont automatiquement affectées avec les valeurs des
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 48 sur 50
champs correspondants (même si ces champs sont grisés,
inactifs, ou invisibles).
la valeur des variables WLangage avec la valeur des champs de
la fenêtre ou de la page. Les variables WLangage reliées aux
champs de la fenêtre sont automatiquement affectées avec les
valeurs des champs correspondants (même si ces champs sont
grisés, inactifs, ou invisibles).
EcranVersSource Initialise automatiquement :
la valeur mémoire des rubriques d'un fichier de données avec la
valeur des champs de la fenêtre ou de la page.
la valeur des variables WLangage avec la valeur des champs de
la fenêtre ou de la page.
HAjoute Ajoute :
l'enregistrement présent en mémoire dans le fichier de données
(la requête ou la vue).
l'enregistrement présent dans une variable de
typeEnregistrement dans le fichier de données (la requête ou la
vue).
HDBOuvre Ouvre le fichier de données xBase et le fichier "mémo" s'il
existe.
HExécuteRequête Déclare une requête créée sous l'éditeur de requêtes au moteur
HFSQL et exécute cette requête.
HFerme Ferme soit un fichier de données, soit tous les fichiers de
données ouverts par l'utilisateur en cours : tous les fichiers de
données physiques correspondant sont fermés pour l'utilisateur
en cours.
HModifie Modifie l'enregistrement spécifié ou l'enregistrement présent en
mémoire dans le fichier de données (la requête ou la vue).
HNbEnr Renvoie le nombre d'enregistrements d'un fichier, d'une requête
ou d'une vue HFSQL : enregistrements actifs, rayés, supprimés,
etc.
HRAZ Initialise :
une ou toutes les variables des rubriques d'un fichier de données
avec leurs valeurs par défaut.
une ou toutes les rubriques d'une variable de
typeEnregistrement avec leurs valeurs par défaut.
HRecherche Positionne sur le premier enregistrement du fichier de données
dont la valeur d'une rubrique spécifique est supérieure ou égale
à une valeur recherchée (recherche générique par défaut).
HSupprime Supprime un enregistrement d'un fichier de données (d'une
requête ou d'une vue).
HTrouve Vérifie si l'enregistrement en cours correspond au filtre ou à la
recherche en cours.
HVersFichier Copie une source de données (fichier, requête, vue, ...) vers un
fichier physique HFSQL de même description. Ce fichier n'est
ni crypté, ni protégé par mot de passe.
iImprime Envoie au "buffer" d'impression la chaîne de caractères passée
en paramètre.
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 49 sur 50
Table des matières
0. Introduction ................................................................................................................................. 1
0.1. Présentation de WinDev ....................................................................................................... 1
0.2. Vocabulaire ........................................................................................................................... 2
0.3. Concepts de base ............................................................................................................... 3
0.4. Intégration ......................................................................................................................... 4
0.5. Prise en charge des bases de données ................................................................................. 5
0.6. Les fonctionnalités automatiques des applications développées ........................................ 5
0.7. Liste des mots réservés......................................................................................................... 6
CHAPITRE I : BASES DE PROGRAMMATION....................................................................... 7
1.1. Déclaration de différents types de variables ........................................................................ 7
1.1.1. Variable globale et locale............................................................................................... 7
1.1.2. Constante / Constant ..................................................................................................... 8
1.2. Instructions de base de WLangage ....................................................................................... 9
1.2.1. Instruction SI .................................................................................................................. 9
1.2.2. Instruction TANTQUE ............................................................................................. 11
1.2.3. Instruction POUR ......................................................................................................... 11
1.2.4. Instruction GOTO ......................................................................................................... 12
1.2.5. Instruction BOUCLE...................................................................................................... 12
Chapitre II : L’analyse du projet ............................................................................................... 13
2.1. Les prés-requis de la programmation ................................................................................. 13
2.2. Collecter les informations nécessaires par rapport au document ..................................... 14
2.3. Collection des données....................................................................................................... 14
2.4. Filtrer les données et les objets .......................................................................................... 15
2.5. Dictionnaire de données..................................................................................................... 15
2.6. Les règles de gestion........................................................................................................... 16
2.7. Modèle Conceptuel de données......................................................................................... 16
2.8. Modèle Logique de Données (MLD) ................................................................................... 17
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262
Page 50 sur 50
CHAPITRE III : La gestion des cycles de vie de nos développements ................................ 18
3.1. LES FENETRES...................................................................................................................... 18
3.2. Projet et Analyse ................................................................................................................. 19
3.2.1. Présentation du projet ................................................................................................ 19
3.2.2. Création de l’analyse ................................................................................................... 19
3.3. Création de la description des fichiers de données............................................................ 20
3.3.1. Création d’un fichier de données : utilisation d’un fichier prédéfini .......................... 21
3.3.2. Création d’un fichier de données : Création du fichier et des rubriques .................... 21
3.4. Créer des relations.............................................................................................................. 23
3.5. LE RAD COMPLET ................................................................................................................ 24
3.5.1. Génération du RAD ...................................................................................................... 24
3.6. Application Complète avec données .................................................................................. 25
3.6.1. Création du Champs table ........................................................................................... 25
3.6.2. Création des champs de saisie ..................................................................................... 25
3.7. Exercice à réaliser ensemble .............................................................................................. 27
3.8. Le champ Combo ................................................................................................................ 27
3.8.1. Présentation du champ Combo ................................................................................... 27
3.8.2. Quelques exemples : ................................................................................................... 28
3.8.3. Créer un champ Combo ............................................................................................... 28
3.8.4. Vocabulaire .................................................................................................................. 30
3.9. Exemple d’une application complète avec une table ......................................................... 31
3.9.1. La base de données ..................................................................................................... 31
3.9.2. Création de la fenêtre .................................................................................................. 32
3.9.3. Les procédures locales ................................................................................................. 34
3.10. Pour imprimer ou afficher les résultats ............................................................................ 41
3.10. Traitements associés aux fenêtres ................................................................................... 42
3.11. Liste des fonctions WLangage .......................................................................................... 46
Cours de WINDEV G3 Info UNIC/Muanda Par l’Ir Eugène BAPUMI, Assistant 0813486262