xulinghai 发表于 2009-3-13 20:09:19

请问关于TreeView与ListView一些问题

请问如何做到让右侧的ListView显示左侧的TreeView勾选后显示列表,并要进行排序、……。

附上界面代码:
#include <GUIConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#include <ListviewConstants.au3>
#Include <GuiListView.au3>
Local $i,$m,$n,$TreeItem,$Item
Local $inipath = @ScriptDir&"\Soft.ini"
$Form = GUICreate("",420,320,-1,-1)
;建立左侧树状分支
$Treeview = GUICtrlCreateTreeView(6, 6, 150, 240,BitOR($TVS_HASBUTTONS,$TVS_CHECKBOXES,$TVS_HASLINES,$TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
;程序分类,读取soft.ini的段
For $i = 1 To 9
        $IniSection = IniRead($inipath, "Main", $i, "None")
        If $IniSection = "None" Then ExitLoop
        $TreeItem[$i] = GUICtrlCreateTreeViewItem($IniSection, $TreeView)
Next
;程序分支
For $m = 1 to 9
    For $n = 1 to 5
      $name = IniRead($inipath, $m&"-"&$n, "softname", "None")
          $Item[$m][$n] = GUICtrlCreateTreeViewItem($name, $TreeItem[$m])
    Next
Next
;展开树状结构
For $i = 1 To 9
    GUICtrlSetState($TreeItem[$i], $GUI_EXPAND)
Next
;建立右侧列表
$List = GUICtrlCreateListView("",160,6,250,240,BitOR($WS_EX_CLIENTEDGE, $WS_EX_STATICEDGE, $LVS_EX_GRIDLINES, $LVS_EX_SUBITEMIMAGES,$LVS_EX_TRACKSELECT,$WS_HSCROLL, $WS_VSCROLL))
$button = GUICtrlCreateButton("确 定",310,266,60,28)
GUISetState(@SW_SHOW)
While 1
        $nMsg=GUIGetMsg()
       
        Select
                Case $nMsg = $GUI_EVENT_CLOSE
                        Exit
                Case $nMsg = $TreeItem And BitAND(GUICtrlRead($TreeItem),$GUI_CHECKED)=$GUI_CHECKED
                        For $i = 1 To 5
                GUICtrlSetState($Item[$i], $GUI_CHECKED)
            Next
                Case $nMsg = $TreeItem And BitAND(GUICtrlRead($TreeItem),$GUI_UNCHECKED)=$GUI_UNCHECKED
                        For $i = 1 To 5
                GUICtrlSetState($Item[$i], $GUI_UNCHECKED)
                        Next
                Case $nMsg = $TreeItem And BitAND(GUICtrlRead($TreeItem),$GUI_CHECKED)=$GUI_CHECKED
                        For $i = 1 To 5
                GUICtrlSetState($Item[$i], $GUI_CHECKED)
            Next
                Case $nMsg = $TreeItem And BitAND(GUICtrlRead($TreeItem),$GUI_UNCHECKED)=$GUI_UNCHECKED
                        For $i = 1 To 5
                GUICtrlSetState($Item[$i], $GUI_UNCHECKED)
                        Next
               
        EndSelect
WEnd

[ 本帖最后由 xulinghai 于 2009-3-13 20:22 编辑 ]

xulinghai 发表于 2009-3-13 20:20:04

忘了配置文件了,Soft.ini

;软件分类
1=软件分类1
2=软件分类2


softname=程序名1-1
softpath=
softicon=

softname=程序名1-2
softpath=
softicon=

softname=程序名1-3
softpath=
softicon=

softname=程序名1-4
softpath=
softicon=

softname=程序名1-5
softpath=
softicon=


softname=程序名2-1
softpath=
softicon=

softname=程序名2-2
softpath=
softicon=

softname=程序名2-3
softpath=
softicon=

softname=程序名2-4
softpath=
softicon=

softname=程序名2-5
softpath=
softicon=

llztt 发表于 2009-3-14 09:27:33

想仿自由天空的驱动安装器??

得注册事件吧

xulinghai 发表于 2009-3-16 19:29:04

没有人可以提供帮助吗?

symb 发表于 2009-10-14 18:11:03

我帮你顶顶吧!

netegg 发表于 2009-10-15 19:32:01

在au3的安装文件夹中有 gui 的高级示例中,有类似代码,可以参考下

jinhao 发表于 2010-1-28 16:56:39

帮你顶下,最近我也在学习这方面的知识。

jinhao 发表于 2010-1-30 21:46:29

顶起,希望有高手给个例子出来。

jinhao 发表于 2010-1-31 13:44:38

想用这样的方法做个软件安装器,看来做不成了。

afan 发表于 2010-1-31 13:49:21

在循环里检测勾选的控件,然后再修改ListView里面的数据

jinhao 发表于 2010-1-31 14:01:02

这个我能实现 就是不会排列顺序如果可以给个例子学习一下就好了

afan 发表于 2010-1-31 18:34:57

_GUICtrlListView_FindInText 判断之前有没有选择的项目,
有 则 $x += 1,没有 则 $x = 0
然后 _GUICtrlListView_InsertItem($List, '...', $x) 插入

netegg 发表于 2010-1-31 18:48:49

本帖最后由 netegg 于 2010-1-31 18:50 编辑

这个我能实现 就是不会排列顺序如果可以给个例子学习一下就好了
jinhao 发表于 2010-1-31 14:01 http://www.autoitx.com/images/common/back.gif

排序?
_GUICtrlListView_BeginUpdate
_GUICtrlListView_SortItems
_GUICtrlListView_EndUpdate

chenronting 发表于 2010-4-26 11:33:22

好。 学习了
页: [1]
查看完整版本: 请问关于TreeView与ListView一些问题