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.
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.
C
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
Global $hListView
Local $iExListViewStyle = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER)
GUICreate("ListView", 300, 300)
$hListView = GUICtrlCreateListView("ID|Name|Min|Max", 10, 10, 280, 180, -1)
_GUICtrlListView_SetExtendedListViewStyle($hListView, $iExListViewStyle)
$ThrottleButton = GUICtrlCreateButton("Lesen:", 10, 200, 100, 20)
$ThrottleID = GUICtrlCreateInput("", 120, 200, 35, 20)
$ThrottleSteps = GUICtrlCreateInput("", 165, 200, 35, 20)
$ThrottleMin = GUICtrlCreateInput("", 210, 200, 35, 20)
$ThrottleMax = GUICtrlCreateInput("", 255, 200, 35, 20)
GUICtrlCreateListViewItem("90|more_a|0|1", $hListView)
GUICtrlCreateListViewItem("7|more_s|0|1", $hListView)
GUICtrlCreateListViewItem("6|more_se|0|1", $hListView)
GUICtrlCreateListViewItem("5|more_f|0|1", $hListView)
GUICtrlCreateListViewItem("4|more_v|0|2", $hListView)
GUICtrlCreateListViewItem("3|more_d|-1|1", $hListView)
GUICtrlCreateListViewItem("2|more_z|0|80", $hListView)
GUICtrlCreateListViewItem("1|more_e|0|100", $hListView)
GUISetState(@SW_SHOW)
_GUICtrlListView_RegisterSortCallBack($hListView)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idListView
; Kick off the sort callback
_GUICtrlListView_SortItems($hListView, GUICtrlGetState($hListView))
Case $ThrottleButton
$iSelected = GUICtrlRead($hListView) - 9 ;ohne die 9 wird keine ausgewählte Zeile ausgelesen, da der Rückgabewert größer als die Länge der Liste ist
$aLV = _GUICtrlListView_GetItemTextArray($hListView, $iSelected)
GUICtrlSetData($ThrottleID, $aLV[1])
GUICtrlSetData($ThrottleSteps, $aLV[2])
GUICtrlSetData($ThrottleMin, $aLV[3])
GUICtrlSetData($ThrottleMax, $aLV[4])
; MsgBox(0,"Ergebnis:",$iSelected & $aLV[1] & $aLV[2] & $aLV[3] & $aLV[4])
EndSwitch
WEnd
_GUICtrlListView_UnRegisterSortCallBack($hListView)
GUIDelete()
Alles anzeigen