Vous êtes sur la page 1sur 4

outils \\ atelier

WinDev : latelierde dveloppement tout-en-un!


Dveloppez 10 x plus vite avec WinDev, cest le fameux slogan de PC Soft. Comparativement dautres langages, on nest pas loin de la vrit WinDev est facile dapprentissage, intuitif grce un langage qui lui est propre (WLangage) et en franais, ce qui facilite la recherche des fonctions, une fois celles de base connues.
inDev limite galement considrablement le nombre de lignes de code. La cration de maquettes se fait en quelques glissements de composants, ce qui permet de fournir un visuel ergonomique et la cinmatique dune application en un temps restreint. Exemple : la ralisation dun excutable bilingue permettant la prsentation de la cinmatique de 7 crans comportant 30 champs de saisie, 20 tables, 15 boutons, 5 listes, 2 zones rptes en 2 heures. [Fig.1] Le revers de la mdaille ncessite une certaine rigueur dans le dveloppement car il est possible de dclarer des variables tous niveaux (global au projet, global un composant, local un vnement), de crer des procdures globales ou locales, de faire une partie du code en anglais et une autre en franais, dimbriquer des " GOTO MonParagraphe " lintrieur dun code procdural. Il faut donc tre organis sinon le code dune application peut rapidement devenir illisible.

Peut-on facilement passer dun langage comme JAVA ou PHP WinDev ?


Passer dun langage comme PHP ou JAVA WinDev est surprenant, linverse est tout aussi vrai. WinDev est dune grande souplesse et un dveloppeur habitu JEE ragira au fait quon puisse faire un peu tout et nimporte quoi nimporte o dans WinDev. Un dveloppeur WinDev passant JEE pensera de faon quasi certaine une chose : avec WinDev jaurai dj termin depuis longtemps. Les outils PC Soft permettent la gnration dautres langages : WebDev gnre du code PHP compatible avec PHP4 et PHP5, il est galement possible dy intgrer des fichiers Flex. Il est galement possible de faire la saisie du code directement en PHP dans lditeur WebDev : en un clic sur le bandeau de code dinitialisation de la page on passe la partie serveur de " WL " " PHP ". De la mme faon pour le Javascript, il suffit de faire passer " WL " " JS " sur la partie de code ddie au chargement de la page du ct navigateur. WebDev peut aussi sinterfacer avec diffrents services proposs sur le Web par des sites en effectuant un mashup au niveau du serveur ou directement en code navigateur. Exemple dun extrait de code dune page PHP gnre par WebDev partir dun projet " Dynamique PHP " : la page PHP ainsi que la feuille de style sont gnres. Attention, code gnr avec la V12 (extrait). <?php //#12.00Tj Mon_Projet //----------------------------------------------------------// Include standard (dfinition des types, fonctions utilitaires) //----------------------------------------------------------$CheminRepRes='./res/'; require_once($CheminRepRes.'WD12.0/WD120Page.php'); require_once($CheminRepRes.'WD12.0/WD120Ajax.php');

Comment se mettre WinDev


WinDev est assez simple dapprentissage ; une formation de 5 jours un dveloppeur ayant dj une premire exprience peut tre suffisante pour avoir en main lensemble des lments de base permettant de crer une application. Lidal est de se faire accompagner par un consultant expriment sur un sujet concret de lentreprise ou un sujet permettant dapprhender un large spectre de composants et fonctionnalits WinDev. Certaines tapes principales doivent avoir t abordes : comment crer les IHM, laccs aux donnes via lditeur danalyse WinDev ou non, les fonctions permettant la manipulation des composants et des donnes, comment crer un excutable et diter une installation avec WDInst et comment crer un tat avec WDEtat. Lauto-apprentissage est galement possible mais ncessite videmment beaucoup plus de rigueur et de temps car, mme si laide en ligne est riche, il est toujours plus facile davoir un professionnel en face de soi pour rpondre aux questions.

Fig.2 Fig.1

28

PROgrammez ! \\ Avril 2009

