Valnurat Posted June 3, 2016 Posted June 3, 2016 I have 8 listview on my GUI. I would like to search in the listview for a number. I only want to search in 3 of the 8 listviews. I know number 1 is in $hLV_C1 and not in the others, but when I run this the result is that that I get the message that it is found in all of my 3 listviews I want to search for. Global $aSearchListview[3] = ["$hLV_C1","$hLV_C3","$hLV_C5"] $hLV_C1 = GUICtrlCreateListView('0', 245, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER, $WS_EX_TRANSPARENT) _GUICtrlListView_SetColumnWidth($hLV_C1, 0, $LVSCW_AUTOSIZE) $hLV_C2 = GUICtrlCreateListView('0', 275, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER, $WS_EX_TRANSPARENT) _GUICtrlListView_SetColumnWidth($hLV_C2, 0, $LVSCW_AUTOSIZE) $hLV_C3 = GUICtrlCreateListView('0', 305, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER, $WS_EX_TRANSPARENT) _GUICtrlListView_SetColumnWidth($hLV_C3, 0, $LVSCW_AUTOSIZE) $hLV_C4 = GUICtrlCreateListView('0', 335, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER, $WS_EX_TRANSPARENT) _GUICtrlListView_SetColumnWidth($hLV_C4, 0, $LVSCW_AUTOSIZE) $hLV_C5 = GUICtrlCreateListView('0', 365, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER, $WS_EX_TRANSPARENT) _GUICtrlListView_SetColumnWidth($hLV_C5, 0, $LVSCW_AUTOSIZE) $hLV_C6 = GUICtrlCreateListView('0', 395, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER, $WS_EX_TRANSPARENT) _GUICtrlListView_SetColumnWidth($hLV_C6, 0, $LVSCW_AUTOSIZE) $hLV_C7 = GUICtrlCreateListView('0', 425, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER, $WS_EX_TRANSPARENT) _GUICtrlListView_SetColumnWidth($hLV_C7, 0, $LVSCW_AUTOSIZE) Local $sNumber = '1', $g_bSortSense = false GUICtrlCreateListViewItem($sNumber, $hLV_C1) _GUICtrlListView_SimpleSort($hLV_C1,$g_bSortSense,0,False) For $iColumnIndex = 0 to UBound($aSearchListview) -1 Local $iIndex = _GUICtrlListView_FindItem($aSearchListview[$iColumnIndex],-1,$sNumber) If $iIndex <> -1 Then MsgBox(0,'Found',$aSearchListview[$iColumnIndex]) Else MsgBox(0,'Not Found',$aSearchListview[$iColumnIndex]) EndIf Next Why is that? Yours sincerely Kenneth.
AutoBert Posted June 3, 2016 Posted June 3, 2016 Please, make a full runable with populated LV's (reproducer) script showing your issue(s).
Valnurat Posted June 6, 2016 Author Posted June 6, 2016 expandcollapse popup#include <GUIConstantsEx.au3> #include <GuiListView.au3> Local $aGUT[0] Local $aSearchListview[3] = ["$hLV_C1","$hLV_C3","$hLV_C5"] Local $MainGUIForm = GUICreate("My GUI",455,600) Local $hHeader, $sNumber, $g_bSortSense = False For $i = 0 To 90 _ArrayAdd($aGUT, $i) Next GUICtrlCreateTabItem("R/B") $hLV_RB = GUICtrlCreateListView('Test', 50, 100, 94, 255, $LVS_NOCOLUMNHEADER) ; Now calculate ListView 2 vertical size $hHeader = _GUICtrlListView_GetHeader($hLV_RB) $aSize = WinGetPos($hHeader) $iHeaderHeight = $aSize[3] ; Header height $aRect = _GUICtrlListView_GetItemRect($hLV_RB, 0) $iItemHeight = $aRect[3] - $aRect[1] ; Item height $iTotalHeight = $iHeaderHeight + (20 * ($iItemHeight + .5)) -10 ; Allow for the inter-item gaps $hLV_C0 = GUICtrlCreateListView('0', 185, 40, 50, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C0, 0, $LVSCW_AUTOSIZE) For $i = 0 To 12 GUICtrlCreateListViewItem( $i, $hLV_C0) Next $hLV_C1 = GUICtrlCreateListView('0', 245, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C1, 0, $LVSCW_AUTOSIZE) $hLV_C2 = GUICtrlCreateListView('0', 275, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C2, 0, $LVSCW_AUTOSIZE) $hLV_C3 = GUICtrlCreateListView('0', 305, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C3, 0, $LVSCW_AUTOSIZE) $hLV_C4 = GUICtrlCreateListView('0', 335, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C4, 0, $LVSCW_AUTOSIZE) $hLV_C5 = GUICtrlCreateListView('0', 365, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C5, 0, $LVSCW_AUTOSIZE) $hLV_C6 = GUICtrlCreateListView('0', 395, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C6, 0, $LVSCW_AUTOSIZE) $hLV_C7 = GUICtrlCreateListView('0', 425, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C7, 0, $LVSCW_AUTOSIZE) Local $id0 = GUICtrlCreatePic("C:\Program Files (x86)\AutoIt3\Examples\GUI\logo4.gif", 0, 0, 169, 68) GUISetState(@SW_SHOW) $bProceed = False Do $idMsg = GUIGetMsg() Switch $idMsg Case $id0 $sNumber = '1' $bProceed = True EndSwitch If $bProceed Then $iIndex = _ArraySearch($aGUT, $sNumber) If $iIndex <> - 1 Then ; Delete it _ArrayDelete($aGUT, $iIndex) ; Now clear ListViews 0 _GUICtrlListView_BeginUpdate($hLV_C0) _GUICtrlListView_DeleteAllItems($hLV_C0) ; And reload with all / the top 20 elements in the main array For $i = 0 To UBound($aGUT) - 1 If $i < 13 Then GUICtrlCreateListViewItem($aGUT[$i], $hLV_C0) EndIf Next _GUICtrlListView_EndUpdate($hLV_C0) GUICtrlCreateListViewItem($sNumber, $hLV_C1) _GUICtrlListView_SimpleSort($hLV_C1,$g_bSortSense,0,False) Else For $iColumnIndex = 0 to UBound($aSearchListview) -1 Local $iIndex = _GUICtrlListView_FindItem($aSearchListview[$iColumnIndex],-1,$sNumber) If $iIndex <> -1 Then MsgBox(0,'Found',$aSearchListview[$iColumnIndex]) Else MsgBox(0,'Not Found',$aSearchListview[$iColumnIndex]) EndIf Next EndIf $bProceed = False $sNumber = '' EndIf Until $idMsg = $GUI_EVENT_CLOSE This will produce the error. I'm searching in listview ["$hLV_C1","$hLV_C3","$hLV_C5"], but I know that my number is only in $hLV_C1 2nd time I press the AutoIT logo. Press AutoIT logo and you will see number 2 is moved from one LV0 to LV1. Yours sincerely Kenneth.
AutoBert Posted June 6, 2016 Posted June 6, 2016 your array $aSearchListview holds strings, it must be the ControlID's _GUICtrlListView_FindItem is not the func you need use _GUICtrlListView_FindText expandcollapse popup#include <GUIConstantsEx.au3> #include <GuiListView.au3> Local $aGUT[0] Local $aSearchListview[3] = ["$hLV_C1","$hLV_C3","$hLV_C5"] Local $MainGUIForm = GUICreate("My GUI",455,600) Local $hHeader, $sNumber, $g_bSortSense = False For $i = 0 To 90 _ArrayAdd($aGUT, $i) Next GUICtrlCreateTabItem("R/B") $hLV_RB = GUICtrlCreateListView('Test', 50, 100, 94, 255, $LVS_NOCOLUMNHEADER) ; Now calculate ListView 2 vertical size $hHeader = _GUICtrlListView_GetHeader($hLV_RB) $aSize = WinGetPos($hHeader) $iHeaderHeight = $aSize[3] ; Header height $aRect = _GUICtrlListView_GetItemRect($hLV_RB, 0) $iItemHeight = $aRect[3] - $aRect[1] ; Item height $iTotalHeight = $iHeaderHeight + (20 * ($iItemHeight + .5)) -10 ; Allow for the inter-item gaps $hLV_C0 = GUICtrlCreateListView('0', 185, 40, 50, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C0, 0, $LVSCW_AUTOSIZE) For $i = 0 To 12 GUICtrlCreateListViewItem( $i, $hLV_C0) Next $hLV_C1 = GUICtrlCreateListView('0', 245, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C1, 0, $LVSCW_AUTOSIZE) $hLV_C2 = GUICtrlCreateListView('0', 275, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C2, 0, $LVSCW_AUTOSIZE) $hLV_C3 = GUICtrlCreateListView('0', 305, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C3, 0, $LVSCW_AUTOSIZE) $hLV_C4 = GUICtrlCreateListView('0', 335, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C4, 0, $LVSCW_AUTOSIZE) $hLV_C5 = GUICtrlCreateListView('0', 365, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C5, 0, $LVSCW_AUTOSIZE) $hLV_C6 = GUICtrlCreateListView('0', 395, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C6, 0, $LVSCW_AUTOSIZE) $hLV_C7 = GUICtrlCreateListView('0', 425, 40, 25, $iTotalHeight, $LVS_NOCOLUMNHEADER) _GUICtrlListView_SetColumnWidth($hLV_C7, 0, $LVSCW_AUTOSIZE) Local $id0 = GUICtrlCreatePic("C:\Program Files (x86)\AutoIt3\Examples\GUI\logo4.gif", 0, 0, 169, 68) $aSearchListview[0]=$hLV_C1 $aSearchListview[1]=$hLV_C3 $aSearchListview[2]=$hLV_C5 GUISetState(@SW_SHOW) $bProceed = False Do $idMsg = GUIGetMsg() Switch $idMsg Case $id0 $sNumber = '1' $bProceed = True EndSwitch If $bProceed Then $iIndex = _ArraySearch($aGUT, $sNumber) If $iIndex <> - 1 Then ; Delete it _ArrayDelete($aGUT, $iIndex) ; Now clear ListViews 0 _GUICtrlListView_BeginUpdate($hLV_C0) _GUICtrlListView_DeleteAllItems($hLV_C0) ; And reload with all / the top 20 elements in the main array For $i = 0 To UBound($aGUT) - 1 If $i < 13 Then GUICtrlCreateListViewItem($aGUT[$i], $hLV_C0) EndIf Next _GUICtrlListView_EndUpdate($hLV_C0) GUICtrlCreateListViewItem($sNumber, $hLV_C1) _GUICtrlListView_SimpleSort($hLV_C1,$g_bSortSense,0,False) Else For $iColumnIndex = 0 to UBound($aSearchListview) -1 Local $iIndex = _GUICtrlListView_FindText($aSearchListview[$iColumnIndex],$sNumber,-1,False) If $iIndex <> -1 Then MsgBox(0,'Found',$aSearchListview[$iColumnIndex]) Else MsgBox(0,'Not Found',$aSearchListview[$iColumnIndex]) EndIf Next EndIf $bProceed = False $sNumber = '' EndIf Until $idMsg = $GUI_EVENT_CLOSE your Piccontrol can cause troubles: if the path to pic is incorect a endless searching is done.
Valnurat Posted June 6, 2016 Author Posted June 6, 2016 Aha, of course. Doh. Thank you. Yours sincerely Kenneth.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now