gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:35:13 28 4
gpt4 key购买 nike

我正在寻找禁用适当节点的方法。

假设我创建了如下所示的简单 treeview 结构:

  • 父级 1 (禁用)
  • 家长 2
    • child 1
    • child 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 组件中节点的方法吗?

最佳答案

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

要更改节点文本的正常颜色,请更改 TTreeView.Font.Color

要更改禁用节点文本的颜色,请使用 OnCustomDrawItem 事件:

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:

enter image description here

普通文本颜色 = clGreen 和禁用颜色 = clRed:

enter image description here

关于delphi - 在 Treeview 中禁用和更改节点的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39645321/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com