outils \\ atelier
require_once($CheminRepRes.'WD12.0/WD120HF.php'); // Equivalent de [%URL()%] $gszURL = 'PAGE_Page1.php'; session_start(); // protection contre register_globals = on unset($PAGE_PAGE1); if (SID != '') $gszURL .= '?'.SID; ChangeAlphabet(0, false); $gtabCheminPage = array(); la cration de fichier PDF et lenvoi vers limprimante par dfaut ou lajout de somme, moyenne et comptage dans une colonne ou le positionnement dune minuterie sur un bouton (le dveloppeur peut bien entendu dsactiver ces fonctions). [Fig.3] La notion de composant permet de crer facilement son propre framework de dveloppement. Les principaux concepts disponibles sont : notion dhritage, hritage multiple dIHM, modle de champs, composant et composant interne, collection de procdures, fentre et page interne, Web service, brique de code.

Quelques fonctionnalits de WinDev


//----------------------------------------------------------// Dclaration de la page et de ses champs //----------------------------------------------------------// le 'if (IsSet())' gre le cas ou session.bug_compat_42 est VRAI if (!IsSet($PAGE_PAGE1)) {$PAGE_PAGE1= new CPage(); $PAGE_PAGE1->Nom = 'PAGE_PAGE1'; $MaPage = &$PAGE_PAGE1; Le Wlangage Le WLangage est un langage propritaire ne pouvant tre manipul quavec les outils PC Soft. Il est donc utilis dans WinDev, WebDev et WinDev mobile. Il est excut par une machine virtuelle ou converti en code natif par un compilateur " just in time ". Il peut sappuyer sur le framework Java ou PHP pour WebDev pour une partie de leurs fonctionnalits. Cest un langage procdural qui permet la programmation oriente objet ou squentielle. La programmation peut tre faite en anglais ou en franais et Exemple : sHeure est une chane sHeure = HeureVersChane(Maintenant()) Info("Il est : " + sHeure) sHeure is a string sHeure = TimeToString(Now()) Info("Il est : " + sHeure) Lditeur de code et les composants Lditeur de code est dcoup en parties permettant daffecter les ordres de programmation diffrents niveaux dun composant. Exemple dans une fentre : les dclarations globales qui contiennent en gnral les variables types, le code peut tre dvelopp linitialisation de cette fentre, la fermeture, la prise et la perte de focus, la modification de la taille et chaque modification. Le code peut tre mis galement sur dautres traitements comme par exemple les vnements souris, les touches enfonces ou relches. A noter que les variables peuvent tre dclares localement tous ces types de traitements. WinDev comporte une large palette de composants (appels galement champs) parmi lesquels : champ de saisie, bouton graphique ou non, liste, combo, table, champ calendrier sur un champ de type date, zone rpte, champ multimdia permettant de jouer un AVI

Comment fonctionne WinDev ?


