Skip to content
windev
WinDev - WebDev - Windev Mobile
  • Pages
    • Accueil
    • Déroulés
      • Installation de Windev
      • Création d'un projet
      • GDS
      • Tables de paramètres
    • WebDev - 5 jours
      • icon picker
        Jour 1 - Découvrir WebDev et le WLangage
      • Jour 2 - Données, imports et tableau de bord

Jour 1 - Découvrir WebDev et le WLangage

1. L’environnement WebDev

WebDev est un atelier de génie logiciel (AGL) édité par PC SOFT. Il permet de concevoir, développer et déployer des applications Web en utilisant le WLangage, un langage de 5ᵉ génération.

1.1 Les éléments principaux de l’environnement

L’éditeur de pages : permet de créer des pages Web par glisser-déplacer de champs (boutons, saisies, tables, zones répétées, etc.)
L’éditeur de code : permet d’écrire le code WLangage, avec coloration syntaxique et complétion automatique
L’éditeur d’analyses : permet de décrire la structure des données (tables, rubriques, liaisons)
L’éditeur de requêtes : permet de créer des requêtes SQL de manière visuelle ou en code
L’explorateur de projet : arborescence qui regroupe tous les éléments du projet (pages, requêtes, classes, procédures, etc.)
Le débogueur : permet de placer des points d’arrêt et d’exécuter le code pas à pas

2.2 La notion de projet

Un projet WebDev regroupe l’ensemble des éléments nécessaires à une application Web :
les pages (interface utilisateur)
l’analyse (description des données)
les requêtes
les procédures et classes
les états (pour l’impression)

2. Le WLangage et l’architecture client/serveur

Architecture client/serveur dans WebDev

Dans une application WebDev, le code s’exécute à deux endroits distincts :
Code serveur : s’exécute sur le serveur d’application WebDev. C’est là que se trouvent les traitements de données, les accès à la base HFSQL, la logique métier.
Code navigateur : s’exécute dans le navigateur de l’internaute. Il gère l’interactivité immédiate (validation de saisie, affichage/masquage de champs, etc.) sans aller-retour avec le serveur.
Les événements d’une page
Chaque page et chaque champ disposent d’événements dans lesquels vous pouvez écrire du code. Par exemple, pour un bouton :
Clic (code serveur) : le clic déclenche un aller-retour vers le serveur
Clic (code navigateur) : le clic s’exécute localement dans le navigateur

La syntaxe préfixée

La syntaxe préfixée est la syntaxe recommandée depuis la version 25 du WLangage. Elle consiste à placer l’objet manipulé (champ, fichier de données, source de données) avant le nom de la fonction, séparé par un point.
Comparaison syntaxe classique / syntaxe préfixée :
// -------- Syntaxe classique (historique) --------
HAjoute(Client)
HLitRecherchePremier(Client, Nom, "DUPONT")
TableAjoute(TABLE_MaTable, "ligne1" + TAB + "ligne2")

// -------- Syntaxe préfixée (recommandée) --------
Client.Ajoute()
Client.LitRecherchePremier(Nom, "DUPONT")
TABLE_MaTable.Ajoute("ligne1" + TAB + "ligne2")
Les avantages de la syntaxe préfixée :
la complétion automatique propose les fonctions applicables dès que vous tapez le nom de l’objet suivi d’un point
le code est plus lisible car l’objet manipulé est toujours en tête de ligne
l’approche est cohérente avec les langages orientés objet
Important : dans cette formation, tous les exemples de code utilisent la syntaxe préfixée. Il est recommandé de ne pas mélanger les deux syntaxes au sein d’un même projet.

3. Variables, conditions, boucles et structures de contrôle

3.1. Déclarer une variable

En WLangage, la déclaration d’une variable suit la syntaxe :
// Déclaration d'une variable de type chaîne
sNomClient est une chaîne
// « sNomClient » est le nom de la variable
// « est une chaîne » indique le type

// Déclaration d'une variable de type entier
nAge est un entier
// « n » est un préfixe courant pour les entiers (convention de nommage)

// Déclaration d'une variable de type réel
rPrixUnitaire est un réel

// Déclaration d'une variable de type booléen
bEstActif est un booléen

// Déclaration d'une variable de type date
dDateNaissance est une Date

// Déclaration avec affectation immédiate
sVille est une chaîne = "Nantes"
nQuantité est un entier = 10
Les principaux types de variables
Chaîne : texte de longueur variable
Entier : nombre entier (positif ou négatif)
Réel : nombre à virgule
Booléen : Vrai ou Faux
Date : une date au format AAAAMMJJ
Heure : une heure au format HHMMSSCC
Monétaire : nombre à virgule avec précision financière (2 décimales)
Variant : type qui s’adapte automatiquement à la valeur affectée
Conventions de nommage recommandées
s pour chaîne (string) : sNom, sAdresse
n pour entier (numeric) : nCompteur, nIndice
r pour réel : rMontant, rTaux
b pour booléen : bTrouvé, bValide
d pour date : dDebut, dFin
tab pour tableau : tabValeurs, tabClients

3.2. Les conditions

// ---- Structure SI / SINON ----
SI nAge >= 18 ALORS
// Ce bloc s'exécute si la condition est vraie
sMessage = "Vous êtes majeur."
SINON
// Ce bloc s'exécute si la condition est fausse
sMessage = "Vous êtes mineur."
FIN

// ---- SI avec plusieurs conditions (ET, OU) ----
SI nAge >= 18 ET bEstActif = Vrai ALORS
sMessage = "Client majeur et actif."
FIN

// ---- SELON (équivalent du switch/case) ----
SELON nCodeStatut
CAS 1 :
sStatut = "En attente"
CAS 2 :
sStatut = "Validé"
CAS 3 :
sStatut = "Refusé"
AUTRE CAS :
sStatut = "Inconnu"
FIN

3.3. Les boucles

// ---- Boucle POUR (nombre d'itérations connu) ----
POUR nIndice = 1 À 10
// Ce bloc s'exécute 10 fois
// nIndice prend successivement les valeurs 1, 2, 3, ..., 10
Trace(nIndice)
// Trace() affiche une valeur dans la fenêtre de trace (outil de débogage)
FIN

// ---- Boucle TANTQUE (condition de sortie) ----
nCompteur est un entier = 0
TANTQUE nCompteur < 5
nCompteur++
// nCompteur++ est équivalent à nCompteur = nCompteur + 1
FIN

// ---- Boucle POUR TOUTE CHAÎNE (parcours d'éléments séparés) ----
sListeFruits est une chaîne = "Pomme;Orange;Banane"
POUR TOUTE CHAÎNE sFruit DE sListeFruits SÉPARÉE PAR ";"
// sFruit prend successivement "Pomme", "Orange", "Banane"
Trace(sFruit)
FIN

3.4. Manipulations de chaînes

// Concaténation de chaînes
sNomComplet est une chaîne
sNomComplet = "Jean" + " " + "DUPONT"
// Résultat : "Jean DUPONT"

// Longueur d'une chaîne
nLongueur est un entier = Taille(sNomComplet)
// Résultat : 12

// Extraction d'une partie de chaîne
sPrénom est une chaîne = Gauche(sNomComplet, 4)
// Résultat : "Jean"

// Mise en majuscules / minuscules
Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.