DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Nouveauté WINDEV 2024 !
Aide / Tuto WINDEV / Tuto - Application WINDEV : gérer des données
  • Leçon 1 - Des fenêtres pour saisir et modifier des données
  • Présentation de l'exemple utilisé dans ce tuto
  • Ouverture du projet exemple
  • Sélection de la configuration de projet
  • Création d'une fenêtre listant les produits
  • Création de la fenêtre
  • Création des champs
  • Test de la fenêtre
  • Les possibilités du champ Table
  • Création d'une fenêtre "Fiche produit"
  • Création de la fenêtre
  • Création des champs liés aux données
  • Création des boutons
  • Améliorations de l'UI de la fenêtre "Fiche produit"
  • Alignement des champs
  • Redimensionnement de la fenêtre
  • Rendu visuel de la fenêtre
  • Gestion des ancrages
  • Affichage de la fiche depuis la liste des produits
  • Redimensionnement de la fenêtre sous l'éditeur
  • Création du champ Bouton
  • Affichage du produit sélectionné dans le champ Table
  • Gestion de la modification d'un produit
  • Modification de l'image du produit
  • Validation des modifications du produit
  • Test de la modification d'un produit
  • Création d'un nouveau produit
  • Ajout d'un champ Bouton
  • Ajout d'un nouvel enregistrement dans le fichier de données
  • Test de l'ajout d'un produit
  • Visualiser les enregistrements saisis
  • En résumé

Tuto - Application WINDEV : gérer des données

Leçon 1 - Des fenêtres pour saisir et modifier des données
Ce que vous allez apprendre :
  • Présentation du projet exemple.
  • Création d'une fenêtre de menu listant les produits.
  • Création d'une fiche produit.
  • Gestion de l'ajout et de la modification d'un produit.
Durée de la leçon 50 mn
Présentation de l'exemple utilisé dans ce tuto
Dans ce tuto, nous allons réaliser une application manipulant des fichiers de données au format HFSQL Classic.
Cette application de gestion de commandes permettra de :
  • Visualiser, saisir et modifier des produits,
  • Imprimer des états,
  • Afficher des statistiques,
  • Envoyer des emails,
  • etc.
Différents tutos vous permettront ensuite d'aborder le déploiement et la diffusion de l'application auprès des clients finaux.
Nous allons :
  • créer différentes fenêtres permettant de lister, ajouter, modifier des produits.
  • créer différents états.
Ces manipulations vous feront découvrir plusieurs aspects de la gestion des fichiers de données et vous feront également utiliser certaines fonctionnalités bien utiles de WINDEV­.

Ouverture du projet exemple

Dans WINDEV, ouvrez le projet "WD Application Complète" :
  1. Affichez la page d'accueil de WINDEV (Ctrl + <).
  2. Dans la page d'accueil, cliquez sur "Tutoriel" puis dans la zone "Tuto - Application WINDEV : gérer des données", double-cliquez sur "Application complète - Exercice".
Dans cette leçon, nous nous concentrons sur la création de fenêtres permettant de manipuler des fichiers de données. Nous allons donc manipuler un projet vide, déjà créé.
La création de projet est abordée dans le tuto Créer un projet WINDEV et son analyse.
Avertissement
Ce projet sera utilisé dans les différentes leçons de ce tuto.

Sélection de la configuration de projet

Le projet "WD Application Complète" possède deux configurations de projet :
  • une configuration nommée "Exécutable Windows 32 bits",
  • une configuration de projet "Exécutable Windows 64 bits".
Le projet peut être testé et s'exécuter dans chacun de ces modes (32 bits ou 64 bits).
Qu'est-ce qu'une configuration de projet ?
Les configurations de projet permettent de définir les différents types de générations supportées par le projet : 32 bits, 64 bits, Linux, composant, etc.
Pour plus de détails, consultez Configuration de projet.
Dans ce tuto, nous allons manipuler la configuration 64 bits :
  • Dans le volet "Explorateur de projet", déroulez l'option "Configurations (Exécutable Windows 32 bits)".
  • Double-cliquez sur "Exécutable Windows 64 bits". La configuration de projet correspondante est automatiquement sélectionnée.
Avertissement
Si vous utilisez la version Express, seule la configuration de projet "Exécutable Windows 32 bits" peut être sélectionnée.
Création d'une fenêtre listant les produits
Avant de créer ou modifier un produit, nous allons tout d'abord créer une fenêtre permettant de lister les différents produits proposés par notre application.
Pour créer la fenêtre listant les produits, nous allons dans un premier temps créer une fenêtre vierge, et ensuite nous ajouterons tous les champs nécessaires.

Création de la fenêtre

Pour créer une nouvelle fenêtre :
  1. Cliquez sur Créer un élément parmi les boutons d'accès rapide (ou utilisez le raccourci Ctrl + N).
  2. Dans la fenêtre de création d'un nouvel élément, cliquez sur "Fenêtre" puis sur "Fenêtre".
  3. Dans l'assistant, cliquez sur l'onglet "Basée sur un modèle" et choisissez "Utiliser : FENMOD_Modèle".
  4. Validez.
  5. Dans la fenêtre de sauvegarde de l'élément créé, indiquez le titre de la fenêtre : "Menu".
    Enregistrement d'un élément

    Remarque : Le nom de la fenêtre (qui sera utilisé par exemple en programmation) est automatiquement déduit du titre de la fenêtre. Si ce nom ne vous convient pas, il est possible de le modifier et de spécifier un titre différent du nom de la fenêtre.
  6. Validez.
