pourquoi la racine fait jamais comme les autres ? [TreeView] [resolu ]

pourquoi la racine fait jamais comme les autres ? [TreeView] [resolu ] - Delphi/Pascal - Programmation

Marsh Posté le 05-08-2004 à 15:10:35    

Bonjour,  
 
je dérive un TCustomTreeView afin de modifier l'affichage de mon treeview : un peu de couleur et des images pour faire plus joli. Le problème est que lorsque je sélectionne la racine, parfois l'image (à côté du noeud) s'affiche, parfois elle ne s'affiche pas. Je n'ai pas trouvé d'où celà pouvait venir...  
 
Quelqu'un a une idée ?
 
Merci d'avance.  
Miss
 
PS : Je mets le code correspondant parce que je sais pas si je suis claire... ;-)
 
----
  TKTreeView = class(TCustomTreeView)
  public
    constructor create(AOwner: TComponent); override;
    function  CustomDrawItem(Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages: Boolean): Boolean; override;
    procedure CustomDrawItemV(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    procedure setIcons;
  end;
 
//implementation de customdrawitem
  Canvas.Brush.Color := clWhite;
  Canvas.Font.Color := clBlack;
  Canvas.FillRect(Node.DisplayRect(True));
 
  if ( Node = Items.GetFirstNode ) or ( not Node.HasChildren ) then
    Node.StateIndex := -1
  else Node.StateIndex := 1;
 
  //affichage lorsque le noeud est sélectionné
  if (cdsSelected in state) then
  begin
    Canvas.Brush.Color := $00804000;
    Canvas.Font.Color := clWhite;
    Canvas.FillRect(Node.DisplayRect(False));
  end;
 
  Result := True;
 
 
EDIT : il suffisait de mettre PaintImages à True !
Bon, bah, maintenant je regarde comment augmenter la taille de chaque ligne/noeud.


Message édité par Miss Mistic le 05-08-2004 à 15:52:53
Reply

Marsh Posté le 05-08-2004 à 15:10:35   

Reply

Marsh Posté le 05-08-2004 à 15:52:35    

 if ( Node = Items.GetFirstNode ) or ( not Node.HasChildren ) then
    Node.StateIndex := -1
  else Node.StateIndex := 1;  
 
Il a quel but ce bout de code ? :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-08-2004 à 15:55:43    

antp a écrit :

if ( Node = Items.GetFirstNode ) or ( not Node.HasChildren ) then
    Node.StateIndex := -1
  else Node.StateIndex := 1;  
 
Il a quel but ce bout de code ? :??:


 
Si le noeud n'a pas d'enfant alors je ne mets pas d'image d'état, sinon j'en mets un. Le test pour getFirstNode était venu s'ajouter suite à mon ptit souci d'affichage. Cependant, c résolu. (cf EDIT)
 
Par contre, tu ne saurais pas comment je peux agrandir la taille d'une ligne de treeview et ajouter une barre d'outils à mon treeview ? C'est peut-être beaucoup demandé  :D  
 
En tout cas, merci pour ton aide.
 

Reply

Marsh Posté le 05-08-2004 à 16:01:14    

Comment ça augmenter la taille ?  
 
Pour la barre d'outil, bah c'est pas clair non plus, où est-ce que tu veux mettre une barre d'outils ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-08-2004 à 16:12:20    

antp a écrit :

Comment ça augmenter la taille ?  
 
Pour la barre d'outil, bah c'est pas clair non plus, où est-ce que tu veux mettre une barre d'outils ?


 
En fait, j'aimerais qu'il y ait plus d'espace entre chaque noeud. Dans une listBox tu peux définir la taille de la ligne avec ItemHeight. Je recherche l'équivalent pour le treeview. Cependant, comme je n'ai pas trouvé, je suis en train d'essayer de le faire "à la main" (je bidouille Node.DisplayRect).
 
Pour ce qui est de la barre d'outils, en fait, c un peu comme dans ECLIPSE, où au dessus de l'arborescence de tes projets, tu trouves une petite barre d'outil pour ajouter un nouveau projet, créer un nouveau projet,... Tu vois le style ?  
 
J'ai essayé de dériver un TPanel qui contiendrait une Toolbar et un arbre. Mais, je n'ai pas encore réussie, je travaille pour le moment sur la largeur de la ligne du treeview... tout un programme...  :)

Reply

Marsh Posté le 05-08-2004 à 16:34:15    

Non, je vois pas, t'as pas une capture d'écran ?
 
Il suffit de mettre le treeview et la toolbar dans un panel, non ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-08-2004 à 16:47:04    

antp a écrit :

Non, je vois pas, t'as pas une capture d'écran ?
 
Il suffit de mettre le treeview et la toolbar dans un panel, non ?


 
Oui, je pense que ce sera le plus facile.  
 
Dans cette capture d'écran, http://ometer.com/eclipse-shots/eclipse-metacity.png, tu vois que Navigator est une sorte de toolbar/barre de titre d'un autre composant (que ce soit une liste ou un arbre). C'est ce que j'aurais aimé faire.

Reply

Marsh Posté le 05-08-2004 à 16:49:08    

Tu mets ton Treeview et une Toolbar dans un panel et c'est bon


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-08-2004 à 17:20:35    

antp a écrit :

Tu mets ton Treeview et une Toolbar dans un panel et c'est bon


 
ok. Je vais essayer comme çà.  
Merci antp !  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed