Gestion programmée des objets de type List box

4D - Documentation   Français   English   German   4e Dimension, Commandes par thèmes   4e Dimension, Liste alphabétique des commandes   4e Dimension, Constantes par thèmes   Retour   Précédent   Suivant

version 2004.2 (Modifiée)


Les commandes de ce thème sont dédiées à la gestion programmée des objets de formulaire de type List box.

Les list box peuvent être comparées aux Zones de défilement groupées. De fait, une list box propose toutes les fonctions d'un ensemble de zones de défilement groupées, notamment la possibilité de représenter des données sous forme de colonnes et de lignes sélectionnables. Les list box proposent en outre de nombreuses fonctions supplémentaires telles que la possibilité de saisir des valeurs, trier les colonnes, définir des couleurs alternées, etc.

Un objet de type List box est entièrement paramétrable dans l'éditeur de formulaires de 4e Dimension et peut également être contrôlé par programmation. Pour plus d'informations sur la création et le paramétrage des objets de type List box dans l'éditeur de formulaires ainsi que leur utilisation, reportez-vous au manuel Mode Structure de la documentation de 4e Dimension.

La programmation des objets de type List box s'effectue sur le même principe que les autres objets de formulaire en liste de 4e Dimension. Elle doit cependant tenir compte de principes spécifiques, décrits dans cette section.

Note : Les list box sont des objets destinés à l'interface écran. Il n'est pas possible de les imprimer.

Principes de création et de gestion des valeurs


Un objet List box peut contenir une ou plusieurs colonnes. Chaque colonne est associée à un tableau 4e Dimension à une dimension ; tous les types de tableaux peuvent être utilisés, à l'exception des tableaux de pointeurs. Le format d'affichage de chaque colonne peut être défini dans l'éditeur de formulaires ou via la commande CHOIX FORMATAGE.

En mode programmé, les valeurs des colonnes (saisie et affichage) sont gérées à l'aide des commandes de haut niveau du thème List box (telles que INSERER LIGNE LISTBOX ou SUPPRIMER LIGNE LISTBOX) ainsi que des commandes de manipulation des tableaux.

Par exemple, pour initialiser le contenu d'une colonne de List box, vous pouvez utiliser l'instruction suivante :

   TABLEAU TEXTE(NomColonne; taille)

Vous pouvez également utiliser une énumération :

   ENUMERATION VERS TABLEAU("NomEnum"; NomColonne)

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é déclaré ou dimensionné via le langage), la list box n'affiche aucun contenu.

Objet, colonne et en-tête


Un objet List box est composé de trois types d'éléments distincts :

l'objet dans son ensemble,

les colonnes,

les en-têtes des colonnes.

Dans l'éditeur de formulaires, ces éléments peuvent être sélectionnés séparément. Chacun d'eux dispose de son propre nom d'objet et nom de variable et peut donc être adressé séparément.

Par défaut, les colonnes sont nommées Colonne1 à n et les en-têtes Entête1 à n dans le formulaire, indépendamment des objets List box eux-mêmes. A noter que, par défaut, le même nom est utilisé pour les objets et leurs variables associées.

Chaque type d'élément dispose de caractéristiques propres et de caractéristiques partagées avec les autres éléments. Par exemple, la police de caractères peut être assignée globalement à l'objet List box ou séparément aux colonnes et aux en-têtes. A l'inverse, les propriétés de saisie ne sont définissables que pour les colonnes.

Ces principes s'appliquent aux commandes du thème "Propriétés des objets" pouvant être utilisées avec les list box : en fonction de sa nature, chaque commande sera utilisable avec la list box, les colonnes et/ou les en-têtes des colonnes. Pour désigner le type d'élément sur lequel vous souhaitez agir, il suffit de passer le nom ou la variable qui lui est associé(e).

Le tableau suivant précise la portée de chaque commande du thème "Propriétés des objets" utilisable avec les objets de type list box :

Commandes Propriétés des objetsObjetColonneEn-tête de colonne
DEPLACER OBJET X
LIRE RECT OBJET X
CHOIX FILTRE SAISIE X
CHOIX FORMATAGE X
CHOIX SAISISSABLE X
CHOIX ENUMERATION X
TITRE BOUTON X
CHOIX COULEUR XXX
FIXER COULEURS RVB XXX
CHANGER JEU DE CARACTERES XXX
CHANGER TAILLE XXX
CHANGER STYLE XXX
FIXER ALIGNEMENT XXX
Lire alignement XXX
CHOIX VISIBLE XXX
CHOIX VISIBLE BARRES DEFILEMENTX
TAILLE OBJET OPTIMALE XXX

Notes :

Toutes les commandes du thème "List Box" s'appliquent à l'objet List box seulement, à l'exception de FIXER LARGEUR COLONNE LISTBOX (objet, colonne et en-tête) et Lire largeur colonne listbox (colonne ou en-tête uniquement).

Seule la couleur du texte des en-têtes de colonnes peut être modifiée à l'aide des commandes CHOIX COULEUR et FIXER COULEUR RVB.

List box et Langage


Méthodes objet

Il est possible d'associer une méthode à l'objet List box dans son ensemble et/ou à chaque colonne de la list box. Les méthodes objet sont appelées dans l'ordre suivant :

1. Méthode objet de la colonne

