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

C++Builder Discussion :

TreeView - couleur par ligne


Sujet :

C++Builder

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 68
    Points
    68
    Par défaut TreeView - couleur par ligne
    Bonjour a tous,

    j'ai un TreeView sur ma forme et ce que je voulais savoir : Es-t-il possible d'attribuer une couleur spécifique à un Noeud parent ou Enfant comme dans une listbox dans la propriété OnDrawItems.

    Merci d'avance.

    Je suis sous Builder 6

    MERCI D'AVANCE ENCORE

  2. #2
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Salut,

    En attendant de proposer du code, il y a un exemple dans les repertoires de Borland. Chez moi c'est :
    C:\Program Files\Borland\CBuilder6\Examples\CustomDraw
    Des petits jeux avec un TreeView...

    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 68
    Points
    68
    Par défaut
    MERCI DE TON AIDE,

    je suis un peu nul, j'avais jamais vu cet exemple.

    Mais en faite, si cet exemple montre toutes les possibilité de la TreeView on dirait que mettre une couleur spécéfique à une ligne (du style : une ligne sur deux Bleu) ne soit pas possible.

    Je vais continuer mes recherches et si quelqu'un en sait plus MERCI d'AVANCE.

  4. #4
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Salut,

    Peut etre une piste :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    void __fastcall TForm2::TreeView1AdvancedCustomDrawItem(
          TCustomTreeView *Sender, TTreeNode *Node, TCustomDrawState State,
          TCustomDrawStage Stage, bool &PaintImages, bool &DefaultDraw)
    {
    TCanvas *pC = Form2->TreeView1->Canvas;
    TRect ARect = Node->DisplayRect(true);
    if (Node->Text == "A" || (!Node->Parent == NULL && Node->Parent->Text == "A"))
    {
            pC->FillRect(ARect);
            if (State.Contains(cdsSelected))
            {
                            pC->Brush->Color = clYellow;
                            pC->Font->Color = clBlack;
                            pC->DrawFocusRect(ARect);
            }
            else
            {
            if (Node->Index%2)
            {
                    pC->Brush->Color = clRed;
                    pC->Font->Color = clBlue;
            }
            else
            {
                    if (Node->HasChildren == true)
                    {
                            pC->Brush->Color = clRed;
                            pC->Font->Color = clBlue;
                    }
                    else
                    {
                            pC->Brush->Color = clGreen;
                            pC->Font->Color = clBlack;
                    }
            }
            }
            pC->TextOutA(ARect.Left + 2, ARect.Top + 2, Node->Text);
    }
    else
    {
    if (Node->Text == "B" || (!Node->Parent == NULL && Node->Parent->Text == "B"))
    {
     
    pC->Brush->Color = clBlue;
    pC->FillRect(ARect);
    pC->Font->Color = clBlack;
    pC->TextOutA(ARect.Left + 5, ARect.Top + 5, Node->Text);
    }
    }
    }
    avec dans un bouton :
    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
     
    int i; TTreeNode *pN1; TTreeNode *pN2;
    Form2->TreeView1->Items->Add(NULL, "A");
    Form2->TreeView1->Items->Add(NULL, "B");
    pN1 = Form2->TreeView1->Items->Item[0];
    pN2 = Form2->TreeView1->Items->Item[1];
    for (i = 1; i < 6; i ++)
    {
    Form2->TreeView1->Items->AddChild(pN1, i);
    }
     
    for (i = 1; i < 6; i ++)
    {
    Form2->TreeView1->Items->AddChild(pN2, i);
    }
    En espérant que cela te soit utile...c'est pas tres beau comme code et tres perfectible mais on peut voir comme ca que chaque item est customisable .
    Il faut se casser la tete a tester lors du dessin soit les parametres comme 'Index' , 'State', ou le 'Text' du Node ou du Node précédent (avec qqchose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TTreeView *pNode = Node->GetPrev();
    ).

    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 68
    Points
    68
    Par défaut
    MERCI BEAUCOUP CANTRELLE ...

    Cela fonctionne comme je le souhaite. J'y était presque mais avec quelques gros oublis ...

    MERCI MILLE FOIS DE TON AIDE, j'ai enfin compris comment cela fonctionne.

    BONNE CONTINUATION

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

Discussions similaires

  1. [MySQL] Alternance de couleur par ligne dans un tableau
    Par Budy123 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 19/12/2012, 20h03
  2. [WD14] Changement de couleur par ligne dans une liste
    Par Xsara 167 cv dans le forum WinDev
    Réponses: 35
    Dernier message: 04/11/2010, 15h15
  3. Dans une ListBox, une couleur par ligne
    Par molo2003 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 13/02/2010, 12h17
  4. [Débutant] [plot] Une couleur par ligne
    Par mygwel dans le forum MATLAB
    Réponses: 14
    Dernier message: 16/03/2009, 16h22
  5. 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

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