在Delphi中使用树形控件TreeView,改变其颜色,使用的是CustomDrawItem方法:

procedure TForm1.tv1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Odd(Node.AbsoluteIndex) then
begin
Sender.Canvas.Brush.Color:=clGreen; //改变背景颜色
Sender.Canvas.Font.Color:=clWhite; //改变字体颜色
end
else
Sender.Canvas.Font.Color:=clRed;
end;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Odd(Node.AbsoluteIndex) then
begin
Sender.Canvas.Brush.Color:=clGreen; //改变背景颜色
Sender.Canvas.Font.Color:=clWhite; //改变字体颜色
end
else
Sender.Canvas.Font.Color:=clRed;
end;
在根据内容条件改变时,使用Node判断:

procedure TForm1.tv1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Length(Node.Text)<5 then
tv1.Canvas.Brush.Color:=clRed
else
tv1.Canvas.Brush.Color:=clWhite;
end;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Length(Node.Text)<5 then
tv1.Canvas.Brush.Color:=clRed
else
tv1.Canvas.Brush.Color:=clWhite;
end;