duilib 修复CTreeViewUI复选功能判断不准确的bug
来源:互联网 发布:淘宝晒图怎么删除 编辑:程序博客网 时间:2024/04/30 18:29
转载请说明出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42265209
CTreeViewUI里面自带了复选的功能,但是复选功能存在bug:
1)当一个分组下面存在子项时,子项被手动全选后,分组的复选框没有自动变为选中状态
2)当一个分组下面存在子项时,当所有子项都取消选中状态时,分组的复选框还是选中状态
分组的CTreeNodeUI控件应该自动判断是否为选中状态,bug被修复后的效果如下:
修复过程:
当某个复选框被单击后会触发CTreeViewUI控件的OnCheckBoxChanged函数,这时应该在这里做出判断,来决定分组的选中状态,为此我给CTreeNodeUI控件增加了IsAllChildChecked函数。
修改后的OnCheckBoxChanged函数如下:
bool CTreeViewUI::OnCheckBoxChanged( void* param ){TNotifyUI* pMsg = (TNotifyUI*)param;if(pMsg->sType == _T("selectchanged")){CCheckBoxUI* pCheckBox = (CCheckBoxUI*)pMsg->pSender;CTreeNodeUI* pItem = (CTreeNodeUI*)pCheckBox->GetParent()->GetParent();SetItemCheckBox(pCheckBox->GetCheck(),pItem);if(pItem->GetParentNode() != NULL) //edit by:Redrain 2014.12.11pItem->GetParentNode()->IsAllChildChecked();return true;}return true;}
当某个复选框被单击后,去通知他的父控件,让父控件判断是否应该是选中状态。为CTreeNodeUI控件增加的IsAllChildChecked函数如下:
void CTreeNodeUI::IsAllChildChecked(){bool bIsAllChildChecked = true;bool bIsAllChildUncheck = true;int nCount = GetCountChild();if(nCount > 0){for(int nIndex = 0;nIndex < nCount;nIndex++){CTreeNodeUI* pItem = GetChildNode(nIndex);if(!pItem->GetCheckBox()->IsSelected()){bIsAllChildChecked = false;}else{bIsAllChildUncheck = false;}}if (bIsAllChildChecked && !GetCheckBox()->IsSelected()){GetCheckBox()->Selected(true);return;}else if (bIsAllChildUncheck && GetCheckBox()->IsSelected()){GetCheckBox()->Selected(false);return;}}}
总结:
bug的修复代码已经提交到我自己的Duilib库。
我的Duilib库代码下载地址:点击打开链接Redrain 2014.12.30
0 0
- duilib 修复CTreeViewUI复选功能判断不准确的bug
- duilib 修复CTreeViewUI控件动态添加子控件时,对是否显示判断不足的bug
- DuiLib::CTreeViewUI 的基本用法
- magento 子分类数量不准确,可能为负数的bug修复
- [duilib]修复UIOption同时显示背景图和背景色时,背景图不显示的bug
- duilib List控件,横向滚动时列表项不移动或者移动错位的bug的修复
- duilib List控件,横向滚动时列表项不移动或者显示错位的bug的修复
- 修复duilib库UISlider控件的4个bug
- duilib relativepos属性导致控件错误的bug修复
- duilib CDateTimeUI 在Xp下的bug修复
- 修复DUILIB ListEx多个时选择框乱选的BUG
- Reachability判断的不准确 检测网络
- ElasticSerach之分词器进阶-短语搜索不准确bug及修复实现
- [Bug]使用ST_Geometry查询结果不准确的解决方法
- 关于duilib的CTreeViewUI扩展以支持节点拖放的手记
- duilib的一些bug
- duilib使用CTreeViewUI添加CTreeNodeUI注意
- 【duilib界面库】duilib界面库(干货) 修复UIScrollBar鼠标移出控件外显示异常的BUG
- 【大话】六大原则
- Android中的fill_parent、match_parent、wrap_content
- 调用相机并把照片保存到指定路径------
- VC中用命令行创建文件夹的方法
- 块设备驱动程序2
- duilib 修复CTreeViewUI复选功能判断不准确的bug
- hrbust1546 基础数据结构——单链表(1)
- jquery获得select option的值 和对select option的操作
- Java:Resource leak: 'a' is never closed怎么处理?
- 【bzoj 3004】: 吊灯
- Poj 1036 题解
- git 删除远程分支
- CreateThread WaitForMultipleObjects
- IDisposable详解