Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Utiliser des tableaux objets dans les colonnes
|
valueType | Widget par défaut | Widget(s) alternatif(s) |
text | zone de saisie de texte | menu déroulant (enumération obligatoire) ou combo box (enumération) |
real | zone de saisie de texte contrôlée (nombre et séparateurs) | menu déroulant (enumération obligatoire) ou combo box (enumération) |
integer | zone de saisie de texte contrôlée (nombre) | menu déroulant (enumération obligatoire) ou combo box (enumération) ou case à cocher trois états |
boolean | case à cocher | menu déroulant (enumération obligatoire) |
color | couleur de fond | texte |
event | bouton avec libellé | |
Tous les widgets peuvent associer un unit toggle button ou ellipsis button à la cellule. |
Vous définissez l'affichage de la cellule et les variations à l'aide d'attributs spécifiques dans chaque objet (voir ci-dessous).
Il n'est pas possible de choisir un format d'affichage et/ou un filtre de saisie pour les colonnes objet des list box, ces paramètres sont automatiquement définis en fonction du type de valeur. Ils sont listés dans le tableau suivant :
valueType | Format défaut | Contrôle de saisie |
text | le même que celui de l'objet | pas de contrôle (tout caractère accepté) |
real | le même que celui de l'objet (utilisation du séparateur décimal système) | "0-9", "." et "-" |
"0-9" et "." si min>=0 | ||
integer | le même que celui de l'objet | "0-9" et "-" |
"0-9" si min>=0 | ||
Boolean | case à cocher | N/A |
color | N/A | N/A |
event | N/A | N/A |
Chaque élément du tableau d'objets est un objet qui peut contenir un ou plusieurs attributs qui définiront le contenu de la cellule et l'affichage des données (voir exemple ci-dessus).
L'unique attribut obligatoire est "valueType" et ses valeurs acceptées sont "text", "real", "integer", "boolean", "color" et "event". Le tableau suivant liste tous les attributs acceptés dans les tableaux d'objets des list box, suivant la valeur de "valueType" (tout autre attribut est ignoré). Les formats d'affichage et des exemples sont fournis ci-dessous.
valueType | text | real | integer | boolean | color | event | |
Attributs | Description | ||||||
value | valeur de la cellule (saisie ou affichage) | x | x | x | |||
min | valeur minimum | x | x | ||||
max | valeur maximum | x | x | ||||
behavior | valeur "threeStates" | x | |||||
requiredList | menu déroulant défini dans l'objet | x | x | x | |||
choiceList | combo box défini dans l'objet | x | x | x | |||
requiredListReference | RefList 4D, dépend de la valeur de "saveAs" | x | x | x | |||
requiredListName | nom d'énumération 4D, dépend de la valeur de "saveAs" | x | x | x | |||
saveAs | "reference" ou "value" | x | x | x | |||
choiceListReference | RefList 4D, affiche une combo box | x | x | x | |||
choiceListName | nom d'énumération 4D, affiche une combo box | x | x | x | |||
unitList | tableau de X éléments | x | x | x | |||
unitReference | indice de l'élément sélectionné | x | x | x | |||
unitsListReference | RefList 4D pour les unités | x | x | x | |||
unitsListName | nom d'énumération 4D pour les unités | x | x | x | |||
alternateButton | ajouter un bouton alternatif | x | x | x | x | x |
La valeur des cellules est stockée dans l'attribut "value". Cet attribut est utilisé pour la saisie (entrée) et pour l'affichage (sortie). Il peut également être utilisé pour définir des valeurs par défaut lors de l'utilisation des listes (voir ci-dessous).
Exemple :
TABLEAU OBJET(obColumn;0) //tableau de la colonne
C_OBJET($ob1)
$entry:="Hello world!"
OB FIXER($ob1;"valueType";"text")
OB FIXER($ob1;"value";$entry) // si l'utilisateur saisit une valeur, $entry contiendra la nouvelle valeur
C_OBJET($ob2)
OB FIXER($ob2;"valueType";"real")
OB FIXER($ob2;"value";2/3)
C_OBJET($ob3)
OB FIXER($ob3;"valueType";"boolean")
OB FIXER($ob3;"value";Vrai)
AJOUTER A TABLEAU(obColumn;$ob1)
AJOUTER A TABLEAU(obColumn;$ob2)
AJOUTER A TABLEAU(obColumn;$ob3)
Note : La valeur Null est acceptée, elle définit une cellule vide.
Lorsque "valueType" est "real" ou "integer", l'objet accepte également des attributs min et max avec des valeurs appropriées (les valeurs doivent être du même type que le "valueType").
Ces attributs peuvent être utilisés pour définir un intervalle de valeurs saisissables. Lorsqu'une cellule est validée (lorsqu'elle perd le focus), si la valeur saisie est inférieure à la valeur min ou supérieure à la valeur max, elle est alors rejetée. Dans ce cas, la valeur précédente est réappliquée et une info-bulle d'explication est affichée.
Exemple :
C_OBJET($ob3)
$entry3:=2015
OB FIXER($ob3;"valueType";"integer")
OB FIXER($ob3;"value";$entry3)
OB FIXER($ob3;"min";2000)
OB FIXER($ob3;"max";3000)
L'attribut behavior propose des variations de la représentation standard des valeurs. Dans la version actuelle de 4D, une seule variation est possible :
Attribut | Valeur(s) disponible(s) | valueType(s) | Description |
behavior | threeStates | integer | Représente une valeur numérique sous forme de case à cocher à trois états. 2=intermédiaire, 1=cochée, 0=non cochée, -1=invisible, -2=non cochée désactivée, -3=cochée désactivée, -4=intermédiaire désactivée |
Example :
C_OBJET($ob3)
OB FIXER($ob3;"valueType";"integer")
OB FIXER($ob3;"value";-3)
C_OBJET($ob4)
OB FIXER($ob4;"valueType";"integer")
OB FIXER($ob4;"value";-3)
OB FIXER($ob4;"behavior";"threeStates")
Lorsqu'un attribut "choiceList" ou "requiredList" est présent dans l'objet, la zone de saisie de texte est remplacée par une liste déroulante ou une combo box, en fonction de l'attribut :
Dans les deux cas, vous pouvez utiliser un attribut "value" pour présélectionner une valeur dans le widget.
Note : Les valeurs du widget sont définies via un tableau. Si vous souhaitez associer le widget à une énumération 4D existante, vous devez utiliser les attributs "requiredListReference", "requiredListName", "choiceListReference" ou "choiceListName".
Exemples :
TABLEAU TEXTE($RequiredList;0)
AJOUTER A TABLEAU($RequiredList;"Open")
AJOUTER A TABLEAU($RequiredList;"Closed")
C_OBJET($ob)
OB FIXER($ob;"valueType";"text")
OB FIXER($ob;"value";"Closed")
OB FIXER TABLEAU($ob;"requiredList";$RequiredList)
TABLEAU ENTIER LONG($ChoiceList;0)
AJOUTER A TABLEAU($ChoiceList;5)
AJOUTER A TABLEAU($ChoiceList;10)
AJOUTER A TABLEAU($ChoiceList;20)
AJOUTER A TABLEAU($ChoiceList;50)
AJOUTER A TABLEAU($ChoiceList;100)
C_OBJET($ob)
OB FIXER($ob;"valueType";"integer")
OB FIXER($ob;"value";10) //10 comme valeur par défaut
OB FIXER TABLEAU($ob;"choiceList";$ChoiceList)
Les attributs "requiredListName" et "requiredListReference" vous permettent d'utiliser, dans une cellule de list box, une énumération définie dans 4D soit en mode Développement (via l'éditeur d'Enumérations de la Boîte à outils) soit par programmation (à l'aide de la commande Nouvelle liste). La cellule sera alors affichée sous forme de liste déroulante, ce qui signifie que l'utilisateur pourra uniquement choisir une des valeurs fournies dans la liste.
Utilisez "requiredListName" ou "requiredListReference" en fonction de la provenance de la liste : si la liste provient de la Boîte à outils, utilisez son nom ; sinon, si la liste a été définie par programmation, passez sa référence. Dans les deux cas, vous pouvez utiliser un attribut "value" pour présélectionner une valeur dans le widget.
Note: Si vous souhaitez définir des valeurs d'énumération via un simple tableau, vous pouvez utiliser l'attribut "requiredList".
Dans ce contexte, l'attribut "saveAs" peut être utilisé afin de définir si l'élément sélectionné doit être sauvegardé en tant que valeur ("value") ou en tant que référence ("reference") :
Pour plus d'informations sur l'option "save as", reportez-vous à la section Enregistrer comme Valeur ou Référence du manuel Mode Développement.
Note : Si la liste contient du texte représentant des valeurs réelles, le séparateur décimal doit être le point ("."), quels que soient les paramètres locaux, ex : "17.6" "1234.456".
Exemples :
C_OBJET($ob)
OB FIXER($ob;"valueType";"text")
OB FIXER($ob;"saveAs";"value")
OB FIXER($ob;"value";"bleu")
OB FIXER($ob;"requiredListName";"colors")
<>List:=Nouvelle liste
AJOUTER A LISTE(<>List;"Paris";1)
AJOUTER A LISTE(<>List;"London";2)
AJOUTER A LISTE(<>List;"Berlin";3)
AJOUTER A LISTE(<>List;"Madrid";4)
C_OBJET($ob)
OB FIXER($ob;"valueType";"integer")
OB FIXER($ob;"saveAs";"reference")
OB FIXER($ob;"value";2) //affiche London by default
OB FIXER($ob;"requiredListReference";<>List)
Les attributs "choiceListName" et "choiceListReference" permettent d'utiliser, dans une cellule de list box, une énumération définie dans 4D soit en mode Développement (via l'éditeur de la Boîte à outils) soit par programmation (à l'aide de la commande Nouvelle liste). La cellule sera alors affichée sous forme de combo box, ce qui signifie que l'utilisateur pourra choisir une des valeurs de la liste ou en saisir une.
Utilisez "choiceListName" ou "choiceListReference" en fonction de la provenance de la liste : si la liste provient de la Boîte à outils, utilisez son nom ; sinon, si la liste a été définie par programmation, passez sa référence. Dans les deux cas, vous pouvez utiliser un attribut "value" pour présélectionner une valeur dans le widget.
Note : Si vous souhaitez définir des valeurs d'énumération via un simple tableau, vous pouvez utiliser l'attribut "choiceList".
Dans ce contexte, l'attribut "saveAs" ne peut pas être utilisé car les éléments sélectionnés sont automatiquement stockés en tant que valeurs (cf. ).
Note : Si la liste contient du texte représentant des valeurs réelles, le séparateur décimal doit être le point ("."), quels que soient les paramètres locaux, ex : "17.6" "1234.456".
Exemple :
Vous voulez afficher une combo box basée sur une énumération nommée "colors" définie dans la Boîte à outils (contenant les valeurs "bleu", "jaune" et "vert") et afficher "vert" par défaut :
C_OBJET($ob)
OB FIXER($ob;"valueType";"text")
OB FIXER($ob;"value";"vert")
OB FIXER($ob;"choiceListName";"colors")
Vous pouvez utiliser des attributs spécifiques afin d'associer des unités aux valeurs des cellules (par exemple "10 cm", "20 pixels", etc.). Pour définir une liste d'unités, vous pouvez utiliser l'un des attributs suivants :
Quel que soit son mode de définition, la liste d'unités peut être associée à l'attribut suivant :
L'unité courante est affichée sous forme de bouton affichant successivement les valeurs de "unitList", "unitsListReference" ou "unitsListName" à chaque clic (par exemple "pixels" -> "lignes" -> "cm" -> "pixels" -> etc.)
Exemple : Vous souhaitez définir une valeur de saisie numérique suivie d'une unité parmi deux possibles : "cm" ou "pixels". La valeur courante est "2" + "cm". Vous utilisez des valeurs définies directement dans l'objet (attribut "unitsList") :
TABLEAU TEXTE($_units;0)
AJOUTER A TABLEAU($_units;"cm")
AJOUTER A TABLEAU($_units;"pixels")
C_OBJET($ob)
OB FIXER($ob;"valueType";"integer")
OB FIXER($ob;"value";2) // 2 "units"
OB FIXER($ob;"unitReference";1) //"cm"
OB FIXER TABLEAU($ob;"unitsList";$_units)
Si vous souhaitez ajouter un bouton d'ellipse [...] dans une cellule, il suffit de passer l'attribut "alternateButton" avec la valeur vrai dans l'objet. Le bouton sera automatiquement affiché dans la cellule.
Lorsque l'utilisateur clique sur ce bouton, un événement Sur clic alternatif est généré, vous permettant de traiter cette action comme vous le souhaitez (reportez-vous ci-dessous au paragraphe "Gestion des événements" pour plus d'informations).
Exemple :
C_OBJET($ob1)
$entry:="Hello world!"
OB FIXER($ob;"valueType";"text")
OB FIXER($ob;"alternateButton";Vrai)
OB FIXER($ob;"value";$entry)
L'attribut "valueType" de valeur "color" vous permet d'afficher soit une couleur, soit un texte.
C_OBJET($ob4)
OB FIXER($ob4;"valueType";"color")
OB FIXER($ob4;"value";0x00FF0000)
L'attribut "valueType" de valeur "event" affiche un bouton qui génère simplement un événement Sur clic lorsque l'utilisateur clique dessus. Aucune donnée ou valeur ne peut être passée ou retournée.
Optionnellement, il est possible de passez un attribut "label" afin de donner un libellé au bouton.
Exemple :
C_OBJET($ob)
OB FIXER($ob;"valueType";"event")
OB FIXER($ob;"label";"Edit...")
Plusieurs événements peuvent être gérés dans les colonnes de list box de type tableau d'objets (cf. ci-dessus). Voici une synthèse des événements spécifiques :
Note de compatibilité (4D v15) : Sur clic alternatif est le nouveau nom de l'événement Sur clic flèche, renommé afin de souligner l'extension de son champ d'action.
Produit : 4D
Thème : List box
Nom intl. : Using object arrays in columns
Créé : 4D v15
4D - Mode Développement ( 4D v20 R7)