WinDev comporte un ensemble doutils intgrs qui permettent daborder lensemble du cycle de vie dun projet : un diteur de modlisation UML et Merise, un diteur danalyses qui permet la gestion des connexions et des fichiers de diverses bases de donnes, et bien dautres encore comme lditeur dinterface graphique, de dossier technique, de fentres, de chartres graphiques, de requtes, de code, de travail collaboratif, de composants, dtats, daide en ligne, dinstallation, de maintenance, de tests et de RAD De plus, il possde un centre de contrle de suivi de projets dont le but est de grer le planning de ralisation de sa cration la livraison finale. Il comprend notamment : - centre de contrle topologique - centre de contrle de planning - centre de contrle qualit pour grer les retours clients (bogues et suggestions que lutilisateur peut communiquer via chaque applicatif - centre de contrle de donnes - archivage de projet Il est ainsi possible de connatre lensemble des tches raliser, les dveloppeurs concerns, les dures, ltat davancement etc. Ce centre permet aux quipes dvoluer vers lindustrialisation des mthodes. Les applications bnficient automatiquement de fonctionnalits par dfaut pour lutilisateur comme le menu contextuel des tables permettant lexport vers Word, Excel, XML, OpenOffice,

Fig.3

Fig.4

Avril 2009 \\ PROgrammez !

29

outils \\ atelier
ou un Flash dans une fentre, interrupteur, slecteur, potentiomtre, jauge, arbre, champs html et XAML, champ ou liste image). Ces composants se glissent facilement sur les IHM avec une aide la saisie au niveau des fonctions de programmation et des aspects graphiques pointus permettant de dfinir une transparence sur le cadre extrieur dun onglet, des transitions visuelles entre le passage dun onglet un autre sans programmation, des effets de slection et de survol sur les slecteurs et interrupteurs ou les barres de mise en forme RTF sur les champs de saisie, activation et dsactivation du grisage des fentres inactives en modifiant le pourcentage de grisage et adaptation la luminosit de lcran. Exemple de programmation dun champ combo : gsCodeAnimateur est une chane gsCodeAnimateur = COMBO_ANIMATEURS[COMBO_ANIMATEURS] //gsCodeAnimateur contient la valeur de llment slectionn gsCodeAnimateur = COMBO_ANIMATEURS //gsCodeAnimateur contient lindice de llment slectionn (position dans la liste) i = 3 gsCodeAnimateur = COMBO_ANIMATEURS[i] //gsCodeAnimateur contient la valeur de llment positionn en 3me position dans liste ListeSelectPlus(COMBO_ANIMATEURS,ListeCherche(COMBO_ANIMATEURS, "TOUS")) //slectionne et vient positionner llment " TOUS " dans la liste ListeSelectPlus(COMBO_ANIMATEURS,6) //slectionne et vient positionner le 6me lment de la liste ListeSelect(COMBO_ANIMATEURS) //renvoie lindice de llment slectionn dans la liste SI PAS HExcuteRequte(REQ_SEL_CONTRAT) ALORS Erreur("Erreur d'initialisation de la requte"+RC+ErreurInfo()) HFermeConnexion(ConnexionOracle) FinProgramme() FIN HLitPremier(REQ_SEL_CONTRAT) TANTQUE PAS HEnDehors(REQ_SEL_CONTRAT) ListeSelectPlus(COMBO_TYPE,ListeCherche(COMBO_TYPE,REQ_SEL_ CONTRAT.TYPE,Faux)) SAI_DATE_DEBUT = REQ_SEL_CONTRAT.DATE_DEBUT TableAjouteLigne(TABLE_CONTRAT, REQ_SEL_CONTRAT.NUMERO, REQ_ SEL_CONTRAT.QTE) HLitSuivant(REQ_SEL_CONTRAT) FIN HAnnuleDclaration(REQ_SEL_CONTRAT) Deux versions de l'diteur de requtes sont disponibles : lditeur intgr fourni avec WinDev , WebDev ou WinDev Mobile, utilisable lors du dveloppement dune application et lditeur utilisateur, uniquement pour WinDev et version indpendante de WinDev utilisable pour un utilisateur final Laccs aux donnes WinDev possde son propre SGBD : HyperFileSQL. Il supporte de nombreux autres systmes de gestion de bases de donnes, dont laccs se fait soit par lintermdiaire des protocoles ODBC ou OLE DB ou soit par accs natif comme pour les bases classiques Oracle, SQL Serveur, MySQL, PostgreSQL, Informix, Sybase [Fig.5] Lditeur de requtes L'diteur de requtes permet de crer automatiquement des requtes sur les fichiers de donnes prsents dans lditeur danalyse. La cration d'une requte est trs simple et intuitive ; il suffit de slectionner le type de requte (select, insert, update, delete, union ou mode SQL) et de choisir le fichier et les colonnes. La requte est automatiquement gnre en code SQL et peut tre teste immdiatement. Il est possible de passer des paramtres (mme dans les rubriques calcules), de faire des tris, des comptes des sommes des moyennes et de crer des liaisons et des jointures. Exemple : REQ_SEL_CONTRAT.Param1 = Val(SAI_NUMERO)

Fig.5

Fig.6

30

PROgrammez ! \\ Avril 2009

