Jump to content

_GUICtrlListView_SimpleSort help


Recommended Posts

I would like to order the title column, but when I do the icon does not exactly match, do you have any ideas? THX

files ini and icon https://ufile.io/03x69

#include <StructureConstants.au3>
#include <ButtonConstants.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <GuiListView.au3>
#include <GDIPlus.au3>
#include <Array.au3>
#include <GuiImageList.au3>
#include <StaticConstants.au3>
#include <IE.au3>
#include <Misc.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>
#include <GuiListBox.au3>
#include <File.au3>
#include <FileConstants.au3>
#include <WinAPI.au3>
#include <WinAPITheme.au3>
#include <Color.au3>
#include <ColorConstants.au3>
#include <WinAPIConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=

Global $IEControl,$tini = @ScriptDir&"\test.ini"
Global $ListView, $g_bSortSense = False ; Set initial ascending sort

$Form1 = GUICreate("Form1", 800, 600, 192, 124)
$ListView = GUICtrlCreateListView("",  10, 10, 780, 580);, -1, BitOR($LVS_EX_FULLROWSELECT, 0x00010000))
;_GUICtrlListView_SetExtendedListViewStyle($ListView, BitOR($LVS_AUTOARRANGE, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER, $LVS_EX_SUBITEMIMAGES))
GUICtrlSetFont($ListView, 8, Default, Default, "Arial")
GUICtrlSetResizing($ListView,1); 102 + 2)
_GUICtrlListView_AddColumn($ListView, "Title", 400)
_GUICtrlListView_AddColumn($ListView, "Country", 50)
_GUICtrlListView_AddColumn($ListView, "Path", 320)

read()
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $ListView
    EndSwitch
WEnd

Func read()
    Local $tot = 0
    If FileExists($tini) Then
        $hImage2 = _GUIImageList_Create(48, 48, 5, 1)
        _GDIPlus_Startup()
        $aArrays = IniReadSectionNames($tini)

        If Not @error Then
            For $i = 1 To UBound($aArrays) - 1
                $n = IniRead($tini, $aArrays[$i], "name", "")
                $z = IniRead($tini, $aArrays[$i], "ico", "")
                $r = IniRead($tini, $aArrays[$i], "region", "")
                ConsoleWrite($z&@CRLF)
                ;load icon and upscale the icon to 48x48 pixels
                $hBitmap2 = _GDIPlus_BitmapCreateFromFile($z)
                $hBitmap_scaled2 = _GDIPlus_ImageResize($hBitmap2, 48, 48)
                $hBitmap_GDI = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_scaled2)
                _GDIPlus_BitmapDispose($hBitmap_scaled2)
                _GDIPlus_BitmapDispose($hBitmap2)
                $ico = _GUIImageList_Add($hImage2, $hBitmap_GDI)
                _GUICtrlListView_SetImageList($ListView, $hImage2, 1)
                _GUICtrlListView_AddItem($ListView, $n, $ico)
                _GUICtrlListView_AddSubItem($ListView, $i - 1, $r, 1)
                _GUICtrlListView_AddSubItem($ListView, $i - 1, $aArrays[$i], 2)
                $tot += 1
            Next
             _GUICtrlListView_SimpleSort($ListView, $g_bSortSense, 0, False)
            _GDIPlus_Shutdown()
        EndIf
    EndIf
EndFunc   ;==>read

 

Link to comment
Share on other sites

I can not understand why if I use icons, columns are not sorted correctly. Any suggestion.. THX

 

#include <StructureConstants.au3>
#include <ButtonConstants.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <GuiListView.au3>
#include <GDIPlus.au3>
#include <Array.au3>
#include <GuiImageList.au3>
#include <StaticConstants.au3>
#include <IE.au3>
#include <Misc.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>
#include <GuiListBox.au3>
#include <File.au3>
#include <FileConstants.au3>
#include <WinAPI.au3>
#include <WinAPITheme.au3>
#include <Color.au3>
#include <ColorConstants.au3>
#include <WinAPIConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=

Global $IEControl,$tini = @ScriptDir&"\test.ini"
Global $ListView, $g_bSortSense = False

$Form1 = GUICreate("Form1", 800, 600, 192, 124)
$ListView = GUICtrlCreateListView("",  10, 10, 780, 580);, -1, BitOR($LVS_EX_FULLROWSELECT, 0x00010000))
;_GUICtrlListView_SetExtendedListViewStyle($ListView, BitOR($LVS_AUTOARRANGE, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER, $LVS_EX_SUBITEMIMAGES))
GUICtrlSetFont($ListView, 8, Default, Default, "Arial")
GUICtrlSetResizing($ListView,1); 102 + 2)
_GUICtrlListView_AddColumn($ListView, "Icon", 70)
_GUICtrlListView_AddColumn($ListView, "Name", 330)
_GUICtrlListView_AddColumn($ListView, "Country", 50)
_GUICtrlListView_AddColumn($ListView, "Path", 320)

read()
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $ListView
    EndSwitch
WEnd

