Introduction
Le but est d'avoir une liste LST en mise à jour avec une liste valeur LSV en colonne de la liste et ayant des éléments différents en fonction de la valeur d'une colonne COL de la liste.
Sur la dernière colonne COL_DER en modification de la dernière ligne, la touche Entrée, doit ajouter une ligne.
Mise en œuvre
En fin d'initialisation de la liste, il faut appeler la méthode Fixer_Mode_Execution avec la constante _Lst_Mode_Saisie, pour pouvoir être directement en saisie sur les cellules de la liste.
* Après initialisation de la liste et de la LSV en fonction de COL. APPELER_METHODE LST FIXER_MODE_EXECUTION _LST_MODE_SAISIE *VRAI W_RET_N2
Sur l'événement gain focus de la liste LSV, il faut charger la liste de la LSV en fonction de la COL décideuse. Pour cela il faut récupérer la valeur de cette COL avec la méthode Recuperer_Valeur_Colonnes.
APPELER_METHODE LST RECUPERER_VALEUR_COLONNES 0 W_RET_BO * Et donc tester ici la valeur COL pour charger la LSV en fonction de la valeur de COL. * Note : le paramètre "0" (zéro) précise la ligne courante.
Sur le changement de la valeur de la COL décideuse, il faut charger la LSV de ligne correspondante en fonction de la valeur de la COL.
Pour cela il faut utiliser les méthodes Recuperer_Valeur_Colonnes et Recuperer_Proprietes_Colonnes puis ayant chargé la LSV en fonction de COL, utiliser les méthodes Fixer_Proprietes_Colonnes et Fixer_Valeur_Colonnes.
APPELER_METHODE LST RECUPERER_VALEUR_COLONNES 0 W_RET_BO APPELER_METHODE LST RECUPERER_PROPRIETES_COLONNES 0 W_RET_BO * * En fonction de la valeur de la colonne COL, on charge ici la LSV et la valeur visible de la LSV. * APPELER_METHODE LST FIXER_PROPRIETES_COLONNES 0 W_RET_BO APPELER_METHODE LST FIXER_VALEUR_COLONNES 0 W_RET_BO * Note : le paramètre "0" (zéro) précise la ligne courante.
Pour savoir si on se trouve sur COL_DER de la LST et de sa dernière ligne, afin que la touche Entrée ajoute une ligne, il faut mémoriser cette information sur un gain focus et gérer une interception de la touche Entrée via un menu ayant cette touche en raccourci secondaire dans les touches accélératrices.
W_NOM_COL = 'COL_DER'
W_NOM_COL = *BLANK
SI W_NOM_COL = 'COL_DER' SI LST:NUMERO_LIGNE_COURANTE = &NBR_ELT(LST:LISTE) * Renseignement des valeurs initiales des colonnes de la liste INSERER_ELT LST:LISTE * Appel de la méthode Mettre_Focus sur la première colonne en saisie, * avec en paramètre le numéro de la dernière ligne insérée. FIN FIN
Sur un Bouton de Validation, nous pourrons lire la liste LST complète, afin d'effectuer la mise à jour de la Base de Données.
LECTURE_LST LST * Création / Mise à jour de la Base de Données en fonction des informations de la liste LST. FIN_LECTURE_LST