Académique Documents
Professionnel Documents
Culture Documents
Support de cours
2 - TDF TECH 2008 - www.pcsoft.fr
Le document que vous avez entre les mains n’a pas
la finalité de remplacer les documentations techni-
ques ou commerciales livrées avec WinDev, WebDev ou
WinDev Mobile.
Ce document n’est pas un cours d’auto-formation, mais
uniquement un support “papier” à la présentation tech-
nique que vous avez suivie.
Ce document a été réalisé par l’équipe de la LST.
Sommaire
4 Sommaire
TDF Tech 2008 Sommaire du support de cours
9 Présentation
10 WinDev
Présentation rapide de WinDev et de ses fonctionnalités
12 WinDev Mobile
Présentation rapide de WinDev Mobile et de ses fonctionnalités
14 WebDev
Présentation rapide de WebDev et de ses fonctionnalités
17 Gains développeurs
18 Champ table
Exploitation des nouvelles fonctionnalités des tables et mise en oeuvre du mode Fichier/Mémoire des tables.
20 Gestion de réseau
Gérer un réseau grâce au protocole SNMP depuis une application WinDev.
21 BlueTooth
Transférer des fichiers entre des périphériques BlueTooth.
22 Reconnaissance vocale
Optimiser le taux de reconnaissance vocale et personnalisation des ordres reconnus.
25 Asus EEEPC
26 Développement spécifique
Développer une application WinDev pour une utilisation sur Asus EEEPC.
Optimiser l'espace utilisé de 40 %
29 Internationalisation
30 Interface / IHM
Gérer plusieurs langues au niveau de l'interface d'une application.
32 Industrialisation / automatisation
Automatiser et/ou externaliser la traduction d'une application.
37 Réplication
38 Configuration d'une réplication
Définir rapidement une réplication pour des utilisateurs nomades.
40 Optimisation de réplication
Mettre en œuvre une réplication définie dans l'éditeur de réplication.
43 GDS - Versionning
44 Gestionnaire de Sources : Principe
Fonctionnement et utilisation du GDS, l'outil de versionning intégré de WinDev - Rappels.
46 Politique de réintégration
Définir une politique de réintégration dans l'outil de versionning et les interactions avec les centres de contrôles.
49 Apple iPhone
50 Développement spécifique iPhone
Accéder en lecture et en écriture aux données de l'entreprise depuis un iPhone.
51 Compatibilité BlackBerry
Accéder aux données d'un site WebDev depuis un BlackBerry
53 Architecture Logicielle
54 Composants Internes
Définir une architecture d'application modulaire à l'aide de composants internes.
56 Références
Principales références (hors documentation) sur l'utilisation des modèles et des concepts de surcharge et d'héritage d'in-
terface.
57 Développement RAD
58 Développement rapide
3 astuces pour exploiter au mieux les fonctionnalités du RAD.
61 Etats élaborés
62 États & PDF
Utiliser un fichier PDF comme base d'un état pré-rempli.
63 Paysage ou portrait ?
Réaliser des états mixant des pages à imprimer en mode paysage et d'autres en mode portrait.
65 Bases de Données
66 Serveur Hyper File
Réaliser une sauvegarde à chaud d'une base de données Hyper File et utiliser les tâches planifiées du moteur Hyper File
SQL.
67 Accès natif
Accéder à une Base de Données Tierce depuis une application WinDev.
70 Procédures Stockées
Mettre en place et utilisation de procédures stockées sur une base de données Hyper File. Rappels.
74 Analyse d'utilisation
Détecter les actions les plus utilisées par les utilisateurs afin de les optimiser.
75 Gestion de projets
76 Gestion des exigences
Monitorer et planifier un projet grâce à la gestion des exigences et activer le mode "strict".
78 Règles métier
Mettre en place et utiliser des règles métier dans un projet.
79 Autres technologies
80 SAP
Définir une connexion à un serveur SAP et exécuter les BAPI présentes sur ce serveur.
82 Site PHP
Exploiter les nouveautés PHP de WebDev 12 pour intégrer des fonctionnalités AJAX tout en bénéficiant du débogueur
WebDev.
84 Caméra Dôme
Piloter une caméra dôme depuis une application WinDev : gestion de la vidéo et des ordres de déplacements.
87 Référencement
Améliorer le référencement d'un site : conseils pratiques.
88 Contexte AWP
Comment gérer un contexte lors de l'utilisation du mode AWP.
I Annexes
II Annexe A
Quelques commandes du WLangage
IV Annexe B
Les principales touches de raccourci
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
Les outils
Des outils facilitant le développement
sont également fournis (WDMAP, WDOUTIL,
WDSQL, ...) ainsi que de nombreux exem-
ples et assistants réutilisables.
Des centres de contrôle permettent la
gestion du cycle de vie de vos applications
ainsi que leur administration.
Une aide en ligne vous guide tout au long
du développement de votre application.
Cette aide inclut également une aide à la
correction d’erreurs.
Les différents éditeurs seront utilisés,
depuis la définition d’une analyse jusqu’à
l’installation, en passant par toutes les
phases du développement (création des
fenêtres, des états, des traitements...),
sans oublier les sauvegardes.
Les Concepts
Internet
Les différents services de l’In-
ternet
Le terme Internet regroupe plusieurs ser-
vices d’utilisation différente :
• FTP (File Transfer Protocol) est un ser-
vice permettant de transférer des fichiers
d’un ordinateur vers un autre à travers
Internet.
• SMTP (Simple Mail Transfer Protocol)
permet d’envoyer des messages ou mails
à un utilisateur défini. Chaque utilisateur
doit disposer d’une adresse Email qui lui
sert de boîte aux lettres.
• HTTP (HyperText Transfer Protocol). HTTP
est un protocole de niveau application qui
est utilisé pour le transfert de pages sur
Internet.
WebDev est un AGL (Atelier de Génie tants, vérification du code saisi, coloration Chacun de ces services nécessite un gestion-
Logiciel) orienté développement de syntaxique, aide contextuelle …) incluant naire de services installé sur un serveur :
un puissant débogueur. • Le gestionnaire de services FTP gère l’hé-
sites Intranet et Internet.
• Un éditeur de styles incluant police, bergement des fichiers, les droits d’utilisa-
WebDev permet de développer tout
couleur, position, etc. tion des fichiers et la réponse aux demandes
type de sites dynamiques incluant en provenance des autres postes.
• Un éditeur de requêtes pour les sélections
l’accès à des bases de données. d’enregistrements dans les fichiers. • Le gestionnaire de services SMTP prend en
Il permet aussi de développer des • Un éditeur d’états. charge les demandes d’envoi de messages et
sites semi-dynamiques et stati- • Un éditeur de dossier technique repre- le routage vers les serveurs POP (réception
ques. nant intégralement toutes les informations des messages) concernés.
techniques de votre projet. • Le gestionnaire Web (www) permet
Présentation de • Un éditeur d’installation. l’hébergement des pages et répond aux
WebDev * accès natif optionnel, ** accès natif inclus demandes de consultation de la part des
postes client.
WebDev est composé de différents édi- L’éditeur d’installation assure la mise en
teurs : place des sites créés, ainsi que leur main- Le Web en détail
• Un éditeur de projet permettant de visua- tenance. Cet outil permet de réaliser une Les pages Web sont visualisées sur un poste
liser et d’agir sur le graphe du projet. installation sur le serveur via FTP ou par par l’intermédiaire d’un navigateur Web
• Un éditeur de pages. média physique (CD, Zip, etc.). (Internet Explorer, FireFox, Opera, etc.).
• Un éditeur d’analyses permettant l’accès Des outils facilitant le développement
Le navigateur interprète le contenu des
à tout type de base de données (Hyper File, sont également fournis (WDMAP, WDOUTIL,
fichiers au format HTML décrivant les pages.
Hyper File Client/Serveur, MySQL, xBase, WDSQL, etc.) ainsi que de nombreux exem-
On parle de pages HTML.
AS/400*, Oracle*, SQL Server*, Access**, ples et assistants réutilisables.
WebDev génère automatiquement le code
OLE DB, etc.). Les principaux éditeurs sont utilisés, depuis HTML et JavaScript.
• Un éditeur de code évolué (avec assis- la définition d’une analyse jusqu’à l’ins-
• Séminaire de formation,
• Consulting,
• Assistance Directe,...
lyse, vous montre des nouveautés utiles
N’hésitez pas à nous
dans votre cas de figure, vous propose
contacter: un assistanat
est toujours rentable pour des optimisations de votre code, valide
vos développements. vos modes d’utilisation, ...
Vous serez ravi de l’efficacité de son inter-
vention ! Budgétez d’ores et déjà la pro-
chaine intervention !
Assistance Directe
Formation Le montant de ces formations est déduc-
tible du “1,5 % Formation”.
Un complément efficace du
Séminaires de formation pour Support Technique Gratuit
WinDev et WebDev Consulting Tout projet important ou stratégique doit
PC SOFT organise à Paris, chaque semaine, bénéficier d’une “Assistance Directe” !
des séminaires de formation à WinDev Profitez de l’expérience d’un ingé- L’Assistance Directe permet d’une part
et WebDev, de différents niveaux : Prise nieur de PC SOFT sur votre site de bénéficier d’un contact téléphonique
en main, Perfectionnement, Expert,
Un consultant PC SOFT peut être délégué immédiat avec un ingénieur spécialisé, et
Client / Serveur, ...
chez vous, pour une durée de 1 à 5 jours. d’autre part de choisir les sujets à traiter,
Ces séminaires, animés par des ingénieurs
Un ingénieur PC SOFT connaissant à la et ce pour une durée que vous définissez
PC SOFT expérimentés, permettent de
fois votre domaine et les outils que vous vous-même. Cela vous permet de résoudre
découvrir et de maîtriser WinDev, WebDev
utilisez. immédiatement les sujets qui vous posent
et WinDev Mobile selon un plan efficace.
L’ingénieur PC SOFT répond directement problème.
Consultez le calendrier des séminaires (le
à vos questions, travaille sur votre projet Le contact téléphonique est garanti sous
détail des stages et les contenus péda-
réel et votre configuration réelle. Vous 8 heures ouvrables, ce qui vous permet
gogiques sont disponibles sur notre site
obtenez les réponses précises qui vous font une meilleure efficacité.
Web : www.pcsoft.fr), vous trouverez LA
gagner un temps précieux, et vous assurent Ce service est disponible sur abonne-
formation adaptée à votre expérience et
des bonnes orientations technologiques et ment.
à votre besoin.
méthodologiques.
Suivre une formation organisée par PC SOFT Notre conseil ? Commandez 1 jour de consul- Contactez le service commercial pour
est toujours rentable : c’est se donner les ting pour 100 jours de développement. plus d’informations (Fabrice CHAMBON
moyens de maîtriser WinDev et WebDev Et, chaque année, prenez l’habitude de au 04.67.032.032).
dans les meilleurs délais, ou d’en découvrir faire venir (juste 2 jours) chez vous un
la face cachée, encore plus puissante ! ingénieur PC SOFT, pour profiter d’une
Inscrivez-vous vite! expertise de toutes les nouveautés.
Ces séminaires peuvent également être Sur votre projet, dans vos locaux, en votre
organisés dans vos locaux, en France et présence, l’ingénieur PC SOFT valide l’ana-
à l’étranger.
Avantage utilisateur
Quand aux utilisateurs, ils bénéficient de
tous les avantages des tables mémoires :
Les utilisateurs peuvent trier sur toutes les
colonnes, faire une recherche avec la loupe
sur toutes les colonnes (clé ou non).
Mise en œuvre
Une table fichier-mémoire se définit comme
une table fichier classique : les informations
sur le fichier parcouru et les rubriques
affichées sont indiquées dans la fenêtre
de description de la table.
Ensuite, dans l'onglet "Contenu" de la
fenêtre de description du champ table,
il suffit d'activer l'option "Fichier chargé
en mémoire".
Vous pouvez également choisir le nombre
maximum d’enregistrements à afficher
dans la table grâce au champ de saisie
associé.
Notre conseil
Lors du choix de cette "limite", il est
conseillé de prévoir un peu de marge afin
que l’utilisateur puisse visualiser tous les
enregistrements.
Le champ table a évolué de manière Tables Fichier/ De manière générale, il est conseillé de
sensible en version 12, en appor-
tant notamment les nouveautés
Mémoire filtrer les données avant de les afficher
dans une table : une table contenant plus
suivantes : WinDev 12 dispose d'un nouveau mode de de 10.000 enregistrements est difficilement
• Un nouveau type de table : les fonctionnement du champ table : les tables exploitable par un utilisateur.
tables Fichier/Mémoire. "fichiers chargés en mémoire".
• La possibilité de filtrer le contenu Par exemple, les deux tables de la fenêtre FAA de filtrage de
de la table par l'utilisateur sous "FEN_ListeMachineComposant" sont des
forme de FAA. tables “Fichier-mémoire”. contenu
• Les colonnes de type "Jauge". Les utilisateurs des applications WinDev 12
• L'impression directe du contenu Avantage développeur peuvent maintenant appliquer des filtres
L'utilisation de ce type de table permet automatiques sur les tables. Cette fonc-
d'un champ table.
aux développeurs de bénéficier de tous tionnalité (FAA) est disponible pour tous
•La possibilité de fusionner des
les avantages des tables fichiers. Il n'est les types de tables (fichier, mémoire et
cellules d'une table. pas nécessaire de définir du code pour le fichier chargé en mémoire).
remplissage de la table, les modifications,
Rappel : les FAA sont des fonctionnalités
Projet d'illustration la saisie en cascade, etc.
automatiques des applications, tel que
Le projet utilisé pour illustrer ce sujet est
"WD Gains Développeurs" (présent sur le
DVD). Les manipulations décrites dans cet
article reposent sur ce projet.
Les fonctions SNMP de WinDev 12 Activation Une fois la session ouverte, la fonction
permettent de réaliser de des appli- SNMPOuvreSession renvoie un identifiant
Pour que les PC du réseau puissent fournir de session permettant de dialoguer avec
cations capablent de monitorer
ces informations, il est nécessaire d'activer l'équipement.
les équipements d’un réseau : les
l’agent SNMP des ordinateurs.
PC, les serveurs, les switchs, les Il s’agit d’une option de Windows ou de Lecture d'une information
automates, … Linux. Une fois la connexion établie il suffit de lire
Il est par exemple possible de lister la valeur que l’on souhaite dans l’arbores-
Pour Windows, les étapes sont les sui- cence SNMP grâce à la fonction WLangage
toutes les machines d'un réseau
vantes : SNMPLit.
disposant de moins de 1Go de
• Ouvir le panneau de configuration.
RAM pour mettre à niveau un parc La fonction SNMPLit nécessite deux para-
• Lancer l'option "Ajout / Suppression de
matériel. mètres :
programmes".
Les fonctions SNMPxxx du WLangage • Sélectionner le mode "Ajouter / Supprimer • l’identifiant de la session renvoyée par
permettent également de : des composants Windows". la fonction SNMPOuvreSession.
• Suivre la charge du réseau, • Ajouter si nécessaire le module "Outil de • l’identifiant SNMP de la valeur à récu-
gestion et d'analyse". pérer, par exemple pour la RAM, pour les
• Optimiser le fonctionnement du
• Lancer le gestionnaire de services Windows informations système...
réseau
• Gérer éventuellement des problè- et sélectionner le service "Service SNMP". // Récupération du système
• Dans les propriétés du service (clic Système=SNMPLit(nIDSNMP,...
mes réseaux. "1.3.6.1.2.1.1.1.0")
droit), dans l'onglet "Sécurité", ajouter
deux communautés : une communauté // Récupération de la mémoire
// vive en koctets
Fonctionnement "public" avec des droits en lecture, et une
communauté "privée" avec des droits en Mémoire=SNMPLit(nIDSNMP,...
Comme leur nom l'indique, les fonctions lecture/écriture. "1.3.6.1.2.1.25.2.2.0")
SNMPXXX se basent sur le protocole
SNMP. SNMP ( Simple Network Management
Protocol) est le protocole standard de ges- Mise en oeuvre Identifiant, OID et
tion du matériel réseau.
La mise en oeuvre des fonctions SNMPXXX MIB
s'effectue en deux étapes : L’identifiant de la valeur, c’est l’OID de la
Le projet " WD Gains Développeurs" contient
• La connexion à l'équipement concerné. valeur à récupérer.
un exemple didactique d'utilisation des
• La récupération des informations vou- Vous pouvez trouver cette valeur :
informations SNMP.
lues. • Soit sur Internet pour les valeurs stan-
Cette exemple permet d'afficher des infor- dards
mations sur les PC d'un réseau : • Soit dans la documentation de votre maté-
• le nom de la machine, Connexion à l'équipement
riel, qui s’appelle la MIB et qui regroupe
• son adresse IP, Dans l'exemple, le code de connexion est
toutes les valeurs spécifiques de votre
• son adresse MAC, réalisé dans le code du bouton "Récupérer"
matériel.
• des informations sur le système, grâce à la fonction SNMPOuvreSession du
• la RAM, WLangage. La fonction SNMPChargeMIB permet de
• depuis combien de temps le PC est charger en mémoire les informations d'une
//Ouverture de la session SNMP
allumé… nIDSNMP = SNMPOuvreSession(... MIB afin d'utiliser l'identifiant chaîne de
NomPoste,"public") l'OID et non son identifiant.
Pour obtenir ces informations, l'applica- La fonction SNMPOuvreSession pour se
tion interroge directement les différents connecter à l’équipement nécessite en
acteurs du réseau pour obtenir ces infor- paramètre :
mations : ces informations sont donc tou- • Le nom ou l’adresse IP du matériel.
jours à jour. • Le nom de la communauté SNMP avec
laquelle nous allons dialoguer ("public"
dans le cas de notre exemple).
Gains développeurs
Transférer des fichiers entre des
périphériques BlueTooth.
WinDev permet, simplement, de La fenêtre "FEN_Exemple" du projet "WD Pour cela, il est possible d'utiliser une syn-
piloter les applications à la voix. Commandes Vocales" contient des bou- taxe particulière de la fonction WLangage
Mais il est également possible de tons ayant pour libellé "Gauche", "Droite", AjouteCommandeVocale :
"Quitter" et "Revenir à l'état initial". AjouteCommandeVocale(...
gérer la reconnaissance vocale par
Il suffit donc de dire "Gauche", "Droite", GestionVocale, "")
programmation afin de gérer des
"Quitter", "Revenir à l'état initial" pour
cas complémentaires ou d'amé- que le code du bouton correspondant soit
L'appel à la fonction AjouteCommandeVocale
liorer le taux de reconnaissance automatiquement exécuté.
avec, comme phrase à reconnaître, une
vocale de l'application. chaine vide ("") permet à la procédure
Les applications existantes bénéficient GestionVocale de "tout" écouter : pour
automatiquement de la reconnaissance chaque phrase prononcée, GestionVocale
Projet d'illustration vocale, sans qu'aucune ligne de code ne sera exécutée.
Le projet utilisé pour illustrer ce sujet est soit ajoutée.
Dans la procédure "GestionVocale", il suffit
"WD Commandes vocales" (présent sur le alors de traiter la phrase prononcée pour
DVD). Il s'agit de l'exemple livré en standard Commandes vocales reconnaître quelle commande vocale a
dans le produit, modifié pour ce support
de cours. Les manipulations décrites dans
"évoluées" pu être dite.
cet article reposent sur ce projet. WinDev permet également d'ajouter des Il est nécessaire de stocker dans un tableau
commandes vocales spécifiques à chaque (un tableau associatif par exemple) toutes
les commandes vocales disponibles, en
Utilisation de la application. Il est en effet parfois plus sim-
phonétique, et la procédure associée à
ple et intuitif de parler naturellement que
reconnaissance de prononcer le libellé des boutons. chacune.
vocale Dans la fenêtre "FEN_Exemple", plusieurs Il suffit alors de modifier chaque mot de
commandes vocales ont été ajoutées la phrase prononcée en la phonétique qui
Le pilotage des applications à la voix néces-
dans le code d'initialisation de la fenê- correspond, et de comparer la phrase ainsi
site la présence sur le poste d'un logiciel
tre. Pour ajouter une commande vocale, obtenue avec le tableau des commandes
de reconnaissance vocale.
il suffit d'utiliser la fonction Wlangage vocales : si la commande est reconnue,
Windows Vista dispose d'une reconnaissance
AjouteCommandeVocale. la procédure associée peut être
vocale en standard. Pour les autres systèmes
exécutée.
d'exploitation, il suffit d'installer un logiciel // Pour lever le bras gauche
de reconnaissance vocale. AjouteCommandeVocale(... Pour améliorer encore
La reconnaissance vocale est parfois assez LèveBrasGauche, ... le taux de compré-
sensible : il est parfois nécessaire de répéter "Lève le bras gauche") hension, il est
une phrase pour que celle-ci soit entendue Cette fonction accepte en paramètre : possible de
correctement par la machine. • le nom de la procédure Wlangage qui supprimer les
sera exécutée lors de l'appel à la com- mots "para-
Notre astuce mande vocale. sites" qui
Pour améliorer la compréhension de la • la phrase qui doit être prononcé pour peuvent
reconnaissance vocale, il est conseillé exécuter la procédure. se situer
d'effectuer les didacticiels et exercices en début
Dans cet exemple, si l'utilisateur prononce et fin de
proposés par le logiciel de reconnaissance la phrase "Lève le bras gauche", la procé-
vocale. phrase.
dure "LèveBrasGauche" sera exécutée.
Gains développeurs
Exploiter au mieux les optimisations de la
compilation JIT.
La compilation JIT (Just In Time) est Opérations concernées tre n'est pas modifié par la procédure.
une nouveauté importante des ver- La compilation JIT est automatiquement
sions 12. La compilation JIT permet activée et optimise : Deuxième optimisation
de générer des instructions direc- • Toutes les opérations mathématiques : Indiquer le type des paramètres dans le
Addition, soustraction, multiplication, code de la procédure détermine sa taille
tement en assembleur en tenant
division en octets, ce qui rend la compilation JIT
compte de la plateforme de l'utili-
• Certaines fonctions mathématiques encore plus efficace.
sateur : le gain est évident.
comme cosinus, sinus, tangente, modulo
Il est donc plus qu'intéressant de • Les fonctions d'opération binaires : ou Troisième optimisation
comprendre comment bénéficier binaire, et binaire, ... Il est important de découper les calculs
de cette compilation JIT et aussi de • Certaines fonctions sur les entiers : au maximum et d'utiliser des variables
savoir comment adapter un code ConstruitEntier, valeur absolue, .. locales.
existant pour optimiser les perfor- En fait, toutes les fonctions et opérateurs Par exemple, dans une même procédure,
mances de cette compilation JIT qui utilisent des nombres et des opérations il n'est pas optimal d'utiliser plusieurs fois
et donc des applications. mathématiques… la propriété ..Largeur sur le même champ,
car :
• A chaque exécution, l'application doit
Principe Optimisations rechercher la largeur du champ.
Pour illustrer le fonctionnement de cette
• La compilation JIT ne peut pas optimiser
compilation JIT, nous avons utilisé le projet Les performances du JIT peuvent encore
ce type de calcul.
"WD Fractales" présent sur le DVD. être améliorées en adaptant le code des
Le projet "WD Fractales" est un exemple de applications. Pour essayer ces optimisa- La solution est donc de stocker la largeur
calcul scientifique bien connu : le calcul tions, il est tout à fait possible de les réa- et la hauteur du champ dans une variable
de fractales. liser dans l'exemple "WD Fractale". locale. Cette optimisation est également
valable si vous n’utilisez pas encore le JIT
Sans la compilation JIT Première optimisation ou une version précédente de WinDev.
Première étape, pour avoir un ordre de Partout où c’est possible, il est conseillé
grandeur du temps d'exécution actuel, d'utiliser des paramètres locaux pour vos
il faut exécuter cette application sans la procédures (par exemple dans la procédure
compilation JIT. "Fractale" de l'exemple).
Pour cela, il suffit d'ouvrir le projet et de Pour indiquer qu'un paramètre est un para-
faire un "Go" du projet. En effet, la com- mètre local et non global, il suffit d'ajouter
pilation JIT n'est pas utilisée lors du mode le mot-clé "Local" devant les paramètres.
test car WinDev a besoin de connaître pas
à pas le code en cours d'exécution (prin- Pourquoi cette optimisation ? Tout
cipalement pour le deboggueur). simplement parce que les varia-
bles locales peuvent être stockées
À la fin du calcul, le temps passé est affiché dans des registres mémoire, alors
et sera le temps de référence. que les variables globales ne le
peuvent pas.
Exécution avec compilation JIT Les variables globales sont-elles
Pour bénéficier de la compilation JIT, par stockées à une adresse mémoire.
défaut, il suffit de créer l'éxécutable. Dès Et l’accès à un registre mémoire
son lancement, la compilation JIT sera est entre 1 à 10 fois plus rapide que
automatiquement utilisée. l’accès à une adresse mémoire.
À la fin du calcul, le temps passé est affi-
ché et il est alors facile de comparer par Avertissement : Avec le mot-clé
rapport au temps de référence mesuré "Local", les paramètres sont pas-
précédemment. D'ailleurs, le résultat est sés par valeur et plus par adresse
généralement perceptible pendant l'exé- comme c'est le cas par défaut dans
cution. le WLangage. Ce mot-clé ne doit
donc être utilisé que si le paramè-
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
L'EEE-PC ("Easy to learn, Easy to EEE-PC sous Windows Les applications générées peuvent donc
work, Easy to play") est un PC ultra- fonctionner sous Linux, Mac, Unix, ... et
La création d'applications pour EEE-PC donc sur un EEE-PC Linux.
portable, commercialisé par Asus.
Windows avec WinDev se fait simplement,
Ce portable possède un écran de Pour générer un exécutable Java (fichier
comme pour tout ordinateur Windows.
7 pouces pour une résolution de .jar) depuis un projet WinDev, il suffit
800x480 (ou 800x600 avec une La seule particularité réside alors dans de cliquer sur le menu "Atelier .. Java ..
la taille de l'écran. Pendant la phase de Générer l'archive Java" et de suivre l'assis-
gestion de scrolling).
création de projet, il suffit de choisir la tant de génération.
Autre particularié par rapport à taille correcte pour les fenêtres de l'ap-
Comme pour le développement d'applica-
un PC portable : il ne possède pas plication : 800x480 ce qui permettra une
tion Windows pour EEE-PC, le développe-
de disque dur "classique" mais un utilisation en plein écran par l'utilisateur
ment d'applications Java sous Linux pour
disque flash de 4 ou 8 Go. que l'écran soit en mode 800x600 ou en
EEE-PC s'effectue comme tout autre déve-
L'EEE-PC est livré en standard avec mode 800x480).
loppement Java.
une distribution Linux spécifique L'utilisation des ancrages permet alors
à l'application de bénéficier de la place
("Xandros") mais il est également Notre conseil
disponible (y compris en cas d'utilisation
possible d'y installer Windows XP. Si une application est destinée à être uti-
sur un écran externe où la résolution est
lisée en Java, il est conseillé d'activer le
WinDev 12 permet de développer alors 1024x768).
mode "Java" dès la définition du projet. En
des applications pour ce péri-
effet, certaines fonctionnalités de WinDev
phérique, qu'il soit sous Linux ou Notre Astuce
n'étant pas disponibles en langage Java,
Windows. La taille "préférentielle" des écrans pour un
il est préférable de tenir compte de ces
projet peut être modifiée dans l'onglet
spécificités dès la conception.
"Style" de la fenêtre de description
du projet. Comme pour un développement Windows
pour EEE-PC, il est important de respecter
Le développement de l'application est
la résolution de l'écran : 800x480.
ensuite classique et il est possible
d'utiliser toutes les fonctionnalités du
WLangage et les périphériques maté- JRE et JDK
riels (port USB, carte réseau...). Il est La version de l'environnement d'exécution
notamment possible d'utiliser une base Java (JRE – "Java Runtime Environment")
de données Hyper File. du EEE-PC Linux est, par défaut, une ver-
Le projet "WD Gestion de Devis", four- sion 1.5.
nit avec ce support de cours, est un Si le JDK présent sur le poste de déve-
exemple d'application dédiée à une loppement, et donc celui utilisé pour la
utilisation sur EEE-PC Windows (il est génération d'application Java, est d'une
cependant possible de l'utiliser sur version supérieure (1.6 par exemple), il est
toute machine Windows). nécessaire de spécifier dans l'assistant de
génération Java que le fichier .jar doit être
compatible avec les versions inférieures.
EEE-PC sous Cette manipulation n'est pas spécifique à
Linux l'EEE-PC, et peut être effectuée quelle que
WinDev permet de soit l'application générée, pour s'assurer
générer des de la compatibilité avec les différentes
applications versions de JRE.
Java depuis
un projet
Remarque
développé en Par défaut, les options de compilation
WLangage. Java assurent une compatibilité jusqu'à
la version 1.4.
Exemples produits
WinDev fournit en standard de nombreux
exemples Java : WD Dessiner Java, WD
Grapheur Java, WD JavaMail, WD XML
Java, ...
Avant Après
Fenêtre "classique" : le libellé indiquant le Fenêtre "optimisée" : le libellé indiquant le
rôle d'un champ est situé à gauche (ou au rôle de chaque champ est indiqué dans le
dessus) du champ. champ avec un effet graphique permettant
de le distinguer par rapport au contenu.
Ce mode d'affichage est rendu possible grâce au concept de texte indicatif disponible dans l'on-
glet "Aide" de la fenêtre de description des champs dans WinDev, WebDev et WinDev Mobile.
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
La gestion de plusieurs langues projet pourront être définis dans plusieurs lisateur.
dans un même projet peut s'effec- langues. • Personnaliser les paramètres pour chaque
tuer soit : Pour cela, il suffit de : langue.
• Lors de la définition du projet (lors • Sélectionner l'option "Description du pro- Par exemple, pour la langue anglaise, il
de la création du projet) jet" du menu "Projet" de WinDev. est possible de forcer l'utilisation du point
• À n'importe quel moment sur un • Sélectionner l'onglet "Langues" pour le séparateur de décimale et la virgule
projet existant. • Cocher "Anglais" pour le séparateur de milliers.
• Sélectionner "Anglais" Dès qu'un projet est multilingue, tous les
Note : WinDev permet de gérer jusqu’à 20 champs de l'interface (fenêtre, pages,
Mise en œuvre langues dans une même application. états,...) deviennent multilingues.
Dans ce sujet, nous allons modifier le projet
"WD Internationalisation" afin de le rendre Options Linguistiques Utilisation
multilingue. L'application correspondante Pour chaque langue du projet, il est possible Pour illustrer le fonctionnement d'un pro-
pourra alors être exécutée en français ou en de définir les options linguistiques : jet multilingue, ouvrez la fenêtre "FEN_
anglais à partir du même code source. format des nombres, des monétaires, des AjoutCollaborateur" du projet.
heures, des dates, des durées … et d’autres Dans la description de chaque élément, vous
Projet Multilingue paramètres comme le sens d’écriture par disposez d'un paragraphe pour le français
exemple. et un paragraphe pour l’anglais.
Pour avoir mon application à la fois en
français et en anglais, tout en n’ayant Prenons par exemple l'option linguistique Prenez, par exemple le champ "Nom et
qu’un seul code source à maintenir, il faut sur les nombres, il est possible soit de : prénom" (clic droit…description).
rendre ce projet "Multilingue", c'est-à- • Utiliser les paramètres définis dans les Il est même possible de définir les textes
dire que l'interface et les messages de ce options linguistiques du Windows de l’uti- d'indications et autres systèmes d'aide dans
les différentes langues du projet (options
accessibles depuis l'onglet "Aide").
Note : le texte d’indication est le texte
affiché dans le champ avant que l'utilisateur
ne commence à saisir.
Ressources textes
Pour l'interface, nous venons de le voir,
WinDev (mais également WebDev et
WinDev Mobile) simplifie énormément le
travail à réaliser, il reste donc à gérer les
chaînes en "dur" dans le code :
• message d'erreur
• boîtes de dialogue
• ...
Par exemple, dans le traitement VerifInfos
de la fenêtre "FEN_AjoutCollaborateur",
vous pouvez trouver le message suivant :
"Vous n'avez pas entré le nom et le prénom
du collaborateur" .
Ce message sera affiché à l’utilisateur par
la fonction WLangage "Erreur", il faut donc
que ce message soit également traduit
pour que l'application soit fonctionnelle
Conversion
Si les ressources multilingues n'ont pas
été créées au fur et à mesure de l'écri-
ture de l'application, il est malgré tout
possible d'automatiser une partie de cette
opération.
Pour cela, il suffit d'utiliser l'option
"Convertir les chaînes simples en messages
multilingues" du menu "Code .. Message
Multilingues" lorsqu'une fenêtre de code
est affichée.
Traduction des
ressources
Une fois les messages extraits, il faut passer
à l'étape de traduction des ressources dans
la ou les langues désirées. Cette traduction
peut être réalisée en direct depuis WinDev
par l'option "Outils…WDMSG…Traduction des
messages" ou être réalisée par des traduc-
teurs ne disposant pas de WinDev.
Principe
Cette option lance l’outil "WDTrad" qui va
gérer la traduction proprement dite. Cet
outil est livré en standard avec WDMSG.
Il est possible de fournir cet outil avec
les fichiers à traduire à un cabinet de
traduction.
Configuration du
projet
Comme précédemment, pour gérer une
nouvelle langue dans une application, il faut
commencer par l'indiquer dans la fenêtre
de description du projet.
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
Options de la réplication
Il existe de nombreux modes de réplication,
les options de réplication permettent de
définir rapidement celui concerné :
• La réplication est-elle mono-direction-
nelle (donc une extraction en lecture de
la base) ou bi-directionnelle (les modifica-
tions sur le réplica seront reportées dans
la base maître)?
• Comment sont gérés les conflits de répli-
cation ? Par défaut, c'est la modification
la plus récente qui est prioritaire, mais il
est possible de vouloir un fonctionnement
différent.
Fichiers à répliquer
Une fois les options de réplication défi-
nies, il faut définir les fichiers à répliquer.
Les fichiers peuvent être en Hyper File
SQL, Oracle, MySQL, SQL Server, AS 400,
Progress…
Pour chaque fichier répliqué (par le bouton
"Ajouter"), il est possible d'indiquer si le
fichier doit être répliqué entièrement ou
partiellement.
Une fois la réplication définie grâce cation cliente (menu Atelier .. Créer la (le fichier ".wer".
à l'éditeur de réplication, il ne reste procédure d'installation). • Cocher l'option "permettre à l’appli-
plus qu'à activer cette réplication A l’étape "Paramétrage des données", il cation de travailler également en mode
connecté".
dans les applications destinées aux est nécessaire de :
utilisateurs nomades. • Décocher l’option "Paramétrer la modi- Il est également possible d'activer l'option
fication automatique des fichiers de don- "Synchroniser automatiquement les données
Réplication nées"
• Cocher l’option "Installer et paramétrer
au lancement et à l’arrêt de l’application"
pour que la réplication entre la base locale
automatique les modules de réplication automatique". et la base du siège soit réalisée automa-
Première solution : le mode automatique tiquement.
de réplication. Dans ce mode, l'application
Configuration Ensuite, il reste à sélectionner la connexion à
n'a pas besoin d'avoir de code spécifique L'assistant demande ensuite la méthode utiliser pour l’accès en mode connecté.
pour gérer la réplication. de réplication à utiliser :
• en utilisant le serveur de réplication ou Outils complémentaires
Important : La réplication utilise les • en accédant directement à la base maître
connexions définies dans l'analyse, il est Deux outils complémentaires sont livrés
(le serveur de réplication est détaillé dans pour permettre d'effectuer une réplication
donc important que les connexions y soient la suite de cet article).
déclarées et ne soient pas modifiées par "à la demande" en mode automatique :
programmation. C'est ce second mode qui est le mode par • "RéplicAdmin" permet de gérer la
défaut, et qui correspond au libellé "Accès connexion / déconnexion à la base princi-
Activation direct à la base maître" pale et de réaliser une synchronisation.
L'activation du mécanisme de réplication Il reste ensuite à : • "RéplicSynchro" permet de réaliser une
automatique s'effectue lors de la création • Sélectionner le fichier de description de synchronisation.
de la procédure d'installation de l'appli- la réplication que l’on a définie ensemble
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
Notre Astuce
Il est possible d'utiliser la politique de
réintégration comme avertissement, par
exemple pour prévenir le développeur qu'il
n'a pas testé le projet. Pour cela, il suffit
de cocher la case "Ces règles peuvent être
ignorées". De cette façon, le développeur
sera prévenu que la politique de réintégra-
tion n'est pas respectée, mais ne sera pas
bloqué et pourra tout de même réintégrer
les éléments.
Pour utiliser une politique de réintégration
stricte, cette option doit être décochée.
Définition d'une
politique de
réintégration
La politique de réintégration se définit :
• soit dans WinDev, via le menu "GDS ..
Politique de réintégration",
• soit dans l'administrateur du GDS.
Taille de l'écran
Une des caractéristiques de l'iPhone est la
taille de son écran : 320x480.
Mais la taille utile, réellement utilisable
pour les applications, est 320x356. La place
Apple iPhone
Accéder aux données d'un site WebDev
depuis un BlackBerry
Le BlackBerry ne transpose pas direcement Boutons spécifiques Les champs gérés par le Black Berry sont
la mise en page définie dans le projet. Les Pour que les boutons aient un fonctionne- restreints. Les champs gérés par le navi-
champs sont automatiquement redimen- ment classique sur un navigateur BlackBery, gateur sont :
sionnés, et alignés les uns en dessous des il est conseillé d'activer le mode "Générer • certains boutons (selon les options, le
autres, au bord de la page afin de permettre les boutons textes adaptés au BlackBerry" bouton de type "texte" étant conseillé),
une navigation verticale adaptée à ce type depuis la fenêtre de description de la • les libellés,
de terminal. page. • les liens,
• les images,
• les interrupteurs,
• les sélecteurs,
• les listes et combos,
• et les champs de saisis.
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
• Indiquer un nom.
• Sélectionner les éléments (si besoin)
constituant initialement le composant
interne : fenêtres, états, requêtes...
• Sélectionner le ou les points d'entrées du
composant interne, c'est-à-dire les éléments
accessibles du composant internes.
Note : Le composant interne est représenté
par un perso-dossier.
Architecture
Lors de l'intégration d'éléments dans un
composant interne, il est possible que
des erreurs de compilations apparaissent :
il s'agit de l'utilisation des éléments du
composant interne qui ne sont pas définis
en point d'entrée du composant (ce qui est
normal). Dans ce cas, il faut soit :
• Ajouter les éléments concernés dans la
liste des points d'entrées du composant
Un nouveau concept d'architecture Concept interne. Cette solution est la plus rapide
est apparu en version 12 : le concept mais n'est pas forcément intéressante en
Le concept de composant interne offre
des composants internes. terme d'architecture : il est conseillé d'avoir
des spécificités par rapport à celui de
Les composants internes permet- composant "classique" disponibles depuis un nombre limité de point d'entrée sur un
tent de découper et d’organiser plusieurs versions de WinDev : composant interne pour le rendre le plus
des projets en briques logicielles • Le composant interne est vu dans un autonome possible.
• Modifier le code du projet pour utiliser
indépendantes et autonomes. projet sous la forme d'un perso-dossier.
• Un composant interne est intégré dans un point d'entrée (existant ou nouveau)
du composant interne. C'est bien entendu
Principe un projet avec son code source.
• Un composant interne peut être partagé la méthode préconisée même si cette
Un composant interne, c'est tout simple- avec son code source via le GDS. méthode est plus longue initialement à
ment un ensemble d’éléments : fenêtres, • Un composant interne utilise l'analyse et mettre en œuvre : le composant est alors
états, requêtes, code... qui composent le contexte du projet. plus autonome donc réutilisable.
une fonctionnalité métier.
Le composant interne fait partie intégrante Réalisation Avantages
du projet : c’est un sous–ensemble du Les composants internes permettent d’ar-
Pour définir un composant interne depuis
projet. Le dialogue entre le composant chitecturer un projet et de le découper en
WinDev, il est possible soit :
interne et le reste du projet se fait via brique logicielle autonome.
• de créer un composant interne de zéro,
des "points d'entrées" définis au niveau du • Si vous travaillez en équipe, les com-
c'est-à-dire sans élément initial (cas de la
composant interne. posants internes permettent de faire
programmation d'un nouveau module).
Le projet ne peut pas manipuler directe- • de créer un composant interne a posteriori un découpage fonctionnel du projet par
ment un élément du composant interne à partir de certains éléments du projet développeur.
(sauf si c'est un point d'entrée). De ce fait, (découpage d'un projet existant). • Le composant interne est partageable
il est plus facile de fiabiliser et centraliser avec d'autres projets via le GDS.
Pour ces deux utilisations, le mode opéra-
les traitements utilisés par les projets • Le code source est disponible avec le
toire reste identique :
exploitant les fonctionnalités des compo- composant interne : la mise au point et les
• Lancer l'option "Créer un composant
sants internes. développements peuvent être réalisés par
interne" du menu "Atelier .. Composants
tous les développeurs utilisant le composant
internes".
interne (selon les droits bien entendu).
Architecture Logicielle
Homogénéiser une interface grâce aux
modèles et aux mécanismes d'héritage et de
surcharge.
Exemple
Dans une fenêtre, les différents libellés de
cette fenêtre ont généralement le même
style associé.
LST 69
p. 22 - p.23 : Utilisation des modèles (fenêtres, pages ou champs)
et du mécanisme de surcharge.
LST 71
p. 16 - p.17 : Code générique : Associer une classe à un modèle
pour gérer la surcharge de procédures.
Génération de champs
Dans l'onglet "Avancé", il est possible de
spécifier, pour chaque rubrique, ce que
Le RAD (Ra pid Applica tion SQL Server, MySQL, Informix, DB2, Sybase,
le RAD doit générer.
Développement) de WinDev 12 a Progress, Access, dBase, FoxPro et bien
sensiblement évolué. Le code et entendu Hyper File.
En effet, certaines rubriques ne doivent
les éléments générés utilisent les être générées que dans certains types
Informations partagées
dernières nouveautés de la version de fenêtres. Par exemple, une rubrique
Par défaut, pour chaque rubrique des
12, un code simplifié et le concept "Commentaires" multi-lignes n'aura pas
fichiers de l'analyse, le RAD va générer
de pattern permettent de disposer un champ.
d'intérêt dans un champ table.
d'applications différentes et spéci- Ce champ dispose d'un ensemble de pro-
fiques graphiquement. Il est donc possible de définir dans cet
priétés : type de champ, état initial, etc.
onglet, si le RAD doit générer pour cette
qui peuvent être propre à son contenu.
rubrique :
Les informations partagées permettent de
Paramétrage de centraliser ce type d'information et sont
• Une colonne dans les tables,
• Un champ dans les fiches,
l'analyse donc utilisées par le RAD.
• Un champ dans les états.
Le RAD de WinDev, WebDev et WinDev Mobile Pour définir les informations partagées cor-
se base sur une analyse (la structure de la Nous vous conseillons de passer un peu
respondant à une rubrique, il suffit de :
base de données) pour générer une pre- de temps à renseigner correctement ces
• Ouvrir l'analyse.
mière version de projet utilisable. informations.. Le temps investi à bien
• Sélectionner un fichier de l'analyse.
paramétrer l’analyse sera largement renta-
Il est donc important de prendre le temps • Ouvrir la description du fichier.
bilisé dès la première génération RAD.
nécessaire à la description de cette analyse
pour obtenir une génération adaptée. Lors d'une sélection d'une rubrique, le
développeur a accès, en bas de la fenêtre,
Rappel : La base de données peut utiliser aux informations partagées.
n'importe quelle base de données : Oracle,
Remarque
Il y a une coche "Sans gestion des droits"
dans la fenêtre de paramétrage de LDAP.
En effet, l’annuaire LDAP gère l'authen-
tification des utilisateurs, pas les droits
des utilisateurs.
Si vous ne voulez gérer que l’authentifica-
tion et pas des droits spécifiques par utili-
sateur, il suffit de cocher cette case !
Gestion de droits
Lors de l'utilisation d'un annuaire LDAP,
l’authentification s’appuiera sur LDAP et
la gestion des droits s’appuiera sur une
base de données Hyper File.
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
Impression de l'état
au format PDF
Pour imprimer un état dans un fichier PDF,
il suffit d'utiliser la fonction WLangage
iAperçu, en précisant comme paramètre
iPDF ou iPDFGénérique.
iAperçu(iPDFGénérique)
Notre conseil
Il est conseillé d'utiliser le paramètre
iPDFGénérique : les paramètres de géné-
ration seront alors des paramètres stan-
dards, et non des paramètres spécifiques
à l'imprimante installée.
Ce mode de génération garantit un résultat
identique quel que soit le poste utilisa-
teur.
Paramétrage du PDF
généré
Lors de l'utilisation d'un état, il peut Remplissage de
être utile de préremplir automati- Il est bien entendu possible de générer un
quement certaines informations :
l'état fichier PDF à partir de cet état, même s'il
coordonnées du client dans un Pour préremplir (ou remplir) un état, et que contient déjà un PDF.
les informations préremplies puissent être Le fichier PDF alors généré peut être para-
bon de commande, informations
modifiées par l'utilisateur final, il suffit : métré, à l'aide de la fonction WLangage
relatives à un administré dans un
• De positionner des champs de saisie dans iParamètrePDF. Cette fonction doit être
formulaire administratif, ... appelée avant la fonction iImprimeEtat.
l'état, dans les espaces prévus pour afficher
WinDev permet de créer des for- les informations générées.
mulaires PDF personnalisés, avec • D'indiquer quelles données doivent être Voici un exemple de paramétrage per-
champs de saisie. affichées dans les champs. mettant de :
• D'utiliser des champs "rubriques" classiques • Protéger le fichier PDF généré par un
Note : WinDev permet également mot de passe.
pour les informations "fixes" de l'état.
d'afficher des fichiers PDF dans • Générer un fichier PDF en qualité opti-
une application grâce au champ Rappel : pour remplir un champ de saisie male.
image. avec une valeur par défaut, il est possible iParamètrePDF("mdp", "", iQua-
d'utiliser le mot-clé MoiMême du WLangage litéMaximale)
dans le code d'initialisation du champ de
Définition de l'état saisie.
L'utilisation d'un fichier PDF comme fond
d'état est très simple. Il suffit de créer un
nouvel état de type "état sur formulaire",
en spécifiant comme image de fond le
fichier PDF préalablement créé.
Si le fichier PDF contient plusieurs pages,
le PDF créé contiendra alors une page par
page du fichier PDF.
Etats élaborés
Réaliser des états mixant des pages à
imprimer en mode paysage et d'autres en
mode portrait.
Ce code doit être saisi dans le code du bloc
"Bas de page", dans le paragraphe "après
impression" et va provoquer l'impression des
états correspondant aux pages suivantes
de l'état. Par exemple :
iImprimeEtat(ETAT_Schema)
iImprimeEtat(ETAT_CGV)
Lors d'une impression ou d'un aperçu avant
impression, WinDev utilisera les informa-
tions d'orientation des différents états pour
les afficher ou les imprimer.
Le logiciel “Etats et Requêtes” per- depuis l’application, il est nécessaire que Paramétrage des états et des
met à chaque utilisateur de modifier le développeur le paramètre dans le pro- requêtes
lui-même l’état et de l’adapter à jet. Pour des raisons évidentes de sécurité, par
ses propres besoins sans dispo- Paramétrage du projet défaut, un état n’est pas modifiable sous
ser de WinDev sur sa machine. le logiciel “Etats et Requêtes”.
Tout d’abord, il faut que le projet autorise
Le développeur n’a pas à prévoir Pour permettre à l’utilisateur de modifier
l’utilisation du logiciel “Etats et Requêtes”.
cet état, il faut explicitement l’indiquer
d’états différents pour tous les cas Cette autorisation est tout simplement
dans la fenêtre de description de l’état
de figure des besoins utilisateurs. définie dans la fenêtre de description du
(onglet “Détail”).
projet, dans l’onglet “Charte”.
Il est alors possible de choisir si seule l’in-
Il suffit en effet que l’option “Autoriser
Fonctionnement le lancement de “Etats et Requêtes” soit
terface est modifiable ou si l’interface et
le code sont modifiables.
Pour modifier un état, il suffit à l’utili- cochée. Si vous ne souhaitez pas que vos
Pour les requêtes, c’est le même principe. Il
sateur de cliquer sur le bouton “Modifier utilisateurs aient accès à “Etats et requê-
faut indiquer explicitement que la requête
l’état” dans la fenêtre d’aperçu avant tes” sur ce projet, il suffit de décocher
est modifiable dans la fenêtre de descrip-
impression. cette option.
tion de la requête (Bouton Avancé, onglet
Le logiciel “Etats et Requêtes” se lance “Etats et Requêtes”).
Paramétrage de l’analyse
automatiquement et charge l’état à modi-
Par défaut, tous les fichiers et toutes leurs
fier. L’utilisateur se trouve alors dans le Automatisation
rubriques de l’analyse sont visibles sous le
logiciel “Etats et Requêtes” (livré en stan- Si le projet contient 200 états et 300
logiciel “Etats et Requêtes”. L’utilisateur
dard avec WinDev et dont la diffusion est requêtes, le développeur ne pas à effectuer
final peut donc utiliser ces données dans ses
libre avec les applications WinDev). cette opération pour chaque état et cha-
états et ses requêtes personnalisées.
L’utilisateur peut alors ajouter des champs que requête. Il suffit de lancer l’assistant
Si une application contient des données d’améliorations du projet qui se trouve
ou réaliser les modifications qu’il souhaite
sensibles, ou si des rubriques sont destinées dans le menu “Projet .. Performance et
comme l’aurait fait le développeur de l’ap-
à des fins uniquement de programmation Améliorations ..Assistant d’améliorations
plication depuis l’éditeur d’états WinDev.
(par exemple un flag de programmation), il de projet”.
Une fois la ou les modifications effectué(s),
peut être nécessaire de rendre ces fichiers
l’utilisateur peut tester ces modifications Dans cet assistant, il est possible de cocher
et/ou ces rubriques “invisibles” sous le
par un “Go” de l’état. les états et les requêtes à mettre à dis-
logiciel “Etats et Requêtes”.
Lorsque l’état est modifié, le clic sur le position de vos utilisateurs. Vous pouvez
Par exemple, dasns une application, pour également spécifier ici si l’état peut être
bouton “Imprimer” de notre application
rendre le fichier “A” invisible aux utilisa- modifié au niveau interface et/ou code.
exemple exécute désormais l’état modifié
teurs, il suffit de :
depuis “Etats et Requêtes”.
• Ouvrir l’analyse du projet, Exploitation depuis une
Dans “Etats et requêtes”, l’utilisateur peut
• Ouvrir la fenêtre de description du fichier application
également :
(accessible par le menu contextuel ou
• Créer des états de toutes pièces, La fonction du WLangage fRepEtatsEtRe-
depuis le menu “Structure de fichier ..
• Modifier une requête créée par le quêtes retourne le chemin du répertoire
Description),
développeur, où sont stockés les états et les requêtes
• Sélectionner l’onglet “Info” de cette
• Créer une requête de toutes pièces. créés ou modifiés par le logiciel Etats et
fenêtre de description,
Requêtes.
Remarque : il est possible d’exécuter “Etats • Décocher l’option “Visible par l’utilisateur
et requêtes” depuis une application WinDev final (logiciel Etats et Requêtes)”.
par le menu “?”.
Ainsi, le fichier “A” et toutes ses rubriques
sont maintenant invisibles sous “Etats et
Intégration dans une Requêtes”. Sur ce principe, il est possible
de rendre invisible une ou plusieurs rubri-
application ques d’un fichier, sans rendre le fichier lui
Pour que les états et requêtes soient même invisible.
accessibles en création et modification
Remarque
Les tâches planifiées sur un serveur Hyper
File permettent de programmer automa-
tiquement :
La sauvegarde de données,quelle Sauvegarde par • la sauvegarde des données,
que soit l'application, est un élé- • l'exécution d'une procédure stockée.
ment important à prévoir dans la
programmation
vie d'une application. Il suffit d'utiliser la fonction Wlangage Notre astuce
Mais si les données doivent être HSauvegarde directement depuis une Dans le cas d'une base de données de taille
accessibles en permanence (cas application. Pour effectuer une sauve- importante, la planification d'une sau-
d'un site web par exemple), la pro- garde, l'utilisateur doit posséder le droit vegarde régulière n'est pas une solution
de faire des sauvegardes. Ce droit est adéquate. Il est préférable de sauvegarder
blématique est toute autre.
modifiable par programmation (fonction entièrement la base moins régulièrement
Wlangage HModifieDroitServeur) ou depuis (tous les semestres, tous les ans,...), de
Principe le Centre de Contrôle Hyper File, dans journaler la base et de sauvegarder uni-
WinDev répond à cette problématique avec l'onglet "Droits". quement les journaux. En cas de perte
la sauvegarde à chaud. La sauvegarde à de données, il suffit alors de rejouer les
chaud permet aux applications d'accéder Sauvegarde depuis journaux sur la base sauvegardée.
à la base de données, en lecture et en
écriture, sans blocage, pendant que la
le Centre de Évidemment, les jounaux doivent être
purgés après chaque sauvegarde, pour
sauvegarde est effectuée. Contrôle Hyper File contenir les opérations effectuées depuis
La définition d'une sauvegarde à chaud Il suffit, dans le Centre de Contrôle Hyper cette sauvegarde uniquement.
peut se faire : File, de sélectionner le serveur Hyper Retrouvez plus de détail sur le fonctionne-
• Par programmation. File à sauvegarder, et de cliquer sur le ment et la mise en œuvre du mécanisme
• Par le Centre de Contrôle Hyper File. bouton "Faire une sauvegarde" de l'on- de journalisation dans le support de cours
• Par une tâche planifiée du serveur Hyper glet "Sauvegardes". L'assistant permet de du TDF Tech 2006.
File. sélectionner la ou les bases de données
à sauvegarder, et de choisir le répertoire
Bases de Données
Accéder à une Base de Données Tierce
depuis une application WinDev.
Pour accéder à une base tierce, il d'utilisateur, le mot de passe éventuel, la perso-dossier : la connexion de tous les
est possible soit de : machine serveur où la base est localisée fichiers contenus dans le perso-dossier
• Accéder à cette base via ODBC et le nom de la base de données. est modifiée.
• Par l'analyse : il suffit de cliquer sur Si plusieurs types de bases de données sont
ou OLE DB,
le menu "Analyse .. Connexions", et de utilisés, cette solution évite d'utiliser la
• Utiliser un accès natif.
suivre l'assistant de paramétrage de la fonction HChangeConnexion sur chaque
L'utilisation d'un accès natif per- connexion. fichier.
met d'utiliser les bases de données
Tierce comme s'il s'agissait d'une Notre astuce
base de données Hyper File, tout Il est possible de stocker ces paramètres
en permettant l'utilisation de fonc- dans un fichier de configuration .ini par
tionnalités spécifiques de ces bases exemple. De cette façon, si les informations
de connexions évoluent (changement de
tierces.
machine serveur par exemple), il suffit
simplement de modifier les informations
Accès natif du fichier de configuration.
Évidemment, pour plus de sécurité, les
Un accès natif permet de disposer des ordres
mots de passe présents dans le fichier de
fonctions Wlangage Hxxx : HLitPremier,
configuration doivent être cryptés.
HLitSuivant, ... sur Oracle, SQL Server,
etc. L'assistant de définition de connexion génère
le code de description de la connexion, ainsi
Évidemment, il est également possible
que l'ouverture de cette connexion par la
d'utiliser des requêtes SQL définies soit
fonction WLangage HOuvreConnexion.
par l'éditeur de requêtes, soit en saisissant
directement le code SQL de la requête.
Notre astuce
L'accès natif permet également de disposer Pour une meilleure réutilisabilité, il est
d'un code source unique, quelle que soit conseillé de définir les connexions par
la base de données accédée. programmation.
L'utilisation de l'accès natif permet donc Attention : Cette méthode ne permet pas
de manipuler une base tierce de la même d'utiliser le mode automatique de la répli-
façon qu'une base Hyper File, avec les cation assistée.
mêmes ordres de programmation.
Il existe des accès natifs pour les bases: Modification d'une
Oracle, SQL Server, AS 400, Progress, DB2,
Informix, Sybase, SQL Server, etc. connexion
Pour associer une connexion aux fichiers
de l'analyse, il suffit d'utiliser la fonction
Définition d'une Wlangage HChangeConnexion.
connexion Il est possible de spécifier une connexion
Pour accéder à une base de données unique pour tous les fichiers, ou d'indiquer
tierce, il suffit de définir les paramètres pour chaque fichier une connexion donnée,
de connexion à cette base. par exemple si certains fichiers sont pré-
sents sur un serveur Oracle et d'autres sur
Une nouvelle connexion peut être définie
un serveur Hyper File.
soit :
• Par programmation, en utilisant la fonc-
Notre astuce
tion WLangage HDécritConnexion et en
Il est possible de créer des perso-dossiers
suivant l'assistant de paramétrage de la
dans l'analyse, et d'utiliser la fonction
connexion : il suffit alors de préciser le nom
HChangeConnexion directement sur un
Pour accéder à une base tierce mobile les paramètres de connexion à la accéder à distance à des données lorsque je
depuis une application WinDev base tierce, ne peux pas héberger de Services Web ?”
Mobile, il est possible soit de : • Associer chaque fichier de l'analyse à La réponse est bien sûr en utilisant le mode
cette connexion, AWP de WebDev.
• Utiliser le serveur RPC fournit en
• Lancer le serveur RPC de WinDev Mobile
standard avec WinDev Mobile,
sur une machine accessible à distance,
• Utiliser une page AWP créée avec • Indiquer au serveur RPC où est située la
Fonctionnement
WebDev, base de données à laquelle il doit accéder, Le principe est de créer une page sans inter-
• Programmer l'accès (avec des et quelles applications mobiles sont auto- face (sans champ) permettant de récupérer
sockets par exemple). risées à appeler le serveur. ou d'effectuer une opération sur la base de
• Ajouter, dans le code d'initialisation des données (à l'aide d'un accès OLEDB ou d'un
Rappel : Un terminal mobile peut applications mobiles l'appel à la fonction accès natif par exemple).
tout à fait accéder à une base de Wlangage, HConnecteAccèsDistant, en En effet, cette page se comporte comme
données Hyper File Client/Serveur précisant en paramètre l'adresse IP de la un Service Web, c’est-à-dire qu’elle attend
de façon native. machine où le serveur RPC est installé. des paramètres en entrée, et en retour elle
renvoie une information (une liste d'infor-
Les accès à la base de données tierce par mations extraites de la base de données
Accès par serveur les ordres Hxx, ou par une requête SQL, par exemple).
seront automatiquement reroutés vers le
RPC serveur RPC et agiront de façon transpa-
rente pour l'utilisateur. Réalisation
Un serveur RPC sert de relais entre une
Le code “important” de cette page va
application et une base de données.
se trouver dans son code d’ouverture (le
L'application mobile demande au serveur Notre astuce code d'initialisation du projet contenant le
RPC d'exécuter une commande sur la base Pour des raisons de performances, privilé- code de la connexion à la base de données
de données et de lui renvoyer le résultat. La giez l'utilisation des requêtes. souhaitée). On peut alors avoir un code de
commande peut être une requête SQL, ou la forme suivante :
un ordre Hxx (HLitPremier, HLitSuivant,
sParamètreNom est une chaîne
...). Une page AWP en sChaineRetour est une chaîne
Le paramétrage de l'application se déroule tant que Service Web // Récupération du paramètre
en 5 étapes : // passé à la page
Ce mode de fonctionnement répond en fait
• Définir dans l'analyse de l'application sParamètreNom = ...
à la problématique suivante : “Comment PageParamètre("NOM")
Une procédure stockée est un traite- • Renommez votre procédure, par exemple
nNbProduit est un entier
ment, une procédure exécutée sur “MaProcédureStockée”.
nNbProduit = ...
le poste serveur de la base de don- • Écrivez le code de votre procédure.
HExécuteProcédure(...
• Sauvegardez votre analyse et lancez la
nées (sur le serveur Hyper File). MaConnexion, ...
génération de votre analyse. “MaProcédureStockée”)
Voici un bref rappel sur l'utilisation
• Suivez ensuite l’assistant de modifica-
des procédures stockées (issu du
TDF Tech 2007).
tion automatique des fichiers de données.
Cet assistant vous permettra de mettre à
Remarques
jour votre collection de procédures stoc- Lors de la modification d’une procédure
kées sur le serveur. (Note : la fonction stockée, si le prototype de la procédure n’a
Avantages d’une WLangage HMiseAJourCollection() permet pas été modifié, il suffit simplement de faire
procédure stockée de forcer par programmation la mise à jour appel à la fonction HMiseAJourCollection.
des collections de procédures stockées de Il n’est pas nécessaire de régénérer l’ana-
• Pour les traitements complexes avec
votre analyse) lyse.
beaucoup d’accès fichiers : il n’y aura
Les procédures stockées peuvent être appe-
qu’un seul aller-retour entre le poste client
lées depuis des requêtes.
et le serveur. Les performances sont alors
Comment utiliser une
accrues.
• Risques liés au réseau (déconnexion, ...) procédure stockée ? Si vous devez passer en paramètre à une
procédure stockée un tableau, une struc-
limités : le traitement s’effectue du début Pour appeler une procédure stoc- ture ou un objet, utilisez les fonctions
à la fin sur le serveur. Un traitement ne kée, il suffit d’utiliser la fonction WLangage Sérialise et Désérialise pour
pourra donc pas être interrompu par une HExécuteProcédure. transformer l’objet, la structure ou le
déconnexion du réseau. Cette fonction WLangage attend en para- tableau en un type simple : le buffer.
• Les procédures stockées s’écrivent en mètres :
WLangage. • le nom de la connexion au serveur Hyper Pensez aussi à bien regénérer l’analyse
File, quand vous avez fini, pour remettre à jour
• le nom de la procédure stockée,
Comment créer une • les paramètres éventuels attendus par
la procédure stockée sur le serveur .
WDDebug
Pour que le développeur puisse déboguer
l'application à distance, il faut d'abord
que l'utilisateur autorise la connexion du
débogueur sur sa machine. Il suffit pour
cela d'utiliser l'outil WDDebug. Cet outil
et de triggers exploite cette base de données, sans que Une fois attaché à une connexion, le débo-
serveurs le développeur n’ait besoin de penser à
le programmer.
gage des procédures stockées et des triggers
serveur se présente comme un débogage
classique. Toutes les fonctionnalités du
Procédure stockée : Définition Débogage : Prérequis débogueur sont accessibles : évaluation,
Une procédure stockée est une procédure
Pour déboguer une procédure stockée ou un modification à la volée, points d'arrêt,
exécutée sur la machine serveur de base de
trigger serveur, il est nécessaire que : etc.
données : le serveur Hyper File. Ces traite-
• Les ports de débogage soient ouverts
ments présentent plusieurs avantages :
Création d'une
exigence
Pour créer une nouvelle exigence, il suf-
fit de cliquer sur le bouton "Ajouter une
nouvelle exigence" (bouton "+") accessible
dans la barre de boutons ou dans le menu
contextuel de la table des exigences. Deux
méthodes de création sont disponibles :
la création "simple" : elle permet de créer
une exigence, en définissant chaque infor-
mation de A à Z.
la création "à partir d'un modèle" : cette
méthode permet de se baser un modèle
d'exigence. Un modèle d'exigence permet
de définir, et de conserver, un paramétrage
donné pour une exigence (Nom, priorité,
coefficients,...).
Paramétrage de l'exigence
L'onglet "Général" définit les paramètres
principaux de l'exigence :
Les exigences définissent les fonc- La gestion des exigences est accessible • son nom,
tionnalités qui doivent être déve- par le menu "Gestion .. Gestion des exi- • sa priorité : de 1 (faible) à 10 (haute),
loppées ainsi que les demandes gences". • sa description ,
d'évolution, relatives à un ou plu- Il est possible soit de : • si la tâche nécessite, en plus du déve-
sieurs projets. • Créer une nouvelle liste d'exigences, loppement, une tâche de test, une tâche
WinDev permet de gérer, en per- • Importer un cahier des charges existant de documentation,
au format texte ou Excel. • etc.
manence, l'état d'avancement des
fonctionnalités des projets. L'onglet "Dépendances" définit la liste :
Pour chaque exigence, il est possible : • des tâches associées à chaque intervenant
de créer une tâche, ou de lier une tâche pour cette exigence,
Consulter les déjà définie dans le Centre de Suivi de • des règles métiers reliées à l'exigence,
Projets.
exigences • de créer un bug, ou de lier un bug déjà
• des incidents reliés à l'exigence.
La liste des exigences est accessible via défini dans le Centre de Suivi de la Qualité
le Centre de Suivi de Projets. Pour ouvrir et des Évolutions. Nouvelle Tâche
le Centre de Suivi de Projets, disponi- • de créer une règle métier, ou de lier une Pour créer une nouvelle tâche, il suffit de
ble en standard dans WinDev, il suffit de règle métier déjà définie dans le volet règle cliquer sur le bouton "Créer une nouvelle
choisir l'option "Outils .. Centre de Suivi métier de WinDev. tâche .. Création simple", et de saisir les
de Projets". Cet outil permet de gérer les informations relatives à la tâche :
Chaque tâche définie peut ensuite être
plannings des équipes, les tâches de chaque • le titre de la tâche,
affectée aux collaborateurs concernés :
développeur. • le projet qui lui est associé,
• Les tâches de développement aux
• le type de tâche : tâche de développe-
développeurs,
Autres technologies
Utiliser des delegates DotNet pour gérer des
événements DotNet depuis le WLangage.
WebDev permet de générer dif- Technologie AJAX Le Débogage d'un site PHP en Wlangage
s'effectue en cliquant sur "Go .. Déboguer
férents types de sites Internet ou
Intranet.
avec WebDev PHP le projet PHP en mode simulation".
Il est notamment possible de géné- WebDev 12 permet d'utiliser la technologie
rer des sites PHP avec ou sans uti- AJAX, d'un simple clic. Cette technologie est
désormais disponible pour les sites PHP.
Exemples
lisation d'une base de données
MySQL. Par exemple, pour définir une table en WebDev est livré en standard avec plu-
sieurs exemples de sites PHP. Nous vous
WebDev 12 apporte deux nouveau- AJAX, il suffit d'ouvrir la description de
la table, et de cocher "Mode AJAX". Une conseillons de les consulter pour plus de
tés majeures pour les développeurs
table PHP en mode AJAX aura alors le détail sur la réalisation d'un site PHP à
réalisant des sites PHP : l'aide de WebDev :
• Les champs et les traitements peu- même comportement qu'une table AJAX
en mode WebDev classique : gestion de la • WW_Images_PHP,
vent utiliser la technologie AJAX. • WW_Blogs_PHP,
loupe, redimmensionnement des colonnes,
• Le code WLangage correspondant • WW_SiteMarchand_PHP,
ascenseurs, etc.
au site PHP peut être débogué pas • etc.
à pas. Note : il est également possible de définir
une zone répétée en AJAX, de la même
façon. Les procédures, codes
de boutons, codes de liens,
... peuvent également passer
en "Mode AJAX". Un simple
clic sur le lien "AJAX" dans le
bandeau active (ou désactive)
le mode AJAX.
Autres technologies
Exploiter des données existantes :
Lotus Notes, Outlook, LDAP...
WinDev dispose en standard de • Récupération des vues de la base L'exemple "WD Outlook", fourni en standard
fonctions permettant d'exploiter un sListe = NotesListeVue(nIDBase) dans WinDev, utilise les fonctions d'accès
existant : Excel, Lotus Notes Domino, à Outlook.
Exchange, Outlook, LDAP... Outlook
Ces différents accès utilisent géné- LDAP
L'accès aux contacts, aux emails, aux ren-
ralement des familles de fonctions WinDev permet également de gérer en
dez-vous, etc.. de Outlook s'effectue, en
spécifiques dont voici quelques natif les annuaires LDAP, grâce aux fonc-
lecture et en écriture, par des fonctions
exemples. Wlangage : tions LDAPXXX du Wlangage. Les annuaires
• ContactXXX : ContactPremier, peuvent être manipulés en lecture et en
Lotus Notes : ContactSuivant, ContactAjoute,... écriture.
• EmailXXX : EmailLitPremier, Voici quelques exemples de fonctions :
L'accès aux contacts, aux emails, aux tâches, • LDAPConnecte permet d'ouvrir une
EmailLitSuivant, EmailEnvoieMessage,
aux rendez-vous et à la base documentaire connexion,
...
de Lotus Notes, s'effectue, en lecture, • LDAPValeur permet de récupérer la
• RendezVousXXX : RendezVous-Premier,
comme en écriture,grâce aux fonctions valeur d'un attribut.
RendezVousSuivant, RendezVousAjoute,
WLangage NotesXXX de WinDev.
...
Voici quelques exemples de fonctions : Exemples d'utilisation
• etc.
• NotesOuvreConnexion permet d'ouvrir • Connexion au serveur LDAP
la connexion,
• NotesOuvreBase permet de se connecter
Exemples d'utilisation LDAPSession.Hôte =...
• Ouverture d'une session Outlook "MonServeur"
à une base, LDAPSession.Utilisateur = ...
• NotesDocument permet de manipuler nIdSession =... "Utilisateur"
les documents. EmailOuvreSessionOutlook("") LDAPSession.MotDePasse = ...
• Lecture du premier contact de la base "MotDePasse"
Exemples d'utilisation LDAPConnecte("MaSession")
ContactPremier(nIdSession)
• Ouverture d'une connexion • Récupération du nom d'un utilisateur
• Affichage des informations de ce
nIDConnexion =... sNom = LDAPValeur("MaSession",s
NotesOuvreConnexion(... contact
UnUtilisateur,"name")
"motdepasse","Serveur",... Info(mContact.Nom + [" "] +...
"\certificat.id") mContact.Prénom,... • Déconnexion du serveur
mContact.Email) LDAPDéconnecte("MaSession")
• Ouverture d'une base documentaire
nIDBase = ... • Fermeture de la session L'exemple "WD LDAP Exploreur", fourni avec
NotesOuvreBase(nIDConnexion,... la LST 66, permet de parcourir un annuaire
EmailFermeSession(nIdSession)
fRepExe() + "\MaBase.nsf") LDAP à l'aide des fonctions LDAP.
Le Saviez-Vous ? Le volet "Exemples Unitaires" contient des exemples d'utilisation des différentes
familles de fonctions du WLangage : Il suffit de faire un Drag&Drop dans l'éditeur pour y accéder.
WebDev gère les pages dynamiques un paramètre dans l'URL). également que les informations dynami-
avec ou sans gestion automatique Note : les pages AWP sont situées dans le ques n'ont pas été conservées : requête,
du contexte : répertoire "_WEB" du projet c’est-à-dire filtre, vue, etc.
• Avec gestion automatique est le qu'elles sont accessibles depuis Internet,
mode par défaut. ce qui n'est pas le cas avec un site en mode
session "automatique".
Exemples livrés avec
• Sans contexte automatique
appelé mode AWP. WebDev
Les deux modes de gestion de Avantages du mode Pour bien comprendre le fonctionnement et
les spécificités de programmation du mode
contextes (standard et AWP) peu-
AWP AWP, nous vous conseillons de consulter les
vent êtres utilisés conjointement
exemples AWP livrés avec WebDev :
dans un même site WebDev. Le mode AWP apporte plusieurs avantages
importants aux développements de site • WW_BlogsAWP,
L’intérêt majeur du mode AWP est la • WW_VitrineAWP,
possibilité d'un référencement plus WebDev :
• La possibilité de mettre à jour une page • Catalogue_Internet,
efficace des pages du site auprès • etc.
d'un site sans bloquer le site : il suffit de
des moteurs de recherche : chaque
mettre le fichier .awp directement sur le
page est adressable directement. serveur par FTP par exemple. La solution idéale n'existe pas et dépend de
• N’importe quelle page du site est accessi- la nature du site à réaliser. Il est important
ble en direct : les pages peuvent donc être de se rappeler qu'il est tout à fait possible
Création d'une page ajoutés dans des favoris par les Internautes d'avoir dans un même projet des pages en
AWP ou accessibles par les moteurs de recherche mode "classique" (pour les pages d'adminis-
(voir le sujet sur le référencement). tration donc plus sécurisées par exemple)
La création d’une page AWP est en tout et des pages en mode AWP (pour les pages
• Puisqu'il n'y a pas de contexte, il n'y a pas
point identique à la création d’une page utilisateurs par exemple).
de session, ... donc pas de time out. Ce qui
dynamique normale. La différence réside
rend le mode AWP particulièrement justifié
dans le mode de génération de la page et
pour les formulaires par exemple.
dans la programmation.
• L'absence de session permet également
Il suffit de cocher l’option “génération en d'économiser les ressources sur le serveur
mode AWP” dans les options de générations hébergeant le site. Le serveur n'est sollicité
HTML dans la fenêtre de description de que lors de la demande d'affichage de la
la page. La page est alors utilisable en page. Une fois la page affichée, le serveur
mode AWP. ne bloque pas de ressources à maintenir
Lors d'un test d'une page AWP, l'adresse de des informations pour les demandes futures
test dans le navigateur est "différente". de l'internaute.
En effet, une page AWP peut être accé-
dée directement et est disponible dans le
répertoire "_WEB" du site. L'url d'une page Limites du mode
AWP est alors de la forme suivante : AWP
http://nomserveur/PROJET_WEB/FR/ La principale limitation du mode AWP est
mapage.awp qu'il nécessite une programmation assez
au lieu d'avoir une URL de connexion à un spécifique.
site WebDev classique de la forme : Cette programmation spécifique est prin-
h t t p : / / n o m s e r v e u r / W D 1 2 0 AW P / cipalement liée au fait qu'il n'y a pas de
WD120AWP.EXE/CONNECT/PROJET contexte de base de données (il est possible
d'avoir un contexte sur les variables). C'est-
Outre le fait que cette seconde URL est plus Retrouvez plus d'informations sur
à-dire que lors de l'affichage d'une page, les
longue, elle offre l'inconvénient de ne pas ce sujet en formation "WebDev
enregistrements ne sont plus positionnés
pouvoir accéder simplement à une page Avancé"
comme dans la page précédente, mais
donnée (il faut gérer par programmation
Le référencement d’un site, c'est l’in- de survoler le lien avec la souris. La barre de En version 12, le contenu de ce champ "Plan
dexation de ce site dans les bases message du navigateur va alors indiquer le du site" est automatiquement généré, ce qui
de données des moteurs de recher- lien tel qu'il est compris par le navigateur. permet de disposer d'un champ à jour sans
Si le lien est de la forme http://, alors le avoir à le maintenir "manuellement".
che comme Google ou Yahoo.
lien pourra être suivi par la plupart des
Mieux votre site est référencé, plus moteurs de recherche. En revanche, s'il Indépendamment de l’impact sur le réfé-
il a de chances d'être parmi les s'agit d'un lien JavaScript, ce lien aura peu rencement, un plan du site est toujours
résultats de la recherche. de chance d'être suivi par un moteur de utile pour l’internaute.
recherche en phase d'indexation.
Voici quelques conseils permettant
d'optimiser le référencement d'un Cinquième conseil
site WebDev AWP (mode conseillé Deuxième conseil Pour vérifier qu’un site est optimisé pour le
pour un site Internet ayant des
Pour aider le moteur de recherche dans référencement, WebDev dispose d'un outil
pages publiques à indexer par les
son analyse du contenu de page, il est intégré accessible depuis le menu "Projet..
moteurs de recherche).
possible de fournir une liste de mots-clés Performances et améliorations..Optimiser
correspondant à la page. le référencement".
Premier conseil Cette liste de mots-clés peut être définie
directement dans la fenêtre de description
Lors de l'utilisation de cet outil, WebDev 12
analyse toutes les pages du site et signale
Lors du référencement d'un site, le moteur de la page (onglet "Détail). les optimisations éventuelles à apporter
de recherche va suivre les liens des pages
pour un meilleur référencement.
de votre site pour en analyser le contenu. Notre Astuce
Il est donc fondamental que le moteur de Les trois premiers mots-clés saisis sont très Les résultats sont classés par ordre d'impor-
recherche puisse accéder aux différentes importants, ce sont eux qui vont avoir le tance. Par exemple, WebDev 12 signale :
pages publiques du site Interne. plus de poids pour cette page. Il est donc • si le nombre de mots-clés dans une page
important de bien les choisir est insuffisant
Pour cela, il est important d'éviter d’écrire
• si une page n’a pas de titre.
du code dans l’événement "clic serveur"
• si la description de certaines pages est
pour les liens qui affichent des pages que
vous voulez référencer. Troisième conseil vide.
• si certaines images n'ont pas de texte
En effet, en utilisant du code dans le trai- Pour mieux indexer les sites, Google recher- alternatif.
tement "clic serveur", le lien généré dans la che et analyse un fichier associé au site,
page sera un lien JavaScript (car condition- un fichier "SiteMaps". Ce fichier "SiteMaps" Rappel : le texte alternatif est le texte
nel), donc le moteur de recherche ne pourra sert principalement à renseigner Google qui va s'afficher à la place d'une image si
pas interpréter ce lien donc ne pourra pas sur la fréquence de mise à jour de chaque celle-ci ne peut pas s'afficher.
accéder à la page correspondante. page et l'importance de chaque page dans
Pour éviter d’écrire du code dans l’événe- votre site.
ment "clic serveur" des liens, voici deux
possibilités : Le paramétrage de ce fichier "SiteMaps"
• Si la page ne nécessite pas de paramè- s'effectue dans la fenêtre de description de
tre à passer, il suffit de définir la page à la page, dans l'onglet "Détail" en renseignant
afficher directement dans la description les champs "Mise à jour" et "Priorité Interne"
du lien, dans l’action. de la zone "Référencement".
• Si la page nécessite des paramètres, utili-
ser la propriété URL par programmation.
Quatrième conseil
Notre astuce L'intégration d'un champ "Plan du site"
permet un accès à l'ensemble des pages
Comment savoir qu'un lien pourra être
publiques du site, ce qui peut donc faci-
"suivi" par un moteur de recherche ? La
liter le travail d'indexation des moteurs
solution la plus simple est d'ouvrir la page
de recherche.
dans un navigateur (en exécution donc) et
WebDev propose deux modes de • Une seconde partie : le corps de la • La sécurité est augmentée puisque les
développement pour les sites : page qui contient en fait l'élément en variables mémorisées ne transitent pas sur
• Un mode "classique" avec une lui-même. Internet, elles restent sur le serveur.
• Tous les types de données peuvent être
gestion des contextes complète- Lorsque l'internaute demande une autre
sauvegardés : les structures, les clas-
ment automatique. C'est le mode page, les cookies sont automatiquement
renvoyés au serveur, par le navigateur. ses...
le plus proche du fonctionnement • La durée de vie de ce type de contexte
de WinDev. est paramétrable.
• Un second mode, le mode AWP,
Avantages
Le principal avantage de cette méthode,
sans gestion automatique de
c'est que le contexte n'a pas de durée de Mise en œuvre
contexte. Cependant, il est pos-
vie fixe. Il est créé quand l'utilisateur ouvre
sible de gérer des contextes par La mise en œuvre d'un contexte AWP s'effec-
son navigateur, et il est détruit quand le
programmation. Ce mode est plus tue par programmation dans WebDev 12.
navigateur est fermé. Il n'y a pas de notion
particulièrement destiné aux sites de time-out. Pour tester cette mise en œuvre, il est
Internet nécessitant des URLs direc- possible d'utiliser n'importe quel exem-
tement accessibles pour des ques- Inconvénients ple WebDev, en mode AWP, livré avec le
tions de référencement. Les inconvénients de cette méthode sont produit comme par exemple le projet
les inconvénients issus de l'utilisation des "WW_VitrineAWP".
Note : en version 12, il est possible de cookies :
déboguer un site AWP de la même façon • Le navigateur de l'internaute doit accep- Configuration du contexte
qu'un site WebDev "classique". ter les cookies. Pour définir un contexte, il faut indiquer la
• La taille des cookies est limitée à 4 Ko liste des variables à gérer dans ce contexte,
ce type de définition s'effectue donc le
Les contextes AWP • La sécurité des informations mémorisées
plus souvent dans le code d'initialisation
dans les cookies n'est pas garantie.
Dans le mode AWP, il y a deux modes dif- • Seuls les types simples sont gérés dans les du projet.
férents de gestion des contextes : cookies : les chaînes, les entiers, ... Pour définir un contexte AWP, il suf-
• Une gestion des contextes avec des fit d'utiliser la fonction WLangage
cookies "serveur". Retrouvez plus de détail sur l'utlisation de ConfigureContexteAWP. Cette fonc-
• Une gestion des contextes sur disque ce mode de contexte dans la LST 70. tion permet de choisir le mode de ges-
(nouveauté de la version 12). tion des contextes utilisé. La fonction
Un contexte AWP est un contexte de varia- Contextes sur disque ConfigureContexteAWP nécessite en
bles, ce n’est pas un contexte de bases paramètre :
Lorsque l'internaute demande une page, le • ctxCookie pour un contexte géré avec
de données.
serveur attribue un identifiant pour la ses- cookies serveurs.
sion, et l'identifiant du contexte est ajouté
Contextes avec dans l’en-tête de la page. Cet identifiant
• ctxDisque pour un contexte sauvé sur
le disque dur.
cookies correspond à un fichier sur le disque dur
du serveur. Pour un contexte sauvé sur disque, il est
La gestion des contextes avec cookies fonc-
tionne avec des cookies serveurs. Lorsque l'internaute demande une autre possible de spécifier la méthode de transit
Lorsque l'internaute demande une page au page, l'identifiant de la session est alors de l’identifiant du contexte :
serveur, le serveur ajoute des cookies dans transmis au serveur. Le serveur WebDev • soit cela transite uniquement dans l'url
l'en-tête de cette page. retrouve alors la session sur le disque à • soit uniquement dans les cookies
partir de l'identifiant, et restaure toutes • soit c’est WebDev gère, c’est le mode
Rappel : Une page HTML est constituée de les variables sauvegardées. automatique. Dans ce cas, si les cookies
deux parties : sont autorisés, ça passe par les cookies
• Les entêtes, qui contiennent des infor- Avantages sinon ça passe par l'url.
mations sur l'élément qui est renvoyé par
• L’internaute peut ne pas avoir accepté
le serveur. Par exemple le type d'élément : Ce mode automatique est conseillé pour
les cookies, ce mode pourra quand même
une page HTML, un fichier PDF, un fichier deux raisons :
fonctionner
binaire, ... • C’est le mode le plus simple à mettre
• La taille du contexte est illimitée
en œuvre.
• Ce mode fonctionne même si l’internaute
a interdit les cookies.
Déclaration et activation du
contexte
Pour sauvegarder et restaurer des
variables, il suffit d'utiliser la fonction
DéclareContexteAWP dans le code d'initia-
lisation des pages ou du projet, en indiquant
en paramètre la ou les variables.
Le moteur WebDev se chargera alors auto-
matiquement de la mémorisation et de la
restauration des variables ainsi ajoutées
dans le contexte.
Rappel : En mode AWP, le code d’initialisation
du projet est exécuté à chaque fois qu'un
code serveur est exécuté.
Notre astuce Mode AWP avec contextes sur disque (nouveauté de WebDev 12)
Vous pouvez supprimer une varia-
ble du contexte avec la fonction
AnnuleContexteAWP avec en paramètre
le nom de la variable.
Attention : Le lexique ci-dessous n’est qu’un extrait des possibilités du langage de WinDev, WebDev et WinDev Mobile. La lecture
des manuels fournis reste incontournable. Ne sont présentées ici que les commandes nécessaires à la bonne compréhension de cette
formation.
Autres commandes
Commande / Syntaxe But
Les commandes sont indiquées avec la syntaxe utilisée dans les exemples réalisés.
Certaines fonctions acceptent d’autres paramètres ; se référer à l’aide en ligne pour plus de
d’informations.
La liste ci-dessous présente les touches de fonction et les combinaisons de touches permettant d’accéder directement à une fonction-
nalité de WinDev. Cette liste n’est pas exhaustive.
Important : Sous WinDev, dans l’éditeur de fenêtres, comme dans l’éditeur de code, il est possible d’accéder simplement aux différentes
actions disponibles grâce au menu contextuel (Il suffit de faire un clic droit à la position de la souris).
F1 Aide en ligne.
F5 Visualiser l’ordre de saisie (ordre de tabulation).
F6 Visualiser le nom des champs.
CTRL Permet de sélectionner plusieurs champs à la souris.
CTRL+C, CTRL+V, CTRL+X Copier, Coller, Couper un champ, avec ses propriétés et son
code associé.
CTRL+R Affiche ou rend invisible les règles d’alignement.
SHIFT+F9 Tester l’IHM d’une fenêtre sans exécuter les traitements.
F1 Aide en ligne.
F2 Accéder au code d’une procédure en étant positionné sur le nom
de la procédure auparavant (CTRL + F2 pour revenir).