Что нового

Определить двойное нажатие по элементу в ListView и получить его название

LiteLight

Новичок
Сообщения
8
Репутация
1
Допустим, есть у меня два элемента ListView с названиями: "Test", "Test2", и при двойном нажатии на любой из них в консоль должно писаться название нажатого элемента. Нажал Test - в консоли написало Test , нажал Test2 - в консоли написало Test2 соответственно.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
пример из русской справки
Код:
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Global $hListView
$Gui = GUICreate("ListView", 300, 250)
$ListView = GUICtrlCreateListView("кол1", 2, 2, 199, 88, $LVS_EDITLABELS + $LVS_NOCOLUMNHEADER)
$item1 = GUICtrlCreateListViewItem("пункт 1", $ListView)
$item2 = GUICtrlCreateListViewItem("пункт 2", $ListView)
$item3 = GUICtrlCreateListViewItem("пункт 3", $ListView)
$hListView = GUICtrlGetHandle($ListView)
Global $hEdit = GUICtrlCreateEdit('', 2, 95, 200, 100, $ES_AUTOVSCROLL + $WS_VSCROLL + $ES_NOHIDESEL + $ES_WANTRETURN)
GUICtrlSetBkColor(-1, 0xfffbd7)
GUISetState()

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam
    Local $hWndFrom, $iCode, $tNMHDR, $tInfo 
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hListView
            Switch $iCode
                Case $NM_DBLCLK ; левый двойной клик мышкой по пункту
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
                    GUICtrlSetData($hEdit, _GUICtrlListView_GetItemText($hListView, DllStructGetData($tInfo, "Index")))
            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
 
Последнее редактирование:
Верх