如何禁用一个树节点(Disable Tree Node)

如何禁用一个树节点(Disable Tree Node),第1张

实际应用中我们可能需要禁用某个节点(界面上反应的效果是:节点字体呈灰色显示,节点无法选中等)。但是VCL没有提供Node->Disable()或Node->Enable = false这样的功能,我们只好自己动手实现了。首先我们需要为每个节点设定一个标志,用来标识此节点是否可用,标识方法有很多,比如判断节点的文本(Text),节点的绝对索引值(AbsoluteIndex),节点的索引(Index)加缩进(Indent)等,在本例中我们用节点的Data属性作标识(一个void *型数据,其实可以存放N多东西)。如果在你的应用中恰好用了Data属性,就另外想个用来作标志的方法吧。:)

我们写一个自定义函数,用来启用/禁用一个节点:

//---------------------------------------------------------------------------

// 函数功能: 改变指定节点的启用/禁用状态

// bEnable: 启用: true禁用: false

// pNode: 要改变状态的节点void __fastcall CrnEnableTreeNode(bool bEnable, TTreeNode *pNode){// 设定规则,如果节点允许使用,Node的Data存放0(默认就是0),

// 如果禁用,Data存放0xFFFF pNode->Data = bEnable? NULL: (void *)0xFFFF

1. 节点字体呈灰色显示

2. 节点无法选中

n 个文件夹中含有文件,文件可多选,文件夹不可选。Ant Design TreeSelect的树形组件支持此功能。但父节点子节点都是可选的。

解决方案1:在所有父节点的字段上加上 disabled:true 属性。在 css 中针对ant-select-tree-checkbox-disabled类名添加 display:none 样式。可满足需求。待优化。

解决方案 2:在父节点上加disableCheckbox:true属性(是否可选)。

这写的有点太乱了吧,js和jQuery结合?!!?

js这样写一句话就可以

document.getElementsByTagName("input")[0].setAttribute("disabled", "disabled")

jQuery这样一句话就可以

$("input").attr("disabled","disabled")

jQuery attr() 方法设置或返回被选元素的属性值。

获取属性值语法

$(selector).attr(attribute)

参数描述

attribute规定要获取其值的属性。

设置属性

设置被选元素的属性和值。

语法

$(selector).attr(attribute,value)

参数 描述

attribute规定属性的名称。

value 规定属性的值。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11491777.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存