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 :

Changer la couleur de fond d'une ligne dans une table memoire [WD10]


Sujet :

WinDev

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 107
    Points : 77
    Points
    77
    Par défaut Changer la couleur de fond d'une ligne dans une table memoire
    Bonjour a tous, besoin d'aide j'essaie de changer la couleur de fond d'une ligne de ma table memoire en cliquant dans un interupteur mais sa ne fonctioone pas.
    Voici le code que j'ai mis en entrée de mon interrupteur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROCEDURE AfficheCouleurClient()
     
    t est un entier
     
    POUR t=1 A TableOccurrence(CLIENT)   //parcourir la table memoire
     	SI CLIENT.TypeClientId[t]..Valeur=1 ALORS  // Si valeur colonne type=1
    	CLIENT.TypeClientId[t]..CouleurFond=iJauneFoncé // la couleur de fond jaune
     
    	FIN
    FIN
    merci pour votre aide
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    Bonjour,
    Dans ta capture d'écran, la table est vide, donc il me semble normal que ça ne fonctionne pas...

    Tatayo.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 107
    Points : 77
    Points
    77
    Par défaut
    C'est parceque j'ai copier la fenetre en concetion pas en mode test mais j'ai ajouter 2 clients avec comme valeur de TypeClientId 1 pour prospect et 2 pour Client.
    Mais quand je test rien ne change.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    Essaie de mettre un point d'arrêt au début de la procédure, puis trace en pas à pas l'execution, ainsi tu auras (peut-être) un début de piste.

    Tatayo.

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

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Bonjour
    Il faut vérifier que tes valeurs sont bien celles attendues, dont comme le dit tatayo mets un point d'arrêt
    ou ajouter l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Trace(CLIENT.TypeClientId[t]..Valeur)
    dans ta boucle

    Sinon tu peux aussi faire ça dans le code d'affichage d'une ligne de ta table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CLIENT.TypeClientId[CLIENT]..CouleurFond = (CLIENT.TypeClientId..Valeur = 1 ? JauneFonçé SINON CouleurDéfaut)

  6. #6
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 970
    Points : 766
    Points
    766
    Par défaut
    Citation Envoyé par Techys Voir le message
    Bonjour a tous, besoin d'aide j'essaie de changer la couleur de fond d'une ligne de ma table memoire en cliquant dans un interupteur mais sa ne fonctioone pas.
    Voici le code que j'ai mis en entrée de mon interrupteur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROCEDURE AfficheCouleurClient()
     
    t est un entier
     
    POUR t=1 A TableOccurrence(CLIENT)   //parcourir la table memoire
     	SI CLIENT.TypeClientId[t]..Valeur=1 ALORS  // Si valeur colonne type=1
    	CLIENT.TypeClientId[t]..CouleurFond=iJauneFoncé // la couleur de fond jaune
     
    	FIN
    FIN
    merci pour votre aide
    Bonjour,

    Quant vous dites "a l'entrée de l'interrupteur", cela veut il dire qu'à chaque modification ou autre chose
    Sinon, vous deviez essayer ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PROCEDURE AfficheCouleurClient()
    
    t est un entier
    POUR CHAQUE LIGNE DE CLIENT
    POUR t=1 A TableOccurrence(CLIENT)   //parcourir la table memoire
     	SI CLIENT.TypeClientId[t]..Valeur=1 ALORS  // Si valeur colonne type=1
    	CLIENT.TypeClientId[t]..CouleurFond=iJauneFoncé // la couleur de fond jaune
             
    	FIN
       FIN
    FIN
    Mais si cela est à chaque modification de l'interrupteur, alors votre code n'est pas à la bonne place
    Bonne après midi
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    Petite correction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    PROCEDURE AfficheCouleurClient()
     
    POUR CHAQUE LIGNE DE CLIENT
     SI CLIENT.TypeClientId..Valeur=1 ALORS  // Si valeur colonne type=1
    	CLIENT.TypeClientId..CouleurFond=iJauneFoncé // la couleur de fond jaune
     FIN
    FIN
    "POUR CHAQUE LIGNE" parcours déjà la table, inutile de faire 2 boucles imbriquées.

    Tatayo.

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

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Petite correction aussi
    Code de tatayo : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PROCEDURE AfficheCouleurClient()
    
    POUR CHAQUE LIGNE DE CLIENT
     SI CLIENT.TypeClientId..Valeur=1 ALORS  // Si valeur colonne type=1
    	CLIENT.TypeClientId[CLIENT]..CouleurFond=iJauneFoncé // la couleur de fond jaune
     FIN
    FIN
    Il faut indiquer l'indice en cours pour le ..CouleurFond sinon c'est toute la colonne qui est modifiée

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    Effectivement, j'ai tellement l'habitude de ne pas mettre d'indice avec les boucles POUR TOUT que je suis tombé dans le piège... A trois, on devrait trouver la bonne syntaxe

    Tatayo.

  10. #10
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 107
    Points : 77
    Points
    77
    Par défaut Merci pour toutes ces responses
    Merci pour toutes ses réponses je les teste et je vous informe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A chaque modification modification de l'interrupteur
    Au fait chaque interrupteur représente une catégorie de client (Prospect, Nouveau client, Client, Client avec remise) et chaque catégorie est représenté par une couleur fixe donc chaque fois que l'on sélectionne une catégorie( donc clique dans un interrupteur) les ligne du tableau correspondant a cette categorie de client doivent changer de fond de couleur.

    j'espere que je pu me suis comprendre.

    merci encore pour l'aide.

  11. #11
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 970
    Points : 766
    Points
    766
    Par défaut
    Citation Envoyé par Techys Voir le message
    Merci pour toutes ses réponses je les teste et je vous informe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A chaque modification modification de l'interrupteur
    Au fait chaque interrupteur représente une catégorie de client (Prospect, Nouveau client, Client, Client avec remise) et chaque catégorie est représenté par une couleur fixe donc chaque fois que l'on sélectionne une catégorie( donc clique dans un interrupteur) les ligne du tableau correspondant a cette categorie de client doivent changer de fond de couleur.

    j'espere que je pu me suis comprendre.

    merci encore pour l'aide.
    Bonjour

    Dans ce cas votre code doit se trouver dans la rubrique "A chaque modification de...."
    A vous de choisir l'interrupteur déclencheur

    Et pour tatayo et Hpascal (que je salue cordialement), en effet, vous avez raison....comme....

    Bonne soirée
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  12. #12
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 107
    Points : 77
    Points
    77
    Par défaut Merci a tous
    Merci a tous pour vos réponses finalement j'ai tester les codes et j'ai pu avoir un qui marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    t est un entier
     
    POUR t=1 A TableOccurrence(TABLE_CLIENT)
    //	info("numero ligne"+ +t)
    	SI TABLE_CLIENT.TypeClientId[t]=2 ALORS
    //	info("la valeur de  typeclient est "+ +TABLE_CLIENT.TypeClientId[t])
    	TABLE_CLIENT[t]..CouleurFond=iJauneFoncé
    	SINON
    //	info("la valeur de  typeclient est n'est pas un")
    	FIN
     
    FIN
    Je l'ai installer derrier les modification comme l'a suggeré RAPTOR et sa marche

    Mais il reste deux soucis.
    1 . La couleur de selection de la table memoire est prioritaire sur la couleur la couleur de fond de ma procedure. Donc je voudrait savoir comment désactivé la couleur de section par programmation.
    j'ai essayé dans IHM mais il ne me permet plus de sélectionner une ligne apres.

    2. Comment faire pour rétablir la couleur par défaut des lignes dont la couleur de fond a été modifier quand je sort d'un interrupteur.

    Merci encore pour toute vos idées.

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 866
    Points
    12 866
    Par défaut
    Bonjour,
    Pour le point 1, en fait tu peux toujours sélectionner une ligne, mais tu ne le vois pas. Il faut choisir . Tu peux toujours t'en sortir avec une colonne Interrupteur pour la sélection, à voir.

    Pour le point 2, je dirai que la couleur idefaut (ou iCouleurDefaut, j'ai un doute) fera bien l'affaire.

    Tatayo.

  14. #14
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 998
    Points
    1 998
    Par défaut
    Hello,
    Effectivement, c'est prioritaire. aussi, je te donne ce que je fais pour mes programmes. Le but est de visualiser pour certains clients le taux de risques possible lors de la facturation... Plusieurs états sont possibles:
    - Sans risque (par defaut)
    - Risques minimes (jauneclair)
    - Risques importants (orange foncé)
    - comptes bloqués (rouge clair)
    Et comme toi, j'utilise un flag d'etat...
    Pour réaliser ce que tu veux, tu dois créer une petite procédure qui sera appelée dans 'affichage ligne table' et pour 'chaque modification de tes flags' (Dominique - Raptor92 - a raison sur le sujet - helllo Dom)...
    Et pour répondre en code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    // procedure qui affiche les lignes en couleurs
    procedure affiche_ligne()
     
    selon TABLE_CLIENT.TypeClientId[indiceencours()]
     
         cas 2
          // info("la valeur de typeclient est "+ +TABLE_CLIENT.TypeClientId[t])
          TABLE_CLIENT[indiceencours()]..CouleurFond=iJauneFoncé
     
         cas 3
           // si il y a....
     
         autres cas
           // info("numero ligne"+ +t)
          TABLE_CLIENT[indiceencours()]..CouleurFond=icouleurdefaut
     
    FIN
    De plus, je te conseille de déclarer dans l'entete de fenetre des variables qui stockeront les couleurs de type

    CouleurFlag2 est un entier = rvb(...,...,..)

    Ainsi, un seul et unique endroit pour modifier les couleurs que tu souhaites voir apparaitre... et multiplier ainsi les controles pour les lignes de couleurs...

    Plus maintenable a mon avis....
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  15. #15
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 439
    Points : 9 987
    Points
    9 987
    Par défaut
    Pour ne pas changer de couleur en sélection, il faut utiliser couleurbandeau, regardes dans l'aide pour la syntaxe de cette fonction, je n'ai pas Windev sous la main
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  16. #16
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 107
    Points : 77
    Points
    77
    Par défaut
    Merci a tous pour votre aide.

    EDM TAHITI je teste le code et je te fait des retour.
    Mais concernant les couleur je ne comprend pas trop le principe. Puis je avoir un peu plus d'eclairage.

    Merci encore.

  17. #17
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 998
    Points
    1 998
    Par défaut
    Hello,
    Dans la déclaration de ta fenetre (ou de ta table écran), détermine les couleurs dans des variables

    MaCouleurDanger est un entier = rvb(155,155,155)

    Et ensuite, quand tu en as besoin, tu fais

    MaTable.monchamps[indiceencours()]..icouleurfond = MaCouleurDanger

    et si tu as plusieurs procedures, tu fais de même et la couleur sera identique dans chaque procédure...

    plus facile et plus maintenable
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  18. #18
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 107
    Points : 77
    Points
    77
    Par défaut Merci
    Merci EDM TAHITI j'ai tester c'est ok.

    Encore Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/08/2011, 12h04
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. changer la couleur de fond de la selection dans une richtextbox
    Par Folkene dans le forum Windows Forms
    Réponses: 7
    Dernier message: 21/08/2009, 11h26
  4. [E-00] Syntaxe pour insérer une ligne ou une colonne dans une feuille
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2009, 09h27
  5. Réponses: 3
    Dernier message: 29/01/2008, 12h08

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