Dans ce tuto, nous utilisons un modèle de fenêtres pour donner un look homogène aux différentes fenêtres de notre application. Ce modèle FENMOD_Modèle contient un logo qui apparaîtra sur toutes les fenêtres :
Modèle de fenêtres
Pour plus de détails, consultez Les modèles de fenêtres.

Création des champs

Pour créer la liste des produits, nous allons utiliser un champ Table. Ce champ va afficher les données du fichier de données "Produit".
Qu'est-ce qu'un champ Table ?
Ne confondez pas "Table" et "champ Table".
  • On parle de Table pour une base de données de type SQL.
  • On parle de champ Table pour visualiser en tableau des données (ou "browse" ou encore "feuille de données"). Dans ce cas, ces données peuvent être saisies ou provenir d'un fichier de données (ou d'une table).

Pour créer le champ Table :
  1. Sous le volet "Création", dans le groupe "Données", déroulez "Table et Liste" et sélectionnez "Table (Verticale)". Le champ en création suit alors le mouvement de la souris.
  2. Cliquez dans la fenêtre : l'assistant de création du champ Table se lance.
  3. Le champ Table que nous sommes en train de créer doit afficher les enregistrements du fichier de données "Produit".
    Dans l'assistant, sélectionnez l'option "Afficher des données d'un fichier ou d'une requête existante".
    Assistant de création d'un champ Table
    Passez à l'étape suivante de l'assistant (bouton "Suivant").
  4. L'assistant propose les différents fichiers de données et les requêtes présents dans le projet en cours.
    Dépliez "Analyse" si nécessaire et sélectionnez le fichier de données "Produit".
    Sélection du fichier de données
    Passez à l'étape suivante.
  5. L'assistant propose la liste des rubriques présentes dans le fichier de données "Produit".
    Par défaut, toutes les rubriques sont cochées pour être affichées dans le champ Table. Dans notre cas, nous allons afficher toutes les rubriques SAUF l'identifiant "IDProduit" qui correspond à l'identifiant automatique du fichier de données.
    Décochez "IDProduit".
    Assistant de création d'un champ Table
    Passez à l'étape suivante.
  6. L'assistant propose ensuite de sélectionner la rubrique de tri. Cette rubrique va être utilisée pour trier les données affichées dans le champ Table. Les rubriques proposées dans l'assistant correspondent à des rubriques définies comme clés dans l'analyse. Nous allons trier les produits selon leur libellé.
    Cliquez sur la ligne "Libellé".
    Assistant de création d'un champ Table
  7. Terminez l'assistant.
  8. Le champ Table est automatiquement créé dans la fenêtre. Le champ est automatiquement positionné et agrandi afin d'occuper tout l'espace disponible dans la fenêtre.
    Fenêtre contenant le champ Table sous l'éditeur
Les données sont déjà affichées dans le champ, même sous l'éditeur. C'est le concept du "Live data" : le contenu des fichiers de données présents sur le poste de développement est utilisé dans les fenêtres ou les états manipulés sous l'éditeur. Cette fonctionnalité est très intéressante par exemple pour définir la taille des champs présents dans une fenêtre.

Test de la fenêtre

Nous allons tout de suite tester la fenêtre que nous venons de créer.
  1. Cliquez sur Tester une fenêtre parmi les boutons d'accès rapide.
  2. La fenêtre apparaît automatiquement avec ses données en exécution.
  3. Vous pouvez faire défiler les produits grâce à l'ascenseur (ou à l'aide des flèches du clavier).

Les possibilités du champ Table

Mettons-nous quelques instants à la place de l'utilisateur final pour voir les possibilités du champ Table en exécution.
Test de la fenêtre contenant le champ Table
Quelques remarques :
  • Tout d'abord, en exécution le champ Table a le même aspect que sous l'éditeur : c'est la notion de WYSIWYG ("What You See Is What You Get") : ce que vous voyez correspond à ce que vous obtenez.
  • Des petits pictogrammes apparaissent en haut des colonnes :
    • la double flèche indique que la colonne peut être triée (colonne "Référence" ou "Libellé" par exemple).
      Double flèche indiquant que la colonne peut être triée
      Par exemple, cliquez deux fois successivement sur la colonne "Libellé" : les données affichées sont triées différemment. Une flèche à gauche de la colonne indique que la colonne est triée ainsi que le sens de tri.
    • la loupe indique qu'une recherche peut être réalisée directement dans la colonne.
      Loupe dans une colonne d'un champ Table
      Par exemple, cliquez sur la loupe de la colonne "Référence". Une zone de saisie apparaît et vous permet de saisir la référence recherchée. Saisissez "REF-010". Automatiquement, le produit correspondant à cette référence est affiché.
      Recherche dans une colonne
  • Un menu contextuel est disponible sur le champ Table et sur chacune de ses colonnes. Ce menu contextuel peut être affiché :
    • par un clic droit sur la colonne du champ Table.
    • par clic sur la flèche située à l'extrémité des entêtes de colonnes.
    Ce menu contextuel permet notamment d'exporter le contenu du champ Table au format Excel (ou OpenOffice.org Calc), au format Word (ou OpenOffice.org Writer), de l'imprimer, etc.
    Menu contextuel du champ
