我要将一个树的分支内容变成无效,即变成灰灰的.其实它还是在树上的,并且在必要的时候可以变回来(有效)???????????

解决方案 »

  1.   

    procedure TDockableForm.projectviewCustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
      Try
        if Node.Level = 2 then
          if CompareText(PXMLNodeInfo(Node.Data).Active, 'True') = 0 then
          begin
            Sender.Canvas.Font.Style := Sender.Canvas.Font.Style  + [fsbold];
          end else
            Sender.Canvas.Font.Style := Sender.Canvas.Font.Style  - [fsbold]
      Except
        ;
      end;
    end;Click  or DBLClick
    if Node.Level = 2 then
       if CompareText(PXMLNodeInfo(Selected.Data).Active, 'True') = 0 then
         //Exit;
      

  2.   

    type  PXMLNodeInfo=^TXMLNodeInfo;
      TXMLNodeInfo=record
        Name:ShortString;
        Path:ShortString;
        Active : ShortString;
      end;仅仅是例子,你可以自己改的。
      

  3.   

    如果要使它的图标和data同时变灰,该如何?
      

  4.   

    请教这是什么东东??
            Sender.Canvas.Font.Style := Sender.Canvas.Font.Style  - [fsbold]
      
      

  5.   

    它的例子里只是根据某个树是否active,设置它显示时的文字是否用粗体表示,
    Sender.Canvas.Font.Style := Sender.Canvas.Font.Style  - [fsbold]就是将文字的字体类型中去除粗体的属性。
    你的话,只需要将文字的颜色改变就可以了,灰色表示不可用,黑色表示可用。
      

  6.   

    Node.ImageIndex := ...
    Node.StateIndex := Node.ImageIndex...
    加上,你可能需要多一个图片
      

  7.   

    treeview 里好像有一个maskimage的属性,它可以覆盖在节点上,表示为无效节点。