I do not know how to describe the problem, but when I click on a "TreeViewItem "Why the "TreeViewItem "disappear
loook
AutoIt
Opt("GUIOnEventMode", 1) Local $arr[6] = [5, "HKEY_CLASSES_ROOT", "HKEY_CURRENT_USER", "HKEY_LOCAL_MACHINE", "HKEY_USERS", "HKEY_CURRENT_CONFIG"] Global $LISTREG, $TreeREG[7][2], $lastreg[1], $treeview, $ListView1 $lastreg[0] = 1 $TreeREG[0][0] = 6 GUICreate("My GUI with treeview", 684, 502, 361, 318) GUISetOnEvent(-3, "__Exit") $treeview = GUICtrlCreateTreeView(6, 6, 174, 414) For $io = 1 To $arr[0] $TreeREG[$io][1] = $arr[$io] $TreeREG[$io][0] = GUICtrlCreateTreeViewItem($arr[$io], $treeview) GUICtrlSetOnEvent(-1, "Goreg") Next $ListView1 = GUICtrlCreateListView("name|type|value", 192, 8, 482, 422) GUISetState() While 1 Sleep(999) WEnd Func __Exit() Exit EndFunc ;==>__Exit Func Goreg() Local $idcrlr = GUICtrlRead($treeview) Setvar(Gettreetxt($idcrlr), $idcrlr) GUICtrlSetState($idcrlr, 1024) EndFunc ;==>Goreg Func Setvar($sreg, $crl) If Gettrectr($sreg) = 1 Then Return ReDim $lastreg[$lastreg[0] + 1] $lastreg[$lastreg[0]] = $sreg $lastreg[0] = $lastreg[0] + 1 Local $m, $mm, $pl = 1, $pppp = 0 $m = StringSplit(GetnumKey($sreg), "\|/", 1) If IsArray($LISTREG) Then DELETEREGITEMS() If $m[1] <> "" Then $mm = StringSplit($m[1], "\@/", 1) Dim $LISTREG[$mm[0] + 1] $LISTREG[0] = $mm[0] For $iu = 1 To $mm[0] - 1 $LISTREG[$iu] = GUICtrlCreateListViewItem($mm[$iu], $ListView1) ; Next EndIf If $m[2] <> "" Then $mm = StringSplit($m[2], "/|\", 1) If IsArray($TreeREG) Then $pl = $TreeREG[0][0] ReDim $TreeREG[$mm[0] + $pl][2] Else Dim $TreeREG[$mm[0] + 1][2] EndIf $TreeREG[0][0] = $mm[0] + $pl - 1 For $iu = $pl To $TreeREG[0][0] - 1 $pppp += 1 $TreeREG[$iu][0] = GUICtrlCreateTreeViewItem($mm[$pppp], $crl) GUICtrlSetOnEvent(-1, "Goreg") $TreeREG[$iu][1] = $sreg & "\" & $mm[$pppp] Next EndIf EndFunc ;==>Setvar Func DELETEREGITEMS() For $i = $LISTREG[0] To 0 Step -1 GUICtrlDelete($LISTREG[$i]) Next $LISTREG = "" EndFunc ;==>DELETEREGITEMS Func Gettreetxt($crlls) For $i = 1 To $TreeREG[0][0] - 1 If $TreeREG[$i][0] = $crlls Then Return $TreeREG[$i][1] Next EndFunc ;==>Gettreetxt Func Gettrectr($ttxt) For $i = 1 To $lastreg[0] - 1 If $lastreg[$i] = $ttxt Then Return 1 Next Return 0 EndFunc ;==>Gettrectr Func GetnumKey($skey) Local $i = 0, $rreg $rreg = GetnumVal($skey) & "\|/" While True $i += 1 Local $var = RegEnumKey($skey, $i) If @error <> 0 Then ExitLoop $rreg &= $var & "/|\" WEnd Return $rreg EndFunc ;==>GetnumKey Func GetnumVal($skey) Local $z = 0, $zz, $typ = "string" While True $z += 1 Local $var = RegEnumVal($skey, $z) If @error <> 0 Then ExitLoop $readreg = RegRead($skey, $var) If IsBinary($readreg) Then $typ = "binary" $zz &= $var & "|" & $typ & "|" & $readreg & "\@/" WEnd Return $zz EndFunc ;==>GetnumVal