Функция GUICtrlCreateTreeView

         Описание функции


GUICtrlCreateTreeView

Создаёт TreeView (древовидное меню) в GUI.

GUICtrlCreateTreeView ( left, top [, width [, height [, style = -1 [, exStyle = -1 ]]]] )

Параметры

left Координата левого края. Если -1 - тогда координата в соответствии с GUICoordMode.
top Координата верхнего края. Если -1 - тогда координата в соответствии с GUICoordMode.
width [необязательный] Ширина элемента (по умолчанию предыдущее значение).
height [необязательный] Высота элемента (по умолчанию предыдущее значение).
style [необязательный] Стиль элемента. Смотрите Стили элементов GUI в приложении.

-1 - по умолчанию : $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS
принудительный стиль : $WS_TABSTOP
exStyle [необязательный] Расширенный стиль элемента. Смотрите таблицу расширенных стилей.

Возвращаемое значение

Успех:Возвращает идентификатор (controlID) нового элемента.
Ошибка:Возвращает 0.

Примечания

Чтобы установить или изменить параметры элемента смотрите GUICtrlUpdate....

Чтобы объединить стили со стилем по умолчанию используйте BitOR($GUI_SS_DEFAULT_TREEVIEW, новый стиль,...).

Чтобы использовать параметры, указанные выше, вы должны включить в ваш скрипт #include <TreeViewConstants.au3>.

См. также

GUICtrlCreateTreeViewItem, GUICoordMode (Опция), GUICtrlUpdate..., GUIGetMsg, GUICtrlRead

Пример

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
#include <StaticConstants.au3>

Example()

Func Example()
    Local $hGui, $treeview, $generalitem, $displayitem, $aboutitem, $compitem
    Local $useritem, $resitem, $otheritem, $startlabel, $aboutlabel, $compinfo
    Local $togglebutton, $infobutton, $statebutton, $cancelbutton
    Local $msg, $item, $hItem, $text

    $hGui = GUICreate("Мой GUI с TreeView", 350, 215)

    $treeview = GUICtrlCreateTreeView(6, 6, 100, 150, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
    $generalitem = GUICtrlCreateTreeViewItem("Основное", $treeview)
    GUICtrlSetColor(-1, 0x0000C0)
    $displayitem = GUICtrlCreateTreeViewItem("Отображение", $treeview)
    GUICtrlSetColor(-1, 0x0000C0)
    $aboutitem = GUICtrlCreateTreeViewItem("О скрипте", $generalitem)
    $compitem = GUICtrlCreateTreeViewItem("Компьютер", $generalitem)
    $useritem = GUICtrlCreateTreeViewItem("Пользователь", $generalitem)
    $resitem = GUICtrlCreateTreeViewItem("Подписи", $displayitem)
    $otheritem = GUICtrlCreateTreeViewItem("Иное", $displayitem)

    $startlabel = GUICtrlCreateLabel("TreeView Демонстрация", 140, 90, 150, 20)
    $aboutlabel = GUICtrlCreateLabel("Этот небольшой скрипт демонстрирует использование элемента TreeView.", 130, 20, 200, 120)
    GUICtrlSetState(-1, $GUI_HIDE) ; Скрыть текст элемента "aboutlabel" в течение инициализации
    $compinfo = GUICtrlCreateLabel("Имя:" & @TAB & @ComputerName & @LF & "OS:" & @TAB & @OSVersion & @LF & "SP:" & @TAB & @OSServicePack, 120, 30, 200, 80)
    GUICtrlSetState(-1, $GUI_HIDE) ; Скрыть текст элемента "compinfo" в течение инициализации

    GUICtrlCreateLabel("", 0, 170, 350, 2, $SS_SUNKEN)
    $togglebutton = GUICtrlCreateButton("&Жирный", 35, 185, 70, 20)
    $infobutton = GUICtrlCreateButton("&Инфо", 105, 185, 70, 20)
    $statebutton = GUICtrlCreateButton("+/-", 175, 185, 70, 20)
    $cancelbutton = GUICtrlCreateButton("&Выход", 245, 185, 70, 20)

    GUICtrlSetState($generalitem, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Развернуть пункт "Основное" и отрисовать жирным шрифтом
    GUICtrlSetState($displayitem, BitOR($GUI_EXPAND, $GUI_DEFBUTTON)) ; Развернуть пункт "Отображение" и отрисовать жирным шрифтом

    GUISetState()
    While 1
        $msg = GUIGetMsg()
        Select ; рекомендуется использовать Switch вместо Select
            Case $msg = $cancelbutton Or $msg = $GUI_EVENT_CLOSE
                ExitLoop

            Case $msg = $togglebutton ; Переключить отрисовку жирного шрифта
                If BitAND(GUICtrlRead($generalitem), $GUI_DEFBUTTON) Then
                    GUICtrlSetState($generalitem, 0)
                    GUICtrlSetState($displayitem, 0)
                Else
                    GUICtrlSetState($generalitem, $GUI_DEFBUTTON)
                    GUICtrlSetState($displayitem, $GUI_DEFBUTTON)
                EndIf

            Case $msg = $infobutton
                $item = GUICtrlRead($treeview) ; Получить идентификатор (ID) текущего выделенного пункта treeview
                If $item = 0 Then
                    MsgBox(64, "TreeView Demo", "Нет текущего выделенного пункта", 0, $hGui)
                Else
                    $text = GUICtrlRead($item, 1) ; Получить текст пункта treeview
                    If $text == "" Then
                        MsgBox(16, "Ошибка", "Ошибка при поиске информации о пункте", 0, $hGui)
                    Else
                        MsgBox(64, "TreeView Demo", "Текущий выделенный пункт: " & $text, 0, $hGui) ; $advmsg[0] содержит текст и $advmsg[1] значение состояния пункта treeview
                    EndIf
                EndIf

            Case $msg = $statebutton
                $item = GUICtrlRead($treeview)
                If $item > 0 Then
                    $hItem = GUICtrlGetHandle($item)
                    GUICtrlSendMsg($treeview, $TVM_EXPAND, $TVE_TOGGLE, $hItem)
                EndIf

                ; Следующие пункты спрячут иные надписи (1-ый и 2-ый параметры) затем отобразятся собственные надписи (3-ий и 4-ый параметры)
            Case $msg = $generalitem
                GUIChangeItems($aboutlabel, $compinfo, $startlabel, $startlabel)

            Case $msg = $aboutitem
                GUICtrlSetState($compinfo, $GUI_HIDE)
                GUIChangeItems($startlabel, $startlabel, $aboutlabel, $aboutlabel)

            Case $msg = $compitem
                GUIChangeItems($startlabel, $aboutlabel, $compinfo, $compinfo)
        EndSelect
    WEnd

    GUIDelete()
EndFunc

Func GUIChangeItems($hidestart, $hideend, $showstart, $showend)
    Local $idx

    For $idx = $hidestart To $hideend
        GUICtrlSetState($idx, $GUI_HIDE)
    Next
    For $idx = $showstart To $showend
        GUICtrlSetState($idx, $GUI_SHOW)
    Next
EndFunc