[已解决]请教listview如何实现按CTRL多选
本帖最后由 itljl 于 2010-8-18 12:28 编辑也就是listview控件,当按住CTRL键后,可以实现用鼠标多次点选几行,并且,如何得到点选的这行的数据?
翻遍帮助和互联网也没有答案。
谢谢 本帖最后由 afan 于 2010-8-10 01:16 编辑
A1: 添加 $lvs_report 样式
A2: _GUICtrlListView_GetItemTextxxx 本帖最后由 C.L 于 2010-8-10 02:12 编辑
以前写过的例子,给你参考,可以按Ctrl+鼠标多选,可以直接鼠标拖选,提取选中项目,请看ListView 部份:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
;~ #include <array.au3>
#include <file.au3>
$Form1 = GUICreate("test", 400, 380, @DesktopWidth / 2 - 100, @DesktopHeight / 2 - 100)
$aStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
$listview1 = GUICtrlCreateListView("名称", 0, 0, 398, 290, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
_GUICtrlListView_SetExtendedListViewStyle($listview1, $aStyles)
_GUICtrlListView_SetView($listview1, "1")
GUICtrlSetBkColor($listview1, 0xffffff)
$button1 = GUICtrlCreateButton ("选定目标",200,330,100,30)
GUISetState(@SW_SHOW)
$curdir = FileSelectFolder ("选择目录","")
If StringRight ($curdir,1) <> "\" Then $curdir &= "\"
$folder = _FileListToArray($curdir, "*", 0)
If IsArray($folder) Then
For $i=0 To $folder
$listteam = GUICtrlCreateListViewItem ($folder[$i],$listview1)
$attrib = FileGetAttrib ($curdir&$folder[$i])
If StringInStr($attrib, "D")Then
GUICtrlSetImage($listteam, "shell32.dll", 5)
Else
GUICtrlSetImage($listteam, "shell32.dll", 1)
EndIf
Next
WinSetTitle ("test","","test" & $curdir)
EndIf
While 1
$nMsg = GUIGetMsg ()
Switch $nMsg
Case -3
Exit
Case $button1
$totalnum = _GUICtrlListView_GetItemCount($listview1)
$selectcount = _GUICtrlListView_GetSelectedCount($listview1)
$out = ""
For $i = 0 To $totalnum-1
If$selectcount Then
If _GUICtrlListView_GetItemSelected($listview1, $i) == True Then
$val = _GUICtrlListView_GetItemTextString($listview1, $i)
$attrib = FileGetAttrib ($curdir&$val)
If StringInStr($attrib, "D")Then
$out &= $val&" 是目录"&@CRLF
Else
$out &= $val&" 是文件" & @CRLF
EndIf
EndIf
Else
$out = "没有选择文件"
EndIf
Next
MsgBox (0,"已选择的文件","当前的目录:"&$curdir & @CRLF & $out)
EndSwitch
WEnd
回复 2# afan
谢谢,请问您好是如何知道 $lvs_report 这个样式可以多选的?我也看遍了帮助,但帮助中说这个是“这个样式指定控件显示为报告样式”始终不明白。 回复 3# C.L
谢谢,请问您好是如何知道 $lvs_report 这个样式可以多选的?我也看遍了帮助,但帮助中说这个是“这个样式指定控件显示为报告样式”始终不明白。 回复 5# itljl
前人的经验,这个样式我也是看别人的代码得知的,说实在的,帮助里面的样式我真没有看得太多,很多技巧都是看别人的经典代码后得知,而且帮助是固定的,有很多的技巧可能都不能一一在帮助里得到,多看其他高手们写出的代码,往往有些地方会有想不到的收获。 回复 6# C.L
谢谢,原来如此。。 LZ 请将 “解决鸟” 改为 “已解决”,规范关键字便于搜索 留名待查留名待查留名待查留名待查 学习了;三楼的例子很棒
页:
[1]