|
|
|
|
|
- Présentation
- Comment le faire ?
- Activer ou désactiver la persistance d'un champ dans une fenêtre
- Fonctionnement
- Analyse du fonctionnement
- Paramétrage
- Fonctionnement avancé
- Mémorisation des variables globales d'un projet
- Mise en place
- Optimisation
- Mémorisation des variables globales d'un projet
- Optimisation
- Gestion de la persistance des données avec les fonctions du WLangage
La persistance des données permet de conserver la valeur saisie par l'utilisateur. Quand l'utilisateur saisit une valeur dans un champ d'une fenêtre, cette valeur sera de nouveau présente dans le champ lors de la prochaine ouverture de la fenêtre. Cette fonctionnalité sera appréciée dans le cas d'une saisie de login, de recherches, de paramètres quasi-constants, de choix par défaut, ... Cette fonctionnalité est disponible sur tous les champs permettant une saisie. Cette fonctionnalité est également disponible pour une sélection de valeurs dans un champ Sélecteur ou Interrupteur.
Activer ou désactiver la persistance d'un champ dans une fenêtre Pour activer ou désactiver la persistance d'un champ dans une fenêtre : - Affichez la fenêtre de description du champ.
- Dans l'onglet "Détail", cochez (ou décochez) l'option "Mémoriser la valeur".
Par défaut, les valeurs des champs "persistants" sont stockées dans la base de registre (ou le fichier équivalent sur la plateforme d'exécution). Par exemple : - Sous Android, les valeurs persistantes sont sauvegardées dans les préférences partagées (Shared Preferences) de l'application.
- Sous iOS, les valeurs persistantes sont sauvegardées dans les paramètres de l'application ("NSUserDefault").
Analyse du fonctionnement Lorsque le mécanisme de persistance d'un champ est activé : - Le contenu du champ est mémorisé lors de la fermeture de l'application.
Ces informations sont stockées par défaut dans la base de registre dans la clé "HKEY_CURRENT_USER\Software\<Société>\<Nom du projet>". Cette clé peut être connue par programmation grâce à la fonction ProjetInfo. - Lors du lancement suivant de l'application, le mécanisme de persistance restaure les champs mémorisés dans leur état précédent. Cette restauration des valeurs est effectuée entre le code de déclaration de la fenêtre et le code d'initialisation de la fenêtre.
L'affectation de la valeur d'un champ se fait donc suivant l'ordre d'affectation suivant : - Valeur définie dans l'onglet "Contenu" de la description du champ.
- Exécution du code d'initialisation du champ. Ce code peut initialiser et modifier la valeur initiale du champ.
- Valeur persistante (enregistrée dans la base de registre, dans un fichier de paramètre, ...). Si une valeur persistante a été définie pour le champ, c'est cette valeur qui est affectée au champ.
- Exécution du code d'initialisation de la fenêtre. Ce code peut initialiser et modifier la valeur affectée au champ.
De plus, afin de garder la compatibilité avec le fonctionnement existant de l'application : - les traitements de modification des champs affectés "automatiquement" sont exécutés.
- les codes de sélection des champs Liste et Combo sont exécutés.
Si le traitement de modification ou de sélection du champ ne doit pas être exécuté, il est possible de conditionner son exécution de la façon suivante :
// Code de sélection d'une ligne d'un champ Combo // ou code de modification d'un champ SI OUVERTURE ALORS RETOUR Dans ce cas, la suite du traitement n'est pas exécutée si l'appel de ce code est provoqué dès l'ouverture de la fenêtre, lors de la restauration des valeurs mémorisées. Paramétrage Les informations de persistance sont stockées par défaut dans la base de registre (ou le fichier équivalent sur la plateforme d'exécution). Il est bien entendu possible de modifier la méthode et la localisation de ces informations grâce à la fonction InitParamètre. Cette fonction accepte deux paramètres : - La méthode de stockage des données :
- Document au format XML (non disponible en version Mobile).
- Fichier de configuration (.ini).
- Base de registre.
- Chaîne au format XML (par exemple pour être envoyée par Socket ou protocole HTTP).
- La localisation correspondant à la méthode spécifiée dans le premier paramètre (chemin du document XML, chemin dans la base de registre ou chemin du fichier de configuration).
Exemple :
// Utilisation d'un fichier de configuration (.ini) InitParamètre(paramIni, "C:\temp\MaConfig.ini") La lecture et la sauvegarde des données de persistance restent identiques : seule la méthode de stockage (et la localisation) est modifiée. Mémorisation des variables globales d'un projet Le mécanisme de persistance permet non seulement de mémoriser des champs, mais également des variables ou tout autre information nécessaire à une application. Il devient alors inutile de gérer "à la main" un fichier de configuration pour mémoriser le contenu des variables globales d'un projet (chemin des données, date de dernière connexion, nom de l'utilisateur, mémorisation du mot de passe, ...). Mise en place Il est nécessaire d'utiliser les fonctions ChargeParamètre et SauveParamètre. - Le nom du paramètre à restaurer (nom logique), par exemple le nom de la variable correspondante.
- La valeur par défaut du paramètre (si ce paramètre n'a jamais été sauvegardé ou utilisé).
// Chargement d'un paramètre de type entier gnNbLancement = ChargeParamètre(CS_NB_LANCEMENT) // Chargement d'un paramètre de type date gdDateDernierLancement = ChargeParamètre(CS_DATE_LANCEMENT) // Chargement d'un paramètre de type heure ghHeureDernierLancement = ChargeParamètre(CS_HEURE_LANCEMENT) Il n'est pas nécessaire de gérer le type de paramètre : le type du paramètre est entièrement géré par le mécanisme de persistance (inutile, par exemple, d'utiliser la fonction Val pour récupérer une valeur numérique). - Le nom du paramètre à sauvegarder (nom logique). Ce nom est utilisé dans la fonction ChargeParamètre.
- La valeur du paramètre.
// Mémorisation d'un paramètre de type entier SauveParamètre(CS_NB_LANCEMENT, gnNbLancement) // Mémorisation d'un paramètre de type date SauveParamètre(CS_DATE_LANCEMENT, gdDateDernierLancement) // Mémorisation d'un paramètre de type heure SauveParamètre(CS_HEURE_LANCEMENT, ghHeureDernierLancement) Les informations stockées par la fonction SauveParamètre sont stockées en utilisant la méthode et la localisation spécifiées par la fonction InitParamètre (par défaut, ces informations sont donc stockées dans la base de registre). Note : Bien entendu, il est possible d'utiliser plusieurs méthodes et/ou plusieurs fichiers de sauvegarde dans une même application. Mémorisation des variables globales d'un projet Une optimisation peut parfois être nécessaire lorsque l'application effectue des traitements longs. En effet, les codes de modification des champs "restaurés" sont exécutés. Si un de ces champs contient un code potentiellement long, il peut être intéressant de ne pas exécuter tous les codes de modification pendant la phase de restauration des champs. Exemple : Cas d'une fenêtre de recherche multi-critères utilisant le mécanisme de persistance - Au premier lancement, aucun champ n'a de valeur mémorisée, le fonctionnement est "classique".
- A la fin de l'application, le mécanisme de persistance mémorise les critères de recherche sélectionnés par l'utilisateur.
- Au lancement de l'application, les champs mémorisés sont restaurés et les codes de modification des champs sont exécutés.
- Si ces codes de modification lancent une exécution de la recherche (cas courant pour un sélecteur), la recherche va être effectuée avec des critères différents pour chaque champ mémorisé ! Cette opération peut alors être très pénalisante selon les recherches réalisées.
Optimisation Dans ces cas particuliers, il suffit de "désactiver" les traitements potentiellement longs pendant leur restauration automatique. Il est possible d'utiliser la méthode suivante : - Déclaration d'une variable globale de fenêtre de type booléen dans la fenêtre concernée.
// Code de déclaration de la fenêtre GLOBAL gbRestaurationEnCours est un booléen - Initialisation de cette variable à "Vrai" dans le code de déclaration de la fenêtre.
// Code de déclaration de la fenêtre gbRestaurationEnCours = Vrai - Ajout d'un test sur cette variable dans les traitements potentiellement longs. Si cette variable est positionnée à la valeur "Vrai", le traitement n'est pas réalisé (restauration en cours des champs par le mécanisme de persistance).
// Traitement potentiellement long SI gbRestaurationEnCours = Vrai ALORS RETOUR ... - Affectation de cette variable à "Faux" dès le début du code d'initialisation de la fenêtre pour reprendre le fonctionnement normal de l'application.
// Code d'initialisation de la fenêtre gbRestaurationEnCours = Faux
Gestion de la persistance des données avec les fonctions du WLangage La persistance des données peut également être gérée par programmation via les fonctions :
Liste des exemples associés :
|
Exemples didactiques (WINDEV) : WD Persistance
[ + ] Cet exemple montre l'utilisation des fonctions InitParamètre, ChargeParamètre, SauveParamètre. Ces fonctions permettent de configurer la sauvegarde de champs, de variables et de tout autre paramètre. Cet exemple est décomposé en trois parties : - La configuration - La gestion manuelle de variables (Fonctions SauveParamètre et ChargeParamètre) - L'optimisation 1°) Configuration La fenêtre de configuration vous permet de modifier l'emplacement de la sauvegarde des paramètres (Base de registre, fichier INI, fichier XML) ainsi que son chemin (clé de registre ou le chemin du fichier). 2°) Gestion Manuelle de variables La gestion manuelle vous permet de sauvegarder le contenu de variables grâce à la fonction SauveParamètre et de les restaurer grâce à la fonction ChargeParamètre. Chaque paramètre est identifié par un nom. Ces valeurs sont sauvegardées à l'emplacement défini dans la fenêtre de configuration. 3°) L'optimisation Cette fenêtre vous explique comment optimiser votre code pour éviter les lenteurs dues à la restauration des valeurs sauvegardées. En effet, lors de la restauration de la valeur d'un champ, son code de modification est exécuté. Si vous avez des traitements longs (Requêtes paramétrées ou autres), cette fenêtre vous montre comment accélérer le chargement de la fenêtre.
|
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|