树形控件如何实现全选,急!急!
树型控件写了个递归函数,实现了全选,可是如果函数放在clicked事件中,则在点击“+”展开的时候也会触发该函数,如果放在selectionchanged里,由于oldhandle和newhandle没变不会触发该函数,树形控件有相关的checkbox事件吗?求教高手,急!
[解决办法]
树形控件没有相关的checkbox的事件。我的解决方法是在clicked事件中,通过鼠标点击的位置来判断是否点击的checkbox位置。下面是我使用的代码,你可能要调整下里面的数值
// 获取点击的X坐标
lx = UnitsToPixels(PointerX(), XUnitsToPixels!)
// 计算CheckBox所在的X坐标
If This.Linesatroot Then
lx1 = ltvi_Node.level * 19
Else
lx1 = (ltvi_Node.level - 1) * 19
End If
[解决办法]
你在clicked加个判断是否是点击checkbox处了。
Function integer getiteminfo(long hWnd, long uMsg, long wParam, REF TVHITTESTINFO tv) library "user32.dll" Alias For "SendMessageA"
在mousemove事件中加入如下代码:
tvhittestinfo ltvitem
tvitem Item
ltvitem.pt.xx = UnitsToPixels (xpos, XUnitsToPixels! )
ltvitem.pt.yy = UnitsToPixels (ypos, YUnitsToPixels! )
getiteminfo(handle(this),4369,0,ltvitem)
IF ltvitem.hItem = 0 then return
ib_ischeckboxes = (ltvitem.flags = 64 )
在clicked事件中判断ib_ischeckboxes是否为真,如果是代表的是点击到checkbox否则就不是。。这样就不会出现你所说的问题了