找回密码
 加入
搜索
查看: 2527|回复: 12

[AU3基础] [已解决] 請問 listview 如何 filter 想要的字

  [复制链接]
发表于 2016-10-21 21:47:16 | 显示全部楼层 |阅读模式
本帖最后由 ipmitool 于 2016-10-22 18:45 编辑





請問可以讓程式打開就判斷 count 大於 500 就在 >500 的欄位填入Yes嗎? (使用 _GUICtrlListView_SetItemText 設 Yes 字串)
然後 Filter 的時候也可以把整筆資料順利帶出
#include <Array.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <File.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#include <Date.au3>
#include <GuiStatusBar.au3>



Local $path, $aFileList, $aNewList[1][2]
$path = @ScriptDir
$aFileList = _FileListToArray($path, "*.txt")


Local $iI, $iTimer, $hListView
GUICreate("Test Management v1.0", 800, 300)
$hListView = GUICtrlCreateListView("", 15, 15, 550, 268)



$cInput_Filter = GUICtrlCreateInput("", 610, 90, 140, 20)
$cButton_Filter = GUICtrlCreateButton("Filter", 600, 118, 75, 23)
$cButton_All = GUICtrlCreateButton("All", 680, 118, 75, 23)
GUISetState(@SW_SHOW)


_GUICtrlListView_AddColumn($hListView, "Tester", 100)
_GUICtrlListView_AddColumn($hListView, "Test Item", 100)
_GUICtrlListView_AddColumn($hListView, "Count > 500", 100)
_GUICtrlListView_AddColumn($hListView, "Count", 60)
_GUICtrlListView_AddColumn($hListView, "Last Record Time", 150)



If IsArray($aFileList) Then

        ReDim $aNewList[UBound($aFileList)][5]
       ; Local $sComboTxt = "所有"
        For $i = 1 To UBound($aFileList) - 1 Step 1
                $aNewList[$i][0] = $aFileList[$i]
                $aNewList[$i][1] = FileReadLine($aFileList[$i], 1)
                $aNewList[$i][2] = FileReadLine($aFileList[$i], 2)
                $aNewList[$i][3] = FileReadLine($aFileList[$i], 3)
                $aNewList[$i][4] = FileReadLine($aFileList[$i], 4)



               ; If Not StringInStr($sComboTxt, $aNewList[$i][1]) Then $sComboTxt &= "|" & $aNewList[$i][1]
        Next

        _GUICtrlListView_AddArray($hListView, $aNewList)




        EndIf





While 1
        $Msg = GUIGetMsg()






        Switch $Msg
                Case $GUI_EVENT_CLOSE
                        Exit


                           Case $cButton_Filter
                           _FilterItem(GUICtrlRead($cInput_Filter))

                           Case $cButton_All
                                         _ShowAll()

        EndSwitch





WEnd



Func _ShowAll()



EndFunc   ;==>_ShowAll




Func _FilterItem($sText)

    ;Local $i

    GUICtrlSendMsg($hListView, $LVM_DELETEALLITEMS, 0, 0)
        GUICtrlCreateListViewItem($i,$hListView)

    For $i = 0 To UBound($aNewList) - 1

        If StringInStr($aNewList[$i][0], $sText) or StringInStr($aNewList[$i][1], $sText) or StringInStr($aNewList[$i][3], $sText) Then
                        GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $aNewList[$i][2] & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)




                 EndIf
Next


EndFunc   ;==>_FilterItem

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2016-10-22 11:48:26 | 显示全部楼层
請問有大師可以幫幫忙嗎
发表于 2016-10-22 13:56:03 | 显示全部楼层
本帖最后由 chzj589 于 2016-10-22 14:23 编辑

回复 1# ipmitool

If IsArray($aFileList) Then
        ReDim $aNewList[UBound($aFileList)][5]
        ; Local $sComboTxt = "所有"
        For $i = 1 To UBound($aFileList) - 1 Step 1
                $aNewList[$i][0] = $aFileList[$i]
                $aNewList[$i][1] = FileReadLine($aFileList[$i], 1)
                $aNewList[$i][2] = FileReadLine($aFileList[$i], 2)
                $aNewList[$i][3] = FileReadLine($aFileList[$i], 3)
                $aNewList[$i][4] = FileReadLine($aFileList[$i], 4)
                $h8 = "Yes"
                If $aNewList[$i][3] >= 500 Then
                        GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $h8 & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)
          Else
                        GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $aNewList[$i][2] & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)
                EndIf
                ; If Not StringInStr($sComboTxt, $aNewList[$i][1]) Then $sComboTxt &= "|" & $aNewList[$i][1]
        Next
        ;_GUICtrlListView_AddArray($hListView, $aNewList)
EndIf
发表于 2016-10-22 14:20:45 | 显示全部楼层
本帖最后由 chzj589 于 2016-10-22 14:23 编辑

回复 2# ipmitool

Func _FilterItem($sText)
        GUICtrlSendMsg($hListView, $LVM_DELETEALLITEMS, 0, 0)
        For $i = 0 To UBound($aNewList) - 1
                        $h8 = "Yes"
                If $aNewList[$i][3] >= 500 Then
                        GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $h8 & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)
                Else

                EndIf
        Next
