改变一个颜色的方法为TreeView.Canvas.Font.Color或者TreeView.Canvas.Brush.Color
但是改变之后再改回来的颜色和初始化的颜色不一样了,请问大家是怎么处理的
if StateFlag then
begin 
  TreeView1.Canvas.Brush.Color:=ClRed;
end
else
begin
  TreeView1.Canvas.Brush.Color:=ClWindowText;
end;
改回来之后发现和系统初始化的不一样了,在点击该节点的时候为全蓝色
大家有没有遇到过呢?

解决方案 »

  1.   

    确切的说字体是黑色的,Brush是蓝色的
      

  2.   

    Canvas.Brush.Style = bsClear
      

  3.   

    Canvas.Brush.Color和Canvas.Font.Color,都改了,没有变化。
      

  4.   

    你要怎么样?
    改变节点颜色?那可以这样先在节点上保存一些信息,用来标明是否需要换色,然后再画,比如
    procedure TCompanyOpenB.TreeView1CustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
      if Node.Level=0 then
         exit;
      if PTCoid(Node.Data).Isopen=false then   //强制转换
        TreeView1.Canvas.Font.Color:=clred
      else 
        TreeView1.Canvas.Font.Color:=clblack;
    end;