treeview怎么实现点击文字同时也选中复选框?点击复选框和文字的效果一样?[已解决]
本帖最后由 kinghu318 于 2012-7-30 08:30 编辑treeview 中,是通过复选框的形式进行显示的,现在可以通过文本选中复选框或者通过点击复选框进行选择,但是两者结合起来就无法实现效果,大家有什么好的办法吗?谢谢!!$ck=_GUICtrlTreeView_GetSelection($TreeView1)
;MsgBox(0,"",$ck)
If _GUICtrlTreeView_GetChecked($TreeView1,$ck) Then ;//选中
_GUICtrlTreeView_SetChecked($treeview1,$ck,False)
MsgBox(0,"",1)
Else;If Not _GUICtrlTreeView_GetChecked($TreeView1,$ck)
_GUICtrlTreeView_SetChecked($treeview1,$ck,True)
MsgBox(0,"",2)
EndIf我是通过判断项的选中状态进行判断,但是好像复选框的事件执行先于我的判断,在我的判断之前复选框的点击事件已经执行了。。。。 不明白什么能同时点中文本和复选框 回复 2# yhxhappy
treeview默认的情况是点击文本是不会选中复选框的 #include <GuiConstantsEx.au3>
#include <TreeviewConstants.au3>
#include <Array.au3>
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>
Local $TreeItem
$GUI = GUICreate("树视图(TreeView) UDF 函数演示", 400, 300)
$hTreeView = GUICtrlCreateTreeView(2, 2, 396, 268, $TVS_CHECKBOXES+$TVS_HASLINES, $TVS_NOSCROLL)
GUISetState()
$hItem = GUICtrlCreateTreeViewItem("主项", $hTreeView)
_ArrayAdd($TreeItem, $hItem)
For $y = 1 To 10
$Item = GUICtrlCreateTreeViewItem("子项" & $y, $hItem)
_ArrayAdd($TreeItem, $Item)
Next
$TreeItem = UBound($TreeItem)-1
GUICtrlSetState($hItem, $GUI_EXPAND+$GUI_DEFBUTTON) ;展开父项
$TreePos = ControlGetPos($GUI, "", $hTreeView) ;取TREE控件坐标
; 循环到用户退出
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg
Case $TreeItem To $TreeItem[$TreeItem]
$x = _GUICtrlTreeView_DisplayRect($hTreeView,$nMsg, True) ;取点击项文本框的坐标
If $nMsg-$TreePos >= $x Then ;如果点击的坐标小于文本框X坐标,说明点击在CHECKBOX上,反之点击在文本上
If BitAnd(GUICtrlRead($nMsg), $GUI_CHECKED) Then
GUICtrlSetState($nMsg, $GUI_UNCHECKED)
Else
GUICtrlSetState($nMsg, $GUI_CHECKED)
EndIf
EndIf
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
回复 4# yhxhappy
非常感谢要的就是这个效果 有用 收藏了 有用 收藏了{:face (382):} 谢谢分享,很有用! 学习了,,正为这个发愁 感谢,感谢,来学习了。非常感谢。
页:
[1]