Автор Тема: Как узнать, разворачивается ли древовидный список при нажатии?  (Прочитано 367 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vovsla [?]

  • Осваивающий
  • **
  • Сообщений: 523
  • Репутация: 26
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цель - ускорить работу при взаимодействии с элементом TreeView
Для этого в элемент вписываются только родительские пункты и помечаются как имеющие дочерние.
Дочерние пункты должны добавляться только при раскрытии родительского пункта.
Функция _GUICtrlTreeView_GetExpanded возвращает состояние до нажатия мышкой
Желательно реализовать через WM_NOTIFY, но не нашел какие значения за это отвечают

Как понять, что было инициировано раскрытие списка?

Русское сообщество AutoIt


Оффлайн Vovsla [?]

  • Осваивающий
  • **
  • Сообщений: 523

  • Автор темы
  • Репутация: 26
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Хотя, по событию наверно не получится. Получается, что нужно определять было нажатие на плюс для раскрытия или нет...

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 404
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
#include <StructureConstants.au3>
#include <GUIConstants.au3>
#include <TreeViewConstants.au3>

Global $iTreeView

GUICreate("", 400, 400)
$iTreeView = GUICtrlCreateTreeView(10, 10, 380, 380)
GUICtrlCreateTreeViewItem("2", GUICtrlCreateTreeViewItem("1", $iTreeView))
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState()

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    Local $tNMHDR, $iIDFrom, $iCode, $tNMTREEVIEW, $iAction
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    Switch $iIDFrom
        Case $iTreeView
            $tNMTREEVIEW = DllStructCreate($tagNMTREEVIEW, $lParam)
            $iCode = DllStructGetData($tNMHDR, "Code")
            Switch $iCode
                Case $TVN_ITEMEXPANDINGA, $TVN_ITEMEXPANDINGW
                    $iAction = DllStructGetData($tNMTREEVIEW, "Action")
                    Switch $iAction
                        Case $TVE_COLLAPSE
                            ConsoleWrite("TVN_ITEMEXPANDING - TVE_COLLAPSE" & @LF)
                        Case $TVE_EXPAND
                            ConsoleWrite("TVN_ITEMEXPANDING - TVE_EXPAND" & @LF)
                    EndSwitch
                Case $TVN_ITEMEXPANDEDA, $TVN_ITEMEXPANDEDW
                    $iAction = DllStructGetData($tNMTREEVIEW, "Action")
                    Switch $iAction
                        Case $TVE_COLLAPSE
                            ConsoleWrite("TVN_ITEMEXPANDED - TVE_COLLAPSE" & @LF)
                        Case $TVE_EXPAND
                            ConsoleWrite("TVN_ITEMEXPANDED - TVE_EXPAND" & @LF)
                    EndSwitch
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY


Оффлайн Vovsla [?]

  • Осваивающий
  • **
  • Сообщений: 523

  • Автор темы
  • Репутация: 26
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Большое спасибо

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
6047 Просмотров
Последний ответ Февраль 25, 2011, 22:48:38
от iukash
5 Ответов
5471 Просмотров
Последний ответ Июль 10, 2011, 23:07:58
от nextovoy
2 Ответов
2692 Просмотров
Последний ответ Сентябрь 30, 2011, 00:56:20
от agikon
1 Ответов
3349 Просмотров
Последний ответ Ноябрь 02, 2011, 15:47:07
от Redline
12 Ответов
6134 Просмотров
Последний ответ Июнь 26, 2012, 09:35:11
от scanfail
3 Ответов
2508 Просмотров
Последний ответ Май 18, 2013, 20:23:22
от madmasles
3 Ответов
2328 Просмотров
Последний ответ Август 27, 2013, 21:19:55
от alex33
4 Ответов
3327 Просмотров
Последний ответ Ноябрь 29, 2013, 16:02:07
от WSWR
5 Ответов
2004 Просмотров
Последний ответ Ноябрь 23, 2015, 11:20:51
от Viton-Zizu
0 Ответов
603 Просмотров
Последний ответ Ноябрь 17, 2015, 15:02:10
от madmasles