请教:如何判断ListView项目复选框是否选中。[已解决]
本帖最后由 水木子 于 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
GUICtrlCreateListViewItem($a[$i], $ListView1)
$b = IniRead($dir,$a[$i],"学历","NotFound")
_GUICtrlListView_AddSubItem($ListView1, $z, $b, 1, 1)
$z += 1
Next
EndIf
EndFunc配置文件结构如下:
[张三]
学历=大专
[李四]
学历=高中
[王五]
学历=大学
[赵六]
学历=硕士
[钱七]
学历=中专
…… 可能还是卡在获取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
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
$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
可能还是卡在获取ID的问题吧~ 呵呵#include
就是,就是啊!:face (30): 呵呵,通过索引获取ID好像不行,那就直接点在读取ini时顺道... 还是没有明白你的思路:face (32): 就是先声明一个数组,读取ini后,在生成项目时给它定义变量为数组中指定元素,也就得到ID了。
这样GUICtrlRead时就可以指名道姓了... 就是先声明一个数组,读取ini后,在生成项目时给它定义变量为数组中指定元素,也就得到ID了。
这样GUICtrlRead时就可以指名道姓了...
afan 发表于 2009-9-14 11:34 http://www.autoitx.com/images/common/back.gif
正在努力学习、消化、非常经典!
我怎么也没想到这种办法,你真的很厉害:face (23): 呵呵,你就别那个啥我了...
另外建议ini这样写
[学历]
张三=大专
李四=高中
王五=大学
赵六=硕士
钱七=中专
王八=博士后
...
感觉这样写好修改和使用些(如果还有其他与此相关的字段更推荐这样写,比如[性别]、[长相]... 就可以写成 张三=大专|男|青蛙 ,如果有不相干的那就另为新字段 比如[配置])~
然后用IniReadSection($dir, '学历') 读取~
你可以试试换上ini和以下的函数Func xian()
$z = 0
_GUICtrlListView_DeleteAllItems($ListView1)
$a = IniReadSection($dir, '学历')
If Not @error Then
For $I = 1 To $a
$xusyID[$I] = GUICtrlCreateListViewItem($a[$I], $ListView1)
ReDim $xusyID[$I + 2]
_GUICtrlListView_AddSubItem($ListView1, $z, $a[$I], 1, 1)
$z += 1
Next
EndIf
EndFunc ;==>xian 呵呵,你就别那个啥我了...
另外建议ini这样写
[学历]
张三=大专
李四=高中
王五=大学
赵六=硕士
钱七=中专
王八=博士后
...
感觉这样写好修改和使用些(如果还有其他与此相关的字段更推荐这样写,比如[性 ...
afan 发表于 2009-9-14 12:00 http://www.autoitx.com/images/common/back.gif
谢谢前辈宝贵的建议,继续学习并仰慕:face (23):
页:
[1]