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 ...
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));
Désolé, j'aoi oublié les sous prog
NodeIsSelected[Node] me renvoi juste un bollean m'indiquant l'icone que je dessine devant le noeud.
quand a NodeRect :
functionDisplayRect(TextOnly:Boolean):TRect;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function TFFilling.NodeRect(Node: TTreeNode): TRect; var ARect: TRect; begin Result := Node.DisplayRect(True); ARect := Node.DisplayRect(False); // Result.Top := Result.Top + 2; Result.Right := Max(Result.Right, Arect.Right); end;
Syntaxe C++:
Windows::TRect__ fastcallDisplayRect(boolTextOnly);
Description
Si le paramètre TextOnly a la valeur true,le rectangle de délimitation inclut seulement le texte du noeud.Sinon,il inclut toute la ligne occupée par le noeud dans le contrôle vue arborescente.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager