duilib 修复CTreeViewUI复选功能判断不准确的bug
2014-12-30 14:06
507 查看
转载请说明出处,谢谢~~:/article/1371196.html
CTreeViewUI里面自带了复选的功能,但是复选功能存在bug:
1)当一个分组下面存在子项时,子项被手动全选后,分组的复选框没有自动变为选中状态
2)当一个分组下面存在子项时,当所有子项都取消选中状态时,分组的复选框还是选中状态
分组的CTreeNodeUI控件应该自动判断是否为选中状态,bug被修复后的效果如下:
修复过程:
当某个复选框被单击后会触发CTreeViewUI控件的OnCheckBoxChanged函数,这时应该在这里做出判断,来决定分组的选中状态,为此我给CTreeNodeUI控件增加了IsAllChildChecked函数。
修改后的OnCheckBoxChanged函数如下:
当某个复选框被单击后,去通知他的父控件,让父控件判断是否应该是选中状态。为CTreeNodeUI控件增加的IsAllChildChecked函数如下:
总结:
bug的修复代码已经提交到我自己的Duilib库。
我的Duilib库代码下载地址:点击打开链接
Redrain 2014.12.30
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.11 pItem->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
相关文章推荐
- duilib 修复CTreeViewUI复选功能判断不准确的bug
- duilib 修复CTreeViewUI控件动态添加子控件时,对是否显示判断不足的bug
- duilib 修复CTreeViewUI控件动态添加子控件时,对是否显示判断不足的bug
- duilib combo控件,当鼠标滚动时下拉列表自动关闭的bug的修复
- duilib修复ActiveXUI控件bug,以支持flash透明动态背景
- 今天一天开发的内容!修复了几个Bug,开发了一些新的功能!
- ASP.NET Identity 2新增双重认证、帐号锁定、防伪印章功能并修复了一些bug
- DC.Web.HttpCompress 压缩模块发布(采用原作者最新版,修复2处Bug,增加缓存功能)!(更新源码)
- duilib relativepos属性导致控件错误的bug修复
- uploadify 插件使用 包含 增删,修改样式,类似邮箱里的 添加附件 功能,也修复了uploadify存在的bug
- duilib修复ActiveXUI控件bug,以支持flash透明动态背景
- OJ2.0userInfo页面Modify逻辑bug修复,search功能逻辑实现
- Vista 系统诊断和修复功能自动判断网络故障
- [duilib]修复UIOption同时显示背景图和背景色时,背景图不显示的bug
- 修复duilib库UISlider控件的4个bug
- duilib修复ActiveXUI控件bug,以支持flash透明动态背景
- MySQL 5.5.19 发布,新增3个主要功能,修复6处BUG
- MySoft.Data v2.7.3 stable 版本发布,新增部分功能,并修复其中的已知的bug
- duilib WindowImplBase BUG修复 --- 按一次ESC键, 关闭多个窗口
- uilib库gdi句柄泄漏bug修复,duilib防止gdi泄漏的小提醒