Version : 15.0
Communauté : 1 annotation | Consulter Flux RSS
Actualités : www.pcsoft.fr
Colonne de table de type Conteneur
 

 
WinDev WebDev - Code Serveur WebDev - Code Navigateur WinDev Mobile Etats et Requêtes   Windows Linux Windows Mobile Android   Java PHP Ajax Code Utilisateur (MCU) Langage Externe   HyperFileSQL HyperFileSQL Mobile HyperFileSQL Client/Serveur Procédures stockées Hyper File 5.5 OLE DB ODBC Accès Natifs

Présentation
Une cellule de table peut contenir un ensemble de champs. Pratiquement tous les types de champs peuvent être inclus dans une colonne Conteneur : libellé, champ de saisie, image, bouton, ...

Il est possible de définir un champ principal pour la cellule : ce champ sera celui utilisé par exemple :

  • pour les ajouts réalisés par programmation,
  • pour les tris,
  • pour la liaison avec les données (liaison avec une rubrique ou avec une variable), ...
Versions 15 et supérieures
Java Les colonnes de table de type conteneur sont disponibles en Java.
Nouveauté 15
Java Les colonnes de table de type conteneur sont disponibles en Java.
Java Les colonnes de table de type conteneur sont disponibles en Java.

Comment créer une colonne de table de type Conteneur ?
Pour créer une colonne de table de type Conteneur :

1. Créez si nécessaire une table (fichier, mémoire ou sur source).

2. Créez une colonne de type Conteneur (soit par le menu contextuel de la table, soit depuis la fenêtre de description de la table).

3. Agrandissez si nécessaire la hauteur des lignes de la table avec la souris.

4. Positionnez les champs voulus dans la cellule Conteneur de la première ligne de la table. Il est possible de :

  • déplacer des champs existants dans la fenêtre vers la colonne conteneur.
  • faire un glisser / déplacer des rubriques de l'analyse affichée dans l'explorateur de projet.
5. Dans la description de la colonne conteneur, indiquez si nécessaire le champ principal de la colonne (onglet "Général") et validez.
Champ principal d'une colonne Conteneur

Le champ principal d'une colonne Conteneur correspond au champ manipulé par défaut dans la colonne. Par exemple :
  • Le tri de la colonne Conteneur sera réalisé sur le champ principal.
  • Les recherches réalisées dans une colonne Conteneur seront réalisées sur le champ principal.
  • Les ajouts, modifications, ... réalisés par programmation : la valeur de la colonne indiquée par exemple dans la fonction TableAjouteLigne sera affectée au champ principal.
  • Les exports réalisés à partir de la table (exports vers Excel, Open Office, Word, ...) prendront en compte la valeur du champ principal de la colonne.
  • Si la colonne de type Conteneur est liée à un fichier de données ou à une variable, le champ effectivement lié sera le champ principal.
La définition d'un champ principal dans une colonne de type Conteneur n'est pas obligatoire.
Limitations

  • Les champs interrupteur ne sont pas supportés dans les colonnes de type conteneur.
  • Le champ sélecteur peut être utilisé dans une colonne de type conteneur, mais il n'est pas possible de modifier les paramètres d'une option pour une ligne.

Utilisation d'une colonne de type Conteneur
Table fichier ou table sur source

Une table fichier peut contenir une ou plusieurs colonnes de type conteneur. Les champs de cette colonne Conteneur peuvent par exemple afficher les enregistrements du fichier de données.

Dans ce cas, la table est liée au fichier de données.

Les champs présents dans la colonne de type conteneur sont chacun liés à la rubrique correspondante.

Si un champ principal est défini sur la table, il est conseillé de :

  • solution 1 : conserver la liaison du champ principal à la rubrique du fichier de données. La colonne Conteneur n'est liée à aucune rubrique.
  • solution 2 : lier la colonne conteneur à la rubrique associée au champ principal et supprimer la liaison au niveau du champ.
Table mémoire

Une table mémoire peut contenir une ou plusieurs colonnes de type Conteneur. Le champ principal de la colonne Conteneur sera directement manipulé par les fonctions de programmation de la table mémoire.

Par exemple, lors de l'ajout d'une ligne avec la fonction TableAjouteLigne, seul le champ principal de la colonne sera affecté avec la valeur définie par la colonne. Si plusieurs champs doivent être initialisés dans la colonne, il est nécessaire d'utiliser la syntaxe décrite dans le paragraphe suivant. Par exemple :

NumLigne est un entier
NumLigne = TableAjouteLigne(TABLE_Table2,"Moulain")
COL_Colonne1[NumLigne].SAI_Prenom = "Florence"
Manipuler les champs de la colonne Conteneur

Les champs d'une colonne Conteneur peuvent être manipulés grâce à la syntaxe suivante :

<Nom de la colonne>[<Numéro de Ligne>].<Nom du champ>

Quelques exemples :

  • Affectation d'une valeur à un champ :

COL_Colonne1[NumLigne].SAI_Prenom = "Florence"

  • Modification d'une propriété d'un champ :
COL_Colonne1[NumLigne].PrixHT..Couleur=RougeClair

Remarque : Pour une table fichier, il est conseillé de manipuler les champs d'une colonne Conteneur dans le traitement "Affichage d'une ligne".

 
 
Version minimum requise : WINDEV 14
Communauté : 1 annotation Flux RSS
Connectez-vous pour ajouter une annotation | Conditions Générales du service d'annotations
  • Fabrice
    29 jan. 2010
    Contourner la limitation sur les champs Interrupteur
    malgré la limitation, il est possible de placer tout de même des champs de type interrupteur :
    en fait, si je veux 3 cases à cocher, je crée 3 interrupteurs à 1 option, au lieu d'1 interrupteur à 3 options.
    Je peux alors gérer chaque interrupteur sans préciser de n° d'option, en donnant juste le nom de l'interrupteur, et en vérifiant son état à vrai ou faux.

    Exemple :
    - une table nommée TABLE_Exemple, avec COLONNE_1 de type conteneur
    - j'y place 3 interrupteurs, nommés CHK_1, CHK_2 et CHK_3
    - chaque interrupteur ne comporte qu'une option (1 case)

    je peux alors taper par programmation :
    NumLigne est un entier

    NumLigne = TableSelect(TABLE_Exemple)
    si TABLE_Exemple.COLONNE_1[NumLigne].CHK_1 = vrai ALORS
         info("Ligne " + NumLigne + " : Interrupteur 1 coché")
    FIN

    si TABLE_Exemple.COLONNE_1[NumLigne].CHK_2 = vrai ALORS
         info("Ligne " + NumLigne + " : Interrupteur 2 coché")
    FIN

    si TABLE_Exemple.COLONNE_1[NumLigne].CHK_3 = vrai ALORS
         info("Ligne " + NumLigne + " : Interrupteur 3 coché")
    FIN

    (cette astuce est également utilisable sur les zones répétées)