sortierbare Tabelle (ListView) auslesbar gestalten

  • Ich probiere schon seit einer Ewigkeit herum und finde den Fehler nicht. Wenn ich keine Zeile in der Tabelle auswähle, wird immer die erste Zeile ausgelesen. Auch nach dem ich die Tabelle mit Klick auf eine Spalte neu sortiert habe.

    Wähle ich aber eine Zeile aus, kommt kein Ergebnis. Da der Rückgabewert der Zeilennummer größer als die verfügbaren Zeilen in der Tabelle ist. 8|

    Also habe ich einen Korrekturwert von 9 eingetragenen. Danach habe ich festgestellt, dass ich die neu sortierte Tabelle nicht auslesen kann. Es wird meist eine andere als die selektierte Zeile ausgelesen.

    Ist es nicht möglich, eine sortierte Tabelle auszulesen? :/

    Im späteren Programm wird die Liste über vier Arrays gefüttert, für jede Spalte einen. Die Länge kann variieren.

    Einmal editiert, zuletzt von Bitnugger (20. April 2019 um 22:32)

  • Wenn du anstelle von

    $iSelected = GUICtrlRead($hListView)

    $iSelected = ControlListView($hListView, '', '', 'GetSelected', $iOption) ; $iOption = 0 nur erstes selektiertes Item, $iOption = 1 alle selektierten Items e.g: Item1|Item2|Item3

    nimmst, dann funktioniert es...

    Schau dir in der AutoIt-Hilfe aber auch mal das Beispiel zu der Funktion _GUICtrlListView_Create an.

    2 Mal editiert, zuletzt von Bitnugger (21. April 2019 um 12:13)

  • Wenn du anstelle von

    $iSelected = GUICtrlRead($hListView)

    $iSelected = ControlListView($hListView, '', '', 'GetSelected', $iOption) ; $iOption = 0 nur erstes selektiertes Item, $iOption = 1 alle selektierten Items e.g: Item1|Item2|Item3

    nimmst, dann funktioniert es...

    Jetzt werden zwar die korrekten Werte für $iSelected angezeigt, allerdings findet keine Sortierung auf den Spalten mehr statt !

    Case $hListView

    ; Kick off the sort callback

    _GUICtrlListView_SortItems($hListView, GUICtrlGetState($hListView))

    ==> wird nicht ausgeführt.

    EDIT :

    Schreibt man stattdessen :

    Case $idListView

    ; Kick off the sort callback

    _GUICtrlListView_SortItems($hListView, GUICtrlGetState($idListView))

    dann geht es !

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    4 Mal editiert, zuletzt von Musashi (22. April 2019 um 12:48) aus folgendem Grund: Farbe rot hinzugefügt

  • Vielen Dank! Es lag also hauptsächlich am gleichen Namen für die Tabelle für die Sortier- und Auslesefunktion. Dass man da nicht von selbst drauf kommt?! :Face:

    Das _GUICtrlListView_Create ist anscheinend umfangreicher. Ich benötige die Tabelle nur bei den Einstellungen vom Programm. Sie ist also nicht der Hauptarbeitsbereich.

    Euch weiterhin Frohe Ostern!

  • Es lag also hauptsächlich am gleichen Namen für die Tabelle für die Sortier- und Auslesefunktion.

    Den wesentlichen Punkt hat Bitnugger genannt :

    Wenn du anstelle von

    $iSelected = GUICtrlRead($hListView)

    $iSelected = ControlListView($hListView, '', '', 'GetSelected', $iOption)

    nimmst, dann funktioniert es...

    $iSelected = GUICtrlRead($hListView) liefert nicht, wie von Dir erwartet, die Nummer der selektierten Itemzeile (0..n).

    Man hätte auch mit For $i = 0 to _GUICtrlListView_GetItemCount ... durch die Items laufen und mit _GUICtrlListView_GetItem prüfen können, welches Item den Status focus(4) und selected(8) hat.

    Mit ControlListView geht es aber leichter ;).

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • ControlListView ist für meine Begriffe jedoch eine Funktion, die ich nur nutze, wenn sonst nichts geht.

    Um die Attribute eines Items ($LVIS_FOCUSED, $LVIS_SELECTED, ...) zu ermitteln, gibt es einige Funktionen... doch weil ich mir die nicht alle merken will, habe ich mir für meine Projekte eine eigene Funktion gebastelt, mit der ich jeden beliebigen Status aller Items ermitteln kann.