MikahS Posted October 27, 2014 Posted October 27, 2014 (edited) Hello all, Back again it seems. I've hit a snag in the below script. I use this on win 7 and XP machines frequently and have just realized that sorting using column headers is not 'working' (is not updating listview; it looks like something is going on behind the scenes..) when clicked. Also this does not show the sorting arrow when using the callback sort functionality. So, to sum up, I am not seeing the arrow keys when clicking the column header to sort. And, it is not sorting the values in the $List1 ListView box on a win XP machine. expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <Constants.au3> #include <GUIListBox.au3> #include <GUIEdit.au3> #include <GuiListView.au3> #include <Array.au3> #include <ButtonConstants.au3> #include <ScrollBarConstants.au3> #include <GuiScrollBars.au3> Local $List1, $List2, $List3, $List4, $GUIhandle Local $Button19, $Button91, $ButtonAZ, $ButtonZA Local $hChild_1, $cLabel_1, $cLabel_2, $cLabel_3 GUI() Repaint() Local $bSysMsg = False Local $aRect = _GUICtrlListView_GetItemRect($List1, 0) $iDeltaY = $aRect[3] - $aRect[1] _GUIScrollBars_EnableScrollBar(ControlGetHandle("", "", $List2), $SB_BOTH, $ESB_DISABLE_BOTH) _GUIScrollBars_EnableScrollBar(ControlGetHandle("", "", $List3), $SB_BOTH, $ESB_DISABLE_BOTH) _GUICtrlListView_RegisterSortCallBack($List1) _GUICtrlListView_RegisterSortCallBack($List2) _GUICtrlListView_RegisterSortCallBack($List3) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") GUIRegisterMsg($WM_SIZE, "WM_SIZE") GUIRegisterMsg($WM_SYSCOMMAND, "_WM_SYSCOMMAND") While 1 $msg = GUIGetMsg(1) Switch $msg[1] Case $GUIhandle Switch $msg[0] Case $GUI_EVENT_CLOSE Quit() EndSwitch If $bSysMsg Then $bSysMsg = False _Resize_ListViews() EndIf Case $hChild_1 Switch $msg[0] Case $GUI_EVENT_CLOSE GUIDelete($hChild_1) EndSwitch EndSwitch WEnd Func Repaint() Local $L1, $L2, $L3 _GUICtrlListView_BeginUpdate($List1) _GUICtrlListView_DeleteAllItems($List1) _GUICtrlListView_BeginUpdate($List2) _GUICtrlListView_DeleteAllItems($List2) _GUICtrlListView_BeginUpdate($List3) _GUICtrlListView_DeleteAllItems($List3) For $Index = 0 To 10 Step 1 $L1 = _GUICtrlListView_AddItem($List1, $Index, $Index) $L2 = _GUICtrlListView_AddItem($List2, $Index, $Index) $L3 = _GUICtrlListView_AddItem($List3, $Index, $Index) Next _GUICtrlListView_SetColumnWidth($List1, 0, $LVSCW_AUTOSIZE) _GUICtrlListView_SetColumnWidth($List2, 0, $LVSCW_AUTOSIZE) _GUICtrlListView_EndUpdate($List1) _GUICtrlListView_EndUpdate($List2) _GUICtrlListView_EndUpdate($List3) EndFunc ;==>Repaint Func Quit() _GUICtrlListView_UnRegisterSortCallBack($List1) _GUICtrlListView_UnRegisterSortCallBack($List2) _GUICtrlListView_UnRegisterSortCallBack($List3) Exit EndFunc ;==>Quit Func GUI() Local $Index, $LV1, $LV2, $LV3, $L1_EX, $L2_EX, $L3_EX $GUIhandle = GUICreate("ArchServer", 680, 575, -1, -1, $WS_SIZEBOX + $WS_SYSMENU + $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX) ;creates the parent window $List1 = _GUICtrlListView_Create($GUIhandle, "Computer Name ", 20, 35, 300, 448, -1, $LVS_EX_DOUBLEBUFFER) ;;$ES_READONLY incase you don't want to be able to select text $cLabel_1 = GUICtrlCreateLabel("", 20, 35, 300, 448) GUICtrlSetState($cLabel_1, $GUI_DISABLE) GUICtrlSetResizing($cLabel_1, $GUI_DOCKAUTO) GUICtrlSetBkColor($cLabel_1, $GUI_BKCOLOR_TRANSPARENT) _GUICtrlListView_SetExtendedListViewStyle($List1, $LVS_EX_TWOCLICKACTIVATE) $List2 = _GUICtrlListView_Create($GUIhandle, "Date/Time", 355, 35, 190, 450, -1, BitOR($LVS_EX_DOUBLEBUFFER, $LVS_EX_FLATSB)) $cLabel_2 = GUICtrlCreateLabel("", 355, 35, 190, 450) GUICtrlSetState($cLabel_2, $GUI_DISABLE) GUICtrlSetResizing($cLabel_2, $GUI_DOCKAUTO) GUICtrlSetBkColor($cLabel_2, $GUI_BKCOLOR_TRANSPARENT) $List3 = _GUICtrlListView_Create($GUIhandle, "Speed", 574, 35, 95, 450, -1, BitOR($LVS_EX_DOUBLEBUFFER, $LVS_EX_FLATSB)) $cLabel_3 = GUICtrlCreateLabel("", 574, 35, 95, 450) GUICtrlSetState($cLabel_3, $GUI_DISABLE) GUICtrlSetResizing($cLabel_3, $GUI_DOCKAUTO) GUICtrlSetBkColor($cLabel_3, $GUI_BKCOLOR_TRANSPARENT) GUICtrlCreateLabel("Additional Info", 20, 489) ;creates the label for $List4 GUICtrlSetResizing(-1, $GUI_DOCKSIZE) $List4 = GUICtrlCreateList("", 20, 512, 635, 40, BitOR($WS_BORDER, $WS_VSCROLL), $ES_READONLY) GUICtrlSetResizing($List4, $GUI_DOCKAUTO) GUICtrlCreateLabel("Active Connections: ", 525, 487) ;creates the label for the active connections GUICtrlSetResizing(-1, $GUI_DOCKSIZE) $ActiveConnections = GUICtrlCreateList("0", 625, 486, 30, 30) ;dynamically updating list of connections as they come in GUICtrlSetResizing($ActiveConnections, $GUI_DOCKSIZE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUISetState(@SW_SHOW) ;shows the GUI window For $Index = 0 To 10 Step 1 $LV1 = _GUICtrlListView_AddItem($List1, " ") ;adds a default value into $List1 $LV2 = _GUICtrlListView_AddItem($List2, " ") ;adds a default value into $List2 $LV3 = _GUICtrlListView_AddItem($List3, " ") ;adds a default value into $List3 Next EndFunc ;==>GUI Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, _ $ceLines, $cl $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Local Const $iLines = _SendMessage($List1, $LVM_GETTOPINDEX) - _SendMessage($List2, $LVM_GETTOPINDEX) _SendMessage($List2, $LVM_SCROLL, 0, $iLines * $iDeltaY) _SendMessage($List3, $LVM_SCROLL, 0, $iLines * $iDeltaY) Switch $hWndFrom Case $List1 Switch $iCode Case $LVN_COLUMNCLICK _GUICtrlListView_SortItems($List1, GUICtrlGetState($List1)) Case $NM_CLICK $sData = _GUICtrlListView_GetSelectedIndices($List1) _GUICtrlListView_SetItemSelected($List2, $sData, True, False) _GUICtrlListView_SetItemSelected($List3, $sData, True, False) EndSwitch Case $List2 Switch $iCode Case $LVN_COLUMNCLICK _GUICtrlListView_SortItems($List1, GUICtrlGetState($List1)) Case $NM_CLICK $sData = _GUICtrlListView_GetSelectedIndices($List2) _GUICtrlListView_SetItemSelected($List1, $sData, True, False) _GUICtrlListView_SetItemSelected($List3, $sData, True, False) EndSwitch Case $List3 Switch $iCode Case $LVN_COLUMNCLICK _GUICtrlListView_SortItems($List1, GUICtrlGetState($List1)) Case $NM_CLICK $sData = _GUICtrlListView_GetSelectedIndices($List3) _GUICtrlListView_SetItemSelected($List1, $sData, True, False) _GUICtrlListView_SetItemSelected($List2, $sData, True, False) EndSwitch EndSwitch EndFunc ;==>WM_NOTIFY Func WM_SIZE($hWnd, $msg, $wParam, $lParam) _Resize_ListViews() Return $GUI_RUNDEFMSG EndFunc ;==>WM_SIZE Func _WM_SYSCOMMAND($hWnd, $msg, $wParam, $lParam) Const $SC_MAXIMIZE = 0xF030 Const $SC_RESTORE = 0xF120 Switch $wParam Case $SC_MAXIMIZE, $SC_RESTORE $bSysMsg = True EndSwitch EndFunc ;==>_WM_SYSCOMMAND Func _Resize_ListViews() $aRet = ControlGetPos($GUIhandle, "", $cLabel_1) WinMove($List1, "", $aRet[0], $aRet[1], $aRet[2], $aRet[3]) $aRet = ControlGetPos($GUIhandle, "", $cLabel_2) WinMove($List2, "", $aRet[0], $aRet[1], $aRet[2], $aRet[3]) $aRet = ControlGetPos($GUIhandle, "", $cLabel_3) WinMove($List3, "", $aRet[0], $aRet[1], $aRet[2], $aRet[3]) EndFunc ;==>_Resize_ListViews ;========RESIZE FUNCTIONALITY THANKS TO MELBA All replies are much appreciated! Edited October 27, 2014 by MikahS Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Forum FAQ Â
Solution BrewManNH Posted October 27, 2014 Solution Posted October 27, 2014 This is one way to do it. expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <Constants.au3> #include <GUIListBox.au3> #include <GUIEdit.au3> #include <GuiListView.au3> #include <Array.au3> #include <ButtonConstants.au3> #include <ScrollBarConstants.au3> #include <GuiScrollBars.au3> Local $List1, $List2, $List3, $List4, $GUIhandle Local $Button19, $Button91, $ButtonAZ, $ButtonZA Local $hChild_1, $cLabel_1, $cLabel_2, $cLabel_3 GUI() Repaint() Local $bSysMsg = False Local $aRect = _GUICtrlListView_GetItemRect($List1, 0) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $List1 = ' & $List1 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console $iDeltaY = $aRect[3] - $aRect[1] _GUIScrollBars_EnableScrollBar(ControlGetHandle("", "", $List2), $SB_BOTH, $ESB_DISABLE_BOTH) _GUIScrollBars_EnableScrollBar(ControlGetHandle("", "", $List3), $SB_BOTH, $ESB_DISABLE_BOTH) _GUICtrlListView_RegisterSortCallBack($List1) _GUICtrlListView_RegisterSortCallBack($List2) _GUICtrlListView_RegisterSortCallBack($List3) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") GUIRegisterMsg($WM_SIZE, "WM_SIZE") GUIRegisterMsg($WM_SYSCOMMAND, "_WM_SYSCOMMAND") While 1 $msg = GUIGetMsg(1) Switch $msg[1] Case $GUIhandle Switch $msg[0] Case $GUI_EVENT_CLOSE ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $GUI_EVENT_CLOSE = ' & $GUI_EVENT_CLOSE & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Quit() Case $List1 ; <<<<<<<<<<<<<<<<<<<<<<<<<<< _GUICtrlListView_SortItems($List1, GUICtrlGetState($List1)) Case $List2 ; <<<<<<<<<<<<<<<<<<<<<<<<<<< _GUICtrlListView_SortItems($List2, GUICtrlGetState($List2)) Case $List3 ; <<<<<<<<<<<<<<<<<<<<<<<<<<< _GUICtrlListView_SortItems($List3, GUICtrlGetState($List3)) EndSwitch If $bSysMsg Then $bSysMsg = False _Resize_ListViews() EndIf Case $hChild_1 Switch $msg[0] Case $GUI_EVENT_CLOSE GUIDelete($hChild_1) EndSwitch EndSwitch WEnd Func Repaint() Local $L1, $L2, $L3 _GUICtrlListView_BeginUpdate($List1) _GUICtrlListView_DeleteAllItems($List1) _GUICtrlListView_BeginUpdate($List2) _GUICtrlListView_DeleteAllItems($List2) _GUICtrlListView_BeginUpdate($List3) _GUICtrlListView_DeleteAllItems($List3) For $Index = 0 To 10 Step 1 $L1 = _GUICtrlListView_AddItem($List1, $Index, $Index) $L2 = _GUICtrlListView_AddItem($List2, $Index, $Index) $L3 = _GUICtrlListView_AddItem($List3, $Index, $Index) Next _GUICtrlListView_SetColumnWidth($List1, 0, $LVSCW_AUTOSIZE) _GUICtrlListView_SetColumnWidth($List2, 0, $LVSCW_AUTOSIZE) _GUICtrlListView_EndUpdate($List1) _GUICtrlListView_EndUpdate($List2) _GUICtrlListView_EndUpdate($List3) EndFunc ;==>Repaint Func Quit() _GUICtrlListView_UnRegisterSortCallBack($List1) _GUICtrlListView_UnRegisterSortCallBack($List2) _GUICtrlListView_UnRegisterSortCallBack($List3) Exit EndFunc ;==>Quit Func GUI() Local $Index, $LV1, $LV2, $LV3, $L1_EX, $L2_EX, $L3_EX $GUIhandle = GUICreate("ArchServer", 680, 575, -1, -1, $WS_SIZEBOX + $WS_SYSMENU + $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX) ;creates the parent window $List1 = GUICtrlCreateListView( "Computer Name ", 20, 35, 300, 448, -1, $LVS_EX_DOUBLEBUFFER) ; <<<<<<<<<<<<<<<<<<<<<<<<<<< $cLabel_1 = GUICtrlCreateLabel("", 20, 35, 300, 448) GUICtrlSetState($cLabel_1, $GUI_DISABLE) GUICtrlSetResizing($cLabel_1, $GUI_DOCKAUTO) GUICtrlSetBkColor($cLabel_1, $GUI_BKCOLOR_TRANSPARENT) _GUICtrlListView_SetExtendedListViewStyle($List1, $LVS_EX_TWOCLICKACTIVATE) $List2 = GUICtrlCreateListView("Date/Time", 355, 35, 190, 450, -1, BitOR($LVS_EX_DOUBLEBUFFER, $LVS_EX_FLATSB)) ; <<<<<<<<<<<<<<<<<<<<<<<<<<< $cLabel_2 = GUICtrlCreateLabel("", 355, 35, 190, 450) GUICtrlSetState($cLabel_2, $GUI_DISABLE) GUICtrlSetResizing($cLabel_2, $GUI_DOCKAUTO) GUICtrlSetBkColor($cLabel_2, $GUI_BKCOLOR_TRANSPARENT) $List3 = GUICtrlCreateListView( "Speed", 574, 35, 95, 450, -1, BitOR($LVS_EX_DOUBLEBUFFER, $LVS_EX_FLATSB)) ; <<<<<<<<<<<<<<<<<<<<<<<<<<< $cLabel_3 = GUICtrlCreateLabel("", 574, 35, 95, 450) GUICtrlSetState($cLabel_3, $GUI_DISABLE) GUICtrlSetResizing($cLabel_3, $GUI_DOCKAUTO) GUICtrlSetBkColor($cLabel_3, $GUI_BKCOLOR_TRANSPARENT) GUICtrlCreateLabel("Additional Info", 20, 489) ;creates the label for $List4 GUICtrlSetResizing(-1, $GUI_DOCKSIZE) $List4 = GUICtrlCreateList("", 20, 512, 635, 40, BitOR($WS_BORDER, $WS_VSCROLL), $ES_READONLY) GUICtrlSetResizing($List4, $GUI_DOCKAUTO) GUICtrlCreateLabel("Active Connections: ", 525, 487) ;creates the label for the active connections GUICtrlSetResizing(-1, $GUI_DOCKSIZE) $ActiveConnections = GUICtrlCreateList("0", 625, 486, 30, 30) ;dynamically updating list of connections as they come in GUICtrlSetResizing($ActiveConnections, $GUI_DOCKSIZE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUISetState(@SW_SHOW) ;shows the GUI window For $Index = 0 To 10 Step 1 $LV1 = _GUICtrlListView_AddItem($List1, " ") ;adds a default value into $List1 $LV2 = _GUICtrlListView_AddItem($List2, " ") ;adds a default value into $List2 $LV3 = _GUICtrlListView_AddItem($List3, " ") ;adds a default value into $List3 Next EndFunc ;==>GUI Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, _ $ceLines, $cl $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Local Const $iLines = _SendMessage($List1, $LVM_GETTOPINDEX) - _SendMessage($List2, $LVM_GETTOPINDEX) _SendMessage($List2, $LVM_SCROLL, 0, $iLines * $iDeltaY) _SendMessage($List3, $LVM_SCROLL, 0, $iLines * $iDeltaY) Switch $hWndFrom Case $List1 Switch $iCode ;~ Case $LVN_COLUMNCLICK ;~ _GUICtrlListView_SortItems($List1, GUICtrlGetState($List1)) Case $NM_CLICK $sData = _GUICtrlListView_GetSelectedIndices($List1) _GUICtrlListView_SetItemSelected($List2, $sData, True, False) _GUICtrlListView_SetItemSelected($List3, $sData, True, False) EndSwitch Case $List2 Switch $iCode ;~ Case $LVN_COLUMNCLICK ;~ _GUICtrlListView_SortItems($List1, GUICtrlGetState($List1)) Case $NM_CLICK $sData = _GUICtrlListView_GetSelectedIndices($List2) _GUICtrlListView_SetItemSelected($List1, $sData, True, False) _GUICtrlListView_SetItemSelected($List3, $sData, True, False) EndSwitch Case $List3 Switch $iCode ;~ Case $LVN_COLUMNCLICK ;~ _GUICtrlListView_SortItems($List1, GUICtrlGetState($List1)) Case $NM_CLICK $sData = _GUICtrlListView_GetSelectedIndices($List3) _GUICtrlListView_SetItemSelected($List1, $sData, True, False) _GUICtrlListView_SetItemSelected($List2, $sData, True, False) EndSwitch EndSwitch EndFunc ;==>WM_NOTIFY Func WM_SIZE($hWnd, $msg, $wParam, $lParam) _Resize_ListViews() Return $GUI_RUNDEFMSG EndFunc ;==>WM_SIZE Func _WM_SYSCOMMAND($hWnd, $msg, $wParam, $lParam) Const $SC_MAXIMIZE = 0xF030 Const $SC_RESTORE = 0xF120 Switch $wParam Case $SC_MAXIMIZE, $SC_RESTORE $bSysMsg = True EndSwitch EndFunc ;==>_WM_SYSCOMMAND Func _Resize_ListViews() $aRet = ControlGetPos($GUIhandle, "", $cLabel_1) WinMove($List1, "", $aRet[0], $aRet[1], $aRet[2], $aRet[3]) $aRet = ControlGetPos($GUIhandle, "", $cLabel_2) WinMove($List2, "", $aRet[0], $aRet[1], $aRet[2], $aRet[3]) $aRet = ControlGetPos($GUIhandle, "", $cLabel_3) WinMove($List3, "", $aRet[0], $aRet[1], $aRet[2], $aRet[3]) EndFunc ;==>_Resize_ListViews ;========RESIZE FUNCTIONALITY THANKS TO MELBA If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator
MikahS Posted October 28, 2014 Author Posted October 28, 2014 (edited) Â This is one way to do it. expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <Constants.au3> #include <GUIListBox.au3> #include <GUIEdit.au3> #include <GuiListView.au3> #include <Array.au3> #include <ButtonConstants.au3> #include <ScrollBarConstants.au3> #include <GuiScrollBars.au3> Local $List1, $List2, $List3, $List4, $GUIhandle Local $Button19, $Button91, $ButtonAZ, $ButtonZA Local $hChild_1, $cLabel_1, $cLabel_2, $cLabel_3 GUI() Repaint() Local $bSysMsg = False Local $aRect = _GUICtrlListView_GetItemRect($List1, 0) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $List1 = ' & $List1 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console $iDeltaY = $aRect[3] - $aRect[1] _GUIScrollBars_EnableScrollBar(ControlGetHandle("", "", $List2), $SB_BOTH, $ESB_DISABLE_BOTH) _GUIScrollBars_EnableScrollBar(ControlGetHandle("", "", $List3), $SB_BOTH, $ESB_DISABLE_BOTH) _GUICtrlListView_RegisterSortCallBack($List1) _GUICtrlListView_RegisterSortCallBack($List2) _GUICtrlListView_RegisterSortCallBack($List3) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") GUIRegisterMsg($WM_SIZE, "WM_SIZE") GUIRegisterMsg($WM_SYSCOMMAND, "_WM_SYSCOMMAND") While 1 $msg = GUIGetMsg(1) Switch $msg[1] Case $GUIhandle Switch $msg[0] Case $GUI_EVENT_CLOSE ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $GUI_EVENT_CLOSE = ' & $GUI_EVENT_CLOSE & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Quit() Case $List1 ; <<<<<<<<<<<<<<<<<<<<<<<<<<< _GUICtrlListView_SortItems($List1, GUICtrlGetState($List1)) Case $List2 ; <<<<<<<<<<<<<<<<<<<<<<<<<<< _GUICtrlListView_SortItems($List2, GUICtrlGetState($List2)) Case $List3 ; <<<<<<<<<<<<<<<<<<<<<<<<<<< _GUICtrlListView_SortItems($List3, GUICtrlGetState($List3)) EndSwitch If $bSysMsg Then $bSysMsg = False _Resize_ListViews() EndIf Case $hChild_1 Switch $msg[0] Case $GUI_EVENT_CLOSE GUIDelete($hChild_1) EndSwitch EndSwitch WEnd Func Repaint() Local $L1, $L2, $L3 _GUICtrlListView_BeginUpdate($List1) _GUICtrlListView_DeleteAllItems($List1) _GUICtrlListView_BeginUpdate($List2) _GUICtrlListView_DeleteAllItems($List2) _GUICtrlListView_BeginUpdate($List3) _GUICtrlListView_DeleteAllItems($List3) For $Index = 0 To 10 Step 1 $L1 = _GUICtrlListView_AddItem($List1, $Index, $Index) $L2 = _GUICtrlListView_AddItem($List2, $Index, $Index) $L3 = _GUICtrlListView_AddItem($List3, $Index, $Index) Next _GUICtrlListView_SetColumnWidth($List1, 0, $LVSCW_AUTOSIZE) _GUICtrlListView_SetColumnWidth($List2, 0, $LVSCW_AUTOSIZE) _GUICtrlListView_EndUpdate($List1) _GUICtrlListView_EndUpdate($List2) _GUICtrlListView_EndUpdate($List3) EndFunc ;==>Repaint Func Quit() _GUICtrlListView_UnRegisterSortCallBack($List1) _GUICtrlListView_UnRegisterSortCallBack($List2) _GUICtrlListView_UnRegisterSortCallBack($List3) Exit EndFunc ;==>Quit Func GUI() Local $Index, $LV1, $LV2, $LV3, $L1_EX, $L2_EX, $L3_EX $GUIhandle = GUICreate("ArchServer", 680, 575, -1, -1, $WS_SIZEBOX + $WS_SYSMENU + $WS_MAXIMIZEBOX + $WS_MINIMIZEBOX) ;creates the parent window $List1 = GUICtrlCreateListView( "Computer Name ", 20, 35, 300, 448, -1, $LVS_EX_DOUBLEBUFFER) ; <<<<<<<<<<<<<<<<<<<<<<<<<<< $cLabel_1 = GUICtrlCreateLabel("", 20, 35, 300, 448) GUICtrlSetState($cLabel_1, $GUI_DISABLE) GUICtrlSetResizing($cLabel_1, $GUI_DOCKAUTO) GUICtrlSetBkColor($cLabel_1, $GUI_BKCOLOR_TRANSPARENT) _GUICtrlListView_SetExtendedListViewStyle($List1, $LVS_EX_TWOCLICKACTIVATE) $List2 = GUICtrlCreateListView("Date/Time", 355, 35, 190, 450, -1, BitOR($LVS_EX_DOUBLEBUFFER, $LVS_EX_FLATSB)) ; <<<<<<<<<<<<<<<<<<<<<<<<<<< $cLabel_2 = GUICtrlCreateLabel("", 355, 35, 190, 450) GUICtrlSetState($cLabel_2, $GUI_DISABLE) GUICtrlSetResizing($cLabel_2, $GUI_DOCKAUTO) GUICtrlSetBkColor($cLabel_2, $GUI_BKCOLOR_TRANSPARENT) $List3 = GUICtrlCreateListView( "Speed", 574, 35, 95, 450, -1, BitOR($LVS_EX_DOUBLEBUFFER, $LVS_EX_FLATSB)) ; <<<<<<<<<<<<<<<<<<<<<<<<<<< $cLabel_3 = GUICtrlCreateLabel("", 574, 35, 95, 450) GUICtrlSetState($cLabel_3, $GUI_DISABLE) GUICtrlSetResizing($cLabel_3, $GUI_DOCKAUTO) GUICtrlSetBkColor($cLabel_3, $GUI_BKCOLOR_TRANSPARENT) GUICtrlCreateLabel("Additional Info", 20, 489) ;creates the label for $List4 GUICtrlSetResizing(-1, $GUI_DOCKSIZE) $List4 = GUICtrlCreateList("", 20, 512, 635, 40, BitOR($WS_BORDER, $WS_VSCROLL), $ES_READONLY) GUICtrlSetResizing($List4, $GUI_DOCKAUTO) GUICtrlCreateLabel("Active Connections: ", 525, 487) ;creates the label for the active connections GUICtrlSetResizing(-1, $GUI_DOCKSIZE) $ActiveConnections = GUICtrlCreateList("0", 625, 486, 30, 30) ;dynamically updating list of connections as they come in GUICtrlSetResizing($ActiveConnections, $GUI_DOCKSIZE) GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUISetState(@SW_SHOW) ;shows the GUI window For $Index = 0 To 10 Step 1 $LV1 = _GUICtrlListView_AddItem($List1, " ") ;adds a default value into $List1 $LV2 = _GUICtrlListView_AddItem($List2, " ") ;adds a default value into $List2 $LV3 = _GUICtrlListView_AddItem($List3, " ") ;adds a default value into $List3 Next EndFunc ;==>GUI Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, _ $ceLines, $cl $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Local Const $iLines = _SendMessage($List1, $LVM_GETTOPINDEX) - _SendMessage($List2, $LVM_GETTOPINDEX) _SendMessage($List2, $LVM_SCROLL, 0, $iLines * $iDeltaY) _SendMessage($List3, $LVM_SCROLL, 0, $iLines * $iDeltaY) Switch $hWndFrom Case $List1 Switch $iCode ;~ Case $LVN_COLUMNCLICK ;~ _GUICtrlListView_SortItems($List1, GUICtrlGetState($List1)) Case $NM_CLICK $sData = _GUICtrlListView_GetSelectedIndices($List1) _GUICtrlListView_SetItemSelected($List2, $sData, True, False) _GUICtrlListView_SetItemSelected($List3, $sData, True, False) EndSwitch Case $List2 Switch $iCode ;~ Case $LVN_COLUMNCLICK ;~ _GUICtrlListView_SortItems($List1, GUICtrlGetState($List1)) Case $NM_CLICK $sData = _GUICtrlListView_GetSelectedIndices($List2) _GUICtrlListView_SetItemSelected($List1, $sData, True, False) _GUICtrlListView_SetItemSelected($List3, $sData, True, False) EndSwitch Case $List3 Switch $iCode ;~ Case $LVN_COLUMNCLICK ;~ _GUICtrlListView_SortItems($List1, GUICtrlGetState($List1)) Case $NM_CLICK $sData = _GUICtrlListView_GetSelectedIndices($List3) _GUICtrlListView_SetItemSelected($List1, $sData, True, False) _GUICtrlListView_SetItemSelected($List2, $sData, True, False) EndSwitch EndSwitch EndFunc ;==>WM_NOTIFY Func WM_SIZE($hWnd, $msg, $wParam, $lParam) _Resize_ListViews() Return $GUI_RUNDEFMSG EndFunc ;==>WM_SIZE Func _WM_SYSCOMMAND($hWnd, $msg, $wParam, $lParam) Const $SC_MAXIMIZE = 0xF030 Const $SC_RESTORE = 0xF120 Switch $wParam Case $SC_MAXIMIZE, $SC_RESTORE $bSysMsg = True EndSwitch EndFunc ;==>_WM_SYSCOMMAND Func _Resize_ListViews() $aRet = ControlGetPos($GUIhandle, "", $cLabel_1) WinMove($List1, "", $aRet[0], $aRet[1], $aRet[2], $aRet[3]) $aRet = ControlGetPos($GUIhandle, "", $cLabel_2) WinMove($List2, "", $aRet[0], $aRet[1], $aRet[2], $aRet[3]) $aRet = ControlGetPos($GUIhandle, "", $cLabel_3) WinMove($List3, "", $aRet[0], $aRet[1], $aRet[2], $aRet[3]) EndFunc ;==>_Resize_ListViews ;========RESIZE FUNCTIONALITY THANKS TO MELBA Â While this did enable sorting on XP. It also disabled scrolling on both XP and win 7 and disabled sorting on win 7, so unfortunately I think there is some problems using regular AutoIt ListView creation. EDIT: Okay, my mistake on the win 7 sorting. Just need to figure out how to do scrolling and (had to use handles instead of CtrlID returned from creation of ListView) highlighting of characters in WM_Notify as it seems it is no longer called with regular AutoIt ListView interaction. EDIT 2: Alright, got it figured out, it was due to the fact I was not using the handle instead I was using the CtrlID. BrewMan's solution thus solved my problems! My thanks goes to you BrewManNH! Edited October 28, 2014 by MikahS Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Forum FAQ Â
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