Задача - прочитать элементы выделенной строки, при том что .ListView может быть отсортирован по любому столбцу.
Сразу после запуска скрипт работает.
Но если отсортировать по второму или третьему столбцу - функция GUICtrlRead возвращает неправильные номера строк.
Если отсортировать снова по первому столбцу (вернуть таблицу к исходному виду) - снова работает.
Сразу после запуска скрипт работает.
Но если отсортировать по второму или третьему столбцу - функция GUICtrlRead возвращает неправильные номера строк.
Если отсортировать снова по первому столбцу (вернуть таблицу к исходному виду) - снова работает.
ListView Sort:
#include <GuiConstants.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
opt ('MustDeclareVars', 1)
Dim $ListView, $Btn_Show, $Btn_Exit, $msg, $text
GUICreate ("ListView Sort", 320, 270)
$ListView = GUICtrlCreateListView (" EN | RU | NUM ", 10, 10, 300, 200)
GUICtrlCreateListViewItem (" F | Ц | 3 ", $ListView)
GUICtrlCreateListViewItem (" J | Ю | 4 ", $ListView)
GUICtrlCreateListViewItem (" L | Б | 5 ", $ListView)
GUICtrlCreateListViewItem (" R | Г | 6 ", $ListView)
GUICtrlCreateListViewItem (" V | Ж | 1 ", $ListView)
GUICtrlCreateListViewItem (" Z | Ф | 2 ", $ListView)
_GUICtrlListView_SetColumnWidth ($ListView, 0, 75)
_GUICtrlListView_SetColumnWidth ($ListView, 1, 75)
_GUICtrlListView_SetColumnWidth ($ListView, 2, 75)
$Btn_Show = GUICtrlCreateButton ("Show", 10, 220, 140, 40)
$Btn_Exit = GUICtrlCreateButton ("Exit", 170, 220, 140, 40)
GUISetState ()
While 1
$msg = GUIGetMsg ()
Select
Case $msg = $GUI_EVENT_CLOSE Or $msg = $Btn_Exit
ExitLoop
Case $msg = $Btn_Show
$text = _GUICtrlListView_GetItemTextString ($ListView, GUICtrlRead ($ListView, 1)-4)
MsgBox (0, "", $text)
Case $msg = $ListView
_GUICtrlListView_SimpleSort ($ListView, False, GUICtrlGetState($ListView))
EndSelect
WEnd
Exit