SkinUI入门教程

SkinUI入门教程


3.17 树控件

<p>树控件由CSkinTreeView类来代表,继承于CSkinListView,支持CSkinListView的所有属性和方法。</p> <h2>1 属性和相关方法</h2> <h4>3.1 插入子树节点</h4> <ul> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void InsertItem(CSkinTreeItem* pParentItem, CSkinTreeItem* pItem);</code></pre></li> </ul> <h4>3.2 插入叶子节点</h4> <ul> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void InsertItem(CSkinTreeItem* pParentItem, CSkinListItem* pItem);</code></pre></li> </ul> <h4>3.3 展开树节点</h4> <ul> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void ExpandItem(CSkinTreeItem* pItem, BOOL bExpand);</code></pre></li> </ul> <h4>3.4 移除树节点</h4> <ul> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void RemoveItem(CSkinTreeItem* pParentItem, CSkinListItem* pItem);</code></pre></li> </ul> <h4>3.5 删除树节点</h4> <ul> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void DeleteItem(CSkinTreeItem* pParentItem, CSkinListItem* pItem);</code></pre></li> </ul> <h4>3.6 删除所有树节点</h4> <ul> <li>通过C++程序代码调用方法控制如下: <pre><code class="language-c">void DeleteAllItem();</code></pre></li> </ul> <h2>请看下面的示例</h2> <h4>效果图</h4> <p><img src="http://www.skinui.cn/doc/img/3/17/1.png" alt="树控件" /></p> <h4>布局文件</h4> <pre><code class="language-xml">&amp;lt;SkinDialog DefaultWidth=&amp;quot;445&amp;quot; DefaultHeight=&amp;quot;300&amp;quot; SysButton=&amp;quot;CLOSE&amp;quot; Icon=&amp;quot;128&amp;quot; Caption=&amp;quot;IDS_CONTROL_SHOW17&amp;quot; Animation=&amp;quot;SizeChange&amp;quot;&amp;gt; &amp;lt;SkinRelativeLayout LayoutWidth=&amp;quot;150&amp;quot; AlignParentLeft=&amp;quot;15&amp;quot; AlignParentTop=&amp;quot;35&amp;quot; AlignParentBottom=&amp;quot;15&amp;quot; BkgColor=&amp;quot;ID_COLOR_WHITE&amp;quot; Border=&amp;quot;ID_COLOR_LINE&amp;quot;&amp;gt; &amp;lt;SkinTreeView Id=&amp;quot;101&amp;quot; AlignParentLeft=&amp;quot;2&amp;quot; AlignParentRight=&amp;quot;2&amp;quot; AlignParentTop=&amp;quot;2&amp;quot; AlignParentBottom=&amp;quot;2&amp;quot; VScrollBar=&amp;quot;VScrollBar.xml&amp;quot;&amp;gt; &amp;lt;/SkinTreeView&amp;gt; &amp;lt;/SkinRelativeLayout&amp;gt; &amp;lt;SkinRelativeLayout LayoutWidth=&amp;quot;250&amp;quot; AlignParentRight=&amp;quot;15&amp;quot; AlignParentTop=&amp;quot;35&amp;quot; AlignParentBottom=&amp;quot;15&amp;quot; BkgColor=&amp;quot;ID_COLOR_WHITE&amp;quot; Border=&amp;quot;ID_COLOR_LINE&amp;quot;&amp;gt; &amp;lt;SkinTreeView Id=&amp;quot;201&amp;quot; AlignParentLeft=&amp;quot;2&amp;quot; AlignParentRight=&amp;quot;2&amp;quot; AlignParentTop=&amp;quot;2&amp;quot; AlignParentBottom=&amp;quot;2&amp;quot; VScrollBar=&amp;quot;VScrollBar.xml&amp;quot;&amp;gt; &amp;lt;/SkinTreeView&amp;gt; &amp;lt;/SkinRelativeLayout&amp;gt; &amp;lt;/SkinDialog&amp;gt;</code></pre> <h4>h文件</h4> <pre><code class="language-cpp">#pragma once class CTreeViewDialog : public CSkinDialog { public: enum { IDC_TREEVIEW1 = 101, IDC_TREEVIEW2 = 201, }; public: CTreeViewDialog(); public: virtual void OnInitDialog(); };</code></pre> <h4>cpp文件</h4> <pre><code class="language-cpp">#include &amp;quot;stdafx.h&amp;quot; #include &amp;quot;TreeViewDialog.h&amp;quot; CTreeViewDialog::CTreeViewDialog() : CSkinDialog(_T(&amp;quot;ControlDialog17.xml&amp;quot;)) { } static int nIndex = 1; static BOOL bMale = FALSE; void CTreeViewDialog::OnInitDialog() { CSkinDialog::OnInitDialog(); CSkinTreeView* pTreeView = static_cast&amp;lt;CSkinTreeView*&amp;gt;(GetChildById(IDC_TREEVIEW1)); if(pTreeView) { CSkinTreeItem* pRootItem = new CSkinTreeItem(pTreeView); if(pRootItem) { pRootItem-&amp;gt;ExpandItem(TRUE); pRootItem-&amp;gt;SetLayoutHeight(30); pRootItem-&amp;gt;SetLayout(_T(&amp;quot;TreeItem.xml&amp;quot;)); pRootItem-&amp;gt;SetImage(_T(&amp;quot;ListItem.png&amp;quot;)); pRootItem-&amp;gt;SetChildText(100002, _T(&amp;quot;RootItem&amp;quot;)); pTreeView-&amp;gt;InsertItem(NULL, pRootItem); for(int j = 0; j &amp;lt; 3; ++j) { CSkinTreeItem* pTreeItem = new CSkinTreeItem(pTreeView); if(pTreeItem) { pTreeItem-&amp;gt;SetLayoutHeight(30); pTreeItem-&amp;gt;SetLayout(_T(&amp;quot;TreeItem.xml&amp;quot;)); pTreeItem-&amp;gt;SetImage(_T(&amp;quot;ListItem.png&amp;quot;)); pTreeItem-&amp;gt;SetChildText(100002, _T(&amp;quot;TreeItem&amp;quot;) + SkinUI::IntToString(j+1)); pTreeView-&amp;gt;InsertItem(pRootItem, pTreeItem); for(int k = 0; k &amp;lt; 5; ++k) { CSkinListItem* pListItem = new CSkinListItem(pTreeView); if(pListItem) { pListItem-&amp;gt;SetLayoutHeight(30); pListItem-&amp;gt;SetLayout(_T(&amp;quot;ListItem.xml&amp;quot;)); pListItem-&amp;gt;SetImage(_T(&amp;quot;ListItem.png&amp;quot;)); pListItem-&amp;gt;SetChildText(100001, _T(&amp;quot;ListItem&amp;quot;) + SkinUI::IntToString(k+1)); CSkinView* pSkinView = pListItem-&amp;gt;GetChildById(100001); if(pSkinView) { pSkinView-&amp;gt;SetLayoutAlignParentLeft(10 + 16 * (pTreeItem-&amp;gt;GetLevel() + 1)); } pTreeView-&amp;gt;InsertItem(pTreeItem, pListItem); } } } } } } pTreeView = static_cast&amp;lt;CSkinTreeView*&amp;gt;(GetChildById(IDC_TREEVIEW2)); if(pTreeView) { CSkinTreeItem* pRootItem = new CSkinTreeItem(pTreeView); if(pRootItem) { pRootItem-&amp;gt;ExpandItem(TRUE); pRootItem-&amp;gt;SetLayoutHeight(30); pRootItem-&amp;gt;SetLayout(_T(&amp;quot;TreeItem.xml&amp;quot;)); pRootItem-&amp;gt;SetImage(_T(&amp;quot;ListItem.png&amp;quot;)); pRootItem-&amp;gt;SetChildText(100002, _T(&amp;quot;公司名称&amp;quot;)); pTreeView-&amp;gt;InsertItem(NULL, pRootItem); for(int j = 0; j &amp;lt; 3; ++j) { CSkinTreeItem* pTreeItem = new CSkinTreeItem(pTreeView); if(pTreeItem) { pTreeItem-&amp;gt;SetLayoutHeight(30); pTreeItem-&amp;gt;SetLayout(_T(&amp;quot;TreeItem.xml&amp;quot;)); pTreeItem-&amp;gt;SetImage(_T(&amp;quot;ListItem.png&amp;quot;)); pTreeItem-&amp;gt;SetChildText(100002, _T(&amp;quot;部门&amp;quot;) + SkinUI::IntToString(j+1)); pTreeView-&amp;gt;InsertItem(pRootItem, pTreeItem); for(int k = 0; k &amp;lt; 5; ++k) { CSkinListItem* pListItem = new CSkinListItem(pTreeView); if(pListItem) { pListItem-&amp;gt;SetLayoutHeight(30); pListItem-&amp;gt;SetImage(_T(&amp;quot;ListItem.png&amp;quot;)); pListItem-&amp;gt;SetLayout(_T(&amp;quot;UserListItem.xml&amp;quot;)); pListItem-&amp;gt;SetChildImage(100001, bMale ? _T(&amp;quot;Male.png&amp;quot;) : _T(&amp;quot;Female.png&amp;quot;)); pListItem-&amp;gt;SetChildText(100002, _T(&amp;quot;成员&amp;quot;) + SkinUI::IntToString(nIndex++)); pListItem-&amp;gt;SetChildText(100003, bMale ? _T(&amp;quot;男&amp;quot;) : _T(&amp;quot;女&amp;quot;)); CSkinView* pSkinView = *(pListItem-&amp;gt;GetAllChild().begin()); if(pSkinView) { pSkinView-&amp;gt;SetLayoutAlignParentLeft(5 + 16 * (pTreeItem-&amp;gt;GetLevel() + 1)); } bMale = !bMale; pTreeView-&amp;gt;InsertItem(pTreeItem, pListItem); } } } } } } }</code></pre>

页面列表

ITEM_HTML