|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
| Griser un élément d'une combo dans une table |
| Débuté par Lili05111991, 17 oct. 2016 14:45 - 7 réponses |
| |
| | | |
|
| |
Membre enregistré 48 messages |
|
| Posté le 17 octobre 2016 - 14:45 |
Bonjour,
voilà j'ai une table dans laquelle il y a plusieurs lignes. L'une des colonnes est une combo alimentée par programmation. J'aimerais que pour la ligne n°10 certains éléments de la combo soient grisés mais en même temps que pour la ligne n°11 ce soient d'autres éléments qui soient grisés.
J'arrive à griser des éléments de la combo mais dans ce cas toutes les lignes de la table ont les mêmes éléments grisés. Or cela ne va pas du tout.
Comment puis-je faire cela ?
Cordialement
Aurélie
-- www.gestan.fr Aurélie - Concepteur, développeur Windev au sein d'ICS-INFORMATIQUE "Chercher n'est pas une chose et trouver une autre, mais le gain de la recherche, c'est la recherche même." - Saint Grégoire de Nysse |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages |
|
| Posté le 18 octobre 2016 - 07:23 |
hello, pour faire cela, si le nombre d'éléments de la Combo et de lignes de la table ne sont pas trop importants et si le but est d'empêcher la saisie de certains éléments de la Combo sur certaines lignes, je te propose cette solution bestiale (grouik!) : Le principe : sur chaque sélection de ligne de la table on met à jour les éléments à griser dans la combo code Sélection d'une ligne de la table :
MonTabGrisé est un tableau d'entiers
ResSelect est un entier = TableSelect(MoiMême) SELON ResSelect CAS 1 : MonTabGrisé=[1,2,3];GriseElems(MonTabGrisé) CAS 2 : MonTabGrisé=[2];GriseElems(MonTabGrisé) CAS 3 : MonTabGrisé=[1,3];GriseElems(MonTabGrisé) AUTRE CAS : GriseElems(MonTabGrisé) FIN
Avec la procédure GriseElems :
Procedure GriseElems(TabGrisé est un tableau d'entiers) POUR X = 1 _A_ TABLE_Test.Combo1..Occurrence TABLE_Test[1].Combo1[X]..Etat = Actif FIN POUR TOUT elem DE TabGrisé TABLE_Test[1].Combo1[elem]..Etat = Grisé FIN Une chose que je ne comprends pas c'est que je doive mettre un indice à ma table pour que cela fonctionne. Par exemple si je remplace dans la procédure, TABLE_Test[1] par TABLE_Test, c'est toute la Combo qui devient grisée.Peut-être un souci avec ma version de windev (16).
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 48 messages |
|
| Posté le 18 octobre 2016 - 10:48 |
Jurassic Pork a écrit :
hello, pour faire cela, si le nombre d'éléments de la Combo et de lignes de la table ne sont pas trop importants et si le but est d'empêcher la saisie de certains éléments de la Combo sur certaines lignes, je te propose cette solution bestiale (grouik!) : Le principe : sur chaque sélection de ligne de la table on met à jour les éléments à griser dans la combo
code Sélection d'une ligne de la table : MonTabGrisé est un tableau d'entiers // on récupère le numéro de ligne sélectionnée ResSelect est un entier = TableSelect(MoiMême) SELON ResSelect // le tableau contient l'index des éléments à griser CAS 1 : MonTabGrisé=[1,2,3];GriseElems(MonTabGrisé) CAS 2 : MonTabGrisé=[2];GriseElems(MonTabGrisé) CAS 3 : MonTabGrisé=[1,3];GriseElems(MonTabGrisé) // etc .... AUTRE CAS : GriseElems(MonTabGrisé) FIN
Avec la procédure GriseElems : Procedure GriseElems(TabGrisé est un tableau d'entiers) POUR X = 1 _A_ TABLE_Test.Combo1..Occurrence TABLE_Test[1].Combo1[X]..Etat = Actif FIN POUR TOUT elem DE TabGrisé TABLE_Test[1].Combo1[elem]..Etat = Grisé FIN
Une chose que je ne comprends pas c'est que je doive mettre un indice à ma table pour que cela fonctionne. Par exemple si je remplace dans la procédure, TABLE_Test[1] par TABLE_Test, c'est toute la Combo qui devient grisée.Peut-être un souci avec ma version de windev (16).
-- Ami calmant, J.P
Bonjour,
merci de ta réponse, cependant j'ai du mal à comprendre une chose : comment TABLE_Test[1].Combo1[X] va griser la ligne par exemple n°9 de la TABLE_Test ??? Selon moi cela grisera toujours la première ligne du tableau, non ??
Merci d'avance
Aurélie
-- www.gestan.fr Aurélie - Concepteur, développeur Windev au sein d'ICS-INFORMATIQUE "Chercher n'est pas une chose et trouver une autre, mais le gain de la recherche, c'est la recherche même." - Saint Grégoire de Nysse |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages |
|
| Posté le 18 octobre 2016 - 10:58 |
hello, eh bien non c'est que j'explique à la fin de mon message je ne comprends pas . Que tu mettes Table_Test[1] ou Table_Test[2] ou Table_Test[9] chez moi le "grisage" s'effectue correctement. Par contre avec Table_Test cela ne fonctionne pas. Essaie chez toi et dis moi si tu as le même fonctionnement.
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 48 messages |
|
| Posté le 18 octobre 2016 - 12:10 |
re,
ta méthode ne va pas pouvoir être appliquée dans mon cas car c'est plus compliqué que ce que j'ai dis : les éléments à griser seront à griser en fonction du choix d'une autre colonne combo. Je t'explique j'ai 2 colonnes : l'une avec des familles et l'autres des sous-familles. Lorsque dans une ligne de ma table, je sélectionne une famille je veux que la combo des sous-familles de cette même ligne possède des éléments non grisés (pour ceux qui sont liés à la famille choisie) et des éléments grisés (pour ceux qui ne sont pas liés à la famille choisie).
Cordialement
Aurélie
-- www.gestan.fr Aurélie - Concepteur, développeur Windev au sein d'ICS-INFORMATIQUE "Chercher n'est pas une chose et trouver une autre, mais le gain de la recherche, c'est la recherche même." - Saint Grégoire de Nysse |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages |
|
| Posté le 19 octobre 2016 - 07:14 |
hello, bon alors je te propose alors une autre solution un peu similaire : le principe : Sur une ligne de la table quand on clique sur la combo des sous-familles , on regarde ce qui est sélectionné dans la combo des familles de la même ligne et on active les éléments en rapport. Si il n'y a rien de sélectionné dans la combo famille, tout sera grisé. Voici un exemple avec comme familles des catégories d'animaux. La procédure d'entrée de la combo "Animaux" des sous-familles :
MonTabActif est un tableau d'entiers
LigneSelect est un entier = TableSelect(TABLE_Test)
FamSelect est un entier = Familles[LigneSelect] SELON FamSelect CAS 1 : MonTabActif=[1,3,6,8];ActiveElems(MonTabActif) CAS 2 : MonTabActif=[2,4];ActiveElems(MonTabActif) CAS 3 : MonTabActif=[5,7];ActiveElems(MonTabActif) AUTRE CAS : ActiveElems(MonTabActif) FIN
Avec le code de la procédure ActiveElems :
Procedure ActiveElems(TabActif est un tableau d'entiers) POUR X = 1 _A_ TABLE_Test.Animaux..Occurrence TABLE_Test[1].Animaux[X]..Etat = Grisé FIN POUR TOUT elem DE TabActif TABLE_Test[1].Animaux[elem]..Etat = Actif FIN
et voici le résultat :

-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 48 messages |
|
| Posté le 19 octobre 2016 - 09:33 |
Bonjour,
je teste tout de suite et je te dis
Merci Aurélie
-- www.gestan.fr Aurélie - Concepteur, développeur Windev au sein d'ICS-INFORMATIQUE "Chercher n'est pas une chose et trouver une autre, mais le gain de la recherche, c'est la recherche même." - Saint Grégoire de Nysse |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 48 messages |
|
| Posté le 19 octobre 2016 - 10:15 |
C'est génial. Tu as résolu mon problème !!!
Merci beaucoup
Aurélie
-- www.gestan.fr Aurélie - Concepteur, développeur Windev au sein d'ICS-INFORMATIQUE "Chercher n'est pas une chose et trouver une autre, mais le gain de la recherche, c'est la recherche même." - Saint Grégoire de Nysse |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|