Func read()
    Local $tot = 0
    If FileExists($tini) Then
        $hImage2 = _GUIImageList_Create(48, 48, 5, 1)
        _GDIPlus_Startup()
        $aArrays = IniReadSectionNames($tini)

        If Not @error Then
            For $i = 1 To UBound($aArrays) - 1

                $n = IniRead($tini, $aArrays[$i], "name", "")
                $z = IniRead($tini, $aArrays[$i], "ico", "")
                $r = IniRead($tini, $aArrays[$i], "region", "")
                ConsoleWrite($z&@CRLF)
                ;load icon and upscale the icon to 48x48 pixels
                $hBitmap2 = _GDIPlus_BitmapCreateFromFile($z)
                $hBitmap_scaled2 = _GDIPlus_ImageResize($hBitmap2, 48, 48)
                $hBitmap_GDI = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_scaled2)
                _GDIPlus_BitmapDispose($hBitmap_scaled2)
                _GDIPlus_BitmapDispose($hBitmap2)
                $ico = _GUIImageList_Add($hImage2, $hBitmap_GDI)
                _GUICtrlListView_SetImageList($ListView, $hImage2, 1)
                _GUICtrlListView_AddItem($ListView, "", $ico)
                _GUICtrlListView_AddSubItem($ListView, $i - 1, $n, 1)
                _GUICtrlListView_AddSubItem($ListView, $i - 1, $r, 2)
                _GUICtrlListView_AddSubItem($ListView, $i - 1, $aArrays[$i], 3)
                $tot += 1
            Next
            _GUICtrlListView_SimpleSort($ListView, $g_bSortSense, 1, False)
            _GDIPlus_Shutdown()
        EndIf
    EndIf
EndFunc   ;==>read


Func _WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam

    Local $hWndListView = $ListView
    If Not IsHWnd($ListView) Then $hWndListView = GUICtrlGetHandle($ListView)
    Local $tNMHDR = DllStructCreate($tagNMLISTVIEW, $lParam)
    Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    Local $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode
                Case $LVN_COLUMNCLICK ; A column was clicked
                    _GUICtrlListView_SimpleSort($hWndListView, $g_bSortSense, DllStructGetData($tNMHDR, "SubItem")) ; Sort direction for next sort toggled by default
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_NOTIFY

 

Link to comment
Share on other sites

Ok, I found I way to order the colums, But... How i can sort the listview before it is loaded??? Thx

#include <StructureConstants.au3>
#include <ButtonConstants.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <GuiListView.au3>
#include <GDIPlus.au3>
#include <Array.au3>
#include <GuiImageList.au3>
#include <StaticConstants.au3>
#include <IE.au3>
#include <Misc.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>
#include <GuiListBox.au3>
#include <File.au3>
#include <FileConstants.au3>
#include <WinAPI.au3>
#include <WinAPITheme.au3>
#include <Color.au3>
#include <ColorConstants.au3>
#include <WinAPIConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=

Global $IEControl,$tini = @ScriptDir&"\test.ini"
Global $ListView

$Form1 = GUICreate("Form1", 800, 600, 192, 124)
$ListView = GUICtrlCreateListView("",  10, 10, 780, 580, -1, BitOR($LVS_EX_FULLROWSELECT, 0x00010000))
_GUICtrlListView_SetExtendedListViewStyle($ListView, BitOR($LVS_AUTOARRANGE, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER, $LVS_EX_SUBITEMIMAGES))
GUICtrlSetFont($ListView, 8, Default, Default, "Arial")
GUICtrlSetResizing($ListView,1); 102 + 2)
_GUICtrlListView_AddColumn($ListView, "Icon", 70)
_GUICtrlListView_AddColumn($ListView, "Name", 330)
_GUICtrlListView_AddColumn($ListView, "Country", 50)
_GUICtrlListView_AddColumn($ListView, "Path", 320)

read()
GUISetState(@SW_SHOW)
   _GUICtrlListView_RegisterSortCallBack($ListView)

#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $ListView
            _GUICtrlListView_SortItems($ListView, GUICtrlGetState($ListView))
    EndSwitch
WEnd
  _GUICtrlListView_RegisterSortCallBack($ListView)
   GUIDelete()
Func read()
    Local $tot = 0
    If FileExists($tini) Then
        $hImage2 = _GUIImageList_Create(48, 48, 5, 1)
        _GDIPlus_Startup()

        $aArrays = IniReadSectionNames($tini)



        If Not @error Then
            For $i = 1 To UBound($aArrays) - 1

                $n = IniRead($tini, $aArrays[$i], "name", "")
                $z = IniRead($tini, $aArrays[$i], "ico", "")
                $r = IniRead($tini, $aArrays[$i], "region", "")
                ConsoleWrite($z&@CRLF)
                ;load icon and upscale the icon to 48x48 pixels
                $hBitmap2 = _GDIPlus_BitmapCreateFromFile($z)
                $hBitmap_scaled2 = _GDIPlus_ImageResize($hBitmap2, 48, 48)
                $hBitmap_GDI = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_scaled2)
                _GDIPlus_BitmapDispose($hBitmap_scaled2)
                _GDIPlus_BitmapDispose($hBitmap2)
                $ico = _GUIImageList_Add($hImage2, $hBitmap_GDI)
                _GUICtrlListView_SetImageList($ListView, $hImage2, 1)
                _GUICtrlListView_AddItem($ListView, "", $ico)
                _GUICtrlListView_AddSubItem($ListView, $i - 1, $n, 1)
                _GUICtrlListView_AddSubItem($ListView, $i - 1, $r, 2)
                _GUICtrlListView_AddSubItem($ListView, $i - 1, $aArrays[$i], 3)
                $tot += 1
            Next
            _GDIPlus_Shutdown()
        EndIf
    EndIf
EndFunc   ;==>read

 

Link to comment
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
 Share

×
×
  • Create New...