kinghu318 发表于 2012-7-25 16:50:16

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我是通过判断项的选中状态进行判断,但是好像复选框的事件执行先于我的判断,在我的判断之前复选框的点击事件已经执行了。。。。

yhxhappy 发表于 2012-7-25 19:28:02

不明白什么能同时点中文本和复选框

kinghu318 发表于 2012-7-26 08:50:14

回复 2# yhxhappy



treeview默认的情况是点击文本是不会选中复选框的

yhxhappy 发表于 2012-7-26 21:14:39

#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

kinghu318 发表于 2012-7-30 08:29:16

回复 4# yhxhappy


    非常感谢要的就是这个效果

iori2882 发表于 2013-11-28 10:13:39

有用 收藏了

iori2882 发表于 2013-11-28 10:14:07

有用 收藏了{:face (382):}

hollandmfq 发表于 2014-7-12 09:37:18

谢谢分享,很有用!

nqawen 发表于 2014-7-14 18:05:34

学习了,,正为这个发愁

ak47gglllk 发表于 2014-7-30 10:21:46

感谢,感谢,来学习了。非常感谢。
页: [1]
查看完整版本: treeview怎么实现点击文字同时也选中复选框?点击复选框和文字的效果一样?[已解决]