EndFunc   ;==>_FilterItem
 楼主| 发表于 2016-10-22 17:04:32 | 显示全部楼层
本帖最后由 ipmitool 于 2016-10-22 18:15 编辑

回复 4# chzj589
謝謝您喔, 可是我查bbb也是出現兩組yes耶...
可以使用_GUICtrlListView_SetItemText 設 Yes 字串嗎?




可以用類似這樣嗎?
Func _FilterItem($sText)
        GUICtrlSendMsg($hListView, $LVM_DELETEALLITEMS, 0, 0)
        For $i = 0 To UBound($aNewList) - 1


                        GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & "" & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)

                            If $aNewList[$i][3] >= 500 Then
                                         _GUICtrlListView_SetItemText($hListView, $i,"Yes",2)

                Else

                EndIf
        Next
EndFunc   ;==>_FilterItem

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-10-22 18:09:42 | 显示全部楼层
我感觉有不少人好像纯粹是为提问而来的, 跟直接求代码也差不了多少了.
 楼主| 发表于 2016-10-22 18:44:13 | 显示全部楼层
回复 3# chzj589


    搞定嘍~
#include <Array.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <File.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#include <Date.au3>
#include <GuiStatusBar.au3>



Local $path, $aFileList, $aNewList[1][2]
$path = @ScriptDir
$aFileList = _FileListToArray($path, "*.txt")


Local $iI, $iTimer, $hListView
GUICreate("Test Management v1.0", 800, 300)
$hListView = GUICtrlCreateListView("", 15, 15, 550, 268)



$cInput_Filter = GUICtrlCreateInput("", 610, 90, 140, 20)
$cButton_Filter = GUICtrlCreateButton("Filter", 600, 118, 75, 23)
$cButton_All = GUICtrlCreateButton("All", 680, 118, 75, 23)
GUISetState(@SW_SHOW)


_GUICtrlListView_AddColumn($hListView, "Tester", 100)
_GUICtrlListView_AddColumn($hListView, "Test Item", 100)
_GUICtrlListView_AddColumn($hListView, "Count > 500", 100)
_GUICtrlListView_AddColumn($hListView, "Count", 60)
_GUICtrlListView_AddColumn($hListView, "Last Record Time", 150)



If IsArray($aFileList) Then

        ReDim $aNewList[UBound($aFileList)][5]
       ; Local $sComboTxt = "所有"
        For $i = 1 To UBound($aFileList) - 1 Step 1
                $aNewList[$i][0] = $aFileList[$i]
                $aNewList[$i][1] = FileReadLine($aFileList[$i], 1)
                $aNewList[$i][2] = FileReadLine($aFileList[$i], 2)
                $aNewList[$i][3] = FileReadLine($aFileList[$i], 3)
                $aNewList[$i][4] = FileReadLine($aFileList[$i], 4)
               ; If Not StringInStr($sComboTxt, $aNewList[$i][1]) Then $sComboTxt &= "|" & $aNewList[$i][1]
        Next
        _GUICtrlListView_AddArray($hListView, $aNewList)

        EndIf


While 1
        $Msg = GUIGetMsg()

        Switch $Msg
                Case $GUI_EVENT_CLOSE
                        Exit


                           Case $cButton_Filter
                           _FilterItem(GUICtrlRead($cInput_Filter))

                           Case $cButton_All
                                         _ShowAll()

        EndSwitch

WEnd



Func _ShowAll()



EndFunc   ;==>_ShowAll




Func _FilterItem($sText)

    ;Local $i

    GUICtrlSendMsg($hListView, $LVM_DELETEALLITEMS, 0, 0)
        GUICtrlCreateListViewItem($i,$hListView)

   For $i = 0 To UBound($aNewList) - 1
          $h8="Yes"
                 If StringInStr($aNewList[$i][0], $sText) or StringInStr($aNewList[$i][1], $sText) or StringInStr($aNewList[$i][3], $sText) and $aNewList[$i][3] > 500 Then
                        GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $h8 & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)
                 EndIf

                 If StringInStr($aNewList[$i][0], $sText) or StringInStr($aNewList[$i][1], $sText) or StringInStr($aNewList[$i][3], $sText) and $aNewList[$i][3] < 500 Then
                        GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $aNewList[$i][2] & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)
                 EndIf


   Next





EndFunc   ;==>_FilterItem
发表于 2016-10-22 18:53:49 | 显示全部楼层
回复 5# ipmitool
修改两个代码后:
运行:

点击"Filter":

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2016-10-22 20:17:20 | 显示全部楼层
回复 8# chzj589


    您好,請問您說哪兩個代碼?
发表于 2016-10-22 21:16:12 | 显示全部楼层
回复 9# ipmitool

3楼与4楼的

评分

参与人数 1金钱 +40 收起 理由
ipmitool + 40 Thank you!

查看全部评分

 楼主| 发表于 2016-10-22 21:34:39 | 显示全部楼层