En quelques minutes, nous venons de voir et de tester quelques fonctionnalités qui sont automatiquement incluses avec le champ Table. Vous n'avez rien à programmer pour proposer ces fonctionnalités à vos utilisateurs. Ces fonctionnalités sont appelées "FAA" (Fonctionnalités Automatiques de votre Application).
De nombreux champs proposent des FAA par défaut. Si ces fonctionnalités ne doivent pas être proposées (pour des raisons de sécurité ou de confidentialité), il est possible de les désactiver sous l'éditeur ou par programmation.
Avoir la liste des produits, c'est bien, mais pouvoir modifier un produit, c'est mieux. Maintenant, nous allons créer une fenêtre affichant le détail du produit afin de pouvoir le modifier.
Fermez la fenêtre en cours de test grâce à la croix située en haut de l'écran. L'éditeur de WINDEV réapparaît.
Création d'une fenêtre "Fiche produit"

Création de la fenêtre

La fenêtre que nous allons créer est destinée à afficher les caractéristiques du produit sélectionné dans le champ Table. Ce type de fenêtre est appelé une "Fiche" simplement car elle correspond à une fiche descriptive de l'élément voulu.
Nous allons à nouveau créer une nouvelle fenêtre.
A vous de jouer :
Comme nous avons déjà créé une fenêtre dans cette leçon, voici juste quelques indications :
  • La fenêtre doit être basée sur le modèle FENMOD_Modèle.
  • Le titre de la fenêtre est "Fiche du produit" (et le nom proposé est donc "FEN_Fiche_du_produit").

Création des champs liés aux données

Dans notre exemple, cette fenêtre "Fiche" va afficher le contenu des différentes rubriques présentes dans le fichier de données "Produit".
Pour créer les champs dans la fenêtre :
  1. Affichez si nécessaire le volet "Analyse" : sous le volet "Accueil", dans le groupe "Environnement", déroulez "Volets" et sélectionnez "Volets" puis "Analyse". Les différents fichiers de données décrits dans l'analyse "WD Application Complète" apparaissent dans le volet.
  2. Cliquez sur l'icône Flèche à gauche du fichier de données "Produit" : les rubriques du fichier de données sont listées.
    Volet Analyse
  3. Sélectionnez à l'aide de la souris l'ensemble des rubriques affichées dans le volet (sauf la rubrique "IDProduit"). Vous pouvez par exemple utiliser la multisélection en maintenant la touche Ctrl enfoncée.
  4. Effectuez un "Drag and Drop" (glisser/déplacer) de ces rubriques vers la fenêtre que vous venez de créer.
    Drag and Drop des rubriques
  5. Différents champs sont automatiquement créés dans la fenêtre. Ces champs sont automatiquement liés à la rubrique correspondante dans le fichier de données. Pour le vérifier :
    • Sélectionnez par exemple le champ "Référence".
    • Affichez le menu contextuel (clic droit) et sélectionnez l'option "Description".
    • Affichez l'onglet "Liaison" de la fenêtre de description :
      Description du champ de saisie
      Cet onglet permet de voir que le champ de saisie en cours est lié à la rubrique "Référence" du fichier de données "Produit".
  6. Fermez la fenêtre de description.
  7. Enregistrez la fenêtre.
Repositionnez les champs dans la fenêtre et redimensionnez la fenêtre afin d'obtenir l'UI suivante :
Interface de la fenêtre sous l'éditeur

Création des boutons

La fenêtre "FEN_Fiche_du_produit" va permettre d'ajouter un nouveau produit ou encore de modifier un produit présent dans la liste.
Nous allons tout de suite ajouter un bouton de validation et un bouton d'annulation.
Pour créer le champ Bouton permettant de valider les données saisies :
  1. Sous le volet "Création", dans le groupe "Champs usuels", déroulez "Bouton" (cliquez sur la flèche située sous Champ Bouton).
  2. La liste des boutons prédéfinis s'affiche.
  3. Cliquez sur "Valider" : la forme du champ Bouton apparaît sous la souris.
  4. Cliquez ensuite à droite des champs de saisie pour créer le champ Bouton.
Ajoutez le champ Bouton permettant d'annuler la saisie en utilisant le même principe.
  1. Sous le volet "Création", dans le groupe "Champs usuels", déroulez "Bouton" (cliquez sur la flèche située sous Champ Bouton).
  2. Dans la liste des boutons prédéfinis, cliquez sur "Annuler" : la forme du champ Bouton apparaît sous la souris.
  3. Cliquez ensuite en dessous du champ Bouton "Valider" pour créer le champ.
    Interface sous l'éditeur
Améliorations de l'UI de la fenêtre "Fiche produit"
Cette fenêtre étant une fenêtre relativement simple, essayons d'améliorer son UI. De nombreux petits détails peuvent vite devenir gênants pour l'utilisateur, alors autant les traiter dès le début.

Alignement des champs

