ListView Sortieren aber mit GUI Events

  • Hallo Zusammen,

    ich suche nach einer (einfachen) Möglichkeit, eine Listview per Mausklick (auf die Spaltenüberschriften) zu sortieren.
    Dazu habe ich folgende Lösung gefunden: Listview sortieren
    Diese kurze Lösung verstehe sogar ich! ;)

    Aber ich verwende die GUI Events. Deshalb kann ich nicht die GUI Messages abfragen.

    Deshalb suche ich nun nach einer Möglichkeit einen Event zu generieren, wenn jemand auf eine Spaltenüberschrift geklickt hat, damit ich dann per

    [autoit]

    _GUICtrlListView_SortItems($hListView, GUICtrlGetState($hListView))

    [/autoit]

    sortieren kann.

    Der gesamte Code sollte wenn möglich so einfach sein, wie der oben zitierte. Denn bei dem komme ich nicht wirklich mit....

    Vielen Dank für Eure Hilfen!

    Veronesi

    Einmal editiert, zuletzt von veronesi (12. September 2010 um 07:50)

    • Offizieller Beitrag

    Und Du schaffst es nicht, das Beispiel auf den Event-Mode umzuschreiben?
    Ganz einfach:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    Opt('GUIOnEventMode', 1)

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

    GUICreate('Listview-sortieren', 600, 400)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')

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

    $hListView = GUICtrlCreateListView('Spalte1|Spalte2|Spalte3', 10, 10, 580, 380)
    GUICtrlSetOnEvent(-1, '_SortLV')

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

    For $i = 0 To 9 ; zufällige ListView-Einträge erstellen
    GUICtrlCreateListViewItem(Random(1000, 9999, 1) & '|' & Random(1000, 9999, 1) & '|' & Random(1000, 9999, 1), $hListView)
    Next

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

    _GUICtrlListView_RegisterSortCallBack($hListView) ; damit man das Listview (mit Klick auf die Spaltenüberschrift) sortieren kann
    GUISetState()

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

    While Sleep(1000)
    WEnd

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

    Func _End()
    _GUICtrlListView_UnRegisterSortCallBack($hListView)
    Exit
    EndFunc ;==>_End

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

    Func _SortLV()
    _GUICtrlListView_SortItems($hListView, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren
    EndFunc ;==>_SortLV

    [/autoit]