Что нового

GUIGetCursorInfo не воспринимает элементы TreeViewItem

SECTOR

Продвинутый
Сообщения
399
Репутация
59

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Нужен пример.


Добавлено:
Сообщение автоматически объединено:

AutoIt Help сказал(а):
ListViewItem or TreeViewItem controlID will never be returned, only the parent Listview or TreeView control ID is.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Yashied
Строка 1 =
Код:
If $info[4] = $Item Then

Строка 2 =
Код:
If $info[4] = 0 Then
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Yuriy, какое это имеет отношение к данной теме? Я уже показал, что это не баг. Советую всем перед написанием баг-запроса прочитать внимательно справку на соответствующую тему.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Yashied
Что-то я не могу Вас понять.
Извините за тугодумство. Поправьте меня, если что не так (лучше конкретно). Так или не так - смотреть ниже.

Эту строчку, наверное можно перефразировать:

If $info[4] = $Item Then =>

Если GUIGetCursorInfo [4] = GUICtrlCreateTreeViewItem
= Если Переменная ($array[4] = Идентификатор элемента, над которым находится курсор (0 - элемент отсутствует)) = Переменной (Ошибка - значение равное 0),
тогда = Истина


Добавлено:
Сообщение автоматически объединено:

Еще и тормознул я немного.
Я не писал никогда никаких баг и небаг запросов.
Честное пионерское!
 

SyDr

Сидра
Сообщения
651
Репутация
158
Yuriy
ListViewItem или TreeViewItem controlID никогда не будут возвращены, только родительский control ID Listview или TreeView.

$array[4] = Идентификатор элемента, над которым находится курсор
GUICtrlCreateTreeViewItem = Идентификатор создаваемого элемента
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Мне кажется странным, что элемент управления, создаваемый с помощью GUICtrlCreateTreeViewItem реагирует на щелчок левой кнопкой мыши, а координаты мыши с помощью GUIGetCursorInfo() вернуть не может, также не может вывести подсказку с помощью GUICtrlSetTip()...
Данный элемент выглядит неполноценным, хотя имеет свой controlID...
Поясните, пожалуйста, в чем причина данной неполноценности?
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Yuriy сказал(а):
Протестируйте и скажите, если можно:
Код:
$hGUI = GUICreate("MyGUI",300,200)
$hTreeView = GUICtrlCreateTreeView(10,10,280,180)
$Item = GUICtrlCreateTreeViewItem("Тест",-1)
GUISetState()

Do
    $info = GUIGetCursorInfo($hGUI)
    If $info[4] = 0 Then
        MsgBox(64,"Info", "Курсор мыши находится за пределами окна")
        Exit
    EndIf
Until GUIGetMsg() = -3

Exit
А что тут говорить? :smile:
Код:
$hGUI  = GUICreate("MyGUI",300,200)
$hTreeView = GUICtrlCreateTreeView(10,10,280,180)
$Item = GUICtrlCreateTreeViewItem("Тест",-1)
GUISetState()

Do
    $info = GUIGetCursorInfo($hGUI)
    If $info[4] = 0 Then
;~ 	MsgBox(64,"Info", "Курсор мыши находится за пределами окна")
	MsgBox(64,"TreeView ID = GUICtrlCreateTreeView(10,10,280,180)", "ID = " & $hTreeView)
	MsgBox(64,"TreeViewItem ID = GUICtrlCreateTreeViewItem('Тест',-1)", "ID = " & $Item)
        Exit
    EndIf
Until GUIGetMsg() = -3

Exit



Добавлено:
Сообщение автоматически объединено:

Или так:
Код:
$hGUI  = GUICreate("MyGUI",300,200)
$hTreeView = GUICtrlCreateTreeView(10,10,280,180)
$Item = GUICtrlCreateTreeViewItem("Тест",-1)
GUISetState()

Do
    $info = GUIGetCursorInfo($hGUI)
;~     If $info[4] = 0 Then
        MsgBox(64,"Info", "Control ID = " & $info[4] & @CRLF & "ID of the control that the mouse cursor is hovering over (or 0 if none)")
        Exit
;~     EndIf
Until GUIGetMsg() = -3

Exit
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Garrett
Работает или не работает это?
При старте скрипта - появляется окно.
Если курсор мыши находится в квадрате этого окна - ничего не происходит.
Иначе - Сообщение "Курсор мыши находится за пределами окна"
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Yuriy сказал(а):
Garrett
Работает или не работает это?
При старте скрипта - появляется окно.
Если курсор мыши находится в квадрате этого окна - ничего не происходит.
Иначе - Сообщение "Курсор мыши находится за пределами окна"
Так всё и должно работать!
Если в момент старта скрипта ваш курсор находится над TreeView, MsgBox не появится!
А если за приделами:
Код:
If $info[4] = 0 Then ; Будет ИСТИНА!

и MsgBox появится!

TreeViewItem здесь вообще не причём! GUIGetCursorInfo его вообще не замечает потому как: "ListViewItem or TreeViewItem controlID will never be returned, only the parent Listview or TreeView control ID is."
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
snoitaleR сказал(а):
Мне кажется странным, что элемент управления, создаваемый с помощью GUICtrlCreateTreeViewItem реагирует на щелчок левой кнопкой мыши, а координаты мыши с помощью GUIGetCursorInfo() вернуть не может, также не может вывести подсказку с помощью GUICtrlSetTip()...
Данный элемент выглядит неполноценным, хотя имеет свой controlID...
Поясните, пожалуйста, в чем причина данной неполноценности?

Потому что GUICtrlCreateTreeViewItem() это виртуальный элемент, существует только в пределах AutoIt (отсюда такие ограничения). На уровне системы таких элементов нет, т.е. у этих элементов просто нет хендлов.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Garrett
Если в момент старта скрипта ваш курсор находится над TreeView, MsgBox не появится!
А у меня работает. WinXP Pro SP3 ru
 
Автор
SECTOR

SECTOR

Продвинутый
Сообщения
399
Репутация
59
То что у этих элементов нет хэндлов понятно, но неужели никак нельзя отловить наведение мыши? И ещё в удф есть функция получения хэндла, но скорее всего это не то.(?)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Yuriy сказал(а):
Garrett
Если в момент старта скрипта ваш курсор находится над TreeView, MsgBox не появится!
А у меня работает. WinXP Pro SP3 ru

Тогда нужно чтобы протестировали те, у кого установлен SP3, я всё никак не соберусь себе поставить, у меня SP2 :whistle:
 
Верх