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

Delphi Discussion :

Affichage couleur dans un TreeView


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de oneDev
    Homme Profil pro
    dilettant
    Inscrit en
    Mars 2019
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : dilettant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 220
    Par défaut Affichage couleur dans un TreeView
    Bonjour,

    J'utilise un Treeview avec le composant Virtual-TreeView dans Delphi 11.1 en VCL.
    Je charge des données et je souhaiterai ensuite afficher en couleurs les lignes selon une condition.

    Il y a une seule colonne pour laquelle le fond s'affiche correctement.
    Quand je sélectionne la ligne toute les colonnes sont correctes.

    Nom : tv1_color.png
Affichages : 269
Taille : 27,4 Ko

    Voici le code correspondant :

    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 TForm1.Tree1DrawText(Sender: TBaseVirtualTree; TargetCanvas: TCanvas;
        Node: PVirtualNode; Column: TColumnIndex; const Text: string; const
        CellRect: TRect; var DefaultDraw: Boolean);
    var
      mdata: PMyData;
    begin
      mdata := Node.GetData;
      if Assigned(mdata) then
      begin
        if (mdata.Level = 2) then
          TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsBold]
        else if (mdata.Level > 2) and (mdata.Stock = 0) then
        begin
          TargetCanvas.Brush.Color := clYellow;
          TargetCanvas.Font.Color := clRed;
        end;
      end;
    end;
    Je n'ai pas trouvé ce qui ne convenait pas dans ce code.

    Avez-vous une idée ?

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 090
    Par défaut
    La couleur de sélection bleue c'est géré par le composant, je ne connais pas le Virtual TreeView mais le dessin d'un noeud est en plusieurs étapes
    D'ailleurs, la case à cocher ne gère pas la transparence, ce n'est pas terrible, avec un DrawElement du Style, ça se fait très bien.

    La c'est OnDrawText, forcément cela change que le fond et la couleur d'un texte et non celui des cellules, il n'existe pas un OnDrawCell ou un OnCustomDraw avec un Stade PrePaint ?

    Le jaune est sur du texte et le blanc sur des nombres (ou monétaire), ne connaissant pas le Virtual TreeView, tout est du texte ou est-ce qu'il y a un typage de colonne et éventuellement des différences de support des méthodes de dessin ?
    Pour le level est sur PMyData ? Level n'est pas une valeur du TTreeNode PVirtualNode ?


    Surtout que tout cela est très facile avec un simple TTreeView, genre en D7, que cela soit la couleur que le mode colonne on peut le dessiner avec un TTreeView, pourquoi utiliser un Virtual TreeView externe ?



    Lit le sujet Treeview et CustomDrawItem: probleme d'affichage avec la scrollbar horizontale
    Encore une fois, un TTreeView de base :
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éprouvé Avatar de oneDev
    Homme Profil pro
    dilettant
    Inscrit en
    Mars 2019
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : dilettant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 220
    Par défaut
    Effectivement, cela se gère dans le OnBeforeCellPaint.
    Merci pour le lien, je vais lire ça.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/04/2013, 04h50
  2. Problème d'affichage ProgressBar dans un TreeViewer
    Par maxi297 dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 22/07/2012, 21h29
  3. Couleur dans un treeview
    Par jmjmjm dans le forum C#
    Réponses: 1
    Dernier message: 06/05/2011, 09h12
  4. Problème affichage icon dans treeView
    Par midos_ab dans le forum JSF
    Réponses: 2
    Dernier message: 01/02/2011, 16h00
  5. Affichage dans un TreeView
    Par kabil.cpp dans le forum Windows Forms
    Réponses: 4
    Dernier message: 10/09/2009, 11h46

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