Une des premières optimisations à faire consiste à aligner les champs et à leur donner la même taille :
  1. Sélectionnez le champ "Libellé" puis tous les autres champs de saisie de la fenêtre (par exemple en maintenant la touche Ctrl appuyée et en cliquant sur les différents champs). Le premier champ sélectionné va servir de référence pour la taille des autres champs.
  2. Dans le ruban, affichez le volet "Alignement" de WINDEV. Ce volet contient toutes les options d'alignement disponibles pour les champs.
    Volet Alignement
  3. Nous voulons que les bords externes et internes des champs soient alignés. Cliquez sur l'option "Justifier (Int. et Ext.)".
    Si vous ne savez pas quel alignement choisir, survolez les différentes options proposées par le volet "Alignement" de WINDEV. Lors du survol avec la souris d'une option, les champs sélectionnés dans la fenêtre sont automatiquement positionnés et/ou redimensionnés en fonction de l'option survolée.
    Le positionnement vous convient ? Cliquez sur l'option.
    Le positionnement ne vous convient pas ? Déplacez la souris pour ne plus survoler les options d'alignement : les champs sont replacés à leur position d'origine.
Taille de la fenêtre

Redimensionnement de la fenêtre

Maintenant que nous avons positionné tous les champs dans notre fenêtre, nous pouvons lui donner sa dimension définitive. Dans notre exemple, la fenêtre est encore un peu trop large.
Nous pourrions utiliser les poignées de redimensionnement, comme nous l'avons fait précédemment. Mais WINDEV offre également la possibilité de saisir directement les dimensions de la fenêtre.
  1. Cliquez sur la fenêtre présente sous l'éditeur. La fenêtre est sélectionnée.
  2. Dans la barre de message, saisissez la nouvelle dimension de la fenêtre.
    Interface sous l'éditeur
    Dans cet exemple, la dimension originale est 609 x 270, nous allons saisir par exemple 554 x 252.
  3. La fenêtre est automatiquement modifiée. Si cette modification ne vous convient pas, utilisez la combinaison de touches Ctrl + Z pour annuler.

Rendu visuel de la fenêtre

Voyons maintenant le rendu visuel de notre fenêtre. Nous allons pour cela utiliser un mode d'exécution spécifique, permettant d'afficher uniquement l'UI de la fenêtre (sans exécuter les codes).
  1. Sous le volet "Modification", dans le groupe "Aperçu", cliquez sur "Aperçu".
  2. Agrandissez la fenêtre à l'aide de la poignée d'agrandissement au bas de la fenêtre. La position des champs n'est pas modifiée et la fenêtre affiche une grande zone vide.
    Aperçu de la fenêtre

    Pour remédier à ce problème, deux possibilités :
    • Interdire le redimensionnement de la fenêtre.
    • Gérer les ancrages, c'est-à-dire gérer le comportement des champs lors d'un redimensionnement de la fenêtre. C'est ce que nous allons faire.
  3. Fermez l'aperçu : cliquez soit sur le bouton "Fermer" de la télécommande, soit sur la croix en haut à droite de la fenêtre.

Gestion des ancrages

Nous allons maintenant utiliser les ancrages pour définir le comportement des différents champs présents dans la fenêtre lorsque celle-ci change de taille.
Comment gérer les ancrages dans une fenêtre ?
Pour gérer les ancrages :
  1. Sous l'éditeur, réduisez la fenêtre à sa taille minimale. Tous les bords extérieurs de la fenêtre doivent être "collés" à un champ (en respectant les marges, bien entendu).
  2. Passez les champs en revue un à un et posez-vous la question suivante : "Comment doit réagir le champ lors de l'agrandissement de la fenêtre ?". Appliquez alors l'ancrage correspondant.
Pour cette fenêtre, nous allons définir les ancrages ensemble :
  1. Les champs Bouton "Valider" et "Annuler" doivent toujours être collés à droite.
    • Sélectionnez ces deux champs.
    • Affichez le menu contextuel (clic droit) et sélectionnez l'option "Ancrage".
    • Dans la fenêtre de définition des ancrages, sélectionnez l'option "Droite".
      Gestion des ancrages
    • Validez.
    • Des petites flèches rouges apparaissent sous l'éditeur indiquant que les champs sont ancrés à droite.
  2. Les champs de saisie doivent s'agrandir en largeur :
    • Sélectionnez les 4 champs de saisie.
    • Affichez le menu contextuel (clic droit) et sélectionnez l'option "Ancrage".
    • Dans la fenêtre de définition des ancrages, sélectionnez l'option "Largeur" (Ancrage en largeur).
    • Validez.
  3. Nous allons tester à nouveau le fonctionnement de cette fenêtre en aperçu :
    • Sous le volet "Modification", dans le groupe "Aperçu", cliquez sur "Aperçu".
    • Agrandissez la fenêtre : les champs suivent bien l'agrandissement en largeur.
    • Maintenant, il reste à définir le fonctionnement lors de l'agrandissement en hauteur.
  4. Le champ "Description" peut contenir une description du produit plus ou moins importante. C'est le champ le plus important de la fenêtre : il est nécessaire qu'il occupe le maximum de place disponible. Appliquez-lui un ancrage en largeur et hauteur (Ancrage en largeur et hauteur).
  5. Le champ "Prix HT" est automatiquement encadré en rouge : l'éditeur de fenêtres indique un problème d'ancrage. En effet, si le champ "Description" s'étire vers le bas, le champ "Prix HT" doit lui aussi se déplacer de la même manière vers le bas.
  6. Ouvrez la fenêtre des ancrages du champ "Prix HT". L'ancrage idéal est automatiquement proposé : "Largeur et bas" (une coche verte est présente). Sélectionnez l'ancrage proposé et validez.
  7. Nous allons tester à nouveau le fonctionnement de cette fenêtre en aperçu :
    • Sous le volet "Modification", dans le groupe "Aperçu", cliquez sur "Aperçu".
    • Agrandissez la fenêtre : les champs suivent bien l'agrandissement en largeur et en hauteur.
      Aperçu de la fenêtre
  8. Fermez l'aperçu de la fenêtre pour revenir sous l'éditeur.
