Listbox : saisie avec liste déroulante dont le contenu varie à la ligne

Bonjour,

J’ai une Listbox de type tableau.
Je voudrais que le contenu d’une colonne qui est un choix de valeurs finies varie selon le contexte de la ligne.

Autrement dit que je voudrais que la saisie de la cellule d’une colonne soit une liste déroulante dont le contenu est variable selon d’autres éléments contenus dans la ligne.

Exemple : j’ai une liste de fichiers avec un fichier par ligne de listbox, j’ai une liste de filtres de conversion, un filtre étant lié à une ou plusieurs extensions de fichiers. Je voudrais afficher pour chaque ligne uniquement les filtres de conversions cohérents avec l’extension du nom de fichier.

  1. La seule manière de mettre une liste déroulante dans une colonne de listbox est d’utiliser les énumérations (listes).
    Existe-t-il une autre manière ?

  2. Comment faire varier le contenu ? Il existe des événements dans les listboxes pour prendre la main avant et après la saisie mais changer dynamiquement le contenu de l’énumération perturbe les autres lignes.
    Cela ne me semble pas souhaitable comme méthode de toutes manières.

Des idées ?

Merci

Vincent

https://doc.4d.com/4Dv17/4D/17.2/Utiliser-des-tableaux-objets-dans-les-colonnes-4D-View-Pro.300-4403073.fr.html4D View Pro >

Bonjour,

Voici la méthode que j’utilise :

1 - définir une liste vide et l’affecter à la colonne (pour avoir la flèche)
2 - pour la colonne, la déclarer comme saisissable et activer l’événement On Before Data Entry
3 - dans la méthode objet, déclarer C_LONGINT($0) et initialiser $0 := -1
4 - pour l’événement_ On Before Data Entry_, créer un menu que vous remplissez en fonction d’une information contenue dans la ligne par exemple et l’afficher avec la commande Dynamic pop up menu récupérer le choix de l’utilisateur et faire ce que vous voulez avec…

note : vous pouvez positionner le menu contextuel sous la cellule courante en récupérant sa position avec la commande LISTBOX GET CELL COORDINATES et en passant à la commande Dynamic pop up menu une valeur par défaut vide (pour que le menu ne soit pas automatiquement déplacé) et les coordonnées x = gauche de la cellule et y = bas de la cellule

Méthode éprouvée et largement utilisée dans l’interface de 4D for iOS par exemple.

Bonjour,

Ce qui je fais de mon cote est une association de la colonne avec un énumération vide pour avoir le triangle indiquant la présence d<une liste et j<utilise la commande pop un menu dynamique pour faire apparaître un menu qui sera dans le contexte de ma ligne.

Merci pour ces réponses (et les précisions de Vincent).

Je viens d’essayer et cela convient parfaitement.

Vincent

Tu as vu la possibilité d’utiliser des tableaux objets dans les colonnes de listbox ? Comme dit par Manuel, ça nécessite la licence 4D View Pro mais par contre ça permet de faire beaucoup de choses…

https://livedoc.4d.com/4D-Mode-Developpement-17.2/List-box/Utiliser-des-tableaux-objets-dans-les-colonnes-4D-View-Pro.300-4403073.fr.html

Oui j’ai vu, Manuel l’a donné en solution possible, mais le problème est que nous n’avons pas de licence 4D view Pro pour le moment.

Difficile de motiver un budget (200 utilisateurs) pour une fonction annexe qui moi me parait légitime à être incluse dans la listbox nativement.

Peut être plus tard, quand nous aurons d’autres besoins nécessitant 4D View Pro.

Vincent