Aller au contenu principal
Version : 21 R2 BETA

List Box Object

List box de type tableau

Dans une list box de type tableau, chaque colonne est associée à un tableau 4D à une dimension ; tous les types de tableaux peuvent être utilisés, à l’exception des tableaux de pointeurs. Le nombre de lignes est basé sur le nombre d’éléments du tableau.

Par défaut, 4D affecte le nom “ColonneN” à chaque variable de colonne. You can change it, as well as other column properties, in the column properties. The display format for each column can also be defined using the OBJECT SET FORMAT command.

Les list box basées sur des tableaux peuvent être affichées sous forme de list box hiérarchiques, disposant de mécanismes spécifiques.

Avec les list box de type tableau, les valeurs des colonnes (saisie et affichage) sont gérées à l’aide des commandes du langage 4D. Vous pouvez également associer une énumération à une colonne afin de contrôler la saisie. The values of columns are managed using high-level List box commands (such as LISTBOX INSERT ROWS or LISTBOX DELETE ROWS) as well as array manipulation commands. Par exemple, pour initialiser le contenu d’une colonne, vous pouvez utiliser l’instruction suivante :

ARRAY TEXT(varCol;size)

Vous pouvez également utiliser une énumération :

LIST TO ARRAY("ListName";varCol)

Attention : Lorsqu’un objet List box contient plusieurs colonnes de tailles différentes, seul le nombre d’éléments correspondant au plus petit tableau est affiché. Il est donc conseillé de veiller à ce que chaque tableau ait le même nombre d’éléments que les autres. A noter également que si une colonne de la list box est “vide” (c'est le cas lorsque le tableau associé n'a pas été correctement déclaré ou dimensionné via le langage), la list box n'affiche aucun contenu.

List box de type sélection

Dans ce type de list box, chaque colonne peut être associée à un champ (par exemple [Employees]LastName) ou à une expression. L’expression peut être basée sur un ou plusieurs champs (par exemple [Employés]Nom+“ ”+[Employés]Prénom) ou être simplement une formule (par exempleString(Milliseconds)). L’expression peut également être une méthode projet, une variable ou un élément de tableau. You can use the LISTBOX SET COLUMN FORMULA and LISTBOX INSERT COLUMN FORMULA commands to modify columns programmatically.

Le contenu de chaque ligne est ensuite évalué en fonction d'une sélection d'enregistrements : la sélection courante d'une table ou une sélection temporaire.

Dans le cas d’une list box basée sur la sélection courante, toute modification effectuée côté base de données est automatiquement reportée dans la list box et inversement. La sélection courante est donc toujours identique aux deux emplacements.

List box collection ou entity selection

Dans ce type de list box, chaque colonne doit être associée à une expression. Le contenu de chaque ligne est ensuite évalué par élément de la collection ou par entité de l'entity selection.

