在Treeview中禁用和更改节点的颜色

时间:2016-09-22 17:28:06

标签: delphi treeview nodes disabled-control

我正在寻找禁用正确节点的方式。

我们说我已经创建了简单的 treeview 结构,如下所示:

  • 父1 (禁用)
  • 家长2
    • 儿童1
    • 儿童2 (禁用)

到目前为止,我已找到解决方法如何做到这一点,但它仍然无法正常工作。我使用OnChanging事件处理程序:

procedure TForm1.TreeViewChanging(Sender: TObject; Node: TTreeNode;
  var AllowChange: Boolean); 
begin
   if (Node.Text = 'Parent 1') or (Node.Text = 'Child 1') then
      AllowChange := False;
end;

它有效,因为我无法点击此节点,但问题是在“禁用”之后以这种方式节点,Parent 1Child 1节点的颜色与其他节点相同。有没有办法改变这个节点的颜色(灰色)?或者您可能知道在TTreeView组件中禁用节点的另一种方法吗?

1 个答案:

答案 0 :(得分:2)

要禁用节点,请将其arrays属性设置为Enabled。禁用的项目以灰色显示。

要更改节点文本的正常颜色,请更改False

要更改已禁用节点文本的颜色,请使用TTreeView.Font.Color事件:

OnCustomDrawItem

默认颜色设置:

enter image description here

已禁用颜色= procedure TForm2.TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); begin if cdsDisabled in state then Sender.Canvas.Font.Color := clRed; //cl3DLight; end;

enter image description here

普通文字颜色= cl3DLight,禁用颜色= clGreen

enter image description here