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

最近,经常用DuiDesigner来画xml.

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

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

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


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

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

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


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

void CClassView::SelectUITreeItem(CControlUI* pControl)
{
    HTREEITEM hItemCur = NULL;
    HTREEITEM hItemPrev = 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文件较大(元素较多,包含关系比较复杂)时,这次修改的效果,就更明显。

效果图:


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页