timsky
Осваивающий
- Сообщения
- 93
- Репутация
- 28
Совсем недавно стал разбираться с гуями и опыта совсем мало. Есть затык один с ListView. Вот пример Creat0R, к которому прикрутил сортировку:
1) Как получить направление сортировки?. Т.е. по возрастающей или убывающей. Нужно при следующем запуске помнить сортировку...
2) Почему когда _GUICtrlListView_SortItems($hListView, 0) отрабатывает при создании ListView, список сортируется "правильно":
1
2
3
...
10
А когда сортировка выполняется по клику, то "неправильно":
1
10
2
3
...
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIListView.au3>
;
Global $iDouble_Click_Event = False
Global $iOne_Click_Event = False
$GUI = GUICreate("ListView - One Click & Double Click", 300, 200)
$hListView = GUICtrlCreateListView("Column", 10, 10, 280, 170)
_GUICtrlListView_RegisterSortCallBack($hListView)
_GUICtrlListView_SortItems($hListView, 0)
For $i = 1 To 10
GUICtrlCreateListViewItem("Item " & $i, $hListView)
Next
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState(@SW_SHOW, $GUI)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $hListView
MsgBox(0, GUICtrlGetState($hListView), GUICtrlRead($hListView))
_GUICtrlListView_SortItems($hListView, GUICtrlGetState($hListView))
EndSwitch
If $iOne_Click_Event Then
$iOne_Click_Event = 0
;ToolTip("Click")
EndIf
If $iDouble_Click_Event Then
$iDouble_Click_Event = 0
;ToolTip("Double Click")
EndIf
WEnd
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView = $hListView
If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case $NM_CLICK
$iOne_Click_Event = True
Case $NM_DBLCLK
$iDouble_Click_Event = True
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
1) Как получить направление сортировки?. Т.е. по возрастающей или убывающей. Нужно при следующем запуске помнить сортировку...
2) Почему когда _GUICtrlListView_SortItems($hListView, 0) отрабатывает при создании ListView, список сортируется "правильно":
1
2
3
...
10
А когда сортировка выполняется по клику, то "неправильно":
1
10
2
3
...