2. Méthode objet de la list box

La méthode objet de la colonne reçoit les événements se produisant dans son en-tête.

CHOIX VISIBLE et en-têtes

Lorsque la commande CHOIX VISIBLE est utilisée avec un en-tête de list box, elle agit sur tous les en-têtes de l'objet List box, quel que soit l'en-tête spécifié par la commande. Par exemple, l'instruction CHOIX VISIBLE(*;"entête3";Faux) masquera tous les en-têtes de l'objet List box auquel appartient l'en-tête 3 (et non uniquement cet en-tête).

Self et Sur clic

La fonction Self (thème "Langage") peut être utilisée dans la méthode objet d'une list box ou d'une colonne de list box. En cas d'événement formulaire Sur clic, elle retourne un pointeur vers la variable de colonne ou la variable d'en-tête en fonction de l'emplacement du clic.

Objet focus

La fonction Objet focus (thème "Interface utilisateur") retourne un pointeur vers la colonne de la list box ayant le focus, c'est-à-dire vers un tableau. Le mécanisme des pointeurs de 4e Dimension permet alors de connaître le numéro de l'élément de tableau modifié. Par exemple, en supposant que l'utilisateur a modifié la 5e ligne de la colonne col2 :

   $Colonne:=Objet focus
      ` $Colonne contient un pointeur vers col2
   $Ligne:= $Colonne->   `$Ligne vaut 5

DEFILER LIGNES

Il est possible d'utiliser la commande DEFILER LIGNES (thème "Interface utilisateur") avec un objet de type list box. Cette commande permet de faire défiler les lignes de la list box afin d'afficher la première ligne sélectionnée ou une ligne spécifique.

EDITER ELEMENT

La commande EDITER ELEMENT (thème "Gestion de la saisie") permet de passer en mode édition une cellule d'un objet list box.

Evénements formulaire

Des événements formulaire spécifiques sont destinés à la gestion programmée des list box, concernant notamment le glisser-déposer et le tri. Pour plus d'informations, reportez-vous à la description de la commande Evenement formulaire.

Gestion des tris


Par défaut, la list box gère automatiquement les tris standard des colonnes en cas de clic sur l'en-tête. Un tri standard est un tri alphanumérique des valeurs de la colonne, alternativement croissant / décroissant lors de clics multiples. Toutes les colonnes sont toujours automatiquement synchronisées.

Il est possible d'interdire le tri utilisateur standard en désélectionnant la propriété "Triable" pour la list box.

Le développeur peut mettre en place une gestion personnalisée des tris à l'aide de la commande TRIER COLONNES LISTBOX et/ou en combinant les événements formulaire Sur clic entête et Sur après tri (cf. commande Evénement formulaire) et les commandes 4D de gestion des tableaux.

Note : La propriété "Triable" concerne uniquement le tri utilisateur standard, la commande TRIER COLONNES LISTBOX ne tient pas compte de cette propriété.

En outre, la valeur de la variable associée à l'en-tête d'une colonne permet de gérer une information supplémentaire : le tri courant de la colonne (lecture) et l'affichage de la flèche de tri.

si la variable vaut 0, la colonne n'est pas triée et la flèche de tri n'est pas affichée ;

si la variable vaut 1, la colonne est triée par ordre croissant et la flèche de tri croissant est affichée ;

si la variable vaut 2, la colonne est triée par ordre décroissant et la flèche de tri décroissant est affichée.

Il est possible de fixer la valeur de la variable (par exemple Header2:=2) afin de "forcer" l'affichage de la flèche de tri. Le tri de la colonne lui-même n'est dans ce cas pas modifié, il appartient au développeur de le gérer.

Gestion des sélections


La commande SELECTIONNER LIGNE LISTBOX permet de sélectionner par programmation une ou plusieurs lignes de list box.

En outre, la variable associée à l'objet List box peut être utilisée pour lire, fixer ou stocker les sélections de lignes dans l'objet.

Cette variable correspond à un tableau de booléens automatiquement créé et maintenu par 4e Dimension. La taille de ce tableau est déterminée par celle de la list box : il contient le même nombre d'éléments que le plus petit tableau associé aux colonnes.

Chaque élément de ce tableau contient Vrai si la ligne correspondante est sélectionnée et Faux sinon. 4e Dimension met à jour le contenu de ce tableau en fonction des actions utilisateur. A l'inverse, vous pouvez modifier la valeur des éléments de ce tableau afin de modifier la sélection dans la list box.

En revanche, vous ne pouvez ni insérer ni supprimer de ligne dans ce tableau ; il n'est pas possible non plus de le retyper.

Note : La commande Compter dans tableau est utile dans ce cas pour connaître le nombre de lignes sélectionnées.

Par exemple, cette méthode permet d'inverser la sélection de la première ligne de la list box :

   TABLEAU BOOLEEN(tBListBox;10)
      ` tBListBox est le nom de la variable associée à la List box dans le formulaire
   Si (tBListBox{1} = Vrai)
      tBListBox{1}:= Faux
   Sinon
      tBListBox{1}:= Vrai
   Fin de si

4D - Documentation   Français   English   German   4e Dimension, Commandes par thèmes   4e Dimension, Liste alphabétique des commandes   4e Dimension, Constantes par thèmes   Retour   Précédent   Suivant