找回密码
 加入
搜索
楼主: chenronting

[AU3基础] 关于GUICtrlCreateTreeView的问题

 火.. [复制链接]
发表于 2010-4-27 18:08:37 | 显示全部楼层
呵呵!还在论坛这个问题啊?还没解决?
发表于 2010-4-27 18:11:17 | 显示全部楼层
本帖最后由 水木子 于 2010-5-8 00:14 编辑

还是我来吧!
楼主的要求全满足!
和 SWInstall.ini 配置文件放一起运行
#include <Array.au3>
#include <GuiTreeView.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
$Path = @ScriptDir & '\SWInstall.ini'
Local $aFitem[1], $aSitem[1], $z = 1

$iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)
GUICreate("TreeView项目勾选操作", 600, 450)
$TreeView1 = GUICtrlCreateTreeView(5, 5, 590, 440, $iStyle, $WS_EX_CLIENTEDGE)

$var = IniReadSectionNames($Path)
If Not @error Then
        For $i = 1 To $var[0]
                If StringIsDigit($var[$i]) Then
                        $hFitem = GUICtrlCreateTreeViewItem(IniRead($Path, $var[$i], 'ParentName', ''), $TreeView1)
                        _ArrayAdd($aFitem, $hFitem)
                Else
                        $hSitem = GUICtrlCreateTreeViewItem(IniRead($Path, $var[$i], 'ChildName', ''), $hFitem)
                        _ArrayAdd($aSitem, $hSitem)
                        GUICtrlSetState($hFitem, $GUI_EXPAND)
                EndIf
        Next
EndIf
GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case - 3
                        Exit
                Case $aFitem[1] To $aFitem[UBound($aFitem) - 1], $aSitem[1] To $aSitem[UBound($aSitem) - 1] ;父项目操作
                        For $i = 0 To UBound($aFitem) - 1
                                If $nMsg = $aFitem[$i] And BitAND(GUICtrlRead($aFitem[$i]), $GUI_CHECKED) Then
                                        ;MsgBox(0, '你勾选了:' & $aFitem[$i] - 3 & '号项目', '该项目下有 ' & _GUICtrlTreeView_GetChildCount($TreeView1, $aFitem[$i]) & ' 个子项目')
                                        $Number = Number(_GUICtrlTreeView_GetChildCount($TreeView1, $aFitem[$i])) ;全选
                                        For $m = $aFitem[$i] To $aFitem[$i] + $Number
                                                GUICtrlSetState($m, $GUI_CHECKED)
                                        Next
                                ElseIf $nMsg = $aFitem[$i] And BitAND(GUICtrlRead($aFitem[$i]), $GUI_UNCHECKED) Then ;反选
                                        $Number = Number(_GUICtrlTreeView_GetChildCount($TreeView1, $aFitem[$i]))
                                        For $n = $aFitem[$i] To $aFitem[$i] + $Number
                                                GUICtrlSetState($n, $GUI_UNCHECKED)
                                        Next
                                EndIf
                        Next

                        For $z = 0 To UBound($aSitem) - 1 ;子项目操作
                                If $nMsg = $aSitem[$z] And BitAND(GUICtrlRead($aSitem[$z]), $GUI_CHECKED) Then ;子项目勾选,父项目跟着勾选
                                        ;MsgBox(0, 0, '你勾选了:' & $aSitem[$z] - 3 & '号项目')
                                        $Handle = _GUICtrlTreeView_GetParentParam($TreeView1, $aSitem[$z])
                                        GUICtrlSetState($Handle, $GUI_CHECKED)
                                ElseIf $nMsg = $aSitem[$z] And BitAND(GUICtrlRead($aSitem[$z]), $GUI_UNCHECKED) Then
                                        $Handle = _GUICtrlTreeView_GetParentParam($TreeView1, $aSitem[$z])
                                        $Number = Number(_GUICtrlTreeView_GetChildCount($TreeView1, $Handle))
                                        For $o = $Handle To $Handle + $Number
                                                If GUICtrlRead($o) = $GUI_CHECKED Then ExitLoop
                                                If $o = $Handle + $Number Then GUICtrlSetState($Handle, $GUI_UNCHECKED) ;子项目全部取消勾选,父项目也跟着取消勾选
                                        Next
                                EndIf
                        Next
        EndSwitch
WEnd

评分

参与人数 5金钱 +120 贡献 +17 收起 理由
qq342252004 + 40 + 5 水木子辛苦了。
hzxymkb + 40 + 10 您真强大!
3mile + 20 学习了
lynfr8 + 2
afan + 20

查看全部评分

 楼主| 发表于 2010-4-27 18:13:10 | 显示全部楼层
回复 17# 水木子


    非常非常的感谢 。。
发表于 2010-4-27 18:24:05 | 显示全部楼层
回复  水木子


    非常非常的感谢 。。
chenronting 发表于 2010-4-27 18:13


没什么,试试吧!有问题再提出来大家一起探讨吧!
发表于 2010-6-18 17:43:28 | 显示全部楼层
回复 19# 水木子


    谢谢了,让我少走了很多弯路,只是刚学AU3 代码还看不太懂
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 22:31 , Processed in 0.066661 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表