DuiDesigner修改:增强选择元素后的用户体验


最近,经常用DuiDesigner来画xml.

当xml元素较多, 在左边的控件视图超过一屏时,点击右边的文件视图时,经常不能确定该选中的元素在控件视图的位置.

眼睛都看花了,还是找不到该元素在控件视图的位置~

画xml时,通常都是按照设计图,将元素摆好。然后将对应元素或父节点改名, 这时,要确定改名的元素是否为要改的元素名称。


这时,必须要确定该元素在控件视图中的位置. 每当这时,都感到很蛋疼, 找不到控件视图中被选中的元素节点位置~.

e.g. xml控件元素和父节点元素叠在一起,必须在控件视图中选中后,确定是要改的元素节点才能改名.

e.g. 一个Label和一个Button同样大小,叠在一起.


今天正好想起这件事,跟进 DuiDesigner, 改了一个函数,搞定~

  1. voidCClassView::SelectUITreeItem(CControlUI*pControl)
  2. {
  3. HTREEITEMhItemCur=NULL;
  4. HTREEITEMhItemPrev=NULL;///<上一个被选中的Item
  5. if(pControl==NULL)
  6. {
  7. return;
  8. }
  9. if(pControl->GetTag()>0)
  10. {
  11. hItemPrev=m_wndClassView.GetSelectedItem();
  12. if(NULL!=hItemPrev)
  13. {
  14. ///清掉上一次选择的Item为不选择状态状态
  15. m_wndClassView.SetItemState(hItemPrev,0,TVIS_BOLD|TVIS_SELECTED);
  16. }
  17. hItemCur=(HTREEITEM)(((ExtendedAttributes*)pControl->GetTag())->hItem);
  18. if(NULL!=hItemCur)
  19. {
  20. ///设置这次选中的Item为突出显示
  21. m_wndClassView.SelectItem(hItemCur);
  22. m_wndClassView.SetItemState(hItemCur,TVIS_BOLD|TVIS_SELECTED,TVIS_BOLD|TVIS_SELECTED);
  23. }
  24. }
  25. }

效果 :

每点击右边文件视图时,左边的控件视图,就突出显示元素的节点位置.

当屏幕元素超过一屏时,左边的控件视图,直接滚动到目标元素(这是原始工程的效果),只是因为没有突出显示Item, 所以看不太出来.

当xml文件较大(元素较多,包含关系比较复杂)时,这次修改的效果,就更明显。

效果图:

DuiDesigner修改:增强选择元素后的用户体验