IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Changement de couleur par ligne dans une liste


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 108
    Points
    108
    Par défaut Changement de couleur par ligne dans une liste
    Bonjour à tous,

    J'ai une liste que je rempli à l'aide d'une table. Tout fonctionne.

    Mais car il y a un mais, dans la table qui me sert de référence j'ai 2 colonnes. 1 colonne texte qui me permet de remplir la liste et une colonne booléen. Ce booléen est un marqueur.
    Je n'arrive pas à trouver comment faire pour que chaque ligne de la liste soit noire ou rouge suivant la valeur du booléen du tableau... Je ne sais pas si je suis clair.

    Merci de votre aide.

    Bonne journée.

  2. #2
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    Il faut que tu remplisse ta liste par programmation

    avec quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    nIdListe est un entier
    POUR TOUT TonFICHIER
    	nIdListe++
    	ListeAjoute(MonChampLISTE,TonFICHIER.MonTexteAAfficher)
    	SI TonFICHIER.Marqueur ALORS
    		MonChampLISTE[nIdListe]..CouleurFond = RougeClair
    	SINON
    		MonChampLISTE[nIdListe]..CouleurFond = VertClair
    	FIN
    FIN
    Précise nous si tu alimente ta liste avec un champ table ou un fichier de donnée.

    Merci et bonne lecture
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  3. #3
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    Que la table soit fichier ou mémoire tu peux passer par le traitement "Affichage d'une ligne" avec un code tel que celui ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TABLE[TABLE]..CouleurFond = (TABLE.col_Test = 1 ? RougePastel SINON JaunePastel)
    où col_Test est ta colonne qui contient la valeur à tester

    Là c'est la syntaxe simplifiée mais tu peux utiliser la syntaxe classique SI ... ALORS ... SINON

  4. #4
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Citation Envoyé par hpascal Voir le message
    Bonjour

    Que la table soit fichier ou mémoire tu peux passer par le traitement "Affichage d'une ligne"
    Bonjour HPascal,

    Il y a un traitement affichage d'une ligne pour un champ liste? Je ne l'ai pas trouvé.
    On l'ajoute où?
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  5. #5
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Effectivement mail.spam j'ai lu trop vite, il n'y a pas de traitement d'affichage sur un champ liste

    Il faut bien, comme tu le dis, alimenter la liste par programmation avec par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    POUR TOUTE LIGNE DE TABLE
       ListeAjoute(TALISTE, TABLE.Col_Texte)
       TALISTE[ListeOccurrence(TALISTE)]..CouleurFond = (TABLE.col_Booleen = Vrai ? RougePastel SINON JaunePastel)
    FIN

  6. #6
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 108
    Points
    108
    Par défaut
    Merci à tous,

    Effectivement je cherchais au départ l'affichage d'une ligne. Je vais regarder tout ça.

    Merci.

  7. #7
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 108
    Points
    108
    Par défaut
    Bonjour,

    Pour le chargement de la liste je la remplie par programmation, car ce que je mets dans la liste n'existe pas dans mon fichier sous cette forme. Je m'explique : fichier : 1 champ nom, 1 champ prénom, 1 champ numéro de carte. Dans la liste j'affiche par ligne nom + " " + prénom + " - " + NumCarte.

    Je viens de suivre vos conseils mais j'ai encore un problème. Sur 292 lignes, il n'y a que dans 5 lignes que j'obtiens soit une couleur (rougeclair) soit l'autre (bleuclair). Les autres restent en couleur de base, à savoir noir.

    Je ne trouve pas le problème. J'ai déroulé pas à pas et je n'ai rien trouvé....

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    nNbreLignes est un entier = TABLE_Cartes..Occurrence
     
    POUR nNumBoucle = 1 A nNbreLignes
    	ListeAjoute(LISTE_ORIGINE, TABLE_Cartes[nNumBoucle].COL_Nom + " " + TABLE_Cartes[nNumBoucle].COL_Prenom + " - " + TABLE_Cartes[nNumBoucle].COL_NumCarte)
    	SI TABLE_Cartes[nNumBoucle].COL_Imprimé = Faux ALORS
    		LISTE_ORIGINE[nNumBoucle]..Couleur = RougeClair
    	SINON
    		LISTE_ORIGINE[nNumBoucle]..Couleur = BleuClair
    	FIN
    FIN
    Voili voilou

  8. #8
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    Si votre liste est triée votre code est faux, car le numéro de ligne n'est pas forcément le numéro d'itération.
    Sinon au pire vous avez gStylo(Rouge) + "Le texte"

  9. #9
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    est-ce que par hasard ta liste ne ferait pas par défaut 5 lignes au départ ? Car je pense que ce code ne s'appliquera qu'aux lignes affichées dès le départ et pas à celles qui ne sont encore visible. Le fait de jouer avec la molette ou d'agrandir la liste ne change pas l'affichage des lignes suivantes car on ne reconstruit pas la liste ! Petit problème bien pénible à gérer ...

    à bientôt,

    Nicolas

  10. #10
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par Hibernatus34 Voir le message
    Si votre liste est triée votre code est faux, car le numéro de ligne n'est pas forcément le numéro d'itération.
    Sinon au pire vous avez gStylo(Rouge) + "Le texte"
    Bonjour,

    Oui ma liste est triée. Mais dans le cas indiqué j'aurais probablement des couleurs fausses, ça je suis d'accord. Mais toutes les lignes seraient bleu ou rouges et pas seulement 5 d'entre elles !? Je me trompe ?

  11. #11
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par Nicolas_Jeanneau Voir le message
    Bonjour,

    est-ce que par hasard ta liste ne ferait pas par défaut 5 lignes au départ ? Car je pense que ce code ne s'appliquera qu'aux lignes affichées dès le départ et pas à celles qui ne sont encore visible. Le fait de jouer avec la molette ou d'agrandir la liste ne change pas l'affichage des lignes suivantes car on ne reconstruit pas la liste ! Petit problème bien pénible à gérer ...

    à bientôt,

    Nicolas
    Bonjour Nicolas,

    Non ma liste ne fait pas 5 lignes au départ mais beaucoup plus...

  12. #12
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    Oui, vous vous trompez :
    - J'ajoute la ligne A en position 1, je colore la ligne 1
    - J'insère la ligne B en position 1, je colore la ligne 2 (A)
    J'ai coloré 2 fois la A, 0 fois la B

    Notez qu'il existe la propriété ..Triée.

    Citation Envoyé par Xsara 167 cv Voir le message
    Bonjour,

    Oui ma liste est triée. Mais dans le cas indiqué j'aurais probablement des couleurs fausses, ça je suis d'accord. Mais toutes les lignes seraient bleu ou rouges et pas seulement 5 d'entre elles !? Je me trompe ?

  13. #13
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Citation Envoyé par Xsara 167 cv Voir le message
    Bonjour Nicolas,

    Non ma liste ne fait pas 5 lignes au départ mais beaucoup plus...
    Ce que Nicolas voulais dire, enfin je pense, c'est ton champ liste n'a t il pas que 5 lignes de visible à l'écran.

    Sinon moi j'ai pas eu de souci quand j'ai tester le code (il est vrai que mon champ liste n'étais pas trié).
    Au pire essaie de faire la même chose dans un nouveau champ liste.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  14. #14
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    je parle affichage et non pas contenu

    Sinon, je suis assez d'accord avec Hibernatus34 car le fait de modifier la ligne d'indice = compteur de boucle ne te garanti pas de modifier la bonne ligne en cas de tri sur la liste.
    Le mieux est faire le tri par programmation une fois la liste construite.

  15. #15
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 108
    Points
    108
    Par défaut
    Ca y est c'est presque bon. Merci à Hibernatus34.

    J'ai utilisé effectivement la fonction gStylo que je ne connaissais pas et ça fonctionne pour mettre les couleurs.

    Le code est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    nNbreLignes est un entier = TABLE_Cartes..Occurrence
     
     
    POUR nNumBoucle = 1 A nNbreLignes
    	SI TABLE_Cartes[nNumBoucle].COL_Imprimé = Faux ALORS
    		ListeAjoute(LISTE_ORIGINE, gStylo(RougeClair) + TABLE_Cartes[nNumBoucle].COL_Nom + " " + TABLE_Cartes[nNumBoucle].COL_Prenom + " - " + TABLE_Cartes[nNumBoucle].COL_NumCarte)
    	SINON
    		ListeAjoute(LISTE_ORIGINE, gStylo(BleuClair) + TABLE_Cartes[nNumBoucle].COL_Nom + " " + TABLE_Cartes[nNumBoucle].COL_Prenom + " - " + TABLE_Cartes[nNumBoucle].COL_NumCarte)
    	FIN
    FIN
    Il ne me reste plus qu'à mettre les bonne couleurs.

  16. #16
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    Le problème n'est pas le nombre de lignes visibles, il n'y a aucun problème de ce genre avec les listes. Le champ fonctionne très bien.
    Encore une fois c'est une erreur de programmation, le mauvais numéro de ligne est utilisé.
    2 solutions :
    1. ..Triée = Faux avant remplissage et ..Triée = Vrai après.
    2. ListeAjoute(LaListe, gStylo(RougeClair) + "Le texte")

  17. #17
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 108
    Points
    108
    Par défaut
    Sur la liste non triée, ça fonctionne parfaitement l'astuce d'Hibernatus34. Enfin l'astuce, je devrais plutôt dire la fonction gStyle.

    Par contre j'ai encore un souci. Ma liste met 10 secondes à se remplir. Je vois scintiller l'ascenseur vertical pendant tout ce temps là. Et sur un autre poste c'est pire comme temps....

    Quelqu'un aurait une idée pour accélérer ça ? Car je trouve que 10 secondes pour remplir une liste c'est un peu long... Ou alors c'est normal ?

  18. #18
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    Ce n'est pas normal.
    Combien d'éléments ?
    Au pire vous auriez ..AffichageActif, mais ça ne devrait pas être nécessaire.
    Essayez plutôt en désactivant le tri et en l'activant à la fin (..Triée).
    C'est plus optimisé.

  19. #19
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Citation Envoyé par Xsara 167 cv Voir le message
    je trouve que 10 secondes pour remplir une liste c'est un peu long...
    Ça dépend essentiellement du contenu de la liste, mais aussi du PC utilisé.
    Sans ces informations, difficile d'avoir un avis.

  20. #20
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par Hibernatus34 Voir le message
    Ce n'est pas normal.
    Combien d'éléments ?
    Au pire vous auriez ..AffichageActif, mais ça ne devrait pas être nécessaire.
    Essayez plutôt en désactivant le tri et en l'activant à la fin (..Triée).
    C'est plus optimisé.
    292 éléments. Les 10 secondes c'est aussi bien liste triée que non triée... Et là elle n'est plus triée

Discussions similaires

  1. [XL-2010] Problème de mise en couleur d'une ligne dans une liste
    Par Angélique01 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/10/2014, 19h57
  2. Comment définir une couleur par ligne dans un objet uicontrol de type Text
    Par VinceDA dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 28/05/2007, 12h13
  3. [FLASH 8] Selectionner une ligne dans une List
    Par Bb_TiTi dans le forum Flash
    Réponses: 1
    Dernier message: 02/01/2006, 17h47
  4. Ajouter une ligne dans une liste via un POPUP
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/01/2005, 16h20
  5. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo