【已解决】_GUICtrlListView_FindInText 如何检索多个项?
本帖最后由 karlpopper 于 2010-7-4 23:38 编辑现在我知道如何检索单个但是多个如何返回呢 找到一个再继续找下一个… 本帖最后由 afan 于 2010-7-4 23:24 编辑
如果没有相关函数就用我写的这个吧~Func _GUICtrlListView_FindInText_all($hWnd, $sText, $flag = 0)
;afan提示:本函数用于搜索所有包含指定文本的项目或子项.
;可选参数$flag=0时返回由|间隔的(0基)索引的字符串,(默认)
;$flag=1时返回一个包含(0基)索引的数组,0号元素为搜索到的项目总数.
;成功:返回所有匹配的(0基)索引;失败:返回-1,未搜索到.
Local $sI = _GUICtrlListView_FindInText($hWnd, $sText)
If $sI = -1 Then Return -1
Local $eI = _GUICtrlListView_GetItemCount($hWnd) - 1
Local $all = $sI, $_sI, $i
For $i = $sI To $eI
$_sI = _GUICtrlListView_FindInText($hWnd, $sText, $i, False)
If $_sI <> -1 Then
$i = $_sI - 1
$all &= '|' & $_sI
EndIf
Next
If $flag = 0 Then Return $all
Local $aAll = StringSplit($all, '|')
Return $aAll
EndFunc ;==>_GUICtrlListView_FindInText_all 感谢A大 不过我也找到办法了
While 1
$iFoundPos = _GUICtrlListView_FindInText($hWndListView, $sReadInput, $iSearchPos, False)
If $iFoundPos > -1 Then
If _GUICtrlListView_GetItemText($hWndListView, $iFoundPos, 1) = $sReadInput Then $sString &= "|" & $iFoundPos
Else
ExitLoop
EndIf
$iSearchPos = $iFoundPos
WEnd
我敬佩你这样的人 是真心帮助人的 谢谢~ 回复 4# karlpopper
只干力所能及的事,呵呵~
不过你的方法由于是用的 _GUICtrlListView_GetItemText,那应该就是整串匹配了,也就不是包含的意思了~ 我的代码是包含的意思,如搜索“a”,可以匹配到 abc、a、bbaa …
各有所用吧~
页:
[1]