Chaque élément de la collection ou chaque entité est disponible en tant qu'objet auquel on peut accéder via le mot-clé This. Une expression de colonne peut être un chemin de propriété, une méthode projet, une variable ou n'importe quelle formule, accédant à chaque entité ou objet élément de collection via This, par exemple This.<propertyPath> (ou This.value dans le cas d'une collection de valeurs scalaires). Vous pouvez utiliser les commandes LISTBOX SET COLUMN FORMULA et LISTBOX INSERT COLUMN FORMULA pour modifier les colonnes par programmation.

Lorsque la source de données est une entity selection, les modifications apportées du côté de la list box sont automatiquement enregistrées dans la base de données. En revanche, les modifications apportées du côté de la base de données sont visibles dans la list box après le rechargement des entités modifiées.

note

Lorsque des entités sont supprimées, leurs références restent dans l'entity selection avec une valeur undefined, ce qui entraîne l'affichage de lignes vides dans la list box. Dans ce cas, vous pouvez appeler la fonction .clean() pour obtenir une nouvelle entity selection sans les références d'entités supprimées.

Lorsque la source de données est une collection, toute modification apportée aux valeurs de la list box se reflète dans la collection. En revanche, si des modifications sont apportées à la collection en utilisant par exemple les diverses fonctions de la classe Collection, vous devrez en informer explicitement 4D en réaffectant la variable collection à elle-même, de sorte que le contenu de la list box soit actualisé. Par exemple :

myCol:=myCol.push("new value") //afficher new value dans la list box

Propriétés prises en charge

Les propriétés prises en charge dépendent du type de list box.

PropriétéList box tableauListe box sélectionList box collection ou entity selection
Couleur de fond alternéeXXX
Couleur de fondXXX
GrasXXX
Expression couleur de fondXX
Style de la bordureXXX
BasXXX
CSS ClassXXX
Collection ou entity selectionXX
Redimensionnement colonnes autoXXX
Elément courantX
Position élément courantX
Source de donnéesXXX
Nom formulaire détailléX
Afficher en-têtesXXX
Afficher piedsXXX
Double-clic sur ligneX
GlissableXXX
DéposableXXX
FocusableXXX
PoliceXXX
Couleur de la policeXXX
Expression couleur policeXX
TailleXXX
Hauteur (list box)XXX
Hauteur (en-têtes)XXX
Hauteur (pieds)XXX
Masquer lignes vides finalesXXX
Cacher rectangle de focusXXX
Cacher surlignage sélectionXXX
List box hiérarchiqueX
Ensemble surlignageX
Alignement horizontalXXX
Couleur lignes horizontalesXXX
Marge horizontaleXXX
Barre de défilement horizontaleXXX
Dimensionnement horizontalXXX
ItaliqueXXX
GaucheXXX
Table principaleX
Meta info expressionX
MéthodeXXX
Lignes déplaçablesX
Sélection temporaireX
Nombre de colonnesXXX
Nombre de colonnes verrouilléesXXX
Nombre de colonnes statiquesXXX
Nom d'objetXXX
DroiteXXX
Tableau couleurs de fondX
Tableau de contrôle des lignesX
Tableau couleurs de policeX
Hauteur des lignesX
Tableau hauteurs des lignesX
Tableau de stylesX
Eléments sélectionnésX
Mode de sélectionXXX
Saisie sur clic uniqueXXX
TriableXXX
Action standardX
Expression StyleXX
HautXXX
TransparentXXX
TypeXXX
SoulignéXXX
Variable ou expressionXX
Alignement verticalXXX
Couleur lignes verticalesXXX
Marge verticaleXXX
Barre de défilement verticaleXXX
Dimensionnement verticalXXX
VisibilitéXXX
LargeurXXX

Les colonnes, en-têtes et pieds de list box prennent en charge des propriétés spécifiques.

Événements de formulaire pris en charge

Evénement formulairePropriétés supplémentaires renvoyées (voir Form event pour les propriétés principales)Commentaires
On After Edit
On After Keystroke
On After SortLes formules composées ne peuvent pas être triées.
(ex : This.firstName + This.lastName)
On Alternative ClickListbox tableau uniquement
On Before Data Entry
On Before Keystroke
On Begin Drag Over
On Clicked
On Close DetailCurrent Selection & Named Selection list boxes only
On CollapseList box hiérarchiques uniquement
On Column Moved
On Column Resize
On Data Change
On Delete Action
On Display Detail
On Double Clicked
On Drag Over
On Drop
On ExpandList box hiérarchiques uniquement
On Footer ClickArrays, Current Selection & Named Selection list boxes only
On Getting FocusPropriétés supplémentaires retournées uniquement lors de la modification d'une cellule
On Header Click
On Load
On Losing FocusPropriétés supplémentaires retournées uniquement lorsque la modification d'une cellule est achevée
On Mouse Enter
On Mouse Leave
On Mouse Move
On Open DetailCurrent Selection & Named Selection list boxes only
On Row MovedListbox tableau uniquement
On Selection Change
On Scroll
On Unload

Propriétés supplémentaires

Les événements formulaire sur les list box ou colonnes de list box peuvent retourner les propriétés supplémentaires suivantes :

PropriétéTypeDescription
areatextZone de l'objet List box ("header", "footer", "cell")
areaNametextNom de la zone
columnentier longNuméro de colonne
columnNametextNom de la colonne
footerNametextNom du pied
headerNametextNom de l'en-tête
horizontalScrollentier longPositif si le défilement est vers la droite, négatif s'il est vers la gauche
isRowSelectedbooleanVrai si la ligne est sélectionnée, sinon Faux
newPositionentier longNouvelle position de la colonne ou de la ligne
newSizeentier longNouvelle taille (en pixels) de la colonne ou de la ligne
oldPositionentier longPosition précédente de la colonne ou de la ligne
oldSizeentier longTaille précédente (en pixels) de la colonne ou de la ligne
rowentier longNuméro de ligne
verticalScrollentier longPositif si le défilement est vers le bas, négatif s'il est vers le haut

Si un événement se produit sur une "fake" colonne ou ligne qui n'existe pas, une chaîne vide est généralement renvoyée.