找回密码
 加入
搜索
查看: 2773|回复: 7

关于TreeView的问题,望指教!

  [复制链接]
发表于 2008-8-27 16:04:59 | 显示全部楼层 |阅读模式


为了方便描述,我使用了UDF里的一个范例程序并截图

我的问题是:上图中,如何做到在我单击选中了“[00] New Item”后,其子项则全部处于选中状态?如下图这样:



[ 本帖最后由 skyfree 于 2008-8-28 18:19 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2008-8-28 16:04:42 | 显示全部楼层
这是我以前刚学au3的时候写的,我去掉了一些代码,以便更好地说明你的问题,你再自己整理一下吧。
[au3]#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <TreeViewConstants.au3>
#include <StaticConstants.au3>
AutoItSetOption("WinTitleMatchMode", -4)
Global $treeview, $fonts, $font1, $font2, $font3, $papers, $paper1, $paper2, $paper3, $Install, $Cancel, $msg
GUICreate("安装字体 -- Mo Hong", 260, 210)
GUICtrlCreateLabel("请勾选您想要安装的组件:", 40, 15)
$treeview = GUICtrlCreateTreeView(40, 35, 180, 120, BitOR($TVS_HASBUTTONS, $TVS_CHECKBOXES, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
$fonts = GUICtrlCreateTreeViewItem("字体", $treeview)
$font1 = GUICtrlCreateTreeViewItem("仿宋_GB2312", $fonts)
GUICtrlSetState(-1, $GUI_CHECKED)
$font2 = GUICtrlCreateTreeViewItem("经典黑体", $fonts)
GUICtrlSetState(-1, $GUI_CHECKED)
$font3 = GUICtrlCreateTreeViewItem("楷体_GB2312", $fonts)
GUICtrlSetState($fonts, $GUI_EXPAND)

GUICtrlCreateLabel("", 0, 165, 260, 2, $SS_SUNKEN)
$Install = GUICtrlCreateButton("安装(&I)", 40, 175, 80, 25, $BS_DEFPUSHBUTTON)
GUICtrlSetState(-1, $GUI_FOCUS)
$Cancel = GUICtrlCreateButton("取消(&C)", 140, 175, 80, 25)
GUISetState()
While 1
    Switch GUIGetMsg()
        Case $Cancel, $GUI_EVENT_CLOSE
            Exit
                Case $fonts
                        If BitAnd(GUICtrlRead($fonts),$GUI_CHECKED) Then
                                GUICtrlSetState($font1, $GUI_CHECKED)
                GUICtrlSetState($font2, $GUI_CHECKED)
                                GUICtrlSetState($font3, $GUI_CHECKED)
            ElseIf BitAnd(GUICtrlRead($fonts),$GUI_UNCHECKED) Then
                GUICtrlSetState($font1, $GUI_UNCHECKED)
                GUICtrlSetState($font2, $GUI_UNCHECKED)
                                GUICtrlSetState($font3, $GUI_UNCHECKED)
                EndIf
        Case $font1, $font2, $font3
            If BitAnd(GUICtrlRead($font1),$GUI_UNCHECKED) Or BitAnd(GUICtrlRead($font2),$GUI_UNCHECKED) Or BitAnd(GUICtrlRead($font3),$GUI_UNCHECKED) Then
                GUICtrlSetState($fonts, $GUI_UNCHECKED)
                        ElseIf BitAnd(GUICtrlRead($font1),$GUI_CHECKED) And BitAnd(GUICtrlRead($font2),$GUI_CHECKED) And BitAnd(GUICtrlRead($font3),$GUI_CHECKED) Then
                GUICtrlSetState($fonts, $GUI_CHECKED)
                        EndIf
    EndSwitch
WEnd
[/au3]

[ 本帖最后由 clonecd 于 2008-8-28 16:06 编辑 ]
发表于 2008-8-28 16:21:20 | 显示全部楼层
由于我去掉了一些代码,所以上面现有代码有些可能是多余的,你自己去掉吧。
 楼主| 发表于 2008-8-28 18:19:04 | 显示全部楼层
呵呵,虽然和我的要求有所差别,但是我还是谢谢你

关于这个问题我已经用循环+判断强行解决了
发表于 2009-12-20 12:51:12 | 显示全部楼层
楼主说的循环+判断强行解决这个问题, 能给个例子出来吗?
发表于 2010-6-11 17:38:46 | 显示全部楼层
看看看啊1111
发表于 2014-5-6 12:36:42 | 显示全部楼层
雷锋精神传天下!谢谢分享!
发表于 2014-7-15 15:17:13 | 显示全部楼层
哈哈,,原来S大也碰到了这个问题
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 16:46 , Processed in 0.099302 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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