FrecKDancE
Новичок
- Сообщения
- 19
- Репутация
- 1
Создал таблицу с помощью _GUICtrlListView, заполняется всё как надо, но не могу разобраться как взаимодействовать с определённой ячейкой.
Действие выполняется при двойном нажатие на ячейку, НО открывается InputBox, в котором информация о последней ячейке таблицы, а не о той, на которую нажал.
Данные для заполнения информации в таблицу берутся с сайта или из файла. В скрипте никакой информации нет.
Собственно вопрос: Как сделать проверку на определённую ячейку? Чтобы открывался InputBox с нужной информацией.
Код:
case $Button44
; Создаёт GUI
GUICreate("ListView - Клик на пункте", 400, 300)
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
; Добавляет колонки
_GUICtrlListView_InsertColumn($hListView, 0, "Название", 120)
_GUICtrlListView_InsertColumn($hListView, 1, "Цена маркета", 120)
_GUICtrlListView_InsertColumn($hListView, 2, "Цена из файла", 120)
$http10 = $http1&$apikey
$http20 = BinaryToString(InetRead($http10,4))
$aItems = StringRegExp($http20, '(?:"classid|market_hash_name)":"?([^"]+)', 3)
$iItems = UBound($aItems)
$a = 0
For $i = 0 To $iItems - 1 Step 2
$classid = $aItems[$i]
$hash_name = (($i + 1 < $iItems) ? $aItems[$i + 1] : '')
$http30 = "https://market.csgo.com/api/v2/search-list-items-by-hash-name-all?key="&$apikey&"&list_hash_name[]="&$hash_name
$http40 = BinaryToString(InetRead($http30,4))
$price_market = StringRegExpReplace($http40,'(?s).*?price":"([^"]+).*','\1',1)
$set_price_market_file = IniWrite( @ScriptDir&"\items\"&$classid&".ini", "General", "price_market", $price_market )
$price_market_file = IniRead( @ScriptDir&"\items\"&$classid&".ini", "General", "price_market", "0" )
$min_price = IniRead( @ScriptDir&"\items\"&$classid&".ini", "General", "min_price", "0" )
_GUICtrlListView_AddItem($hListView, $hash_name, $a)
_GUICtrlListView_AddSubItem($hListView, $a, $price_market, 1, 1)
_GUICtrlListView_AddSubItem($hListView, $a, $min_price, 2, 2)
$a += 1
next
; Цикл выполняется, пока окно не будет закрыто
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
Код:
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
$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_DBLCLK ; Высылается элементом ListView, когда пользователь делает двойной клик на пункте левой кнопкой мыши
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
InputBox(@ScriptName, "Название: "&$hash_name&@CRLF&@CRLF&@CRLF&@CRLF&@CRLF&"Строка ввода не может быть пустой!",""," M",500,200)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
Данные для заполнения информации в таблицу берутся с сайта или из файла. В скрипте никакой информации нет.
Собственно вопрос: Как сделать проверку на определённую ячейку? Чтобы открывался InputBox с нужной информацией.