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.