Что нового

Элементы GUI Неверные значения CheckBox в ini используя TreeView

dimcomp

Новичок
Сообщения
66
Репутация
0
Доброго времени суток. Не пойму в чём проблема, при использовании checkbox в treeview вместо обычных значений "1" - при поставленной галочке и "4" - если checkbox не отмечен, появляются следующие цифры: 257, 260, 1025... с чем это связано и как исправить? Пример:
Код:
#include <GUIConstantsEx.au3>
#include <GuiTreeView.au3>
#include <WindowsConstants.au3>

;$Debug_TV = true ; Проверяет ClassName передаваемый в функции. Установите True и используйте дескриптор от другого элемента, чтобы увидеть как это работает

global $x = 12
global $hItem[$x], $hTreeView, $hItemFound, $Input
global $iStyle = BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)

_Main()

Func _Main()

    GUICreate("Пример", 210, 245)
    GUISetState()
    $hTreeView = GUICtrlCreateTreeView(5, 5, 200, 200, $iStyle)

        $hItem[0] = GUICtrlCreateTreeViewItem("Пункт3", $hTreeView)
        $hItem[1] = GUICtrlCreateTreeViewItem("Пункт2", $hItem[0])
        $hItem[2] = GUICtrlCreateTreeViewItem("Пункт1", $hTreeView)
        $hItem[3] = GUICtrlCreateTreeViewItem("Пункт4", $hItem[2])
        $hItem[4] = GUICtrlCreateTreeViewItem("Пункт8", $hTreeView)
        $hItem[5] = GUICtrlCreateTreeViewItem("Пункт7", $hItem[4])
        $hItem[6] = GUICtrlCreateTreeViewItem("Пункт6", $hTreeView)
        $hItem[7] = GUICtrlCreateTreeViewItem("Пункт5", $hItem[6])    
        $hItem[8] = GUICtrlCreateTreeViewItem("Пункт9", $hTreeView)
        $hItem[9] = GUICtrlCreateTreeViewItem("Пункт10", $hItem[8])
        $hItem[10] = GUICtrlCreateTreeViewItem("Пункт11", $hTreeView)
        $hItem[11] = GUICtrlCreateTreeViewItem("Пункт12", $hItem[10])
        
        $Button = GUICtrlCreateButton("Сохранить", 10, 210, 70, 25)
    _GUICtrlTreeView_Sort($hTreeView)
    
    While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button
            save()
    EndSwitch
    WEnd
    
EndFunc   ;==>_Main

Func save()
For $i = 0 To $x - 1
  IniWrite(@ScriptDir & '\conf.ini', 'Options', '$hItem' & $i, GUICtrlRead($hItem[$i]))
Next
ShellExecute(@ScriptDir & '\conf.ini', 0)
Endfunc
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Внимательно читаем примечания в справке по GUICtrlRead:

Для пунктов элементов Treeview устанавливается несколько состояний и могут возвращаться $GUI_FOCUS, $GUI_EXPAND и $GUI_CHECKED, $GUI_UNCHECKED (только для treeview со стилем $TVS_CHECKBOXES). Используйте BitAND(GUICtrlRead($Item),$GUI_CHECKED) для проверки установленной галочки.
 
Верх