Mega Code Archive
How to make the selected treenode bold without owner drawing
Basic code demonstrating how to make the selected TreeNode Bold without owner drawing
The following code uses the TVIS_BOLD constant to make the selected node bold.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure TreeView1Changing(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Commctrl;
{$R *.DFM}
procedure SetNodeBold(Node: TTreeNode; MakeBold: Boolean);
var
Item: TTVItem;
Template: Integer;
begin
if Assigned(Node) then
begin
if MakeBold then
Template := -1
else
Template := 0;
Item.Mask := TVIF_STATE;
Item.hItem := Node.ItemId;
Item.StateMask := TVIS_BOLD;
Item.State := Item.StateMask and Template;
TreeView_SetItem(Node.TreeView.Handle, Item);
end;
end;
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
SetNodeBold(Node, True);
end;
procedure TForm1.TreeView1Changing(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
begin
SetNodeBold(TreeView1.Selected, False)
end;
end.