4D v14.3Gestion programmée des objets de type List box |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
Gestion programmée des objets de type List box
Gestion programmée des objets de type List box
Les commandes de ce thème sont dédiées à la gestion programmée des objets de formulaire de type List box. Un objet de type List box est entièrement paramétrable dans l’éditeur de formulaires de 4D 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 Développement de la documentation de 4D. Un objet List box peut contenir une ou plusieurs colonnes et peut être associé soit à des tableaux 4D, soit à une sélection d'enregistrements. Dans le cas des list box de type sélection, les colonnes sont associées à des champs ou des expressions. Dans ce type de list box, 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 format d’affichage de chaque colonne peut être défini dans l’éditeur de formulaires ou via la commande OBJET FIXER 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 LISTBOX INSERER LIGNES ou LISTBOX INSERER COLONNE) ainsi que des commandes de manipulation des tableaux. TABLEAU TEXTE(NomColonne;taille) Vous pouvez également utiliser une énumération : LISTE 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. Dans ce type de list box, chaque colonne peut être associée à un champ ou à une expression. Le contenu de chaque ligne est alors évalué en fonction d'une sélection d'enregistrements : la sélection courante d'une table ou une sélection temporaire. Un objet List box est composé de quatre types d’éléments distincts :
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, les en-têtes Entête1 à n et les pieds Pied1 à 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, à l'exception des pieds (par défaut les variables sont vides pour les pieds, 4D utilise des variables dynamiques).
Note : Avec les List box de type tableau, il est possible de définir séparément les propriétés de style, de couleur de police, de couleur de fond et de visibilité de chaque ligne. Cette gestion s'effectue via des tableaux associés à la list box dans la Liste des propriétés. Vous pouvez récupérer par programmation le nom de ces tableaux à l'aide de la commande LISTBOX LIRE TABLEAUX. 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 Lorsque la commande OBJET FIXER VISIBLE est utilisée avec un en-tête ou un pied de list box, elle agit sur tous les en-têtes ou tous les pieds de l’objet List box, quel que soit l’élément individuel spécifié par la commande. Par exemple, l’instruction OBJET FIXER 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). La fonction OBJET Lire pointeur utilisée avec la constante Objet avec focus ou Objet courant (anciennement fonctions Objet focus et Self) peut être utilisée dans la méthode objet d’une list box ou d'une colonne de list box. Elle retourne un pointeur vers la list box, la colonne de list box (1) ou la variable d'en-tête en fonction du type d'événement formulaire. Le tableau suivant détaille ce fonctionnement :
(*) Lorsque le focus est modifié à l'intérieur d'une list box, un pointeur vers la colonne est retourné. Lorsque le focus est modifié au niveau global du formulaire, un pointeur vers la list box est retourné. Dans le contexte d'une méthode objet de colonne, un pointeur vers la colonne est retourné. (1) Lorsqu'un pointeur vers la colonne est retourné, l'objet pointé dépend du type de la list box. Dans le cadre d'une list box de type tableau, OBJET Lire pointeur retourne un pointeur vers le tableau. Le mécanisme des pointeurs de 4D 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 Lire pointeur(Objet avec focus) Dans le cadre d'une list box de type sélection, OBJET Lire pointeur retourne :
Il est possible d’utiliser la commande OBJET FIXER DEFILEMENT (thème “Propriétés des objets”) 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. La commande EDITER ELEMENT (thème “Gestion de la saisie”) permet de passer en mode édition une cellule d’un objet list box. Lorsqu'elle est appliquée à une list box en mode sélection, la commande REDESSINER (thème "Interface utilisateur") provoque la mise à jour des données affichées dans la list box. La commande Numero de ligne affichee (thème “Sélections”) fonctionne dans le contexte de l'événement Sur affichage corps pour un objet list box. 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. La gestion du glisser-déposer de données dans les list box est prise en charge par les commandes Position deposer et PROPRIETES GLISSER DEPOSER. Ces commandes ont été spécialement adaptées pour les list box. Pour qu’une cellule de list box soit saisissable, quel que soit son type (tableau et sélection), il est nécessaire que les deux conditions suivantes soient réunies :
Imaginons par exemple une list box contenant deux tableaux, de type date et texte. Le tableau date n’est pas saisissable. Le tableau texte est saisissable si la date n’est pas déjà passée. Voici la méthode de la colonne tText : Au cas ou Note : A compter de 4D v13, l’événement Sur avant saisie est retourné avant Sur gain focus. 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. Le développeur peut mettre en place une gestion personnalisée des tris à l'aide de la commande LISTBOX TRIER COLONNES 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 LISTBOX TRIER COLONNES 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.
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. La gestion des sélections s'effectue différemment pour les list box de type tableau et de type sélection.
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 (type tableau) : TABLEAU BOOLEEN(tBListBox;10) Note : Les spécificités de la gestion des sélections dans les list box en mode hiérarchique sont détaillées dans la section Gestion des List box hiérarchiques. Il est possible d’imprimer des list box à compter de 4D v12. Deux modes d’impression sont proposés : le mode prévisualisation, permettant d’imprimer une list box comme un objet de formulaire et le mode avancé, permettant de contrôler l’impression de l’objet list box lui-même au sein du formulaire. A noter que l'apparence "Impression" est proposée pour les list box dans l'éditeur de formulaires. L’impression d’une list box en mode prévisualisation consiste à imprimer directement la list box avec le formulaire qui la contient via les commandes d’impression standard ou la commande de menu Imprimer. La list box est imprimée dans l’état où elle se trouve dans le formulaire. Ce mode ne permet pas de contrôler précisément l’impression de l’objet ; en particulier, il ne permet pas d’imprimer toutes les lignes d’une list box contenant plus de lignes qu’elle ne peut en afficher. Dans ce mode, l’impression des list box s’effectue par programmation, via la commande Imprimer objet. Par conséquent, seules des list box présentes dans des formulaires projet peuvent être imprimées en mode avancé. La commande LISTBOX LIRE INFORMATION IMPRESSION permet de contrôler l’impression de l’objet. Dans ce mode :
Vous disposez de plusieurs possibilités pour définir des couleurs de fond, des couleurs de police et des styles de police dans les list box :
Des principes de priorité et d'héritage sont observés. Lorsqu’une même propriété de style ou de couleur est définie à plusieurs niveaux, l’ordre de priorité suivant est appliqué :
Par exemple, si vous définissez un style de caractères dans les propriétés de la list box et un autre via un tableau de styles pour la colonne, ce dernier sera pris en compte. Soit une list box dont les lignes ont une couleur alternée gris/gris clair, définies dans les propriétés de la list box. Un tableau de couleur de fond a également été défini pour la list box afin de passer en orange clair les lignes dont au moins une valeur est négative : <>_BgndColors{$i}:=0x00FFD0B0 // orange Vous souhaitez désormais afficher en fond orange foncé les cellule ayant une valeur négative. Pour cela, vous définissez un tableau de couleur de fond pour chaque colonne, par exemple <>_BgndColor_1, <>_BgndColor_2 et <>_BgndColor_3. Les valeurs de ces tableaux seront prioritaires sur celles définies dans les propriétés de la list box et celles du tableau global de couleur de fond : <>_BgndColorsCol_3{2}:=0x00FF8000 // orange foncé Vous pouvez obtenir le même résultat à l’aide des commandes LISTBOX FIXER STYLE LIGNE et LISTBOX FIXER COULEUR LIGNE. Elles ont pour avantage d’éviter de devoir prédéfinir les tableaux de style/couleur des colonnes : ils sont créés dynamiquement par les commandes. Pour chaque attribut (style, couleur et couleur de fond), un héritage est mis en oeuvre lorsque la valeur par défaut est utilisée :
Ainsi, si vous souhaitez qu’un objet hérite de la valeur d’attribut du niveau supérieur, il vous suffit de passer -255 (valeur par défaut) à la commande de définition ou directement dans l’élément de tableau de style/couleur correspondant. Soit une list box contenant un style de caractère standard et des couleurs alternées : Vous effectuez les modifications suivantes :
Pour restaurer l’apparence initiale de la list box, il suffit de :
Il est possible de placer directement le résultat d’une requête SQL dans une list box de type tableau. Cette fonction offre un moyen rapide de visualiser le résultat des requêtes SQL. Seules les requêtes de type SELECT peuvent être utilisées. Ce mécanisme n’est pas utilisable avec une base SQL externe. Les principes de mise en oeuvre sont les suivants :
Exemple Debut SQL |
PROPRIÉTÉS
Produit : 4D VOIR AUSSI
UTILISATION DE L'ARTICLE
4D - Langage ( 4D v14 R3) Hérité de : Gestion programmée des objets de type List box ( 4D v13.5) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||