Introduction

Le but de la saisie intuitive est d'offrir à l'utilisateur, pendant qu'il tape des caractères dans un champs de saisie, une vue des valeurs possibles sous forme d'une liste déroulante.

Utilisation

Pour permettre l'utilisation d'une saisie intuitive, il faut utiliser un objet Liste de valeurs dont la propriété Type sera positionnée à la valeur Simple.


En Initialisation de la fenêtre, pour que l'objet ne présente pas de liste de valeur, on fixera sa hauteur à la hauteur du seul champs de saisie.

/* ___ On ne voit que la partie "Champs de saisie" ____________________________
Lsv_Saisie:Hauteur = 20

Sur l'événement ChangementValeur de l'objet Liste de valeurs, on alimente la liste des valeurs possibles en fonction des caractères tapés, puis on ajuste la hauteur de la liste en fonction du nombre d'éléments à afficher.
Si on veut que la liste ait une hauteur maximale il faudra veiller à ce qu'elle ne la dépasse pas :

/* ___ Alimentation de la liste avec les valeurs correspondant à ______________
/* ___ la saisie effectuée ____________________________________________________

Vider_Lst Lsv_Saisie:liste 
Lecture_Lst lst_Mois 
   Si elt_mois Commence_Par Lsv_Saisie:valeur 
      Lsv_Saisie:valeur_courante = elt_mois 
      Inserer_Elt Lsv_Saisie:liste 
   Fin 
Fin_Lecture_Lst 

/* ___ On ajuste la hauteur de la liste de valeurs en fonction ________________
/* ___ du nombre d'éléments à afficher dans la liste __________________________

Lsv_Saisie:hauteur = 20 + &nbr_elt(Lsv_Saisie:liste)* 15 
Si &Nbr_Elt(Lsv_Saisie:liste) >= 1 
   Lsv_Saisie:hauteur = Lsv_Saisie:hauteur + 5 
Fin 

/* ___ On veut que la liste ait une hauteur maximale __________________________

Si  Lsv_Saisie:hauteur > 150
  Lsv_Saisie:hauteur = 150
Fin

Sur l'événement GainFocus de l'objet Liste de valeurs, on ajuste la hauteur de la liste de valeurs en fonction du nombre d'éléments à afficher.
Si on veut que la liste ait une hauteur maximale il faudra veiller à ce qu'elle ne la dépasse pas :

/* ___ On ajuste la hauteur de la liste de valeurs en fonction ________________
/* ___ du nombre d'éléments à afficher dans la liste __________________________

Lsv_Saisie:hauteur = 20 + &nbr_elt(Lsv_Saisie:liste)* 15 
Si &Nbr_Elt(Lsv_Saisie:liste) >= 1 
   Lsv_Saisie:hauteur = Lsv_Saisie:hauteur + 5 
Fin 

/* ___ On veut que la liste ait une hauteur maximale __________________________

Si  Lsv_Saisie:hauteur > 150
  Lsv_Saisie:hauteur = 150
Fin

Sur l'événement PerteFocus de l'objet Liste de valeurs, on ajuste la hauteur de la liste de valeurs à celle du seul champs de saisie.

/* ___ On ne voit que la partie "Champs de saisie" ____________________________
Lsv_Saisie:hauteur = 20

Pour aller plus loin...

Dans un but d'optimisation, on peut ne charger la liste qu'après qu'un certain nombre de caractères aient été tapés ou encore qu'un temps de latence ait été atteint depuis la dernière frappe.
De même, lorsqu'on ajoute un caractère au champs de saisie, on pourrait éliminer des valeurs de la liste plutôt que d'alimenter de nouveau la liste à partir de la base de données.