Что нового

Чтение элемента ListView после сортировки

Myxa

Новичок
Сообщения
6
Репутация
0
Задача - прочитать элементы выделенной строки, при том что .ListView может быть отсортирован по любому столбцу.
Сразу после запуска скрипт работает.
Но если отсортировать по второму или третьему столбцу - функция 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
 
Верх