Bonjour à tous,
J'utilise un TreeView avec plusieurs noeuds. J'aimerais lorsque j'accède à un noeud changer sa couleur ou le mettre en gras.
question : comment faire pour changer la font ou la couleur juste sur un noeux précis ?
Merci
Bonjour à tous,
J'utilise un TreeView avec plusieurs noeuds. J'aimerais lorsque j'accède à un noeud changer sa couleur ou le mettre en gras.
question : comment faire pour changer la font ou la couleur juste sur un noeux précis ?
Merci
Normalement, onChange, onSelected ... te fourni le noeud comme paramètre Node pour le Gestionnaire, sinon, tu peux utiliser TreeView.Selected.Font ...
après le style de la selection est un principe standard de windows, il sera peut-être nécessaire de faire un CustomDraw ...
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
J'ai essayé d'accèder à la propriété 'font' du noeud mais je ne l'ai pas (TreeView.Selected.Font)
Bonjour,
A ma connaissance ce n'est possible qu'en dessinant soit même le noeud.
Pour cela vous pouvez utiliser le OnAdvancedDrawItem.
Exemple:
Attention, vous serez peut être amener à décaler le texte pour qu'il soit au bon emplacement par rapport à son niveau.
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
19 procedure TFFilling.SvtFoldersTreeViewAdvancedCustomDrawItem( Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean); var Rect: TRect; Index: Integer; begin // PaintImages := False; Rect := NodeRect(Node); if NodeIsSelected[Node] then Index := 1 else Index := 0; SvtFoldersTreeView.Canvas.FillRect(rect); ImageList.Draw(SvtFoldersTreeView.Canvas, Rect.Left, Rect.Top, Index); Rect.Left := Rect.Left + 16 + 5; SvtFoldersTreeView.Canvas.TextRect(Rect, Rect.Left, Rect.Top, Node.Text); end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part Rect.Left := Rect.Left + ((Node.Level) * (TreeView.Indent - 1));
Partager