Je suis dveloppeur et jutilise les produits pc-soft depuis Hyper-Screen ! Jai dcid dexposer mon savoir faire pour que vous puissiez en profiter. Peut tre vous direz vous, je le veux dans mon quipe ! En effet je suis en recherche demploi ce jour (04/01/2013).. Alors mieux quun CV, voici la dmonstration dune partie de mon savoir faire.
PRESENTATION DU TUTORIEL
Date : 04 Janvier 2013 - Version : 1.00A Ce tutoriel vous montre comment crer des objets, les utiliser en tableaux mmoire pour pouvoir ensuite afficher les donnes dans une table cran windev (table lie une variable de type tableau).
Vous devez avoir un minimum de connaissances en POO (Cration dune classe, ajout de mthodes et proprits. Lexemple a t dvelopp avec la version 17 de windev. Les manipulations dans windev ne sont pas dtailles, vous tes cens tre un utilisateur courant windev. Certains exemples de codes sont simplifis et ne sont pas obligatoirement optimiss pour des questions de comprhension. Ce code fonctionne avec windev mais devrai logiquement pouvoir tre utilis avec les autres produits pc-soft (webdev et windev mobile).
Les membres sont dclars en PRIVE pour respecter le principe dencapsulation des donnes. Seule la classe sera autorise modifier ses propres membres.
Dans la fentre qui apparait, saisissez p_nom et cliquez sur le bouton Ajouter. Vous apercevez alors 2 zones de code dans lditeur windev ! Une qui porte le nom de Rcupration et une autre qui se nomme Affectation. Les proprits dun objet permettent en gnrale de connaitre OU modifier un tat de vos objets. Cest pour cette raison que windev propose deux zones de code indpendantes mais avec le mme nom. Une des zones servira retourner ltat (Rcupration) et lautre zone servira initialiser un tat (Affectation). Dans le code dune de vos fentres, vous pourrez donc voir ceci : Info(MonClient :p_Nom) Dans cet exemple, cest le code de rcupration de lobjet qui est sollicit puisquon effectue une lecture de la proprit. MonClient :p_Nom=DUPONT Dans cet autre code cest le code daffectation qui est sollicit puisque nous assignons une nouvelle valeur la proprit. Vous comprenez en fait quune proprit fonctionne a peu prt comme une variable simple quil est possible de lire ou de modifier et que selon laction (lire/modifier) ce nest pas le mme code qui est sollicit. Nous pourrions nous passer des proprits en crant deux mthodes Set_Nom et Get_Nom dans la classe mais jy vois deux inconvnients majeurs : - Deux noms diffrents Set_ et Get_ - Seules les proprits peuvent tre utilises avec le DataBinding !
LA PROPRIETE P_NOM
La proprit p_nom est une proprit simple ! Soit elle retourne la valeur du membre :Nom soit elle la met jour. Nous souhaitons par contre que le nom des clients soit en majuscules et sans espace devant/Derrire. Dans le code de rcupration de la proprit p_nom saisissez le code suivant :
La premire proprit est termine ! Nous allons la tester. Crez une nouvelle fentre que vous appelez Test. Dans cette fentre, crez un bouton et saisissez le code ci-dessous :
Excutez la fentre en mode test et cliquez sur le bouton. Vous devriez voir une fentre info avec le texte DUPONT en majuscules. Magique non ? Mais ce nest encore rien du tout !
LA PROPRIETE P_PRENOM
La proprit p_Prenom na rien de particulier, elle permet de rcuprer ou dinitialiser le prnom du client. Ajoutez cette proprit dans votre classe comme vous venez de le faire pour p_Nom et saisissez le code ci-dessous.
LA PROPRIETE P_DATENAISSANCE
La proprit p_DateNaissance permet de rcuprer et dinitialiser la date de naissance du client. On peut ajouter un contrle pour refuser une date si elle est suprieure la date du jour ! Les dates null sont acceptes. Ajoutez cette proprit dans votre classe et saisissez le code cidessous.
LA PROPRIETE P_STATUT
La proprit p_Statut permet de rcuprer et dinitialiser le code statut du client. Un contrle doit tre effectu pour affecter un code statut valide. Nous allons ajouter des constantes notre classe pour les 4 statuts suivant : Sans, Prospect, Client, Perdu. Votre dclaration de classe doit ressembler ceci
Et le code de la proprit p_Statut qui utilise ces constantes pour contrler la valeur du code laffectation.
Les proprits de bases sont termines. Pour changer, nous allons jouer avec cet objet et crer une table pour afficher et modifier un tableau de clients.
DATABINDING !
Nous allons maintenant crer une fentre avec une table cran qui affichera les donnes dun tableau dobjets cl_client. Nous pourrons ajouter de nouveaux clients et modifier directement les informations dans la table. Vous constaterez que le code dans linterface utilisateur sera vraiment minime. Crez une fentre vierge : F001_TableEtModification Pour que le DataBinding puisse fonctionner, il faut dclarer un tableau dobjets dans le code dinitialisation de la fentre. Ce tableau sera donc global la fentre et il pourra donc tre utilis comme source de donnes des composants visuels de windev. (Table, ZoneRepetee, liste et autres) Saisissez le code ci-dessous dans le code dinitialisation de votre fentre
Notes : Tous les tableaux globaux accessible (fentre, projet, autres objets etc..) peuvent tre utiliss comme source de donnes pour un composant visuel windev (table, liste zone rptes etc..).
Slectionnez loption Afficher des donnes dune variable existante et cliquez sur la flche pour continuer.
Windev affiche les variables accessibles pour votre fentre. Ici le tableau que vous avez dclar dans le code dinitialisation de votre fentre Gbw_TableauClients. Slectionnez-le et cliquez sur la flche pour continuer.
Ici ca devient intressant ! Windev a bien dtect que le tableau mmoire tait un tableau dobjet cl_Client. Il nous propose donc de crer des colonnes de table et de les lier aux proprits de ces objets. Ajoutez toutes les proprits dans lordre que vous souhaitez. Cliquez ensuite sur le bouton de validation pour valider et terminer lassistant (il ny a rien modifier dans les autres panneaux de lassistant). Windev a gnrer la table automatiquement. Modifiez manuellement les informations de la table pour tre en phase avec ce tutoriel. Nom Colonne CCOL_Nom CCOL_Prenom CCOL_DateNaissance CCOL_Statut Titre Nom Prnom Date naissance Statut Type Texte Texte Date Entier
Adaptez la taille de la table et des colonnes votre convenance. Cest termin mais votre table reste dsesprment vide !!
Lancez votre fentre en mode test et cliquez sur le bouton autant de fois que vous le souhaitez. Vous devez voir la table se remplir de lignes. A ce stade vous avez vu comment ajouter des objets dans un tableau et comment afficher ce tableau dans une table windev.
Par exemple ici nous voyons que la colonne CCOL_Nom est relie la proprit p_Nom des objets du tableau Gbw_TableauClients. Lorsque lutilisateur va sortir dune ligne, windev va envoyer la valeur de toutes les colonnes vers les proprits correspondantes de lobjet ET r-afficher ces valeurs. Il y a un aller retour de linformation. Par exemple pour la colonne CCOL_Nom, si vous saisissez une chaine en minuscules, votre proprit va automatiquement la convertir en majuscules et r-afficher le rsultat lorsque vous changerez de ligne (option Enregistrer en sortie de ligne). Vrifiez juste que la table est bien paramtre pour enregistrer les modifications en sortie de ligne et que la table est en saisie. Nautorisez pas la saisie en cascade pour empcher lajout de nouvelles lignes automatiquement par windev.
Lancez la fentre et ajoutez des clients avec le bouton. Tentez de modifier un nom en minuscules et de saisir une date de naissance suprieure la date du jour et passez sur une autre ligne Vous pourrez constater que vos proprits jouent bien leur rle et contrle bien les donnes affectes aux colonnes.
La proprit est en lecture seule, il sera possible de connaitre lge du client mais il ne sera pas possible de le modifier. Par contre la modification de la date de naissance par la proprit p_DateNaissance reste videmment possible. Vous pourriez ajouter du code dans laffectation et tenter de calculer la date de naissance approximative par rapport un ge. 2) Retournez dans la description de la table cran windev et ajoutez une nouvelle colonne CCOL_Age de type numrique avec le format 999 an(s)
4) Testez votre fentre, lge doit se calculer et safficher lorsque vous modifiez une date de naissance et que vous sortez de la ligne (enregistrement en sortie de ligne) Voila, vous avez votre objet, un tableau dobjets et vous savez comment lafficher dans une table.
La premire ligne charge tout le fichier dans le tableau dobjets ! Windev va automatiquement gnrer 1 objet par enregistrement et transfrer le contenu des rubriques dans les membres des objets. Il se base sur le nom des rubriques et des membres ! La deuxime ligne demande windev dafficher la table lie au tableau dobjets. Ces deux lignes peuvent donc dsormais tre utilises partout dans votre projet lorsque vous avez besoin dafficher tous vos clients dans une table, une liste ou une zone rpte ! FichierVersTableau fonctionne galement avec une requete ! Vous pouvez donc faire exactement le mme code avec une requte cre dans lditeur ou une requete SQL directement dans le code.
Retournez dans la fentre et ajoutez une nouvelle colonne dans votre table a la position que vous souhaitez.
Testez votre fentre.. Bon ok ca marche mais on ne se rend pas bien compte si les informations sont mmorises. Ajoutez un nouveau bouton dans votre fentre (CBTN_Selection) avec le code ci-dessous et testez votre fentre. Slectionnez des clients et cliquez sur ce nouveau bouton.