Funktionreferenz


_GUICtrlListView_SimpleSort

Beschreibung anzeigen in

Sortiert ein ListView-Control (begrenzt)

#include <GuiListView.au3>
_GUICtrlListView_SimpleSort ( $hWnd, ByRef $vSortSense, $iCol [, $bToggleSense = True] )

Parameter

$hWnd Control-ID / Handle des Controls
$vSortSense Legt die definierte Sortierreihenfolge fest:
    True - Absteigend sortieren (Descending)
    False - Aufsteigend sortieren (Ascending)
Es ist einfache Variable für ein ListView mit einer einzelnen Spalte zu verwenden
Es ist ein Array für mehrspaltige ListViews zu verwenden:
    $aArray[0] - Reihenfolge für die erste Spalte
    $aArray[1] - Reihenfolge für die zweite Spalte
    $aArray[n] - Reihenfolge für letzte Spalte
$iCol Spaltennummer
bToggleSense
[optional] Sortierrichtung umschalten
    True - Sortierrichtung nach Sortierung umschalten (Standardeinstellung)
    False - Sortierrichtung nach Sortierung unverändert

Rückgabewert

Keine.

Bemerkungen

Dies ist eine Grundlagensortierfunktion. Für ein erweitertes Sortieren siehe GUICtrlRegisterListViewSort().

Das Umschalten der Sortierrichtung ist normal, wenn die Sortierung durch Klicken auf die Spaltenüberschrift eingeleitet wird.
Der Benutzer kann dieses Umschalten verhindern, indem $bToggleSense auf False gesetzt wird, wenn die Funktion von anderswo aufrufen wird.

Wenn die Funktion von mehreren Funktionen aufgerufen wird und die Sortierrichtung dabei umgeschaltet werden soll, ist es wichtig, dass $vSortSense als globale Variable deklariert ist.
Ansonsten wird die Sortierrichtung jedes Mal zurückgesetzt, wenn $vSortSense als lokale Variable erstellt wird, und das Umschalten ist unwirksam.

- - - - - - - - Erklärung der Controls - - - - - - - -

Beispiel

#include <GUIConstantsEx.au3>
#include <GUIListView.au3>
#include <WindowsConstants.au3>

Global $g_idListView, $g_bSortSense = True ; Setzt die aufsteigende Sortierung

Example()

Func Example()
    GUICreate("ListView: SimpleSort (v" & @AutoItVersion & ")", 400, 300)
    $g_idListView = GUICtrlCreateListView("Item", 10, 10, 280, 240)
    _GUICtrlListView_SetColumnWidth($g_idListView, 0, 260)
    Local $idButton_Add = GUICtrlCreateButton("Item hinzufügen", 10, 260, 80, 30)
    Local $idButton_Set = GUICtrlCreateButton("Setzt die aufsteigende Reihenfolge zurück", 110, 260, 180, 30)

    GUISetState(@SW_SHOW)

    GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case $idButton_Add
                Local $sData = Chr(Random(65, 90, 1))
                GUICtrlCreateListViewItem($sData, $g_idListView)
                _GUICtrlListView_SimpleSort($g_idListView, $g_bSortSense, 0, False) ; vermeidet, dass beim nächsten einfügen die Sortierrichtung umgedreht wird
            Case $idButton_Set
                $g_bSortSense = False ; Zurücksetzen für eine aufsteigende Sortierung beim nächsten sortieren
        EndSwitch
    WEnd
EndFunc   ;==>Example

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

    Local $hWndListView = $g_idListView
    If Not IsHWnd($g_idListView) Then $hWndListView = GUICtrlGetHandle($g_idListView)
    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 ; Eien Spalte wurde angeklickt
                    _GUICtrlListView_SimpleSort($hWndListView, $g_bSortSense, DllStructGetData($tNMHDR, "SubItem")) ; Die Sortierrichtung wird standardmäßig für ide nächste Sortierung umgedreht
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_NOTIFY