Что нового

[Элементы GUI] Callback на событие нажатия элемента ListView

erlik

Продвинутый
Сообщения
317
Репутация
84
Нужен пример создания callback'а на нажатие (двойной клик) строчки в ListView.
Вот так я создаю ListView в главной функции:
Код:
$idListView = _GUICtrlListView_Create($hMainWnd, "", $ListViewLeft, $ListViewTop, $ListViewWidth,$ListViewHeight)
	_GUICtrlListView_SetExtendedListViewStyle($idListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
	_GUICtrlListView_InsertColumn($idListView, 0, "Расширение",100)
	_GUICtrlListView_InsertColumn($idListView, 1, "Тип файла",100)
	_GUICtrlListView_InsertColumn($idListView, 2, "Имя раздела",100)
	_GUICtrlListView_InsertColumn($idListView, 3, "Меню оболочки",100)
	_GUICtrlListView_InsertColumn($idListView, 4, "Команда",400)

в другой функции в цикле перебора ключей реестра добавляю строчки в ListView
                                $iIndex=_GUICtrlListView_AddItem($idListView, $sKey)
				$idListViewItem=_GUICtrlListView_GetItemParam($idListView, $iIndex)
				GUICtrlSetOnEvent($idListViewItem, "ListViewClick")
                               _GUICtrlListView_AddSubItem($idListView, $iIndex, $sTypeFile,1 )
				_GUICtrlListView_AddSubItem($idListView, $iIndex, $sKeyShell,2 )
				_GUICtrlListView_AddSubItem($idListView,$iIndex, $sContextString,3 )
				_GUICtrlListView_AddSubItem($idListView, $iIndex, $sCommand,4 )


Не могу понять куда мне ставить GUICtrlSetOnEvent() ? Ни в одном месте ни какого отклика на нажатие не происходит.

ЗЫ:madmasles
Не понял - а что я нарушил? В среде программистов - каллбек вроде как стандартное написание термина...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Элементы GUI] Каллбек на событие нажатия элемента ListView

Предупреждение За нарушение общих правил (пункт В.8):
Так как эта конференция называется "Русское сообщество AutoIt", язык общения на ней - Русский. Названия фирм или программных продуктов, аббревиатуры и т.д. должны быть написаны так, как они пишутся в оригинале, например не следует писать УСБ вместо USB. На форуме крайне не рекомендуется намеренно искажать русский язык и использовать "сетевой жаргон" на подобии "Аффтар выпей йадау!".


С уважением, ваш Модератор.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
erlik
При чём здесь Callback? Функция WM_NOTIFY в примере _GUICtrlListView_Create имеет код события $NM_DBLCLK.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
AZJIO
Ну мне и нужно отследить событие DBLCLK на строчке ListView - ну и заодно скажем получить текст, который содержит строка.
Но я не знаю как это сделать...
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
erlik
В примере оно уже отслежено. Индекс там тоже получен. Осталось посмотреть функции в том же разделе, которые возвращают текст указанного индекса. Наверняка функция начинается с _GUICtrlListView_ и будет содержать в своём названии Get (получить) и Text (текст). Нашлось _GUICtrlListView_GetItemText.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
AZJIO
В том то и прикол, что мой вариант почему то не работает. Потому и спрашивал какой-нить другой пример :( Для сравнения.
PS: с текстом то я разобрался -
Код:
_GUICtrlListView_GetItemTextArray()
в самый раз подошел. Но получать текст выделенной строки пришлось через нажатие кнопки, а не клик строки.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
erlik
В справке посмотри пример WM_NOTIFY (вставить на вкладке "Указатель" и Enter для перехода). Сделай в том примере двойной клик в ListView и увидешь, что в Edit вставится информация, что выполнен двойной клик. Переписывать сюда примеры из справки нет никакого желания. Тот же пример из _GUICtrlListView_Create также работает, если запустить по F5 в SciTE, будет писать действия в консоль.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
AZJIO
Все понял :smile: Рыл не в ту сторону и не додумался внимательней прочитать и выполнить код примера
Код:
_GUICtrlListView_Create
по F5.
Впрочем, не буду скрывать эта часть AutoIT - с использованием Windows сообщений типа
Код:
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")-
- для меня пока темный лес. В любом случае благодарю за подсказку.
 
Верх