Ghastly_MIB Posted February 20, 2006 Posted February 20, 2006 Hey, I had created a listview with automatic sorting, but when i'm inserting an item, it will delete the seccond colum by some record. I prefer not the command GUICtrlCreateListViewItem() because I have a list with a lot of items. #NoTrayIcon #include <GUIConstants.au3> #include <GuiListView.au3> $gui = GUICreate("List", 400, 400, 200, 100, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX, $WS_MAXIMIZEBOX)) $list = GUICtrlCreateListView("Proces|ID", 5, 5, 390, 390, $LVS_SHOWSELALWAYS+$LVS_SINGLESEL+$LVS_SORTASCENDING) GUISetState() $i_list = ProcessList() For $n = 1 To $i_list[0][0] If $i_list[$n][0] <> "" AND $i_list[$n][1] <> "" Then _GUICtrlListViewInsertItem($list, -1, $i_list[$n][0]&"|"&$i_list[$n][1]) Next _GUICtrlListViewSetColumnWidth($list, 0, 200) _GUICtrlListViewSetColumnWidth($list, 1, 100) While 1 Switch GUIGetMsg() Case -3 Exit EndSwitch WEnd Thanks, Ghastly_MIB
GaryFrost Posted February 20, 2006 Posted February 20, 2006 Hey, I had created a listview with automatic sorting, but when i'm inserting an item, it will delete the seccond colum by some record. I prefer not the command GUICtrlCreateListViewItem() because I have a list with a lot of items. #NoTrayIcon #include <GUIConstants.au3> #include <GuiListView.au3> $gui = GUICreate("List", 400, 400, 200, 100, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX, $WS_MAXIMIZEBOX)) $list = GUICtrlCreateListView("Proces|ID", 5, 5, 390, 390, $LVS_SHOWSELALWAYS+$LVS_SINGLESEL+$LVS_SORTASCENDING) GUISetState() $i_list = ProcessList() For $n = 1 To $i_list[0][0] If $i_list[$n][0] <> "" AND $i_list[$n][1] <> "" Then _GUICtrlListViewInsertItem($list, -1, $i_list[$n][0]&"|"&$i_list[$n][1]) Next _GUICtrlListViewSetColumnWidth($list, 0, 200) _GUICtrlListViewSetColumnWidth($list, 1, 100) While 1 Switch GUIGetMsg() Case -3 Exit EndSwitch WEnd Thanks, Ghastly_MIB Don't use $LVS_SORTASCENDING style if your going to be inserting items also, you need to use BitOr($LVS_SHOWSELALWAYS,$LVS_SINGLESEL) for styles i suggest doing a sort for example Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount ($list)] GUICtrlListViewSort($listview, $B_DESCENDING, 0) SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference.
Ghastly_MIB Posted February 20, 2006 Author Posted February 20, 2006 Don't use $LVS_SORTASCENDING style if your going to be inserting items also, you need to use BitOr($LVS_SHOWSELALWAYS,$LVS_SINGLESEL) for styles i suggest doing a sort for example Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount ($list)] GUICtrlListViewSort($listview, $B_DESCENDING, 0)Thats the problem, with _GUICtrlListViewSort it deletes all the items... But i wan't u update it. THe script i'm making is a realtime proces manager... So i wan't to update the list every second, but I don't wat to remove the list and sort it. The adding and removing script is ready, but when it adds the new item to the list it apears on top. So i would like to sort the list directly so it don't have to delete, add en sort the items... So isn't there an other way? Thanks, Ghastly_MIB
GaryFrost Posted February 20, 2006 Posted February 20, 2006 (edited) Thats the problem, with _GUICtrlListViewSort it deletes all the items... But i wan't u update it. THe script i'm making is a realtime proces manager... So i wan't to update the list every second, but I don't wat to remove the list and sort it. The adding and removing script is ready, but when it adds the new item to the list it apears on top. So i would like to sort the list directly so it don't have to delete, add en sort the items... So isn't there an other way? Thanks, Ghastly_MIB My suggestion then would be to just use the the GuiCtrlCreateListViewItem, that will add the item, and the sort style will reorder it #include <GuiConstants.au3> #include <GuiListView.au3> opt('MustDeclareVars', 1) Dim $listview, $Btn_Exit, $msg GUICreate("ListView", 392, 322) $listview = GUICtrlCreateListView("col1|col2|col3", 40, 30, 310, 149, BitOR($LVS_SORTASCENDING,$LVS_SHOWSELALWAYS, $LVS_SINGLESEL)) GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES) GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT) GUICtrlCreateListViewItem("line1|data1|more1", $listview) GUICtrlCreateListViewItem("line2|data2|more2", $listview) GUICtrlCreateListViewItem("line3|data3|more3", $listview) GUICtrlCreateListViewItem("line4|data4|more4", $listview) GUICtrlCreateListViewItem("line5|data5|more5", $listview) _GUICtrlListViewSetColumnWidth ($listview, 0, 75) _GUICtrlListViewSetColumnWidth ($listview, 1, 75) _GUICtrlListViewSetColumnWidth ($listview, 2, 75) $Btn_Exit = GUICtrlCreateButton("Exit", 300, 260, 70, 30) GUISetState() Sleep( 3000 ) GUICtrlCreateListViewItem("line2.5|data5|more5", $listview) While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Or $msg = $Btn_Exit ExitLoop EndSelect WEnd Exit Edited February 20, 2006 by gafrost SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference.
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