找回密码
 加入
搜索
查看: 5474|回复: 8

[AU3基础] 请教:如何判断ListView项目复选框是否选中。[已解决]

[复制链接]
发表于 2009-9-14 10:30:23 | 显示全部楼层 |阅读模式
本帖最后由 水木子 于 2010-11-22 10:20 编辑

如题:如何判断ListView框中的复选框是否选中。
想了很久没想到好的办法!afan前辈也给我解答过几次,但是情况有变。
请大家指点啊!非常感谢。
afan前辈!起床了吗?再麻烦你来帮我看看吧!
#include <GUIListView.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$dir = @ScriptDir & "\Data.ini"

$Form1 = GUICreate("表单", 250, 350, 280, 180)
$ListView1 = GUICtrlCreateListView("姓名        |学历         ", 15, 15, 220, 240, -1, _
BitOR($WS_EX_CLIENTEDGE,$LVS_EX_CHECKBOXES,$LVS_EX_FULLROWSELECT,$LVS_REPORT))
$Button1 = GUICtrlCreateButton("读取选中项目", 50, 280, 100, 30, $WS_GROUP)
$Button2 = GUICtrlCreateButton("退出", 180, 280, 50, 30, $WS_GROUP)
GUISetState(@SW_SHOW)
xian()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE,$Button2
                        Exit
                Case $Button1
                        MsgBox(0,"","")
        EndSwitch
WEnd

Func xian()
        $z = 0
        _GUICtrlListView_DeleteAllItems($ListView1)
        $a = IniReadSectionNames($dir)
        If Not @error Then
                For $i = 1 To $a[0]
                        GUICtrlCreateListViewItem($a[$i], $ListView1)
                        $b = IniRead($dir,$a[$i],"学历","NotFound")
                        _GUICtrlListView_AddSubItem($ListView1, $z, $b, 1, 1)
                        $z += 1
                Next
        EndIf                
EndFunc
配置文件结构如下:

[张三]
学历=大专

[李四]
学历=高中

[王五]
学历=大学

[赵六]
学历=硕士

[钱七]
学历=中专

……

评分

参与人数 1金钱 +39 贡献 +19 收起 理由
kn007 + 39 + 19 问题解决,及时更改标题为《已解决》,下次 ...

查看全部评分

发表于 2009-9-14 11:15:56 | 显示全部楼层
可能还是卡在获取ID的问题吧~ 呵呵
#include <GUIListView.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$dir = @ScriptDir & "\Data.ini"

$Form1 = GUICreate("表单", 250, 350, 280, 180)
$ListView1 = GUICtrlCreateListView("姓名        |学历         ", 15, 15, 220, 240, -1, _
                BitOR($WS_EX_CLIENTEDGE, $LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT, $LVS_REPORT))
$Button1 = GUICtrlCreateButton("读取选中项目", 50, 280, 100, 30, $WS_GROUP)
$Button2 = GUICtrlCreateButton("退出", 180, 280, 50, 30, $WS_GROUP)
GUISetState(@SW_SHOW)
Dim $xusyID[2]
xian()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE, $Button2
                        Exit
                Case $Button1
                        $jg = ''
                        For $I = 1 To _GUICtrlListView_GetItemCount($ListView1)
                                If GUICtrlRead($xusyID[$I], 1) = $GUI_CHECKED Then
                                        $jg &= '第 ' & $I & ' 行:"' & _GUICtrlListView_GetItemText($ListView1, $I - 1) & '" 已勾选' & @CRLF
                                EndIf
                        Next
                        MsgBox(0, '勾选的项目', $jg)

        EndSwitch
WEnd

Func xian()
        $z = 0
        _GUICtrlListView_DeleteAllItems($ListView1)
        $a = IniReadSectionNames($dir)
        If Not @error Then
                For $I = 1 To $a[0]
                        $xusyID[$I] = GUICtrlCreateListViewItem($a[$I], $ListView1)
                        ReDim $xusyID[$I + 2]
                        $b = IniRead($dir, $a[$I], "学历", "NotFound")
                        _GUICtrlListView_AddSubItem($ListView1, $z, $b, 1, 1)
                        $z += 1
                Next
        EndIf
EndFunc   ;==>xian

评分

参与人数 2威望 +10 金钱 +70 贡献 +30 收起 理由
kn007 + 10 + 60 + 30 辛苦了~
水木子 + 10 很经典,非常感谢。

查看全部评分

 楼主| 发表于 2009-9-14 11:18:28 | 显示全部楼层
[quote]可能还是卡在获取ID的问题吧~ 呵呵#include

就是,就是啊!
发表于 2009-9-14 11:21:28 | 显示全部楼层
呵呵,通过索引获取ID好像不行,那就直接点在读取ini时顺道...
 楼主| 发表于 2009-9-14 11:23:56 | 显示全部楼层
还是没有明白你的思路
发表于 2009-9-14 11:34:00 | 显示全部楼层
就是先声明一个数组,读取ini后,在生成项目时给它定义变量为数组中指定元素,也就得到ID了。
这样GUICtrlRead时就可以指名道姓了...
 楼主| 发表于 2009-9-14 11:45:32 | 显示全部楼层
就是先声明一个数组,读取ini后,在生成项目时给它定义变量为数组中指定元素,也就得到ID了。
这样GUICtrlRead时就可以指名道姓了...
afan 发表于 2009-9-14 11:34


正在努力学习、消化、非常经典!
我怎么也没想到这种办法,你真的很厉害
发表于 2009-9-14 12:00:55 | 显示全部楼层
呵呵,你就别那个啥我了...
另外建议ini这样写
[学历]
张三=大专
李四=高中
王五=大学
赵六=硕士
钱七=中专
王八=博士后
...
感觉这样写好修改和使用些(如果还有其他与此相关的字段更推荐这样写,比如[性别]、[长相]... 就可以写成 张三=大专|男|青蛙 ,如果有不相干的那就另为新字段 比如[配置])~
然后用IniReadSection($dir, '学历') 读取~
你可以试试换上ini和以下的函数
Func xian()
        $z = 0
        _GUICtrlListView_DeleteAllItems($ListView1)
        $a = IniReadSection($dir, '学历')
        If Not @error Then
                For $I = 1 To $a[0][0]
                        $xusyID[$I] = GUICtrlCreateListViewItem($a[$I][0], $ListView1)
                        ReDim $xusyID[$I + 2]
                        _GUICtrlListView_AddSubItem($ListView1, $z, $a[$I][1], 1, 1)
                        $z += 1
                Next
        EndIf
EndFunc   ;==>xian
 楼主| 发表于 2009-9-14 12:53:53 | 显示全部楼层
呵呵,你就别那个啥我了...
另外建议ini这样写
[学历]
张三=大专
李四=高中
王五=大学
赵六=硕士
钱七=中专
王八=博士后
...
感觉这样写好修改和使用些(如果还有其他与此相关的字段更推荐这样写,比如[性 ...
afan 发表于 2009-9-14 12:00


谢谢前辈宝贵的建议,继续学习并仰慕
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-27 16:26 , Processed in 0.135004 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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