如何在 cell 组件插件中添加下拉树形控件

如何在 cell 组件插件中添加下拉树形控件,第1张

在 Cell 组件/插件中添加下拉树形控件分以下三个步骤:

1、设置XML类型字符串

Dim str As String

'设置XML

str = ""

str = str &"<:XML>"

2、设置图片(图片值设置为-1为不可见)

'设置树枝节点图片

Dim strPath1 As String

strPath1 = App.Path &"cell1.bmp"

Dim value1 As Long

value1 = Cell1.AddImage(strPath1)

'设置树叶节点图片

Dim strPath2 As String

strPath2 = App.Path &"cell2.bmp"

Dim value2 As Long

value2 = Cell1.AddImage(strPath2)

3、设置单元格中的下拉树形控件

Cell1.SetDroptreeCell 2, 2, 0, str, value1, value2, 0'最后参数:单元格风格

1―单元格按钮在单元格未选中时不可见

备注:

设置单元格中的下拉树形控件。

[Visual Basic]

SetDroptreeCell(col As Long, row As Long, sheet As Long, xml As String,

nBranchImageIndex As Long, nLeafImageIndex As Long, option As Long)

参数

col

列号

row

行号

sheet

页号

xml

下拉树中的类容(xml格式)

nBranchImageIndex

树枝节点图片索引

nLeafImageIndex

树叶节点图片索引

option

单元格风格

1.在资源编辑器中右键单击你的树形控件,事件,然后选择NM_RCLICK,双击它,确定,就添加了树形控件的消息响应,然后找到对应的消息响应处理函数,如下是我的例子:

void

CViewTreeBase::OnNMRClick(NMHDR

*pNMHDR,

LRESULT

*pResult)

{

UNREFERENCED_PARAMETER(pNMHDR)

CPoint

point

GetCursorPos(&point)

ScreenToClient(&point)

UINT

uFlags

=

0

HTREEITEM

click

=

HitTest(point,

&uFlags)

//click和uFlags能定位你单击的具体项目,参看参考资料。

//在这里你可以进行你的添加节点的 *** 作,相信你会天际节点。如果需要添加菜单,你可以搜搜右键添加菜单,然后在这里d出菜单。具体的,看你需求,再做解答。

}

2.也可以自己派生一个类,继承于CTreeCtr,从类向导中进行添加1中消息,如上的例子是我派生的类。

1.添加树形视图控件

2.用向导创建其成员变量CTreeCtrl

m_trdisktree

3.创建TVN_

SELCHANGED响应事件,Edit

Code键

4.代码如下

void

CDiskCataDlg::OnSelchangedTrdisktree(NMHDR*

pNMHDR,

LRESULT*

pResult)

{

NM_TREEVIEW*

pNMTreeView

=

(NM_TREEVIEW*)pNMHDR

CFileFind

filefd

HTREEITEM

parent

HTREEITEM

rootitem=m_trdisktree.GetSelectedItem()

if(m_trdisktree.GetChildItem(rootitem))return

parent=rootitem

CString

rootstr=m_trdisktree.GetItemText(rootitem)

CString

temp

CString

lstr

if(rootstr.Find("\\")==2)

{

lstr.Format("%s*.*",rootstr)

}

else

{

CString

strparent

while(1)

{

parent=m_trdisktree.GetParentItem(parent)

strparent=m_trdisktree.GetItemText(parent)

if(strparent.Find("\\")==2)

goto

end

temp+=strparent

temp+="\\"

}

end:

CString

root=m_trdisktree.GetItemText(parent)

lstr.Format("%s%s%s\\*.*",root,temp,rootstr)

}

BOOL

bfinded=filefd.FindFile(lstr)

while(bfinded)

{

bfinded=filefd.FindNextFile()

CString

filepath

if(filefd.IsDirectory()&&!filefd.IsDots()){

SHGetFileInfo(filefd.GetFilePath(),0,&fileinfo,sizeof(fileinfo),

SHGFI_ICON)

imindex=imlst.Add(fileinfo.hIcon)

m_trdisktree.InsertItem(filefd.GetFileName(),imindex,imindex,rootitem)

}

}

*pResult

=

0

}

看完这段代码,就一定会啦


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11401777.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存