树形视图控件
控件所在的父窗口(指win.form对象)
treeviewObject.addCtrl(
button={ cls="button";text="button";left=33;top=32;right=126;bottom=81;autoResize=false }
)
treeviewObject.adjust = function( cx,cy,wParam ) {
/*窗口缩放时会自动触发此函数。
cx 参数为窗口宽度,cy 参数为窗口高度,
wParam 参数请参考 _WM_SIZE 消息参数说明,一般不用管。
所有 win.form 创建的窗体和控件都支持此事件,
重复赋值只会追加而不会覆盖此事件。
一般不建议添加一个 wndproc 仅仅是为了处理 _WM_SIZE 消息,
定义 adjust 事件是更好的选择。
可主动调用此事件,省略参数时 cx,cy 参数默认设为窗口大小*/
};
底部坐标
是否捕获全局鼠标消息
勾选或取消勾选所有下级子节点
并且更新所有上级父节点的勾选状态为:是否有任意的子节点是勾选状态
参数@1如果不指定则表示根节点(_TVI_ROOT)
参数@2不指定则默认赋值为true
运行时类名
清空节点
清空所有节点
清空参数指定节点的所有子节点,
@hItem 参数指定节点句柄
关闭控件窗口
设计时类名
折叠项
参数为节点句柄,省略则取当前选中项
折叠并删除子项
参数为节点句柄,省略则取当前选中项
获取项目总数
删除节点
参数:节点句柄
是否禁用
for hChild in treeviewObject.each(){
/*遍历父节点句柄的下级子级点
不包含子节点的子节点*/
}
开始编辑项,参数为节点句柄
结束编辑并
结束编辑并取消
确保指定项目是可见的,通过展开父项目或滚动树型控件窗,
参数为节点句柄
treeviewObject.enum(
function(hItem,parent){
/*枚举所有下级子节点,
hItem为当前节点,parent为当前节点的父节点
返回false停止枚举*/
}
)
treeviewObject.enumParent(
function(parent,child){
/*枚举所有上级父节点,
parent为当前父节点,child为该节点的子节点
child是上一次枚举到的父节点或者自身
返回false停止枚举*/
}
)
展开项
参数为节点句柄,省略则取当前选中项
展开指定项,并展开指定项的所有下级子级点
包含子级点的所有下级子节点都会被展开
部分展开
参数为节点句柄,省略则取当前选中项
展开项以及其所有上级父节点
参数为节点句柄,省略则取当前选中项
查找子项,展开上级父节点,
可以用多个文本参数多级向下查找子项,
父节点参数可省略,参数也可以是一个字符串数组
按路径查找子项,展开上级父节点
父节点参数可省略不写,默认为根节点,
返回指定项的复选框是否勾选
返回子节点
参数:节点句柄
返回包含节点所有子节点句柄的数组,
@hItem 参数指定节点句柄
控件客户区块位置(::RECT结构体)
开始编辑时返回编辑控件,
此控件在完成编辑后会自动销毁,不必手动销毁
取消发送_WM_CANCELMODE消息即可
返回编辑文本框句柄;
返回树视图中的第一个节点
也即_TVI_ROOT的第一个子节点
返回第一个可见节点
参数:节点句柄
控件字体(::LOGFONT结构体)
获取图像列表,
可选使用 LVSIL 前缀常量指定类型
返回TVITEM对象,参数为TVITEM结构体或指定部分成员的table对象.
参数一也可以是空值,或树节点句柄
如果参数未指定节点句柄,则取当前选中节点
返回节点关联数据
返回节点路径,以反斜杠分隔父子项目文本
省略节点参数则取当前选中节点
返回句柄指定节点整行区块(RECT对象)
省略节点句柄则取当前选中节点
返回句柄指定节点文本区块(RECT对象)
省略节点句柄则取当前选中节点
返回节点文本
省略节点参数则取当前选中节点
缓冲区长度参数可省略,默认为100
返回下一个节点,
第二个参数可选使用 TVNI 前缀的常量指定选项
返回后面的兄弟节点
参数:节点句柄
返回下一个可见节点
参数:节点句柄
NM_CUSTOMDRAW通知消息返回NMLVCUSTOMDRAW结构体
该函数限用于onnotify通知回调函数中
code参数为通知码,ptr参数为NMHDR指针
如果NMHDR指针指向TV_DISPINFO对象则返回该对象,否则返回空值
该函数限用于onnotify通知回调函数中
code参数为通知码,ptr参数为NMHDR指针
如果code不是大于_TVN_FIRST,并小于_TVN_LAST的消息,
该函数返回空值,否则返回NMTREEVIEW对象.
返回父窗口
返回父节点
参数:节点句柄
返回父节点关联数据
返回相对坐标,宽,高
x,y,cx,cy=win.getPos(hwnd)
返回前面的兄弟节点
参数:节点句柄
返回上一个可见节点
参数:节点句柄
控件区块位置(::RECT结构体)
控件屏幕区块位置(::RECT结构体)
返回根节点( TVI_ROOT )
注意TVI_ROOT的子节点并没有父节点
返回当前选中节点
高度
控件是否隐藏
该函数返回指定坐标的句柄,参数三可省略,默认为false.
如果不指定任何参数,则自动调用 win.getMessagePos() 获取消息坐标
第二个返回值指定测试结果,该值可以是一个或多个_TVHT_开头的常量组合
控件句柄
控件ID
获取设置图像列个
支持 win.imageList 对象
参数@1可以是普通文本,
可使用数组添加多个兄弟节点,使用children成员添加多个子节点
参数@2指定父项(可省略),参数@3指定插入位置前面的子项(可省略)
返回新节点句柄,示例
var item = winform.treeview.insertItem("子节点",item)
参数@1可以是TVITEM结构体或指定部分成员的table对象
参数@1可使用数组添加多个兄弟节点,使用children成员添加多个子节点
此函数可自动检测非空成员并自动设定相应mask位
参数@2指定父项(可省略),参数@3指定插入位置前面的子项(可省略)
返回新节点句柄,示例
var item = winform.treeview.insertItem( text = "根目录" )
参数@1可以使用string.xml对象,
或者使用相同结构的普通表对象,
每个节点对象必须指定tagName或text属性,
treeview按text,label,title,name,tagName的顺序确定显示标题
每个节点可以用数组包含子节点(但节点本身必须指定tagName或text属性)
也可以使用children成员指向一个数组表示多个子节点
参数@2指定父项(可省略),参数@3指定插入位置前面的子项(可省略)
返回新节点句柄,
此用法请参考aardio范例中的treeview控件演示、
以及fsys.asar下面几个库的treeData函数
显示表对象中的名值对以及数组
显示表对象中的名值对以及数组,
支持显示嵌套表,表中不应出现循环引用的成员,
可选用hParent指定父节点句柄
使窗口绘图区无效
使窗口绘图区无效
不刷新背景
节点是否展开状态
节点是否至少展开过一次
左侧坐标
修改窗口样式,所有参数都是可选参数,
@remove 用数值指定要移除的样式,可使用 WS 前缀的常量
@add 用数值指定要添加的样式,可使用 WS 前缀的常量
@swpFlags 可选用数值指定调整窗口选项,可使用 SWP 前缀的常量
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos
细节请参考 win.modifyStyle 函数源码
修改窗口扩展样式,所有参数都是可选参数,
@remove 用数值指定要移除的样式,可使用 WS_EX 前缀的常量
@add 用数值指定要添加的样式,可使用 WS_EX 前缀的常量
@swpFlags 可选用数值指定调整窗口选项,可使用 SWP 前缀的常量
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos
细节请参考 win.modifyStyle 函数源码
treeviewObject.onClick = function(hItem,data){
/*单击节点触发此事件,
hItem 为当前节点句柄,data 为该节点绑定的自定义数据。
可返回 true 阻止默认处理。
注意在双击后控件自动获取焦点。*/
}
treeviewObject.onDestroy = function(){
/*窗口销毁前触发*/
}
treeviewObject.onDoubleClick = function(hItem,data){
/*双击节点触发此事件,
hItem 为当前节点句柄,data 为该节点绑定的自定义数据。
可返回 true 阻止默认处理*/
}
treeviewObject.onRightClick = function(hItem,data){
/*右键点击节点触发此事件,
hItem 为当前节点句柄,data 为该节点绑定的自定义数据*/
}
treeviewObject.onSelChanged = function(hItem,data,nmTreeView){
/*改娈当前节点触发此事件,
hItem 为当前节点句柄,data 为该节点绑定的自定义数据。
nmTreeView 为 NMTREEVIEW 结构体参数*/
}
treeviewObject.onStateImageChanging = function(hItem,checked,newImgIndex,oldImgIndex){
/*状态图像(通常指复选框)变更触发此事件。
hItem 为树视图的变更节点句柄。
checked 为是否切换到勾选图像索引,也就是 2。
newImgIndex,oldImgIndex 分别为新旧状态图像索引。
注意勾选操作并不改变当前节点,默认勾选完成会弹回原来的选中节点。
可调用 setSelected 函数选中当前操作的节点 */
//选定节点
winform.treeview.setSelected(hItem);
}
treeviewObject.oncommand = function(id,event){
/*命令事件触发*/
}
treeviewObject.onnotify = function(id,code,ptr){
/*通知事件触发*/
}
创建悬浮窗口,
悬浮窗口仍然显示在原来的位置,
悬浮窗口如影随形的跟随父窗口移动或改变大小,控件原来的固定边距等参数仍然有效
此控件不建议指定参数
投递窗口消息到消息队列中
此函数用法请参考 ::User32.PostMessage
刷新
右侧坐标
选定节点
似拖放操作的目标项目高亮显示
参数指定节点句柄
选定节点并设置到可视区第一行
参数指定节点句柄
发送窗口消息
此函数用法请参考 ::User32.SendMessage
勾选指定项的复选框
参数@2,默认值是true
设置焦点
指定LOGFONT字体对象,或逻辑字体句柄
treeviewObject.setFont(point=10;name="宋体");
指定图像列表,
可选使用 LVSIL 前缀常量指定类型
treeview控件不负责销毁图像列表,用户应在控件不再使用图像列表后释放图像列表。
更新项节点,参数为TVITEM结构体或指定部分成员的table对象
如果参数未指定节点句柄,则取当前选中节点
成功返回true;
此函数可自动检测非空成员并自动设定相应mask位
设置关联数据
data可以是任意对象
如果添加项时使用的参数是表而不是结构体,默认设置为关联数据
设置节点文本
省略节点参数则取当前选中节点
改变父窗口
调整窗口位置或排序,所有参数可选
同时指定x,y坐标则移动位置
同时指定宽高则改变大小
指定插入位置(句柄或_HWND前缀常量)则调整Z序
设置控件区块位置(::RECT结构体)
设置控件屏幕区块位置(::RECT结构体)
禁止重绘
恢复重绘
不选定任何节点
选定节点
参数指定节点句柄
显示控件
控件文本
外观主题,例如
winform.button.theme = "Explorer"
winform.button.theme = false
开启此控件的跨线程调用功能
折叠的就展开,展开的就折叠
参数为节点句柄,省略则取当前选中项
顶部坐标
允许转发转发子窗口的命令(_WM_COMMAND)与通知(_WM_NOTIFY)消息,
避免子窗口 oncommand,onnotify 等回调失效。
同时会处理子窗口的 _WM_CTLCOLORSTATIC 等消息,
以避免部分外观属性失效
重绘invalidate函数指定的区块
窗口是否有效,
窗口未关闭返回 true ,
窗口已关闭或正在关闭返回 false
获取可见项总数
宽度
treeviewObject.wndproc = function(hwnd,message,wParam,lParam){
/*窗口消息回调,返回任意非null值阻止默认回调
wndproc重复赋值时追加函数而不是覆盖之前的回调
设为null添除所有消息回调函数
wndproc也可以是一个表,键要为处理的消息,值为对应的消息回调函数*/
}
topointer(-1)
treeview中表示同级节点中第一个节点的伪句柄
treeview中表示同级节点中最后一个节点的伪句柄
treeview中表示根节点的伪句柄
topointer(-0x0FFFD)/*_TVI_SORT*/
0;
文字颜色
文字背景色
嵌套级别
绘图状态
行序号
设置句柄
lItemlParam
uItemState
更新数据
子项目数目
如果为-1则向父窗体发送_TVN_GETDISPINFO通知消息
取文本时可在此指定缓冲区长度
节点句柄
项目非选取状态下,要使用的image在图象列表中的索引
项目选取状态下,要使用的image在图象列表中的索引
数值
可使用一个或多个TVIF_开头的常量组合
以指定当前结构体哪些成员有效
可使用一个或多上TVIS_开头的常量组合
数值
文本
topointer(-1)
treeview中表示同级节点中第一个节点的伪句柄
treeview中表示同级节点中最后一个节点的伪句柄
treeview中表示根节点的伪句柄
topointer(-0x0FFFD)/*_TVI_SORT*/
_I_CHILDRENCALLBACK=-1
_I_IMAGECALLBACK=-1
_TVE_COLLAPSE=1
_TVE_EXPAND=2
_TVE_TOGGLE=3
_TVGN_CARET=9
_TVGN_CHILD=4
_TVGN_DROPHILITE=8
_TVGN_FIRSTVISIBLE=5
_TVGN_LASTVISIBLE=0xA
_TVGN_NEXT=1
_TVGN_NEXTSELECTED=0xB
_TVGN_NEXTVISIBLE=6
_TVGN_PARENT=3
_TVGN_PREVIOUS=2
_TVGN_PREVIOUSVISIBLE=7
_TVGN_ROOT=0
_TVHT_ABOVE=0x100
_TVHT_BELOW=0x200
_TVHT_NOWHERE=1
_TVHT_ONITEM=0x46
_TVHT_ONITEMBUTTON=0x10
_TVHT_ONITEMICON=2
_TVHT_ONITEMINDENT=8
_TVHT_ONITEMLABEL=4
_TVHT_ONITEMRIGHT=0x20
_TVHT_ONITEMSTATEICON=0x40
_TVHT_TOLEFT=0x800
_TVHT_TORIGHT=0x400
_TVIF_CHILDREN=0x40
_TVIF_EXPANDEDIMAGE=0x200
_TVIF_HANDLE=0x10
_TVIF_IMAGE=2
_TVIF_INTEGRAL=0x80
_TVIF_PARAM=4
_TVIF_SELECTEDIMAGE=0x20
_TVIF_STATE=8
_TVIF_STATEEX=0x100
_TVIF_TEXT=1
_TVIS_BOLD=0x10
_TVIS_CUT=4
_TVIS_DROPHILITED=8
_TVIS_EXPANDED=0x20
_TVIS_EXPANDEDONCE=0x40
_TVIS_EXPANDPARTIAL=0x80
_TVIS_EX_ALL=2
_TVIS_EX_DISABLED=2
_TVIS_EX_FLAT=1
_TVIS_OVERLAYMASK=0xF00
_TVIS_SELECTED=2
_TVIS_STATEIMAGEMASK=0xF000
_TVIS_USERMASK=0xF000
_TVM_CREATEDRAGIMAGE=0x1112
_TVM_DELETEITEM=0x1101
_TVM_EDITLABELW=0x1141
_TVM_ENDEDITLABELNOW=0x1116
_TVM_ENSUREVISIBLE=0x1114
_TVM_GETCOUNT=0x1105
_TVM_GETIMAGELIST=0x1108
_TVM_GETINDENT=0x1106
_TVM_GETINSERTMARKCOLOR=0x1126
_TVM_GETISEARCHSTRINGA=0x1117
_TVM_GETISEARCHSTRINGW=0x1140
_TVM_GETITEMHEIGHT=0x111C
_TVM_GETITEMRECT=0x1104
_TVM_GETITEMSTATE=0x1127
_TVM_GETITEMW=0x113E
_TVM_GETLINECOLOR=0x1129
_TVM_GETNEXTITEM=0x110A
_TVM_GETSCROLLTIME=0x1122
_TVM_GETTOOLTIPS=0x1119
_TVM_GETVISIBLECOUNT=0x1110
_TVM_HITTEST=0x1111
_TVM_INSERTITEMW=0x1132
_TVM_SETIMAGELIST=0x1109
_TVM_SETINDENT=0x1107
_TVM_SETINSERTMARK=0x111A
_TVM_SETINSERTMARKCOLOR=0x1125
_TVM_SETITEMHEIGHT=0x111B
_TVM_SETITEMW=0x113F
_TVM_SETLINECOLOR=0x1128
_TVM_SETSCROLLTIME=0x1121
_TVM_SETTOOLTIPS=0x1118
_TVM_SORTCHILDREN=0x1113
_TVM_SORTCHILDRENCB=0x1115
_TVNRET_DEFAULT=0
_TVNRET_SKIPNEW=2
_TVNRET_SKIPOLD=1
_TVN_ASYNCDRAW=0xFFFFFE5C
_TVN_BEGINDRAGW=0xFFFFFE38
_TVN_BEGINLABELEDITW=0xFFFFFE35
_TVN_BEGINRDRAGW=0xFFFFFE37
_TVN_DELETEITEMW=0xFFFFFE36
_TVN_ENDLABELEDITW=0xFFFFFE34
_TVN_FIRST=0xFFFFFE70
_TVN_GETDISPINFOW=0xFFFFFE3C
_TVN_GETINFOTIPW=0xFFFFFE62
_TVN_ITEMCHANGEDW=0xFFFFFE5D
_TVN_ITEMCHANGINGW=0xFFFFFE5F
_TVN_ITEMEXPANDEDW=0xFFFFFE39
_TVN_ITEMEXPANDINGW=0xFFFFFE3A
_TVN_KEYDOWN=0xFFFFFE64
_TVN_LAST=0xFFFFFE0D
_TVN_SELCHANGEDW=0xFFFFFE3D
_TVN_SELCHANGINGW=0xFFFFFE3E
_TVN_SINGLEEXPAND=0xFFFFFE61
_TVSIL_NORMAL=0
_TVSIL_STATE=2
_TVSI_NOSINGLEEXPAND=0x8000
_TVS_DISABLEDRAGDROP=0x10
_TVS_EX_AUTOHSCROLL=0x20
_TVS_EX_DIMMEDCHECKBOXES=0x200
_TVS_EX_DOUBLEBUFFER=4
_TVS_EX_DRAWIMAGEASYNC=0x400
_TVS_EX_EXCLUSIONCHECKBOXES=0x100
_TVS_EX_FADEINOUTEXPANDOS=0x40
_TVS_EX_MULTISELECT=2
_TVS_EX_NOINDENTSTATE=8
_TVS_EX_PARTIALCHECKBOXES=0x80
_TVS_EX_RICHTOOLTIP=0x10
_TVS_NONEVENHEIGHT=0x4000
_TVS_RTLREADING=0x40
_TVS_SHOWSELALWAYS=0x20
_TVS_TRACKSELECT=0x200
_TV_FIRST=0x1100