Jump to content
Sign in to follow this  
MikahS

ListView sorting using sort callback and $LVN_COLUMNCLICK

Recommended Posts

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.

#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 by MikahS

Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My 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

 

Share this post


Link to post
Share on other sites

This is one way to do it.

#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 Gude
How 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

Share this post


Link to post
Share on other sites

 

This is one way to do it.

#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! :D

Edited by MikahS

Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My 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

 

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By UEZ
      This project has been discontinued!
       
      Here a small tool I wrote to update my Sysinternal tools collection without the need to download always the whole package or visiting the site to check for updates. I know that there are several tools available (also some tools written in AutoIt) but here another one for the collection. It was good exercise for me to code it.
       
       
        
       
       
      Some files from the live web site cannot be downloaded although they are visible!
       
      Here the download link of the source code only: AutoIt Sysinternal Tools Synchronizer v0.99.6 build 2020-09-23 beta.7z  (1557 downloads previously)
      -=> Requires AutoIt version 3.3.13.20 or higher / tested on Win8.1 real machine and some VMs: Win7 / Vista / Win10
       
      Compiled exe only: @MediaFire
       
      Just select the Sysinternal Tools folder or create one and press the synchronize button to download the selected items. Click on AutoIt label (near to left upper corner) to open menu.
       
      Special thanks to LarsJ, Melba23 and mesale0077 for their help. 
       
      I've still some ideas to implement which are more gimmick related, so it is not finished yet...
      If you want to add your language please check out #Region Language. Thanks. 
       
      Please report any bug or if you have any suggestions.
       
      The language of the tool tip from each of the executable in the left list view were automatically created using Google translator and weren't checked for correctness.
       
      Br,
      UEZ
    • By Cengokill
      Hi everyone,
      I have created a ListView that is in a tab, and I want to display an image in that tab, with the ListView on top.
      However, the image still appears on top of my ListView.
      If I remove the tabs everything works. 
      I looked at the autoit documentation and the <GuiListView.au3> documentation , I can't figure out how to display a background image, and put on top a ListView, inside a tab. 😥
      Here is the code:
      Opt("GUIOnEventMode", 1) $Form1 = GUICreate($Titre, 700, 627, $Form1Width, $Form1Height); main window $tabulation = GUICtrlCreateTab(148,0,700,580); creating tabs $tab1=GUICtrlCreateTabItem("Tab 1"); first tab GUICtrlSetState(-1, $GUI_SHOW); this tab is selected by default $Pic1 = GUICtrlCreatePic("image.jpg", 0, 30, 700, 627) GUICtrlSetState(-1, $GUI_DISABLE). $idListview = GUICtrlCreateListView("list 1|list 2|list 3", 200, 50, 390, 200) GUISetState(@SW_SHOW) While 1     Sleep(100) WEnd Thank you in advance.

    • By DrJohn
      Hello all.  It's me again.
      I've got a ListView with an associated ImageList to display icons.  What I seem to be hung up on is how to keep the ImageList updated to match the ListView as the latter changes.  I thought it was the case that the indices of the items in the ListView and those in the ImageList just needed to match.  So, for example, if I:
      Delete an item from the ListView [_GUICtrlListView_DeleteItem()], and also delete the image at the matching index in the ImageList [_GUIImageList_Remove()]. Then add a new item to the end of the ListView [_GUICtrlListView_AddItem()], and correspondingly add an image at the end of the ImageList [_GUIImageList_AddIcon()] Shouldn't everything stay in sync?
      Here's the code I thought would work:
      #include <GUIConstantsEx.au3> #include <GuiListView.au3> #include <FontConstants.au3> #include <WindowsConstants.au3> #include <GuiImageList.au3> Test() func Test() $gui = GUICreate("Test", 400, 300) ; Create ListView $lv = _GUICtrlListView_Create($gui, "", 10, 10, 380, 240, $LVS_DEFAULT) _GUICtrlListView_AddColumn($lv, "Col1", 50) _GUICtrlListView_AddColumn($lv, "Col2", 50) for $i = 0 to 2 $s = StringFormat("%d,1", $i+1) _GUICtrlListView_AddItem($lv, $s, $i) $s = StringFormat("%d,2", $i+1) _GUICtrlListView_AddSubItem($lv, $i, $s, 1) next ; Add ImageList $img_list = _GUIImageList_Create(16, 16, 5, 3) for $i = 0 to 2 $ico = StringFormat("%d.ico", $i+1) _GUIImageList_AddIcon($img_list, $ico) next _GUICtrlListView_SetImageList($lv, $img_list, 1) ; $btn = GUICtrlCreateButton("Test", 10, 260, 60, 30) GUISetState(@SW_SHOW) HotKeySet("^q", Quit) ; Loop until the user exits. while True switch GUIGetMsg() case $GUI_EVENT_CLOSE Exit case $btn ; Remove 2nd list item and image _GUICtrlListView_DeleteItem($lv, 1) _GUIImageList_Remove($img_list, 1) ; Add new item to end of ListView $idx = _GUICtrlListView_AddItem($lv, "foo") _GUICtrlListView_AddSubItem($lv, $idx, "bar", 1) ; Add new image to end of ImageList _GUIImageList_AddIcon($img_list, "5.ico") endswitch wend GUIDelete() endfunc func Quit() Exit endfunc What seems to happen is that when the new item is added to the ListView, its icon is 1.ico (the first item in the ImageList), rather than 5.ico (the newly added item that should be at the end of the ImageList).
      Or do I need to re-create the whole ImageList any time the ListView changes?
      A zip file is attached that contains the script and also the .ico files, for easier testing.
      Thanks!
      /John
      test.zip
    • By Dan_555
      Hi.
      I'm using the FreeCommander XE file manager here, and i'v written a script, which will create an empty, new file, after choosing an extension out from the Listbox.
       
      The listview code  is not mine, iv found the scripts somewhere on this forum. I have no credits in it, because it was intended to be only for my personal use.
      But now, i have a lot of free time, so i remembered that i haven't posted anything on this forum, yet, so here is my first script:
      It should be compiled with the Autoit v3.3.14.3 .
      The compiled exe needs a folder passed as a parameter, so that it know where to create the new file.
      A Listbox is opened, with a selection of available extensions.
      After selecting and doubleclicking (or using the ok button), the script creates a filename (if specified in the config file) with increased numbers (up to 9999).
      If the filename exist, the counter is checking the next number, until the maximum is reached.
      This script uses an ini file for configuration, called "NewFile.ini" which should be in the same folder, as the compiled exe.
      NewFile.au3
      #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiListView.au3> #include <String.au3> #include <WinAPIFiles.au3> #include <Array.au3> #include <EditConstants.au3> #include <GuiEdit.au3> #include <ScrollBarsConstants.au3> Global $test[0][2], $hFile, $cmd = "", $cmdtmp, $tmptxt, $tmpinidir, $filesetting, $MouseX, $MouseY, $UseMouseX, $UseMouseY, $Edit1 Global $aArray[1] = [] $cmdtmp = StringReplace($cmdlineraw, Chr(34), "") If StringLen($cmdtmp) = 2 Then     If StringRight($cmdtmp, 1) = ":" Then         $cmd = $cmdtmp & "\"     EndIf Else     If StringRight($cmdtmp, 1) <> "\" Or StringRight($cmdtmp, 1) <> "/" Then         $cmd = $cmdtmp & "\"     EndIf EndIf If Not FileExists($cmd) Then                    ;Check if the folder exists, display an error message if not !     DisplayReadMe(1)     Exit EndIf If StringLen(@ScriptDir) > 3 And StringRight(@ScriptDir, 1) <> "\" Then     $tmpinidir = @ScriptDir & "\" Else     $tmpinidir = @ScriptDir EndIf Local Const $sFilePath = $tmpinidir & "NewFile.ini" $filesetting = IniRead($sFilePath, "setting", "filename", "MyNewFile") $filesetting = StringReplace($filesetting, ">", " ") ;msgbox (0,"",$filesetting)  ;Debugging If FileExists($sFilePath) Then     $aArray = IniReadSectionNames($sFilePath) ; Read the INI section names. This will return a 1 dimensional array. EndIf $UseMouseX = IniRead($sFilePath, "setting", "UseMouseX", "1") $UseMouseY = IniRead($sFilePath, "setting", "UseMouseY", "0") ; Check if an error occurred. If Not @error Then     ; Enumerate through the array displaying the section names.     Local $count = 0     If FileExists($sFilePath) Then         For $i = 1 To $aArray[0]             $tmp1 = IniRead($sFilePath, $aArray[$i], "1", "none")             If $tmp1 <> "none" And StringLeft($tmp1, 1) = "." Then            ;Extension need to have a dot, or it will be ignored !                 $tmptxt = $tmptxt & $tmp1 & "|" & $aArray[$i] & @CRLF                 $count = $count + 1                                            ;Count how many extensions are added !             EndIf         Next     EndIf     If $count = 0 Then $tmptxt = ".au3|AutoIt 3" & @CRLF & ".txt|Text File" & @CRLF     ;MsgBox($MB_SYSTEMMODAL,"",$tmptxt)     _ArrayAdd($test, $tmptxt, 0, "|", @CRLF) Else                                                            ;Reading the ini failed, create a default array for the extensions     $tmptxt = ".au3|AutoIt 3" & @CRLF & ".txt|Text" & @CRLF     _ArrayAdd($test, $tmptxt, 0, "|", @CRLF) EndIf ;Local $test[5][2] = [['.au3', 'AutoIt'], ['.ahk', 'Auto Hotkey'], ['.txt', 'text'], ['.sdlbas', 'Sdl Basic'], ['.html', 'Webpage']] If $UseMouseX = 1 Then     $MouseX = MouseGetPos(0) Else     $MouseX = -1 EndIf If $UseMouseY = 1 Then     $MouseY = MouseGetPos(1) Else     $MouseY = -1 EndIf $Form1 = GUICreate("Create New File", 210, 247, $MouseX, $MouseY, $WS_CAPTION, $WS_EX_TOOLWINDOW) $List = GUICtrlCreateListView("", 5, 5, 200, 200) _GUICtrlListView_InsertColumn($List, 0, "Extension", 65) _GUICtrlListView_InsertColumn($List, 1, "Description", 115) _GUICtrlListView_AddArray($List, $test) GUICtrlCreateLabel("Example:" & $filesetting & "0000.ext", 5, 205) $Button1 = GUICtrlCreateButton("Ok", 16, 224, 45, 22) $Button3 = GUICtrlCreateButton("ReadMe", 80, 224, 55, 22) $Button2 = GUICtrlCreateButton("Cancel", 150, 224, 45, 22) $cDummy = GUICtrlCreateDummy() GUISetState(@SW_SHOW) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") While 1     $nMsg = GUIGetMsg()     Switch $nMsg         Case $GUI_EVENT_CLOSE, $Button2             Exit         Case $Button3             DisplayReadMe(0)         Case $Button1, $cDummy             Local $tmptxt = StringSplit(_GUICtrlListView_GetItemTextString($List), "|")[1]             If StringLen($tmptxt) > 0 Then                 Local $fnr = 0, $tmpfile = ""                 While $fnr < 10000                     $tmpfile = $cmd & $filesetting & _StringRepeat("0", 4 - StringLen($fnr)) & $fnr & $tmptxt                     ;MsgBox(0,"",$tmpfile) ; for debugging                     If Not (FileExists($tmpfile)) Then                         $hFile = _WinAPI_CreateFile($tmpfile, 0)                         _WinAPI_CloseHandle($hFile)                         Exit                     EndIf                     $fnr = $fnr + 1                 WEnd             EndIf     EndSwitch WEnd ;================================================================================ Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)     Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView     $hWndListView = $List     If Not IsHWnd($List) Then $hWndListView = GUICtrlGetHandle($List)     $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)     $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))     $iCode = DllStructGetData($tNMHDR, "Code")     Switch $hWndFrom         Case $hWndListView             Switch $iCode                 Case $NM_DBLCLK                     ; Fire the dummy if the ListView is double clicked                     GUICtrlSendToDummy($cDummy)             EndSwitch     EndSwitch     Return $GUI_RUNDEFMSG EndFunc   ;==>WM_NOTIFY Func DisplayReadMe($err)     Local $Form1 = GUICreate("Read Me", 550, 400, 10, 10, BitOR($WS_CAPTION, $WS_THICKFRAME ,$WS_MAXIMIZEBOX))     $Edit1 = GUICtrlCreateEdit("", 0, 0, 549, 399)     GUICtrlSetData(-1, "")     GUISetState(@SW_SHOW)     If $err=1 then         local $txttmp01="Error: Path does not exist"         local $txttmp02="Commandline call was: "         AddText ($txttmp01)         Addtext ($txttmp02 & $cmd & @CRLF & @CRLF)     EndIf     AddText("Instructions:" & @CRLF)     AddText("Displays a selection of available extensions and then creates a new file at the Path's location." & @CRLF & @CRLF & "Usage: NewFile Path")     AddText("Example: NewFile c:\myfolder\" & @CRLF)     AddText("Result: A file with a name 'MyFile0000.ext' will be created at the Path's location.")     AddText("If the filename exists, the number counter will increase, until it finds a free number, up to 9999." & @CRLF)     AddText("Uses a configuration file in the .exe folder named NewFile.ini !" & @CRLF)     AddText("Example of a config file:" & @CRLF)     AddText("[setting]" & @CRLF & "filename=MyFile>")     AddText("UseMouseX=0                ;0 or 1 - position the dialog at the mouse x coordinate - usefull for multi monitor settings !")     AddText("UseMouseY=0                ;0 or 1 - Set this and UseMouseX to spawn the dialog at the mouse coordinates !" & @CRLF)     AddText(";Use > in filename as a space char ! (only needed if you want the space char at the beginning or at the end : in between filename and the number)" & @CRLF)     AddText(";Format for this ini file is:" & @CRLF & ";Name              e.g [Auto It]")     AddText(";extension       e.g 1=.au3" & @CRLF & "; p.s. only 1 extension per section ! the number must be 1" & @CRLF)     AddText("[AutoIt3]" & @CRLF & "1=.au3" & @CRLF & @CRLF & "[Text]" & @CRLF & "1=.txt")     _GUICtrlEdit_SetSel($Edit1, 0, 0)     _GUICtrlEdit_Scroll($Edit1, $SB_SCROLLCARET)     If $err=1 Then         _GUICtrlEdit_SetSel($Edit1, 0, StringLen($txttmp01 & $txttmp02 & $cmd)+5)     EndIf     While 1         $nMsg = GUIGetMsg()         Switch $nMsg             Case $GUI_EVENT_CLOSE                 GUIDelete($Form1)                 ExitLoop         EndSwitch     WEnd EndFunc   ;==>DisplayReadMe Func AddText($edittxt)     _GUICtrlEdit_AppendText($Edit1, $edittxt & @CRLF) EndFunc   ;==>AddText  
       NewFile.ini
      [setting] filename=MyNewFile_ UseMouseX=0                ;0 or 1 - position the dialog at the mouse x coordinate - usefull for multi monitor settings ! UseMouseY=0                ;0 or 1 - Set this and UseMouseX to spawn the dialog at the mouse coordinates ! ;Use > in filename as a space char ! (only needed if you want the space char at the beginning or at the end : in between filename and the number) ;Format for this ini file is: ;Name              e.g [Auto It] ;extension       e.g 1=.au3 ; p.s. only 1 extension per section ! the number must be 1 [AutoIt3] 1=.au3 [Auto Hotkey] 1=.ahk [Text] 1=.txt [Sdl Basic] 1=.sdlbas [Webpage] 1=.html [Basic] 1=.bas [Pascal] 1=.pas [Rich Text (RTF)] 1=.rtf [Word Document] 1=.doc [Hex File] 1=.hex
    • By Miliardsto
      I have the following code. You can see there are $color_normal and $color_trans
      In my case normal is too dark . And color trans is to much violet.
      If you run it you will see how its looks. I want gui with listView have the same color like taskbar in windows 10.
      How to achieve that?
       
       
      #include <Date.au3> #include <MsgBoxConstants.au3> #include <GuiListBox.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> HotKeySet("{ESC}", "Terminate") $color_normal = "0x" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 24), 6) $color_trans = "0x" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 16), 6) $trans = RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "EnableTransparency") ConsoleWrite("Transpart = " & $trans & @CRLF) ConsoleWrite("Color normal = " & $color_normal & @CRLF) ConsoleWrite("Color trans = " & $color_trans & @CRLF) ConsoleWrite(_Get_taskbar_color()); It return AARRGGBB $taskbarColor = _Get_taskbar_color() Global $gui = GUICreate("Test", 150, 58,@DesktopWidth-300,@DesktopHeight-58,$WS_POPUP,BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW)) Global $idListview = GUICtrlCreateListView("", 0, 0, 150, 58,BitOR($LBS_NOTIFY,$LBS_SORT), 0) ;_GuiCtrlMakeTrans(-1,100) ; Add column _GUICtrlListView_AddColumn($idListview, "Msgs", 100) GUICtrlSetFont(-1, 7, 400, 0, "Segoe UI") GUICtrlSetColor(-1, 0x470C4F) GUICtrlSetBkColor($idListview, 0x310638) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func Terminate() Exit EndFunc Func _Get_taskbar_color() If RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "ColorPrevalence") Then If RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "EnableTransparency") Then Return "0xD9" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 16), 6) Else Return "0xFF" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 24), 6) EndIf Else If RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "EnableTransparency") Then Return "0xD9000000" Else Return "0xFF000000" EndIf EndIf EndFunc  
×
×
  • Create New...