DuiDesigner修改:增强选择元素后的用户体验
最近,经常用DuiDesigner来画xml.
当xml元素较多, 在左边的控件视图超过一屏时,点击右边的文件视图时,经常不能确定该选中的元素在控件视图的位置.
眼睛都看花了,还是找不到该元素在控件视图的位置~
画xml时,通常都是按照设计图,将元素摆好。然后将对应元素或父节点改名, 这时,要确定改名的元素是否为要改的元素名称。
这时,必须要确定该元素在控件视图中的位置. 每当这时,都感到很蛋疼, 找不到控件视图中被选中的元素节点位置~.
e.g. xml控件元素和父节点元素叠在一起,必须在控件视图中选中后,确定是要改的元素节点才能改名.
e.g. 一个Label和一个Button同样大小,叠在一起.
今天正好想起这件事,跟进 DuiDesigner, 改了一个函数,搞定~
- voidCClassView::SelectUITreeItem(CControlUI*pControl)
- {
- HTREEITEMhItemCur=NULL;
- HTREEITEMhItemPrev=NULL;///<上一个被选中的Item
- if(pControl==NULL)
- {
- return;
- }
- if(pControl->GetTag()>0)
- {
- hItemPrev=m_wndClassView.GetSelectedItem();
- if(NULL!=hItemPrev)
- {
- ///清掉上一次选择的Item为不选择状态状态
- m_wndClassView.SetItemState(hItemPrev,0,TVIS_BOLD|TVIS_SELECTED);
- }
- hItemCur=(HTREEITEM)(((ExtendedAttributes*)pControl->GetTag())->hItem);
- if(NULL!=hItemCur)
- {
- ///设置这次选中的Item为突出显示
- m_wndClassView.SelectItem(hItemCur);
- m_wndClassView.SetItemState(hItemCur,TVIS_BOLD|TVIS_SELECTED,TVIS_BOLD|TVIS_SELECTED);
- }
- }
- }
效果 :
每点击右边文件视图时,左边的控件视图,就突出显示元素的节点位置.
当屏幕元素超过一屏时,左边的控件视图,直接滚动到目标元素(这是原始工程的效果),只是因为没有突出显示Item, 所以看不太出来.
当xml文件较大(元素较多,包含关系比较复杂)时,这次修改的效果,就更明显。
效果图: