Selectionner une ligne dans une ListeBox

Bonjour,

J’ai un petit souci, bien embêtant, pour pouvoir sélectionner une ligne de ma ListBox.
J’ai une listeBox avec 4 colonnes (dont 2 alpha) et plus de 100 lignes.

Ce que je voudrais, c’est pouvoir cliquer sur la première ligne et lorsque je tape un caractère au clavier, que cela sélectionne la première ligne qui commence par ce caractère (par exemple, je tape R, cela me sélectionne la première ligne qui commence par R)

J’ai essayé avec les “evenements formulaire” mais “sur avant frappe clavier”,“apres frappe clavier” et “avant saisie” ne fonctionnent pas.

J’ai essayé en cochant tous les événements disponibles sur mon champs et tester l’événement qui pourrait se déclencher lorsque j’appuie sur une touche, mais aucun événement ne se déclenche.

Là, je désespère car cette fonction me parait basique pour des listes (en tout cas sur les autres plateformes de dev, c’est prévu par défaut) mais ne semble pas exister en 4D

Si vous avez des pistes, je suis preneur

F. BOUSSON

Bonjour,

Vous pouvez utiliser ON EVENT CALL
Dans la documentation vous verrez comment savoir qu’elle touche a été sélectionnée

Bonne journée
R. Schambourg

https://doc.4d.com/4Dv17R3/4D/17-R3/ON-EVENT-CALL.301-3906165.en.html

: Fredd BOUSSON

J’ai essayé avec les “evenements formulaire” mais “sur avant frappe
clavier”,“apres frappe clavier” et “avant saisie” ne fonctionnent pas.
Ces événements fonctionnent, mais ils ne sont déclenchés que dans le contexte de la méthode objet d’une zone de saisie : il faut comprendre “sur frappe dans une zone de saisie”.

La sélection via la frappe d’une touche existe, mais pas dans les listbox, seulement dans les listes hiérarchiques. Dans une listbox, tu as la solution proposée par Robert. Également faire cela avec un bouton qu’on duplique 26 fois (A à Z), avec la lettre correspondante comme raccourci (objet fixer equivalent clavier).

Je ne sais pas quel est le contexte, mais je penserais plus à la classique zone de saisie pour la recherche, c’est très “familier” pour un utilisateur ; il peut saisir plus d’une lettre, effacer en cas de faute de frappe, etc. C’est aussi plus ouvert vers d’autres implémentations qui pourraient te venir à l’idée.

[]28018908;“Selection d’une ligne”[/]

Merci pour les pistes, mais cela ne peut pas convenir à mon cas
En effet, une fois la ligne sélectionnée, cela affiche une zone WP et donc la mise en place de l’EVENT pour savoir quelle touche est appuyée ou bien les raccourcis clavier pour chaque lettre ne peut pas aller car dés qu’on tape du texte dans la zone WP, cela déclenche le bouton/Event

J’ai mis un bouton “loupe” où l’utilisateur peut taper un début de mot et cela filtre les lignes de la ListeBox (et donc supprime les autres lignes)

Je vous ai mis une copie écran de ma fenêtre.

OK, merci pour la copie, on voit mieux. Je pense que j’opterais pour la zone de saisie, du genre elle cherche par défaut dans toutes les colonnes visibles, et dans la colonne spécifiée par l’utilisateur s’il veut “étroitiser” la recherche.