_GUICtrlListView_SimpleSort oO

  • Hiho,

    irgendwie raff ich nicht, wie genau ich dieser funktion nun mitgebe, ob er auf oder absteigend sortiert, kann mir dabei wer helfen?

    zZ sieht es so aus, er macht aber immer das gleiche ;)

    [autoit]

    If $HowToSort <> "don´t Sort" Then
    If $HowToSort = "DESCENDING" Then
    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount ($ListView1) ]
    _GUICtrlListView_SimpleSort ($ListView1, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
    ElseIf $HowToSort = "ASCENDING" Then
    Global $B_ASCENDING[_GUICtrlListView_GetColumnCount ($ListView1) ]
    _GUICtrlListView_SimpleSort ($ListView1, $B_ASCENDING, DllStructGetData($tInfo, "SubItem"))
    EndIf
    EndIf

    [/autoit]
    • Offizieller Beitrag

    Die Sortierung wechselt immer von Ascending nach Descending.
    Hier mal ein Bsp., per Kontext-Menü kannst du wählen nach welcher Spalte sortiert werden soll. Die Sortierung betrachtet Zahlen aber als String.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hListView, $B_DESCENDING, $mnu, $mnuSort0, $mnuSort1, $mnuSort2, $msg

    [/autoit] [autoit][/autoit] [autoit]

    _Main()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Main()
    GUICreate("ListView SimpleSort", 400, 300)
    $hListView = GUICtrlCreateListView("col1|col2|col3", 2, 2, 394, 268)
    $mnu = GUICtrlCreateContextMenu($hListView)
    $mnuSort0 = GUICtrlCreateMenuItem('Sort Spalte1', $mnu)
    $mnuSort1 = GUICtrlCreateMenuItem('Sort Spalte2', $mnu)
    $mnuSort2 = GUICtrlCreateMenuItem('Sort Spalte3', $mnu)
    GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlCreateListViewItem("line4|5|more_a", $hListView)
    GUICtrlCreateListViewItem("line5|4.50 |more_c", $hListView)
    GUICtrlCreateListViewItem("line5|4.0 |more_c", $hListView)
    GUICtrlCreateListViewItem("line3|23|more_e", $hListView)
    GUICtrlCreateListViewItem("line2|0.34560 |more_d", $hListView)
    GUICtrlCreateListViewItem("line1|1.0 |more_b", $hListView)
    GUICtrlCreateListViewItem("line1|0.1 |more_b", $hListView)
    GUICtrlCreateListViewItem("line1|10|more_b", $hListView)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 75)
    _GUICtrlListView_SetColumnWidth($hListView, 1, 75)
    _GUICtrlListView_SetColumnWidth($hListView, 2, 75)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)]
    ; Loop until user exits
    Do
    $msg = GUIGetMsg()
    Switch $msg
    Case $mnuSort0
    _GUICtrlListView_SimpleSort($hListView, $B_DESCENDING,0)
    Case $mnuSort1
    _GUICtrlListView_SimpleSort($hListView, $B_DESCENDING,1)
    Case $mnuSort2
    _GUICtrlListView_SimpleSort($hListView, $B_DESCENDING,2)
    EndSwitch
    Until $msg = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

    [/autoit]
  • ah, dank dir, ich machs mir dann mal einfach *g*

    [autoit]

    If $HowToSort <> "don´t Sort" Then
    If $HowToSort = "DESCENDING" Then
    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount ($ListView1) ]
    _GUICtrlListView_SimpleSort ($ListView1, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
    _GUICtrlListView_SimpleSort ($ListView1, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
    ElseIf $HowToSort = "ASCENDING" Then
    Global $B_ASCENDING[_GUICtrlListView_GetColumnCount ($ListView1) ]
    _GUICtrlListView_SimpleSort ($ListView1, $B_ASCENDING, DllStructGetData($tInfo, "SubItem"))
    EndIf
    EndIf

    [/autoit]

    klappt wunderbar *hehe*