Affichage de la fiche depuis la liste des produits
Nous allons maintenant voir comment afficher la fiche du produit sélectionné dans la liste des produits. Le principe est simple : l'utilisateur sélectionnera le produit dans le champ Table et affichera le détail du produit grâce à un champ Bouton.
Nous allons :
  • Redimensionner la fenêtre et le champ Table pour avoir la place de positionner le champ Bouton.
  • Créer le champ Bouton.
  • Afficher la fiche produit.

Redimensionnement de la fenêtre sous l'éditeur

Nous allons tout d'abord modifier la fenêtre "FEN_Menu" afin de créer un champ Bouton.
Placez-vous sur la fenêtre "Menu" : cliquez sur le bouton "FEN_Menu" dans la barre des documents ouverts :
Barre des documents ouverts
Actuellement, le champ Table occupe la totalité de la fenêtre.
Nous allons agrandir la fenêtre vers la droite afin d'obtenir un espace à droite du champ Table :
  1. Maintenez la touche Maj enfoncée.
  2. Agrandissez la taille de la fenêtre vers la droite à l'aide des poignées de redimensionnement.
    L'utilisation de la touche Maj permet de ne pas prendre en compte les options d'ancrage des champs lors du redimensionnement de la fenêtre.
Nous avons maintenant de la place à droite du champ Table pour créer le champ Bouton permettant de visualiser le produit sélectionné dans le champ Table.

Création du champ Bouton

