Nahuel Posted November 23, 2008 Share Posted November 23, 2008 I want to delete all items of a list without having to destroy the image list, because the listview will be re-used. expandcollapse popup#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GuiConstantsEx.au3> #include <GuiListView.au3> #include <GuiImageList.au3> Opt('MustDeclareVars', 1) $Debug_LV = False; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work _Main() Func _Main() Local $hImage, $hListView GUICreate("ListView Set Image List", 400, 300) $hListView = GUICtrlCreateListView("", 2, 2, 394, 268) GUISetState() ; Load images $hImage = _GUIImageList_Create() _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0xFF0000, 16, 16)) _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0x00FF00, 16, 16)) _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0x0000FF, 16, 16)) _GUICtrlListView_SetImageList($hListView, $hImage, 1) ; Add columns _GUICtrlListView_AddColumn($hListView, "Column 1", 100) _GUICtrlListView_AddColumn($hListView, "Column 2", 100) _GUICtrlListView_AddColumn($hListView, "Column 3", 100) ; Add items _GUICtrlListView_AddItem($hListView, "Item 1", 0) _GUICtrlListView_AddItem($hListView, "Item 2", 1) _GUICtrlListView_AddItem($hListView, "Item 3", 2) ; Get image list handle MsgBox(0,"","Now will try to delete all items!") if Not _GUICtrlListView_DeleteAllItems($hlistview) Then MsgBox(0,"","Didn't work :(") ; Loop until user exits Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() EndFunc ;==>_Main Hope it's clear Link to comment Share on other sites More sharing options...
Madza91 Posted November 23, 2008 Share Posted November 23, 2008 Use _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($hListView)) [quote name='dbzfanatic' post='609696' date='Nov 26 2008, 08:46 AM']This is a help forum not a "write this for me" forum.[/quote](Sorry for bad English) :) Link to comment Share on other sites More sharing options...
mmavipc Posted November 23, 2008 Share Posted November 23, 2008 use _GUICtrlListView_DeleteAllItems(controlid) Hope that helps [size="10"]Pure Au3 crypt funcs(I'm currently also working on making a dll from this)[/size][Y] Be more active in the community[Y] Get 200 posts[N] Get 300 posts[N] Make a Topic in the example scripts forum with at least 50 replies.People who currently hate me:ValikSmOke_N Link to comment Share on other sites More sharing options...
Nahuel Posted November 23, 2008 Author Share Posted November 23, 2008 (edited) Use _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($hListView))Yes, tried that. Works and it's incredibly faster, but the memory usage keeps growing. I read somewhere else that this is because that method doesn't delete the control id's. Edited November 23, 2008 by Nahuel Link to comment Share on other sites More sharing options...
mmavipc Posted November 23, 2008 Share Posted November 23, 2008 Yes, tried that. Works and it's incredibly faster, but the memory usage keeps growing. I read somewhere else that this is because that method doesn't delete the control id's.try storing all of the control ids of the items in an array then use a for loop with _GUICtrlListView_DeleteItem($hWnd, $iIndex) to delete them all? [size="10"]Pure Au3 crypt funcs(I'm currently also working on making a dll from this)[/size][Y] Be more active in the community[Y] Get 200 posts[N] Get 300 posts[N] Make a Topic in the example scripts forum with at least 50 replies.People who currently hate me:ValikSmOke_N Link to comment Share on other sites More sharing options...
Nahuel Posted November 23, 2008 Author Share Posted November 23, 2008 try storing all of the control ids of the items in an array then use a for loop with _GUICtrlListView_DeleteItem($hWnd, $iIndex) to delete them all?That's pretty much what _GuiCtrlListView_DeleteAllItems does. And deleting the items one by one doesn't work either with the control ID's when using an imagelist. Link to comment Share on other sites More sharing options...
mmavipc Posted November 23, 2008 Share Posted November 23, 2008 That's pretty much what _GuiCtrlListView_DeleteAllItems does. And deleting the items one by one doesn't work either with the control ID's when using an imagelist.do what i said in combination with GUICtrlDelete ( controlID ) or try just using GUICtrlDelete ( controlID ) [size="10"]Pure Au3 crypt funcs(I'm currently also working on making a dll from this)[/size][Y] Be more active in the community[Y] Get 200 posts[N] Get 300 posts[N] Make a Topic in the example scripts forum with at least 50 replies.People who currently hate me:ValikSmOke_N Link to comment Share on other sites More sharing options...
Nahuel Posted November 23, 2008 Author Share Posted November 23, 2008 Thanks, but that doesn't work either. Link to comment Share on other sites More sharing options...
Madza91 Posted November 23, 2008 Share Posted November 23, 2008 (edited) Oh... Are you tried with GUICtrlSetImage() to set images (and you will not need ImageList) ? Little example #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt('MustDeclareVars', 1) Example() Func Example() Local $listview, $button, $item1, $item2, $item3, $input1, $msg GUICreate("listview items", 220, 250, -1, -1) $listview = GUICtrlCreateListView("col1 |col2|col3 ", 10, 10, 200, 150);,$LVS_SORTDESCENDING) $button = GUICtrlCreateButton("Value?", 75, 170, 70, 20) $item1 = GUICtrlCreateListViewItem("item2|col22|col23", $listview) $item2 = GUICtrlCreateListViewItem("item1|col12|col13", $listview) $input1 = GUICtrlCreateInput("", 20, 200, 150) GUISetState() GUICtrlSetData($item1, "ITEM1") GUICtrlSetData($item2, "||COL33") GUICtrlSetImage($item2, "shell32.dll", -5) GUICtrlDelete($item1) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE EndFunc ;==>Example Edited November 23, 2008 by n3nE [quote name='dbzfanatic' post='609696' date='Nov 26 2008, 08:46 AM']This is a help forum not a "write this for me" forum.[/quote](Sorry for bad English) :) Link to comment Share on other sites More sharing options...
GaryFrost Posted November 24, 2008 Share Posted November 24, 2008 Being that the items were created using the UDFs you need to get the handle to the listview. Also might be a good idea to set the imagelist back to the old and destroy the new. expandcollapse popup#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GuiConstantsEx.au3> #include <GuiListView.au3> #include <GuiImageList.au3> Opt('MustDeclareVars', 1) $Debug_LV = False; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work _Main() Func _Main() Local $hImage, $hListView, $hOld GUICreate("ListView Set Image List", 400, 300) $hListView = GUICtrlCreateListView("", 2, 2, 394, 268) GUISetState() ; Load images $hImage = _GUIImageList_Create() _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0xFF0000, 16, 16)) _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0x00FF00, 16, 16)) _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0x0000FF, 16, 16)) $hOld = _GUICtrlListView_SetImageList($hListView, $hImage, 1) ; Add columns _GUICtrlListView_AddColumn($hListView, "Column 1", 100) _GUICtrlListView_AddColumn($hListView, "Column 2", 100) _GUICtrlListView_AddColumn($hListView, "Column 3", 100) ; Add items _GUICtrlListView_AddItem($hListView, "Item 1", 0) _GUICtrlListView_AddItem($hListView, "Item 2", 1) _GUICtrlListView_AddItem($hListView, "Item 3", 2) ; Get image list handle MsgBox(0,"","Now will try to delete all items!") _GUICtrlListView_SetImageList($hListView, $hOld, 1) ConsoleWrite("Destroyed? " & _GUIImageList_Destroy($hImage) & @CRLF) if Not _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($hlistview)) Then MsgBox(0,"","Didn't work :(") ; Loop until user exits Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() EndFunc ;==>_Main SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
Nahuel Posted November 24, 2008 Author Share Posted November 24, 2008 Thank you Link to comment Share on other sites More sharing options...
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