回复 10# chzj589


    謝謝您~
发表于 2016-10-23 13:40:21 | 显示全部楼层
回复 11# ipmitool
运行:

点击"Filter":

输入框查询,点击"搜索All":

点击"返回":

代码:

#include <Array.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <File.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#include <Date.au3>
#include <GuiStatusBar.au3>

Local $path, $aFileList, $aNewList[1][2]
$path = @ScriptDir
$aFileList = _FileListToArray($path, "*.txt")

Local $iI, $iTimer, $hListView
GUICreate("Test Management v1.0", 800, 300)
$hListView = GUICtrlCreateListView("", 15, 15, 550, 268)

$cInput_Filter = GUICtrlCreateInput("", 600, 90, 155, 20)
$cButton_Filter = GUICtrlCreateButton("Filter", 600, 146, 75, 23)
$cButton_All = GUICtrlCreateButton("搜索All", 600, 118, 155, 23)
$cButton_du = GUICtrlCreateButton("返回", 680, 146, 75, 23)
GUISetState(@SW_SHOW)

_GUICtrlListView_AddColumn($hListView, "Tester", 100)
_GUICtrlListView_AddColumn($hListView, "Test Item", 100)
_GUICtrlListView_AddColumn($hListView, "Count > 500", 100)
_GUICtrlListView_AddColumn($hListView, "Count", 60)
_GUICtrlListView_AddColumn($hListView, "Last Record Time", 150)

If IsArray($aFileList) Then
        ReDim $aNewList[UBound($aFileList)][5]
        ; Local $sComboTxt = "所有"
        For $i = 1 To UBound($aFileList) - 1 Step 1
                $aNewList[$i][0] = $aFileList[$i]
                $aNewList[$i][1] = FileReadLine($aFileList[$i], 1)
                $aNewList[$i][2] = FileReadLine($aFileList[$i], 2)
                $aNewList[$i][3] = FileReadLine($aFileList[$i], 3)
                $aNewList[$i][4] = FileReadLine($aFileList[$i], 4)
                $h8 = "Yes"
                If $aNewList[$i][3] >= 500 Then
                        GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $h8 & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)
                Else
                        GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $aNewList[$i][2] & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)
                EndIf
                ; If Not StringInStr($sComboTxt, $aNewList[$i][1]) Then $sComboTxt &= "|" & $aNewList[$i][1]
        Next
        ;_GUICtrlListView_AddArray($hListView, $aNewList)
EndIf

While 1
        $Msg = GUIGetMsg()
        Switch $Msg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $cButton_Filter
                        _FilterItem(GUICtrlRead($cInput_Filter))
                Case $cButton_All
                        _ShowAll()
                Case $cButton_du
                        _Showdu()
        EndSwitch
WEnd
Func _Showdu()
    GUICtrlSetData($cInput_Filter, "")
        GUICtrlSendMsg($hListView, $LVM_DELETEALLITEMS, 0, 0)
        If IsArray($aFileList) Then
                ReDim $aNewList[UBound($aFileList)][5]
                ; Local $sComboTxt = "所有"
                For $i = 1 To UBound($aFileList) - 1 Step 1
                        $aNewList[$i][0] = $aFileList[$i]
                        $aNewList[$i][1] = FileReadLine($aFileList[$i], 1)
                        $aNewList[$i][2] = FileReadLine($aFileList[$i], 2)
                        $aNewList[$i][3] = FileReadLine($aFileList[$i], 3)
                        $aNewList[$i][4] = FileReadLine($aFileList[$i], 4)
                        $h8 = "Yes"
                        If $aNewList[$i][3] >= 500 Then
                                GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $h8 & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)
                        Else
                                GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $aNewList[$i][2] & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)
                        EndIf
                Next
        EndIf
EndFunc   ;==>_Showdu
Func _ShowAll()
        $cInput = GUICtrlRead($cInput_Filter)
        GUICtrlSendMsg($hListView, $LVM_DELETEALLITEMS, 0, 0)
        For $i = 0 To UBound($aNewList) - 1
                $h8 = "Yes"
                If $aNewList[$i][1] = $cInput Then
                        If $aNewList[$i][3] >= 500 Then
                                GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $h8 & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)
                        Else
                                GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $aNewList[$i][2] & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)
                        EndIf
                EndIf
        Next
EndFunc   ;==>_ShowAll
Func _FilterItem($sText)
    GUICtrlSetData($cInput_Filter, "")
        GUICtrlSendMsg($hListView, $LVM_DELETEALLITEMS, 0, 0)
        For $i = 0 To UBound($aNewList) - 1
                $h8 = "Yes"
                If $aNewList[$i][3] >= 500 Then
                        GUICtrlCreateListViewItem($aNewList[$i][0] & "|" & $aNewList[$i][1] & "|" & $h8 & "|" & $aNewList[$i][3] & "|" & $aNewList[$i][4], $hListView)
                Else
                EndIf
        Next
EndFunc   ;==>_FilterItem

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-12-10 13:42:10 | 显示全部楼层
先看看  学习一下
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-3-29 23:30 , Processed in 0.096157 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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