outils \\ atelier
Des ordres spcifiques sont dfinis en fonction du type daccs : SQLExec("SELECT QUANTITE FROM PRDUIT","REQ") ReqProduit est une Source de Donnes HExcuteRequteSQL(ReqProduit,"SELECT QUANTITE FROM PRDUIT") HExcuteRequte(REQ_SEL_QUANTITE_PRODUIT) Un spectre applicatif vari Les produits PC Soft sont prsents dans de nombreux domaines applicatifs : - la VoIP pour centres dappels sur PC-BX qui gre tous types de mdias ; - linformatisation de trafic portuaire (tracking de navires en liaison avec la capitainerie et les agents maritimes et confrences virtuelles et portail portuaire via WebDev ; - sur les chanes de tlvision avec le pilotage des sources vido et audio (WinDev traduit les voix au format PCM et les transforme en WAV), et la gestion du dcrochage publicitaire (gr par le multithreading) ; - lanalyse des bancs dessais des moteurs dengins agricoles et le suivi des comptences des oprateurs ; - progiciel de traduction des changes de donnes informatises (EDI) bas sur XML et sur des conversions en feuilles XSLT pour les feuilles de style Google WinDev et WebDev permettent les interactions natives avec les applications Google. Exemple de code qui rcupre une liste de produits et laffiche : MaConnexion est une gglConnexion MaConnexion.Email = " Nom@gmail.com " MaConnexion.MotDePasse = " motdepasse " GglConnecte(MaConnexion) MesProduits est un tableau de gglProduits MesProduits = GglListeProduits(MaConnexion) TableAffiche(TB_PRODUITS) [Fig.6] Google Maps Avec WinDev il est possible de rcuprer une carte et de lafficher, de demander le dessin dun itinraire sur la carte, la longitude et la latitude, le taux de zoom etc. Exemple de types et de proprits : GglMarquer, GglChemin sont des exemples de types possdant de nombreuses proprits : ..Latitude, ..Longitude, ..Taille, ..Couleur, ..Opacit etc. Google Agenda : En WLangage, rcuprer la liste de ses agendas, des rendez-vous de chacun dentre eux et de les modifier sont des traitements ralisables nativement. Exemple de types et de proprits : GglAgenda, GglEvenement sont des exemples de types possdant de nombreuses proprits : ..Titre, ..DatePublication, ..Contenu, ..Auteur etc. Google Contacts : WinDev permet par exemple de raliser une application qui synchronise les contacts dun tlphone portable avec ceux de Google. GglContact est un exemple de type possdant les proprites ..Nom, ..Email, .. Tlphone etc. La gestion des documents Google Docs et Google Spreadsheets avec les fonctions GglRcupreDocument et GglEnvoiDocument permet de manipuler les documents par eux-mmes (upload de documents, recherche parmi les documents, rcupration de la liste des documents et leurs dtails grce aux proprits ..Auteur ou ..Titre par exemple). Via un ActiveX dans son application ou un Plug In dans le site, GoogleEarth nest pas oubli ; nativement en WLangage il est possible de positionner des marqueurs, du texte, de dplacer la camra, zoomer la souris ou dfinir un chemin.

Conclusion
Connaissant WinDev depuis la version 5, jai eu loccasion de le pratiquer tous niveaux de poste (de dveloppeur responsable informatique), jappor te maintenant mon exper tise en tant que consultant. Pour rsumer en quelques mots ce retour dexprience, je dirai que WinDev a souvent t critiqu cause de son manque douverture li au dongle obligatoire, limitant de ce fait sa reconnaissance au niveau tudiant par exemple, bien quil existe des versions ducation WinDev et WebDev tarif adapt. En tant que produit initialement francophone, il a pu peut tre limit dans son expansion linternational (PCSoft est prsent dans plusieurs dizaines de pays, ndlr) et enfin sa facilit lui a parfois valu, tort, la critique dtre un outil " amateur ". WinDev se distingue en effet par sa facilit dutilisation et une productivit remarquable. Voici un exemple concret : un projet de 5 000 jours homme dvelopp initialement en WinDev a voulu tre rcrit dans un langage " nouvelle techno " que je ne cite volontairement pas. Le budget initial a t port 25 000 j/h et je pense que le seul rsultat positif de ce projet a t davoir permis des dizaines de prestataires den vivre pendant quelques annes ! La dernire version offre encore un meilleur confort au dveloppeur avec une meilleure adaptabilit aux grands crans et une refonte de linterface et permet en quelques clics de gnrer des IHM pour une multitude denvironnements (Windows 32 et 64 bits, Windows Mobile, Linux, Java, .Net etc.) et de bases de donnes. Au fil du temps, le succs de WinDev ne sest pas dmenti. Ne soyons pas trop puriste, gardons lesprit PME (pragmatique, malin, efficace), WinDev a de beaux jours devant lui pour des quipes sachant lutiliser de faon optimale. Un service informatique nest plus uniquement une course en avant vers la technologie et cela depuis bien des annes, mais bien un service au premier sens du terme, cest--dire lapport defficacit aux utilisateurs pour faciliter le business de lentreprise. David Vandevelde Consultant en gestion de services et de projets, expertise WinDev (audit, formation, ralisation) d.vandevelde@laciteduweb.com

Recevez la Newsletter www.programmez.com/inscription.php


Avril 2009 \\ PROgrammez !

31