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 :

Image ou icon dans un Treeview


Sujet :

Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut Image ou icon dans un Treeview
    Bonjour,

    J'ai découvert que l'on pouvait mettre des icones dans les treeviews.
    C géniale. Pour cela, il suffit mette les icones que l'on veut utiliser dans un TImageList et affecter le nom de ce TImageList à la propriétés Images de notre treeview. A chaque fois que je crée un nouveau noeud celui-ci à un icon qui s'affiche a ca gauche. (l'icon dont l'index est 0 dans l'ImageList).

    Si je veux changer l'icon du 4 eme noeud de mon treeview il me suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Form1.TreeView1.Items[4].ImageIndex:=2;
    Ca marche bien le noeud en question prend bien l'icon d'index 2.

    Cependant j'ai un petit souci quand je le selection le 4eme noeud en cliquant dessus l'icon avec le quel il a été initialisé apparait. Et si je clique autre part l'icon d'index 2 réapparait.

    Pk ca fait ca? et comment faire pour que ca ne le fasse plus?

    Merci

  2. #2
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    Salut,

    Il faut éviter d'utiliser l'index 0 pour un TTreeview => cf. aide Delphi. Met une image quelquonque (la même que ta première par exemple) pour ton indice 0 de ton timagelist et ne l'emploi pas.
    Un exemple , en ayant relié ta timageList a statesIndex de ton treeview:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EnfantNode := treeview1.Items.AddChild(ParentNode,'Nom'.AsString);
                EnfantNode.StateIndex := 1; //l'indice de ton image, différent de 0
    A+.

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,
    Il existe aussi la propriété TTreeNode.SelectedIndex correspondant à l'index de l'image lorsque le noeud est sélectionné.
    Dans ton cas ceci devrait a priori fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Form1.TreeView1.Items[4].ImageIndex:=2;
    Form1.TreeView1.Items[4].SelectedIndex:=2;
    eb.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    Merci ebastien ca marche nickel!

    Comme t'as l'aire de bien maitriser les Treeviews j'ai encor deux petites questions:

    1)connais tu un moyen pour que l'icon apparait plus gros? (c pas grave si ca grossi le text en même temps)

    2)J'aimerai que le text du 4eme noeud apparaisse en rouge, tu connais le nom de cette proprièté?

    En tout cas, deja merci pour avoir résolu mon premier probleme, ca faisait un petit momment que je cherchais...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    Pour grossir l'icon c bon j'ai touvé il suffissait de passer de 16 à 32 la propriété Height et Width du ImageList qui contient les icons.

    Parcontre pour changé la ligne de couleur j'ai qu'un debut de piste:
    J'ai remarqué dans l'inspecteur d'objets que le treeview avait une propriété front qui elle même a une proprieté color.
    Si je passe cette propriété à rouge toutes les lignes de mon treeviews passe au rouge.
    Il faut donc que je trouve cette propriété pour un noeud donné. Mais voila, je la trouve pas pour un TtreeNoeud. Si quelqu'un sais ou trouver ca je suis preneur...

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Il n'y a pas de propriété Font sur un TTreeNode ...
    Il y a une solution à ton problème en espèrant que ça réponde à ta question : Pour mettre le texte d'un noeud en rouge, il faut implémenter l'événement TTreeView.OnCustomDrawItem :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
        if Node.AbsoluteIndex = 0 then
          Sender.Canvas.Font.Color := clRed;
    end;
    Ce bout de code changera la couleur de la Font du premier noeud de l'arborescence.
    Cet événement est appelé chaque fois que le Treeview doit être repaint.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    C parfait!

    Mille fois Merci


  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    Heuu... enfaite je me suis emflammé un peu vite
    Il me manque un dernier truc c la procedure qui permet faire redessiner le noeud d'un treeviews ou alors tout le treeview... L'ideal ca serai de redessiné juste le noeud.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    J'ai trouvé un moyen de faire redessiner le noeud du treeview:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      TreeView1.Items[4].Selected:=True;
    Voila tout...

    encor merci a tous

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

Discussions similaires

  1. image(icone) dans un treeview
    Par t0ine dans le forum C++Builder
    Réponses: 8
    Dernier message: 19/03/2007, 13h31
  2. icone dans un treeview
    Par maxxou dans le forum VB.NET
    Réponses: 2
    Dernier message: 15/03/2007, 20h01
  3. Problème d'icone dans un treeview
    Par t0ine dans le forum C++Builder
    Réponses: 1
    Dernier message: 09/03/2006, 16h28
  4. image de fond dans treeview
    Par chancourt dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/08/2005, 16h11
  5. icon dans treeview ou listview
    Par Sebinou dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2004, 00h29

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