Récemment, 4D a introduit un nouveau type de variable : les collections, ainsi qu’un large éventail de méthodes pour les manipuler. Avec 4D v17, les possibilités des collections s’élargissent en permettant d’afficher facilement le contenu d’une collection. Comment ? Des boîtes de liste de type collection!
Le grand avantage de l’utilisation des collections est que vous pouvez afficher des données hétérogènes dans la même colonne. Par exemple, disons que vous avez une collection avec un champ « libre » pour l’utilisateur final. Selon le contexte, l’utilisateur peut parfois saisir un nombre, parfois un texte, parfois une date. Maintenant, vous pouvez tout afficher dans une colonne de boîte de liste sans avoir à forcer un cast.
Pas besoin de convertir votre collection en tableau. Pas de code. Rien de plus simple !
Boîtes de liste de collection : exemple
Comment configurer la boîte de liste
Tout d’abord, choisissez le type de boîte de liste « Collection ». Ensuite, comme source de données, entrez une variable ou une expression qui renvoie une collection.
Vous devez ensuite définir la source de données pour chaque colonne de votre boîte de liste. C’est simple, il suffit de saisir une expression pour chaque colonne de la liste de propriétés, comme vous le feriez pour une liste de type sélection courante.
Pour ce faire, vous devez utiliser la nouvelle commande This . Elle renvoie un objet contenant l’élément qui est en train d’être redessiné. Dans une boîte de liste, cette commande est évaluée pour chaque ligne et permet d’accéder à tous les attributs de l’élément de la collection courante.
Mise en forme du contenu à l’aide d’une expression
Si une boîte de liste de type sélection vous permet de saisir une expression pour définir la couleur de la police, la couleur d’arrière-plan, le style de police, l’état sélectionnable et activé, vous devez toujours indiquer une méthode de projet ou une expression pour chaque action. Avec les boîtes de liste de type collection, c’est encore plus facile, vous pouvez simplement définir tous ces paramètres dans une méthode de projet UNIQUE, la méta-expression.
La meta expression est évaluée pour chaque ligne affichée et renvoie un objet contenant les attributs suivants :
- fillEntrez une couleur CSS pour définir la couleur d’arrière-plan.
- strokeEntrez une couleur CSS pour définir la couleur de la police.
- fontStyleDéfinir la valeur comme « italique » pour appliquer le style italique, sinon la définir comme « normale ».
- fontWeightset value as « bold » to apply the bold style, else set it to « normal » : set value as « bold » to apply the bold style, else set it to « normal ».
- textDecoration: définissez la valeur « underline » pour appliquer le style de soulignement, sinon définissez-la à « normal ».
- unselectable: entrez un booléen pour définir si la ligne est sélectionnable ou non.
- disabledEntrez un booléen pour activer ou désactiver la ligne.
Si l’attribut n’existe pas, 4D utilise la valeur par défaut.
Par exemple, vous pouvez lier la méta-expression « Decorate » à la zone de liste. La méthode Decorate contient le code suivant :
If (This.value>10)
$0 :=New object("fill" ; "red" ; "stroke" ; "white" ; "fontWeight" ; "bold")
Else
$0 :=New object("fill" ; "blue")
End if
Dans cet exemple, si l’attribut « value » est supérieur à 10, l’arrière-plan de la ligne sera rouge avec du texte blanc en gras. Si l’attribut « value » est inférieur à 10, l’arrière-plan de la ligne sera bleu.
Récupérer le ou les éléments sélectionnés
Avec les propriétés « Current item » et « Current item position », vous pouvez récupérer les objets de l’élément courant de la collection, ainsi que leur position.
La propriété « Selected items » permet de récupérer une collection des éléments sélectionnés dans la zone de liste. Vous pouvez même définir cette nouvelle collection comme source de données pour une autre boîte de liste. Ainsi, sans une seule ligne de code, vous pouvez afficher le sous-ensemble d’une boîte de liste dans une autre.
Du côté des commandes 4D
Les commandes 4D du thème « List box » ont été mises à jour pour prendre en charge le type de collection. Quelques exemples : LISTBOX SORT COLUMN, LISTBOX INSERT COLUMN FORMULA, LISTBOX SET COLUMN FORMULA, etc. Pour plus de détails, consultez la liste complète des commandes 4D du thème « List box ».