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.
 

Exemple
* 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.
 

LSV:GainFocus
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.
 

COL:ChangementValeur
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.
 
 

COL_DER:GainFocus
W_NOM_COL = 'COL_DER' 
COL_DER:PerteFocus
W_NOM_COL = *BLANK 
COL_DER:MNU_TOUCHE_ENTREE
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.
 

BTN_VALIDER:BoutonGaucheClic
LECTURE_LST LST 
   * Création / Mise à jour de la Base de Données en fonction des informations de la liste LST. 
FIN_LECTURE_LST