SkinUI5.0官方文档

SkinUI5.0官方文档


树控件

<h2>树节点</h2> <p>树节点CTreeItem,继承于CListItem,支持CListItem的所有属性和方法。插入树控件的节点必须是CTreeItem或其子类,CListItem或其子类。</p> <h2>树控件</h2> <p>树控件CTreeView类,继承于CListView,支持CListView的所有属性和方法。</p> <h2>属性和相关方法</h2> <h4>插入节点</h4> <ul> <li>通过C++程序代码调用方法控制如下:</li> </ul> <pre><code class="language-c">void InsertItem(CTreeItem* pParentItem, CListItem* pItem);</code></pre> <h4>展开树节点</h4> <ul> <li>通过C++程序代码调用方法控制如下:</li> </ul> <pre><code class="language-c">void ExpandItem(CTreeItem* pItem, BOOL bExpand);</code></pre> <h4>移除树节点</h4> <ul> <li>通过C++程序代码调用方法控制如下:</li> </ul> <pre><code class="language-c">void RemoveItem(CListItem* pItem);</code></pre> <h4>删除树节点</h4> <ul> <li>通过C++程序代码调用方法控制如下:</li> </ul> <pre><code class="language-c">void DeleteItem(CListItem* pItem);</code></pre> <h4>删除所有树节点</h4> <ul> <li>通过C++程序代码调用方法控制如下:</li> </ul> <pre><code class="language-c">void DeleteAllChild();</code></pre> <h2>请看下面的示例</h2> <h4>效果图</h4> <p><img src="http://www.skinui.cn/doc/img/5.0/3/TreeView.png" alt="树控件" /></p> <h4>布局文件</h4> <pre><code class="language-xml">&lt;FlexLayout&gt; &lt;TextView Width="MatchParent" Height="60" HorzAlign="Center" Text="IDS_CONTROL16_2" Font="ID_FONT_H4"/&gt; &lt;Line Width="MatchParent" Height="1" Margin="0,0,0,20"/&gt; &lt;RelativeLayout Width="MatchParent" Height="30" Layout="SeparatorLine.xml" ChildText11="简单树控件"/&gt; &lt;RelativeLayout Width="MatchParent" Height="210"&gt; &lt;TreeView Id="100" AlignParentLeft="40" AlignParentRight="40" Height="200" AlignParentVertCenter="0"/&gt; &lt;/RelativeLayout&gt; &lt;RelativeLayout Width="MatchParent" Height="30" Layout="SeparatorLine.xml" ChildText11="复杂树控件"/&gt; &lt;RelativeLayout Width="MatchParent" Height="250"&gt; &lt;TreeView Id="200" AlignParentLeft="40" AlignParentRight="40" Height="240" AlignParentVertCenter="0"/&gt; &lt;/RelativeLayout&gt; &lt;FlexLayout Width="MatchParent" Height="WrapContent" Margin="40,0,20,20"&gt; &lt;Button Id="2001" Width="WrapContent" Height="WrapContent" Margin="0,0,20,0" Background="Button.png" Layout="Button.xml" ChildText11="插入数据"/&gt; &lt;Button Id="2002" Width="WrapContent" Height="WrapContent" Margin="0,0,20,0" Background="Button.png" Layout="Button.xml" ChildText11="滚到顶部"/&gt; &lt;Button Id="2003" Width="WrapContent" Height="WrapContent" Margin="0,0,20,0" Background="Button.png" Layout="Button.xml" ChildText11="滚到底部"/&gt; &lt;/FlexLayout&gt; &lt;/FlexLayout&gt;</code></pre> <h4>h文件</h4> <pre><code class="language-cpp">#pragma once class CDemoTreeViewLayout : public CScrollLayout { public: enum { IDC_TREEVIEW1 = 100, IDC_TREEVIEW2 = 200, IDC_BUTTON_CLOSE = 2000, IDC_BUTTON_INSERT = 2001, IDC_BUTTON_SCROLL_TOP = 2002, IDC_BUTTON_SCROLL_BOTTOM = 2003, }; public: CDemoTreeViewLayout(CView* pParent); public: virtual void OnBuildFinish(); protected: void OnBtnClickedClose(UINT uNotifyCode, int nID, CView* pView); void OnBtnClickedInsert(UINT uNotifyCode, int nID, CView* pView); void OnBtnClickedScrollTop(UINT uNotifyCode, int nID, CView* pView); void OnBtnClickedScrollBottom(UINT uNotifyCode, int nID, CView* pView); SKINUI_DECLARE_MESSAGE_MAP() protected: CTreeItem* InsertTreeItem1(int nIndex); void InsertListItem1(CTreeItem* pTreeItem, int nIndex); CTreeItem* InsertTreeItem2(int nIndex); void InsertListItem2(CTreeItem* pTreeItem, int nIndex); private: CTreeView* m_pTreeView1; CTreeView* m_pTreeView2; SKINUI_DECLARE_DYNCREATE(CDemoTreeViewLayout, CScrollLayout) }; #### cpp文件 ```cpp #include &lt;stdafx.h&gt; #include "DemoTreeViewLayout.h" SKINUI_BEGIN_MESSAGE_MAP(CDemoTreeViewLayout, CScrollLayout) ON_SKINUI_COMMAND(IDC_BUTTON_CLOSE, OnBtnClickedClose) ON_SKINUI_COMMAND(IDC_BUTTON_INSERT, OnBtnClickedInsert) ON_SKINUI_COMMAND(IDC_BUTTON_SCROLL_TOP, OnBtnClickedScrollTop) ON_SKINUI_COMMAND(IDC_BUTTON_SCROLL_BOTTOM, OnBtnClickedScrollBottom) SKINUI_END_MESSAGE_MAP() CDemoTreeViewLayout::CDemoTreeViewLayout(CView* pParent) : CScrollLayout(pParent) , m_pTreeView1(NULL) , m_pTreeView2(NULL) { } void CDemoTreeViewLayout::OnBuildFinish() { CScrollLayout::OnBuildFinish(); m_pTreeView1 = dynamic_cast&lt;CTreeView*&gt;(GetChildById(IDC_TREEVIEW1)); if(m_pTreeView1) { for(int i = 0; i &lt; 10; ++i) { CTreeItem* pTreeItem = InsertTreeItem1(i); if(pTreeItem) { for(int j = 0; j &lt; 10; ++j) { InsertListItem1(pTreeItem, j); } } } } m_pTreeView2 = dynamic_cast&lt;CTreeView*&gt;(GetChildById(IDC_TREEVIEW2)); if(m_pTreeView2) { for(int i = 0; i &lt; 10; ++i) { CTreeItem* pTreeItem = InsertTreeItem2(i); if(pTreeItem) { for(int j = 0; j &lt; 10; ++j) { InsertListItem2(pTreeItem, j); } } } } } void CDemoTreeViewLayout::OnBtnClickedClose(UINT uNotifyCode, int nID, CView* pView) { if(m_pTreeView2) { CListItem* pListItem = dynamic_cast&lt;CListItem*&gt;(pView-&gt;GetParent()); if(pListItem) { CRedrawLocker locker(m_pTreeView2); m_pTreeView2-&gt;DeleteItem(pListItem); m_pTreeView2-&gt;Layout(); } } } void CDemoTreeViewLayout::OnBtnClickedInsert(UINT uNotifyCode, int nID, CView* pView) { static int nIndex = 10; if(m_pTreeView2) { CTreeItem* pTreeItem = InsertTreeItem2(nIndex++); if(pTreeItem) { CRedrawLocker locker(m_pTreeView2); for(int j = 0; j &lt; 10; ++j) { InsertListItem2(pTreeItem, j); } m_pTreeView2-&gt;Layout(); m_pTreeView2-&gt;ScrollBottom(); } } } void CDemoTreeViewLayout::OnBtnClickedScrollTop(UINT uNotifyCode, int nID, CView* pView) { if(m_pTreeView2) { CListItem* pListItem = new CListItem(m_pTreeView2); if(pListItem) { CRedrawLocker locker(m_pTreeView2); m_pTreeView2-&gt;ScrollTop(); } } } void CDemoTreeViewLayout::OnBtnClickedScrollBottom(UINT uNotifyCode, int nID, CView* pView) { if(m_pTreeView2) { CListItem* pListItem = new CListItem(m_pTreeView2); if(pListItem) { CRedrawLocker locker(m_pTreeView2); m_pTreeView2-&gt;ScrollBottom(); } } } CTreeItem* CDemoTreeViewLayout::InsertTreeItem1(int nIndex) { CTreeItem* pTreeItem = new CTreeItem(m_pTreeView1); if(pTreeItem) { pTreeItem-&gt;SetBackground(_T("ListItem.png")); pTreeItem-&gt;SetLayout(_T("TreeItem.xml")); pTreeItem-&gt;SetHeight(ITEM_HEIGHT_40); pTreeItem-&gt;SetChildText(ID_TEXTVIEW, SkinUI::Format(_T("树节点%d"), nIndex)); m_pTreeView1-&gt;InsertItem(NULL, pTreeItem); } return pTreeItem; } void CDemoTreeViewLayout::InsertListItem1(CTreeItem* pTreeItem, int nIndex) { CListItem* pListItem = new CListItem(m_pTreeView1); if(pListItem) { pListItem-&gt;SetBackground(_T("ListItem.png")); pListItem-&gt;SetLayout(_T("ListItem.xml")); pListItem-&gt;SetHeight(ITEM_HEIGHT_40); pListItem-&gt;SetChildText(ID_TEXTVIEW, SkinUI::Format(_T("树叶节点%d"), nIndex)); m_pTreeView1-&gt;InsertItem(pTreeItem, pListItem); } } CTreeItem* CDemoTreeViewLayout::InsertTreeItem2(int nIndex) { CTreeItem* pTreeItem = new CTreeItem(m_pTreeView2); if(pTreeItem) { pTreeItem-&gt;SetBackground(_T("ListItem.png")); pTreeItem-&gt;SetLayout(_T("TreeItem.xml")); pTreeItem-&gt;SetHeight(ITEM_HEIGHT_40); pTreeItem-&gt;SetChildText(ID_TEXTVIEW, SkinUI::Format(_T("树节点%d"), nIndex)); m_pTreeView2-&gt;InsertItem(NULL, pTreeItem); } return pTreeItem; } void CDemoTreeViewLayout::InsertListItem2(CTreeItem* pTreeItem, int nIndex) { CListItem* pListItem = new CListItem(m_pTreeView2); if(pListItem) { pListItem-&gt;SetBackground(_T("ListItem.png")); pListItem-&gt;SetLayout(_T("DemoListItem.xml")); pListItem-&gt;SetHeight(ITEM_HEIGHT_60); pListItem-&gt;SetChildImage(1, _T("Image.png")); pListItem-&gt;SetChildText(2, SkinUI::Format(_T("姓名%d"), nIndex)); pListItem-&gt;SetChildText(3, SkinUI::Format(_T("消息消息消息消息消息消息消息消息%d"), nIndex)); m_pTreeView2-&gt;InsertItem(pTreeItem, pListItem); } }</code></pre>

页面列表

ITEM_HTML