Что нового

Конфликт в окнах GUI

Norm

Продвинутый
Сообщения
278
Репутация
74
Добрый день.

Помогите пожалуйста разобраться, в чем ошибка.

Есть два скрипта с окнами GUI .
Из одного вызывается второй скрипт, точнее окно с таблицей.
Всё работает, но если я кликаю по определённым пунктам в таблице, то происходит вызов функций из первого, как будто там нажимаются кнопки.
То есть все кнопки из первого скрипта каким-то образом цепляются на пункты таблицы , это строки с числами 7, 8, 9, 10. (соответствует количеству кнопок)
С другими окнами/скриптами происходит тоже самое, только уже на других строках.

Запускающий скрипт ES_Funktionstest.au3
 

Вложения

  • ES_Funktionstest.zip
    2.7 КБ · Просмотры: 5
Последнее редактирование:

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
AutoIt в качетсве controlID для GUICtrlCreateListViewItem использует тот же $iParam из функции _GUICtrlListView_AddItem, так как вы используете нативный GUICtrlCreateListView он будет сам обрабатывать нажатия на элементы и отправлять сообщения с установленными вами $iParam (controlID), но у вас эти controlID уже заняты кнопками.

Для решения с использованием GUICtrlCreateListView, не используйте $iParam в _GUICtrlListView_AddItem или используйте GUICtrlCreateListViewItem, он будет учитывать уже занятые controlID.
Либо используйте _GUICtrlListView_Create и работайте с _GUICtrlListView_AddItem/$iParam как вам угодно, но нажатия придется обрабатывать самостоятельно (WM_NOTIFY, пример в справке).

Лучше не смешивайте создание элементов _GUICtrlListView и GUICtrlCreateListView.
 
Последнее редактирование:
  • Like
Реакции: Norm

Cytrus

Новичок
Сообщения
110
Репутация
3
А что должно происходить при клике на элементы таблицы?

Если ничего, то просто удалите ненужные параметры.

Код:
Замените
Local $iIndex = _GUICtrlListView_AddItem($soWnd, $aItem[1], -1, $iPlus) ; Erste Spalte anlegen
на
Local $iIndex = _GUICtrlListView_AddItem($soWnd, $aItem[1]) ; Erste Spalte anlegen
 
  • Like
Реакции: Norm
Автор
N

Norm

Продвинутый
Сообщения
278
Репутация
74
Спасибо Tempo, Вы как всегда на высоте.
Изменил способ добавления пунктов и всё встало на свои места.
Лучше не смешивайте создание элементов _GUICtrlListView и GUICtrlCreateListView.
Так было в примере от разработчика библиотеки ListViewEditInput.au3 реализовано, а я просто перенял.

А что должно происходить при клике на элементы таблицы?
Если ничего, то просто удалите ненужные параметры.
Код:
Замените
Local $iIndex = _GUICtrlListView_AddItem($soWnd, $aItem[1], -1, $iPlus) ; Erste Spalte anlegen
на
Local $iIndex = _GUICtrlListView_AddItem($soWnd, $aItem[1]) ; Erste Spalte anlegen
Спасибо Cytrus
в таблице тоже работает обработчик событий, поэтому просто сделал, как выше уже и написал.
 
Верх