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

Lazarus Pascal Discussion :

Composant TreeView et couleur des noeuds


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre prolifique Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 763
    Par défaut Composant TreeView et couleur des noeuds
    Bonjour à toutes et tous,

    Est-ce que quelqu'un a déjà utilisé un TreeView en modifiant la couleur du texte d'un noeud en fonction d'un critère particulier ?

    Je voudrais pouvoir modifier les couleurs du texte des noeuds, mais les TTreeNode n'ont pas de composants Font, et je ne vois pas comment dans le TTreeview réaliser cela.

    Si quelqu'un a une idée, ou s'il existe un composant dérivé qui permet cela, merci d'avance pour votre aide.

    JS

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 249
    Par défaut
    Hello,
    avec l'événement OnCustomDrawItem, tu dois pouvoir y arriver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.tv_eg1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode;  State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
     If Node.Text = 'Root' then   Sender.Canvas.Font.Color := clBlue;
     If Node.Text = 'Node1' then   Sender.Canvas.Font.Color := clRed;
     If Node.Text = 'Node2' then   Sender.Canvas.Font.Color := clGreen;
     If Node.Text = 'Node3' then   Sender.Canvas.Font.Color := clLime;
    end;
    Nom : LazarusTreeView.png
Affichages : 784
Taille : 16,3 Ko


    Ami calmant, J.P

  3. #3
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 159
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 159
    Par défaut [Treeview] Problème pour faire fonctionner un bout de code du forum
    Citation Envoyé par jurassic pork Voir le message
    Hello,
    avec l'événement OnCustomDrawItem, tu dois pouvoir y arriver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.tv_eg1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode;  State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
     If Node.Text = 'Root'  then   Sender.Canvas.Font.Color := clBlue;
     If Node.Text = 'Node1' then   Sender.Canvas.Font.Color := clRed;
     If Node.Text = 'Node2' then   Sender.Canvas.Font.Color := clGreen;
     If Node.Text = 'Node3' then   Sender.Canvas.Font.Color := clLime;
    end;
    Bonjour,

    j'aimerais bien savoir ce qu'il manque au petit bout de code posté par jurassic pork pour avoir un fonctionnement correct de ces 4 lignes chez moi (Linux Debian 12, Lazarus 3.8 et un code venant d'un cador du forum [https://forum.lazarus.freepascal.org...html#msg398314]) auquel je n'ai rien changé sauf l'ajout de la procédure CustomDrawItem et ça ne fonctionne pas ! Les textes restent en noir, point final.

    Je savais que le Treeview c'était compliqué :
    But be warned: Custom drawing of TTreeView is very complex. It occurs in several stages (see the "Stage" parameter) and you must fully understand this drawing cycle otherwise this exercise will be quite frustrating...
    https://forum.lazarus.freepascal.org...html#msg398341
    https://forum.lazarus.freepascal.org...0;attach=42158
    (j'ai mis deux liens, je ne sais plus lequel est le bon... Faut dire aussi qu'il m'apparait ce matin un problème avec dvlp, regardez la copie d'écran de ça en live :
    Nom : plus_de_boutons.png
Affichages : 242
Taille : 25,4 Ko
    Qui a cassé quoi ? )
    , mais pas à ce point-là...

    Merci pour le coup de main,

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 249
    Par défaut
    Hello Jipété,
    il faut que la propriété tvoThemedDraw dans Options du TreeView soit à False.

    Ami calmant, J.P (sans T)

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 159
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 159
    Par défaut
    Ah !

    ÉNORME MERCI à toi !
    Nom : 4nodes_colorés.png
Affichages : 258
Taille : 6,8 Ko

  6. #6
    Membre chevronné Avatar de der§en
    Homme Profil pro
    Bretagne
    Inscrit en
    Septembre 2005
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bretagne
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 111
    Par défaut
    Pour répondre à un besoin similaire, la coloration des items, je le faisait en consultant le level des ttreenode:

    https://docwiki.embarcadero.com/Libr...TreeNode.Level

  7. #7
    Membre prolifique Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 763
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,
    avec l'événement OnCustomDrawItem, tu dois pouvoir y arriver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.tv_eg1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode;  State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
     If Node.Text = 'Root' then   Sender.Canvas.Font.Color := clBlue;
     If Node.Text = 'Node1' then   Sender.Canvas.Font.Color := clRed;
     If Node.Text = 'Node2' then   Sender.Canvas.Font.Color := clGreen;
     If Node.Text = 'Node3' then   Sender.Canvas.Font.Color := clLime;
    end;
    Nom : LazarusTreeView.png
Affichages : 784
Taille : 16,3 Ko


    Ami calmant, J.P
    Bonjour JP,
    de retour d'un Loooong WE, je vois cette magnifique réponse. Merci à toi.
    J'avais utilisé cet évènement, avec succès, à priori, mais si on demande à mettre en évidence la sélection, (propriété HotTrack) on perd le formatage et je n'ai pas trouvé comment faire pour modifier l'aspect lors de la sélection.
    Il y a bien la propriété HotTrackColor, mais pas de "HotTrackFont" !
    Du coup, j'ai ôté la mise en évidence de la sélection.

    JS

  8. #8
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 159
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 159
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    ... mais si on demande à mettre en évidence la sélection, (propriété HotTrack) on perd le formatage et je n'ai pas trouvé comment faire pour modifier l'aspect lors de la sélection.
    Curieux... J'ai testé avec HotTrack à True et HotTrackColor avec clTeal et ma foi, ça fonctionne : en bougeant la souris sur un item, le pointeur devient "le doigt qui clique" et la couleur du texte change.

    Qu'est-ce que tu appelles "le formatage" ?
    As-tu bien pensé à décocher tvoThemedDraw ?

  9. #9
    Membre prolifique Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 763
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Curieux... J'ai testé avec HotTrack à True et HotTrackColor avec clTeal et ma foi, ça fonctionne : en bougeant la souris sur un item, le pointeur devient "le doigt qui clique" et la couleur du texte change.

    Qu'est-ce que tu appelles "le formatage" ?
    As-tu bien pensé à décocher tvoThemedDraw ?
    Bonjour Jipété,

    Quand je parle du formatage, c'est, par exemple, la mise en italique ou en gras.
    Ensuite, il prend la couleur du HotTrackColor, mais on ne peut pas avoir une couleur différente en fonction d'un critère particulier du nœud.

    JS

  10. #10
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 159
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 159
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    ... on ne peut pas avoir une couleur différente en fonction d'un critère particulier du nœud.
    Ça doit dépendre du critère, puisque par exemple, selon le text ou le level, tu peux avoir une couleur ou une autre, on l'a bien vu.
    Toi, tu voudrais utiliser un autre critère ? Lequel ?

  11. #11
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 159
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 159
    Par défaut
    Ah oui, ça peut être sympa : me suis appuyé sur l'éditeur de nodes pour en ajouter 5 tout en bas et j'ai joué avec les couleurs, ce qui donne ça :
    Nom : test_levels.png
Affichages : 471
Taille : 7,1 Ko

    et pendant que j'y étais, cette copie d'écran des couleurs, pour éviter de chercher (depuis le temps que je devais la faire...) :
    Nom : 22couleurs.png
Affichages : 179
Taille : 14,2 Ko
    Allez hop !, cadeau,

    PS : l'éditeur du forum a retrouvé ses boutons.

Discussions similaires

  1. Treeview et couleur des noeuds
    Par VILPELLET dans le forum ASP.NET
    Réponses: 2
    Dernier message: 29/09/2012, 23h22
  2. Changer la couleur des noeuds d'un JvCheckTreeView
    Par codial dans le forum Composants VCL
    Réponses: 0
    Dernier message: 12/03/2008, 14h28
  3. peupler un treeview avec gestion des noeuds
    Par Alabama-song dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/01/2008, 20h35
  4. [c# 2.0] TreeView et sélection des noeuds
    Par OtI$ dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/04/2007, 11h11
  5. Couleur des noeuds ds 1 TTreeView
    Par vincent DD dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/09/2002, 13h54

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