pourquoi la racine fait jamais comme les autres ? [TreeView] [resolu ] - Delphi/Pascal - Programmation
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 ?
Marsh Posté le 05-08-2004 à 15:55:43
antp a écrit : if ( Node = Items.GetFirstNode ) or ( not Node.HasChildren ) then |
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é
En tout cas, merci pour ton aide.
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 ?
Marsh Posté le 05-08-2004 à 16:12:20
antp a écrit : Comment ça augmenter la taille ? |
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...
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 ?
Marsh Posté le 05-08-2004 à 16:47:04
antp a écrit : Non, je vois pas, t'as pas une capture d'écran ? |
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.
Marsh Posté le 05-08-2004 à 16:49:08
Tu mets ton Treeview et une Toolbar dans un panel et c'est bon
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 !
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