Nous avons déjà vu dans ce tuto comment créer un champ Bouton "Annuler" et "Valider" à partir des champs Bouton pré-définis. Nous allons utiliser le même principe pour créer le champ Bouton "Modifier".
Pour créer le champ Bouton permettant de visualiser le produit :
  1. Sous le volet "Création", dans le groupe "Champs usuels", déroulez "Bouton" (cliquez sur la flèche située sous Création d'un champ Bouton).
  2. Dans la liste des champs Bouton prédéfinis, saisissez "Modifier" dans la zone de recherche. Cliquez sur "Bouton Modifier". La forme du champ apparaît sous la souris. Cliquez ensuite à droite du champ Table pour créer le champ Bouton.
    Fenêtre sous l'éditeur avec le champ Bouton
Le champ est créé. Maintenant, saississons le code permettant d'ouvrir la fenêtre fiche :
  1. Faites un clic droit sur le champ Bouton que vous venez de créer. Dans le menu qui s'affiche, sélectionnez l'option "Code".
  2. Dans la fenêtre de code qui apparaît, saisissez le code WLangage suivant dans l'événement "Clic sur" :
    FEN_Fiche_du_produit.Ouvre()

    Laissez-vous guider par l'assistance à la saisie de code (également appelée "complétion") : dès que vous allez taper le point à la suite du nom de la fenêtre, une liste déroulante va s'ouvrir proposant le nom de toutes les fonctions pouvant s'appliquer sur cette fenêtre. Il suffit de sélectionner le nom de la fonction au clavier ou à la souris.
  3. Examinons ce code WLangage : la fonction <Fenêtre>.Ouvre permet d'ouvrir la fenêtre "FEN_Fiche_du_produit".
  4. Enregistrez les modifications en cliquant sur Enregistrer l'élément parmi les boutons d'accès rapide.
  5. Fermez la fenêtre de code (cliquez sur la croix en haut à droite de l'éditeur de code).

Affichage du produit sélectionné dans le champ Table

Nous allons maintenant modifier la fenêtre "FEN_Fiche_du_produit" pour afficher le produit sélectionné dans le champ Table.
Affichez la fenêtre "FEN_Fiche_du_produit" sous l'éditeur : cliquez sur le bouton correspondant dans la barre des documents ouverts.
Pour afficher les données du produit :
  1. Affichez les événements WLangage associés à la fenêtre :
    • Dans la zone à côté de la fenêtre (appelée "Zone d'accueil"), faites un clic droit de souris.
    • Dans le menu contextuel qui s'affiche, sélectionnez "Code".
    • L'éditeur de code apparaît. Les événements WLangage associés à la fenêtre sont affichés.
  2. Dans l'événement "Fin d'initialisation de FEN_Fiche_du_produit", saisissez le code WLangage suivant :
    // Affecte le contenu des rubriques aux champs
    Produit.VersFenêtre()

    La fonction <Fichier de données>.VersFenêtre permet d'afficher dans les champs les données présentes dans le fichier de données, pour l'enregistrement en cours. Dans notre cas, l'enregistrement en cours sera l'enregistrement sélectionné dans le champ Table de la fenêtre "FEN_Menu".
  3. Fermez la fenêtre de code.
  4. Enregistrez la fenêtre (Ctrl + S).
Il ne reste plus qu'à tester le résultat de nos manipulations.
  1. Affichez la fenêtre "FEN_Menu" sous l'éditeur : cliquez sur le bouton correspondant dans la barre des documents ouverts.
  2. Testez la fenêtre (Tester une fenêtre parmi les boutons d'accès rapide).
    • Dans la liste des produits, cliquez sur un des produits avec la souris.
    • Cliquez sur le bouton "Modifier".
    • La fenêtre de détail du produit s'affiche. C'est bien le résultat que nous attendions.
  3. Fermez les différentes fenêtres de test en utilisant la croix (x) en haut à droite des fenêtres.
Gestion de la modification d'un produit
Nous allons maintenant modifier la fenêtre "FEN_Fiche_du_produit" afin de gérer la modification d'un produit.
Nous allons :
  • permettre à l'utilisateur de modifier l'image du produit.
  • ajouter des champs Bouton pour enregistrer ou annuler les modifications effectuées dans la fiche du produit.

Modification de l'image du produit

L'utilisateur va pouvoir modifier l'image du produit dans la fiche Produit. Pour cela, nous allons lui proposer un champ Bouton "Modifier" situé en dessous de l'image du produit. Ce champ ouvrira un sélecteur de fichiers permettant de sélectionner l'image à utiliser.

Comme nous allons travailler sur la fenêtre "FEN_Fiche_du_produit", affichez-la sous l'éditeur via le bouton correspondant dans la barre des documents ouverts.
Pour créer le champ Bouton permettant de modifier l'image :
  1. Créez un champ Bouton "Modifier" à partir des champs prédéfinis (nous avons déjà réalisé cette manipulation dans cette leçon, nous ne la détaillerons pas).
  2. Positionnez le champ sous l'image du produit.
  3. Redimensionnez si nécessaire le champ Bouton (à l'aide des poignées) pour que le champ ait la même largeur que le champ Image.
    Lors du redimensionnement du champ, un effet de magnétisme automatique simplifie l'alignement du champ Bouton avec le champ Image.
    Interface de la fenêtre fiche sous l'éditeur
  4. Faites un clic droit sur le champ Bouton. Dans le menu qui s'affiche, sélectionnez l'option "Code".
  5. Dans la fenêtre de code qui apparaît, saisissez le code WLangage suivant dans l'événement "Clic sur" :
    fSélecteurImage(
    Assistant de fonction dans l'éditeur de code
  6. L'éditeur de code propose un assistant de code.
    • Cliquez sur "Assistant de la fonction fSélecteurImage".
    • L'assistant de code se lance.
      WINDEV propose de nombreux assistants de code qui à l'aide de questions simples vont écrire la ou les ligne(s) de code correspondant. N'hésitez pas à les utiliser, vous éviterez ainsi des erreurs de syntaxe.
  7. Conservez toutes les options par défaut de l'assistant et validez. Le code WLangage correspondant est automatiquement inséré.
    sFichier est une chaîne
    // Ouvre le sélecteur d'images
    sFichier = fSélecteurImage("", "", "Sélectionnez une image...")
    La fonction fSélecteurImage permet d'ouvrir la fenêtre de sélection d'un fichier image et de l'associer à la variable "Fichier".
  8. Ajoutez le code WLangage suivant à la suite :
    // Si un fichier a été sélectionné
    SI sFichier <> "" ALORS
    // Affecte l'image au champ Image
    IMG_Visuel = sFichier
    FIN
    Ce code WLangage permet d'affecter le fichier sélectionné au champ Image présent dans la fenêtre.
  9. Fermez l'éditeur de code (cliquez sur la croix en haut à droite de l'éditeur de code).
Nous testerons cette fonctionnalité lorsque la gestion des modifications effectuées dans la fiche sera finie.

Validation des modifications du produit

Nous avons déjà créé 2 champs Bouton dans la fenêtre "FEN_Fiche_du_produit" :
  • un champ Bouton "Valider" pour gérer la validation des modifications,
  • un champ Bouton "Annuler" pour gérer le retour à la liste des produits.
Nous allons maintenant saisir le code WLangage nécessaire à leur fonctionnement.

Tout d'abord, affichez si nécessaire la fenêtre "FEN_Fiche_du_produit" sous l'éditeur.
Nous allons maintenant saisir le code WLangage associé au champ Bouton "Valider".
  1. Faites un clic droit sur le champ Bouton puis sélectionnez l'option "Code" dans le menu contextuel.
  2. Dans l'événement "Clic sur", saisissez le code WLangage suivant :
    Produit.DepuisFenêtre()
    Produit.Modifie()
    Ferme()

    Examinons ce code WLangage :
    • La fonction <Fichier de données>.DepuisFenêtre permet d'initialiser les rubriques avec les valeurs des champs liés, pour l'enregistrement courant. Cette fonction est donc équivalente aux lignes suivantes :
      Produit.Référence = SAI_Référence
      Produit.Libellé = SAI_Libellé
      Produit.Description = SAI_Description
      ...

      Notre fenêtre utilise moins de 10 champs et déjà l'avantage se fait sentir ; pensez simplement aux fenêtres qui contiennent plusieurs dizaines de champs : 1 seule ligne de code effectue toutes les affectations !
    • La fonction <Fichier de données>.Modifie permet de mettre à jour les données du fichier de données pour l'enregistrement courant.
  3. Enregistrez les modifications en cliquant sur Enregistrer l'élément parmi les boutons d'accès rapide.
  4. Fermez la fenêtre de code (cliquez sur la croix en haut à droite de l'éditeur de code).
Les modifications réalisées dans la fenêtre "FEN_Fiche_du_produit" doivent être prises en compte dans le champ Table listant les produits. Pour cela, nous allons simplement modifier le code WLangage associé au champ Bouton "Modifier" dans la fenêtre "FEN_Menu".
  1. Affichez la fenêtre "FEN_Menu" sous l'éditeur : cliquez sur le bouton correspondant dans la barre de boutons.
  2. Sélectionnez le champ Bouton "Modifier" et affichez l'éditeur de code (touche F2).
  3. Modifiez l'événement "Clic sur" de la manière suivante :
    // Ouvre la fiche produit sur le produit sélectionné
    FEN_Fiche_du_produit.Ouvre()

    // Met à jour la ligne sélectionnée
    TABLE_Produit.Affiche(taCourantBandeau)
    Examinons ce code :
    • La fonction <Table>.Affiche permet de mettre à jour le champ Table, avec les données modifiées dans la fiche du produit.
    • La constante taCourantBandeau permet de spécifier que le champ Table doit être mis à jour à partir de la position du bandeau de sélection.
  4. Enregistrez les modifications en cliquant sur Enregistrer l'élément parmi les boutons d'accès rapide.
  5. Fermez la fenêtre de code (cliquez sur la croix en haut à droite de l'éditeur de code).

Test de la modification d'un produit

Toutes les modifications permettant de mettre en place la modification d'un produit ont été effectuées. Il ne reste plus qu'à tester !
Pour tester la modification d'un produit :
  1. Lancez le test du projet (Tester le projet parmi les boutons d'accès rapide).
    Boutons d'accès rapide
  2. WINDEV demande de sélectionner la première fenêtre du projet. Dans notre cas, cette fenêtre correspond à "FEN_Menu". Sélectionnez cette fenêtre et validez.
    La première fenêtre du projet correspond à la première fenêtre ouverte au lancement de l'application. Pour plus de détails, consultez Première fenêtre du projet.
  3. Le projet se lance en mode test et la première fenêtre est affichée.
  4. Sélectionnez un produit dans la liste des produits (par exemple le premier) et cliquez sur le bouton "Modifier".
  5. Le détail du produit sélectionné apparaît dans la fenêtre fiche.
  6. Modifiez le prix de 100,23 et saisissez 200,00 puis ensuite cliquez sur le bouton "Valider".
  7. De retour sur la liste des produits, vous pouvez constater que le prix de cet article a été mis à jour.
  8. Affichez à nouveau le détail du produit.
  9. Cliquez sur le bouton "Modifier" sous l'image. Le sélecteur d'images s'affiche. Sélectionnez une image et validez. L'image apparaît dans la fiche.
  10. Cliquez sur le bouton "Annuler". La modification de l'image n'a pas été prise en compte dans le fichier de données.
  11. Fermez l'application en cliquant sur la croix.
Création d'un nouveau produit
Le principe de la création d'un produit va être le suivant :
  • Dans la fenêtre de la liste des produits, nous allons ajouter un champ Bouton "Nouveau" qui va permettre d'ouvrir la fenêtre "Fiche du produit".
  • Nous modifierons ensuite le code de la fenêtre "Fiche du produit" pour gérer l'ajout dans le fichier de données Produit.

Ajout d'un champ Bouton

Pour ajouter un champ Bouton "Nouveau" dans la fenêtre "FEN_Menu" :
  1. Créez un champ Bouton "Nouveau" à partir des champs prédéfinis (nous avons déjà réalisé cette manipulation dans cette leçon, nous ne la détaillerons pas).
  2. Positionnez le champ Bouton "Nouveau" au-dessus du champ Bouton "Modifier" (si nécessaire modifiez la position du champ Bouton "Modifier").
    Interface de la fenêtre sous l'éditeur
  3. Modifiez le code WLangage de ce champ :
    • Sélectionnez le champ si nécessaire et utilisez la touche F2.
    • Dans l'événement "Clic sur", saisissez le code WLangage suivant :
      Produit.RAZ()
      FEN_Fiche_du_produit.Ouvre()
      TABLE_Produit.Affiche(taCourantEnreg)
      Examinons ce code :
      • La fonction <Fichier de données>.RAZ initialise les variables des rubriques du fichier de données "Produit" avec les valeurs par défaut pour gérer un nouvel enregistrement.
      • La fonction <Fenêtre>.Ouvre permet d'ouvrir la fiche du produit pour saisir le nouvel enregistrement.
      • La fonction <Table>.Affiche permet de réafficher le champ Table. Dans ce code, la constante taCourantEnreg est utilisée pour réafficher le champ Table à partir de l'enregistrement courant.
  4. Enregistrez les modifications en cliquant sur Enregistrer un élément parmi les boutons d'accès rapide.
  5. Fermez la fenêtre de code (cliquez sur la croix en haut à droite de l'éditeur de code).

Ajout d'un nouvel enregistrement dans le fichier de données

Maintenant, nous allons modifier la fenêtre de la fiche du produit pour gérer l'ajout d'un nouvel enregistrement.
  1. Affichez la fenêtre "FEN_Fiche_du_produit" sous l'éditeur.
  2. Nous allons modifier le code WLangage associé au champ Bouton "Valider" :
    • Sélectionnez le champ Bouton "Valider" puis utilisez la touche F2.
    • Dans l'événement "Clic sur", remplacez le code WLangage existant par le code suivant :
      Produit.DepuisFenêtre()
      SI Produit..NouvelEnregistrement ALORS
      Produit.Ajoute()
      SINON
      Produit.Modifie()
      FIN
      Ferme()
      Examinons ce code WLangage :
      • La propriété NouvelEnregistrement permet de savoir si l'enregistrement en cours doit être créé.
      • Si la fonction <Fichier de données>.RAZ a été appelée précédemment, la propriété renvoie Vrai (cas du clic sur le bouton "Nouveau") et l'enregistrement doit être créé par la fonction <Fichier de données>.Ajoute.
      • Dans le cas contraire, l'enregistrement en cours existe déjà et doit être modifié par la fonction <Fichier de données>.Modifie.
      • La fonction <Fichier de données>.Ajoute ajoute l'enregistrement dans le fichier de données. Cette fonction prend les valeurs en mémoire et écrit le contenu des rubriques du fichier dans le fichier de données lui-même. Les index sont immédiatement et automatiquement mis à jour. Ici, le fichier de données mis à jour est bien entendu le fichier de données "Produit".
  3. Enregistrez les modifications en cliquant sur Enregistrer un élément parmi les boutons d'accès rapide.
  4. Fermez la fenêtre de code (cliquez sur la croix en haut à droite de l'éditeur de code).

Test de l'ajout d'un produit

Pour tester l'ajout d'un produit :
  1. Lancez le test du projet (Tester le projet parmi les boutons d'accès rapide).
  2. Dans la liste des produits, cliquez sur le bouton "Nouveau".
  3. Saisissez un nouveau produit avec les caractéristiques suivantes :
    • Référence : REF-337
    • Libellé : Surf WD
    • Description : Surf aux couleurs de WINDEV
    • Prix : 150
      Test de la fenêtre d'ajout d'un produit
  4. Validez. Le nouveau produit apparaît dans la liste des produits.
  5. Cliquez à nouveau sur le bouton "Nouveau".
  6. Saisissez un nouveau produit avec les caractéristiques suivantes :
    • Référence : REF-337
    • Libellé : Surf WB
    • Description : Surf aux couleurs de WEBDEV
    • Prix : 150
  7. Validez. Une fenêtre spécifique apparaît :
    Gestion des doublons
    Cette fenêtre signale à l'utilisateur qu'il existe un doublon : en effet, la référence (qui est une clé unique) est identique pour deux produits. Cette fenêtre permet de modifier la valeur de la référence : saisissez par exemple "REF-338".
    Cette fenêtre est une des fenêtres de gestion automatique des erreurs HFSQL, disponible en standard.
Lors de l'ajout ou de la modification d'un enregistrement, plusieurs types d'erreurs peuvent survenir : erreur de doublons, erreur d'intégrité, erreur de mot de passe, etc.
Par défaut, WINDEV propose une gestion automatique des erreurs : pour chaque erreur rencontrée lors de la gestion des enregistrements de la base de données, une fenêtre spécifique est affichée à l'utilisateur. Cette fenêtre permet à l'utilisateur de modifier directement ses données.
Pour plus de détails, consultez Gestion automatique des erreurs.

Visualiser les enregistrements saisis

Les nouveaux enregistrements que nous avons saisis peuvent être visualisés immédiatement dans le champ Table de la fenêtre "FEN_Menu".
Mais dans certains cas, lors de tests par exemple, il peut être nécessaire de voir directement le contenu du fichier de données.
WINDEV propose un outil simple permettant de voir le contenu des fichiers de données pendant le développement de l'application (lorsque par exemple, les fenêtres de visualisation n'ont pas encore été créées).
Cet outil s'appelle WDMAP. Nous allons l'utiliser pour voir le contenu du fichier de données Produit.
Pour lancer WDMAP :
  1. Sous le volet "Outils", dans le groupe "Base de données", cliquez sur "WDMap".
  2. Sélectionnez le fichier de données "Produit". Le contenu du fichier de données s'affiche.
    WDMAP
  3. En triant les éléments par référence (cliquez sur l'entête de la colonne "Référence"), les deux enregistrements que nous avons ajoutés apparaissent.
En résumé
Projet corrigé
Vous voulez vérifier le résultat de vos manipulations ?
Un projet corrigé est disponible. Ce projet contient les différentes fenêtres créées dans cette leçon. Pour ouvrir le projet corrigé, dans la page d'accueil, cliquez sur "Tutoriel" puis dans la zone "Tuto - Application WINDEV : gérer des données", double-cliquez sur "Application complète - Corrigé".
Cette leçon nous a permis de découvrir comment ajouter et modifier un enregistrement dans une base de données via une interface utilisateur. La leçon suivante va nous permettre de réaliser une recherche simple parmi les enregistrements de la base de données.
SommaireLeçon suivante
Version minimum requise
  • Version 2024
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 21/12/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale