#include #include #include #include #include #include Global $idTreeview Global Const $TVM_SETITEM = $TV_FIRST + 13 Global Const $IDX_TXT = 0 Global Const $IDX_HND = 1 Global Const $IDX_CHK = 2 Global $array[10001][3] $array[0][0] = "txt" $array[0][1] = "hnd" $array[0][2] = "checked" For $i=1 To 5000 $array[$i][$IDX_TXT] = StringFormat("A%d",$i) Next For $i=5001 To 10000 $array[$i][$IDX_TXT] = StringFormat("A%d",$i) Next Example() Func Example() GUICreate("My GUI with treeview", 320, 215) $idTreeview = GUICtrlCreateTreeView(5, 5, 310, 150, BitOR($TVS_CHECKBOXES, $TVS_FULLROWSELECT, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) For $i=1 To UBound($array,1)-1 $array[$i][$IDX_HND] = GUICtrlCreateTreeViewItem($array[$i][$IDX_TXT],$idTreeview) Next Local $idButtonAll = GUICtrlCreateButton("All" , 5, 185, 35, 20) Local $idButtonCheckA = GUICtrlCreateButton("A only" , 40, 185, 60, 20) Local $idButtonCheckB = GUICtrlCreateButton("B only" ,100, 185, 60, 20) Local $idButtonViewAll = GUICtrlCreateButton("View All",160, 185, 60, 20) Local $idButtonViewSel = GUICtrlCreateButton("View Sel",220, 185, 60, 20) Local $idButtonClose = GUICtrlCreateButton("Close" ,280, 185, 35, 20) Local $sf_txt_prv = "*" Local $sf_txt_cur = "*" Local $sf_hnd = GUICtrlCreateInput("*",5,160,300,20) GUISetState(@SW_SHOW) Local $idMsg ; Loop until the user exits. While 1 $idMsg = GUIGetMsg() $sf_txt_cur = GUICtrlRead($sf_hnd) Select Case $sf_txt_cur<>$sf_txt_prv ConsoleWrite("ok" & @CRLF) _SaveThis() GUICtrlDelete($idTreeview) $idTreeview = GUICtrlCreateTreeView(5, 5, 310, 150, BitOR($TVS_CHECKBOXES, $TVS_FULLROWSELECT, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) $sf_txt_prv = $sf_txt_cur $sf_txt_cur = StringReplace($sf_txt_cur,"?",".") $sf_txt_cur = StringReplace($sf_txt_cur,"*",".*") ConsoleWrite("$sf_txt_cur = " & $sf_txt_cur & @CRLF) For $i=1 To UBound($array,1)-1 If StringRegExp($array[$i][$IDX_TXT],"(?i)" & $sf_txt_cur) Then ConsoleWrite($i & @CRLF) $array[$i][$IDX_HND] = GUICtrlCreateTreeViewItem($array[$i][$IDX_TXT],$idTreeview) If $array[$i][$IDX_CHK] Then GUICtrlSetState($array[$i][$IDX_HND],$GUI_CHECKED) EndIf Next ;Restore focus GUICtrlSetData($sf_hnd,GUICtrlRead($sf_hnd)) Case $idMsg = $idButtonClose Or $idMsg = $GUI_EVENT_CLOSE ExitLoop Case $idMsg = $idButtonAll ConsoleWrite("Button ALL" & @CRLF) _SaveThis() For $i=1 To UBound($array,1)-1 GUICtrlSetState($array[$i][$IDX_HND],$GUI_CHECKED) Next Case $idMsg = $idButtonCheckA ConsoleWrite("Button A" & @CRLF) _SaveThis() GUICtrlDelete($idTreeview) $idTreeview = GUICtrlCreateTreeView(5, 5, 310, 150, BitOR($TVS_CHECKBOXES, $TVS_FULLROWSELECT, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) For $i=1 To UBound($array,1)-1 If StringInStr($array[$i][$IDX_TXT],"A") Then $array[$i][$IDX_HND] = GUICtrlCreateTreeViewItem($array[$i][$IDX_TXT],$idTreeview) GUICtrlSetState($array[$i][$IDX_HND],$GUI_CHECKED) $array[$i][$IDX_CHK] = 1 Else $array[$i][$IDX_CHK] = 0 EndIf Next Case $idMsg = $idButtonCheckB ConsoleWrite("Button B" & @CRLF) _SaveThis() GUICtrlDelete($idTreeview) $idTreeview = GUICtrlCreateTreeView(5, 5, 310, 150, BitOR($TVS_CHECKBOXES, $TVS_FULLROWSELECT, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) For $i=1 To UBound($array,1)-1 If StringInStr($array[$i][$IDX_TXT],"B") Then $array[$i][$IDX_HND] = GUICtrlCreateTreeViewItem($array[$i][$IDX_TXT],$idTreeview) GUICtrlSetState($array[$i][$IDX_HND],$GUI_CHECKED) $array[$i][$IDX_CHK] = 1 Else $array[$i][$IDX_CHK] = 0 EndIf Next Case $idMsg = $idButtonViewAll ConsoleWrite("View All" & @CRLF) _SaveThis() GUICtrlDelete($idTreeview) $idTreeview = GUICtrlCreateTreeView(5, 5, 310, 150, BitOR($TVS_CHECKBOXES, $TVS_FULLROWSELECT, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) For $i=1 To UBound($array,1)-1 $array[$i][$IDX_HND] = GUICtrlCreateTreeViewItem($array[$i][$IDX_TXT],$idTreeview) If $array[$i][$IDX_CHK] Then GUICtrlSetState($array[$i][$IDX_HND],$GUI_CHECKED) Next Case $idMsg = $idButtonViewSel ConsoleWrite("View Sel => " & @CRLF) _SaveThis() GUICtrlDelete($idTreeview) $idTreeview = GUICtrlCreateTreeView(5, 5, 310, 150, BitOR($TVS_CHECKBOXES, $TVS_FULLROWSELECT, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) For $i=1 To UBound($array,1)-1 If $array[$i][$IDX_CHK] Then $array[$i][$IDX_HND] = GUICtrlCreateTreeViewItem($array[$i][$IDX_TXT],$idTreeview) GUICtrlSetState($array[$i][$IDX_HND],$GUI_CHECKED) EndIf Next EndSelect WEnd GUIDelete() EndFunc Func _SaveThis() For $i=1 To UBound($array,1)-1 If BitAND(GUICtrlRead($array[$i][$IDX_HND]),$GUI_CHECKED) Then $array[$i][$IDX_CHK] = 1 Else $array[$i][$IDX_CHK] = 0 EndIf Next EndFunc