Sortiert ein ListView-Control (begrenzt)
#include <GuiListView.au3>
_GUICtrlListView_SimpleSort ( $hWnd, ByRef $vSortSense, $iCol [, $bToggleSense = True] )
$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 |
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 - - - - - - - -
#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